Not that I've carried it through yet, but dcp contains chunks separated by '}', with the first character in each chunk being a character to search for in that big long string, and the rest of the chunk being the text to replace that character with whenever it's found (implemented by splitting on the first character of each chunk of dcp, then joining with the rest of the chunk). Then more stuff happens.