# cng_acronym v0.2 # Wraps common acronyms with HTML acronym tags # Chess Griffin # http://www.chessgriffin.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMC4yIjtzOjY6ImF1dGhvciI7czoxMzoiQ2hlc3Mg R3JpZmZpbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyODoiaHR0cDovL3d3dy5jaGVzc2dyaWZm aW4uY29tLyI7czoxMToiZGVzY3JpcHRpb24iO3M6NDQ6IldyYXBzIGNvbW1vbiBhY3Jvbnlt cyB3aXRoIEhUTUwgYWNyb255bSB0YWdzIjtzOjQ6InR5cGUiO2k6MDtzOjQ6Im5hbWUiO3M6 MTE6ImNuZ19hY3JvbnltIjtzOjQ6ImhlbHAiO3M6MzI3ODoiPHA+SSBjYW5ub3QgdGFrZSBt dWNoIGNyZWRpdCBmb3IgdGhpcyBwbHVnaW4uIEpvZWwsIHdobyBraW5kbHkgcmVsZWFzZWQg aGlzIGNvZGUgdW5kZXIgdGhlIEdQTCwgZGlkIGFsbCB0aGUgaGVhdnkgbGlmdGluZy4gQWxs IEkgZGlkIHdhcyBmaWd1cmUgb3V0IGhvdyB0byBwdWxsIHRoZSBUWFAgY29udGVudCBpbnRv IHRoZSBwbHVnaW4gYW5kIGdldCBpdCBiYWNrIG91dC48L3A+Cgo8cD5UaGlzIHBsdWdpbiBp cyBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSAmbHQ7dHhwOmV4Y2VycHQgLyZndDsgYW5kICZs dDt0eHA6Ym9keSAvJmd0OyB0YWdzLiBUaGUgdXNhZ2UgaXMgYXMgZm9sbG93czo8L3A+Cgo8 cD4mbHQ7dHhwOmNuZ19hY3JvbnltIGNvbnRlbnQ9JnF1b3Q7dmFsdWUmcXVvdDsgLyZndDs8 L3A+Cgo8cD5UaGUgJnF1b3Q7dmFsdWUmcXVvdDsgY2FuIGJlIGVpdGhlciAmcXVvdDtleGNl cnB0JnF1b3Q7IG9yICZxdW90O2JvZHkuJnF1b3Q7IElmIG5vICZxdW90O3ZhbHVlJnF1b3Q7 IGlzIHNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gJnF1b3Q7Ym9keS4mcXVvdDs8L3A+Cgo8 cD5UaGUgcGx1Z2luIHdpbGwgcHVsbCB0aGUgY29udGVudCBmcm9tIHRoZSAmcXVvdDtleGNl cnB0JnF1b3Q7IG9yICZxdW90O2JvZHksJnF1b3Q7IGRlcGVuZGluZyBvbiB3aGF0IGlzIGFz c2lnbmVkIHRvIHRoZSBjb250ZW50IHZhbHVlLCBhbmQgdGhlbiBwYXJzZSBpdCB0aHJvdWdo IHRoZSBhY3JvbnltIGFycmF5LiBJdCB3aWxsIHRoZW4gcmV0dXJuIHRoZSBlbnRpcmUgY29u dGVudCB3aXRoIHRoZSAmbHQ7YWNyb255bSZndDsmbHQ7L2Fjcm9ueW0mZ3Q7IHRhZ3Mgc3Vy cm91bmRpbmcgYW55IGZvdW5kIGFjcm9ueW1zLjwvcD4KCjxwPlNvLCBpbiB5b3VyIGFydGlj bGUgZm9ybSB3aGVyZSB5b3UgbWlnaHQgaGF2ZSB0aGUgZm9sbG93aW5nOjwvcD4KCjxjb2Rl PgombHQ7ZGl2IGNsYXNzPSZxdW90O2FydGljbGVzJnF1b3Q7Jmd0OzxiciAvPgombHQ7dHhw OmV4Y2VycHQgLyZndDs8YnIgLz4KJmx0O3R4cDpib2R5IC8mZ3Q7PGJyIC8+CiZsdDsvZGl2 Jmd0OzxiciAvPgo8L2NvZGU+Cgo8cD55b3Ugd291bGQgY2hhbmdlIGl0IHRvIHRoaXMgdG8g dXNlIHRoZSBwbHVnaW46PC9wPgoKPGNvZGU+CiZsdDtkaXYgY2xhc3M9JnF1b3Q7YXJ0aWNs ZXMmcXVvdDsmZ3Q7PGJyIC8+CiZsdDt0eHA6Y25nX2Fjcm9ueW0gY29udGVudD0mcXVvdDtl eGNlcnB0JnF1b3Q7IC8mZ3Q7PGJyIC8+CiZsdDt0eHA6Y25nX2Fjcm9ueW0gY29udGVudD0m cXVvdDtib2R5JnF1b3Q7IC8mZ3Q7PGJyIC8+CiZsdDsvZGl2Jmd0Owo8L2NvZGU+Cgo8cD5U aGUgbGlzdCBvZiBhY3JvbnltcyBpcyB3aXRoaW4gdGhlIHBsdWdpbiBhbmQgY2FuIGJlIGVk aXRlZCB0byBhZGQgb3IgZGVsZXRlIGFjcm9ueW1zLiBUaGUgY29ycmVjdCBmb3JtYXQgZm9y IHRoZSBhY3JvbnltIGxpc3QgaXMgYXMgZm9sbG93czo8L3A+Cgo8cD4mcXVvdDtBQ1JPTllN JnF1b3Q7ID0mZ3Q7ICZxdW90O0Rlc2NyaXB0aXZlIHRleHQgZ29lcyBoZXJlJnF1b3Q7LDwv cD4KCjxwPk5vdGUgdGhlIGNvbW1hIGF0IHRoZSBlbmQuIFRoZXJlIG11c3QgYmUgYSBjb21t YSBhZnRlciBlYWNoIGVudHJ5IGluIHRoZSBhY3JvbnltIGxpc3QgZXhjZXB0IGZvciB0aGUg bGFzdCBlbnRyeSwgYWZ0ZXIgd2hpY2ggdGhlcmUgc2hvdWxkIGJlIG5vIGNvbW1hLiAgVGh1 czo8L3A+Cgo8cD4mcXVvdDtGQVEmcXVvdDsgPSZndDsgJnF1b3Q7RnJlcXVlbnRseSBBc2tl ZCBRdWVzdGlvbnMmcXVvdDssPC9wPgoKPHA+d291bGQgdGhlbiB3cmFwIGFueSBmb3VuZCBp bnN0YW5jZSBvZiAmcXVvdDtGQVEmcXVvdDsgd2l0aCB0YWdzLCBlLmcuLCAmcXVvdDsmbHQ7 YWNyb255bSB0aXRsZT0mcXVvdDtGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucyZxdW90OyZn dDtGQVEmbHQ7L2Fjcm9ueW0mZ3Q7JnF1b3Q7LiBZb3UgY2FuIHRoZW4gYWRkIGEgQ1NTIHJ1 bGUgZm9yIHlvdXIgYWNyb255bSB0YWdzIGluIHlvdXIgc3R5bGVzaGVldCwgbGlrZSB0aGlz OjwvcD4KCjxjb2RlPgphY3JvbnltLCBhYmJyLCBzcGFuLmNhcHM8YnIgLz4KezxiciAvPgpm b250LXNpemU6IDEuMWVtOzxiciAvPgpsZXR0ZXItc3BhY2luZzogLjA3ZW07PGJyIC8+CmJv cmRlci1ib3R0b206IDFweCBkYXNoZWQgIzk5OTs8YnIgLz4KY3Vyc29yOiBoZWxwOzxiciAv Pgp9PGJyIC8+CjwvY29kZT4KCjxwPklmIHRoZXJlIGFyZSBhbnkgYWNyb255bXMgdGhhdCB5 b3UgZG8gbm90IHdpc2ggdG8gaGF2ZSB3cmFwcGVkIGluICZsdDthY3JvbnltJmd0OyZsdDsv YWNyb255bSZndDsgdGFncywgdGhlbiB3cmFwIGRvbGxhciBzaWducyBhcm91bmQgdGhlIGFj cm9ueW0sIGxpa2Ugc286PC9wPgoKPHA+JEZBUSQ8L3A+Cgo8cD5JbiB0aGlzIGNhc2UsIHRo ZSBkb2xsYXJzIHNpZ25zIHdvdWxkIGJlIHN0cmlwcGVkIGFuZCB0aGUgYWNyb255bSB3b3Vs ZCBiZSBsZWZ0IGFsb25lLjwvcD4KCjxwPlRoaXMgcGx1Z2luIHdpbGwgYWxzbyBzdHJpcCBv dXQgYW55IGV4aXN0aW5nICZsdDthY3JvbnltJmd0OyB0YWdzIGFscmVhZHkgaW4geW91ciBj b250ZW50LCBzbyB5b3UgbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBhY3JvbnltcyB5b3Ug aGF2ZSBkZWZpbmVkIG1hbnVhbGx5IGFyZSBhZGRlZCB0byB0aGUgYWNyb255bSBhcnJheSBp biB0aGUgcGx1Z2luLjwvcD4KCjxwPkZpbmFsbHksIGluIHRoZSBwbHVnaW4gY29kZSB5b3Ug d2lsbCBub3RlIHRoYXQgdGhlcmUgYXJlIGRpZmZlcmVudCAmcXVvdDtleHByZXNzaW9ucyZx dW90OyB0aGF0IGFyZSBhdmFpbGFibGUgaWYgb25lIGZpbmRzIHRoYXQgdGhlIHBsdWdpbiBp cyBhY3Rpbmcgd29ua3kuIE9uZSBvZiB0aGVzZSB3aWxsIGFsbG93IGxvd2VyLWNhc2UgYWNy b255bXMgdG8gYmUgd3JhcHBlZCBpbiB0aGUgdGFncy4gSWYgeW91IGRlY2lkZSB0byB0cnkg b25lIG9mIHRoZXNlIG90aGVyIGV4cHJlc3Npb25zLCB0aGVuIGJlIHN1cmUgdG8gY29tbWVu dCBvdXQgdGhlIGRlZmF1bHQgb25lIGJ5IGluc2VydGluZyB0d28gZm9yd2FyZCBzbGFzaGVz ICgvLykgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQg ZXhwcmVzc2lvbi4gVGhlIG9yaWdpbmFsIHBsdWdpbiBhdXRob3IgYWRkZWQgc29tZSBjb21t ZW50YXJ5IGFib3V0IHRoaXMgd2hpY2ggSSBoYXZlIGxlZnQgaW50YWN0LiBGb3IgbW9zdCBm b2xrcywgaG93ZXZlciwgdGhlIGRlZmF1bHRzIHdpbGwgd29yayBmaW5lLjwvcD4KCjxwPlRo YW5rcyBhbmQgZW5qb3khPC9wPgoiO3M6NDoiY29kZSI7czo3MjMwOiIKZnVuY3Rpb24gY25n X2Fjcm9ueW0oJGF0dHMpIHsKCiAgIC8vIEZpcnN0LCB3ZSBkZWZpbmUgYWxsIHRoZSB0aGlu Z3Mgd2UncmUgZ29pbmcgdG8gcmVwbGFjZSwgd2l0aG91dCB1c2luZyBwYXJlbnRoZXNpcyBv ciBwaXBlcyAofCkKICAgLy8gZWFjaCBkZWZmaW5pdGlvbiBpcyBpbiB0aGUgZm9ybTogLy8g ImFjcm9ueW0iID0+ICJkZWZmaW50aW9uIiwKICAgLy8gRVNQRUNJQUxMWSBub3RlIHRoYXQg dGhleSBhbGwgZW5kIHdpdGggY29tbWFzIEVYQ0VQVCB0aGUgbGFzdCBvbmUKCmdsb2JhbCAk YWNyb255bV9hY3JvbnltOwpnbG9iYWwgJHRoaXNhcnRpY2xlOwpleHRyYWN0KGxBdHRzKGFy cmF5KAoJCQknY29udGVudCcgID0+ICdib2R5JywKCQkpLCRhdHRzKSk7CiR0ZXh0ID0gJHRo aXNhcnRpY2xlWyIkY29udGVudCJdOwoKJHRhZ3NfdG9fc3RyaXAgPSBBcnJheSgiYWNyb255 bSIpOwoKZm9yZWFjaCAoJHRhZ3NfdG9fc3RyaXAgYXMgJHRhZykgewogICAgICAgJHRleHQg PSBwcmVnX3JlcGxhY2UoIi88XC8/IiAuICR0YWcgLiAiKC58XHMpKj8+LyIsIiIsJHRleHQp Owp9CgogICBpZiggZW1wdHkoJGFjcm9ueW1fYWNyb255bSkgKSB7CiAgICAgICRhY3Jvbnlt X2Fjcm9ueW0gPSBhcnJheSgKCSJBT0wiID0+ICJBbWVyaWNhIE9ubGluZSIsCgkiQVBJIiA9 PiAiQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIiwKCSJCVFciID0+ICJCeSBU aGUgV2F5IiwKCSJCUEwiID0+ICJCcm9hZGJhbmQgb3ZlciBQb3dlciBMaW5lcyIsCgkiQ0Qi ID0+ICJDb21wYWN0IERpc2siLAoJIkNHSSIgPT4gIkNvbW1vbiBHYXRld2F5IEludGVyZmFj ZSIsCgkiQ0xJIiA9PiAiQ29tbW9uIExhbmd1YWdlIEludGVycHJldGVyIiwKCSJDTVMiID0+ ICJDb250ZW50IE1hbmFnZW1lbnQgU3lzdGVtIiwKCSJDU1MiID0+ICJDYXNjYWRpbmcgU3R5 bGUgU2hlZXRzIiwKCSJDVlMiID0+ICJDb25jdXJyZW50IFZlcnNpb25zIFN5c3RlbSIsCgki RE5TIiA9PiAiRG9tYWluIE5hbWUgU3lzdGVtIiwKCSJET00iID0+ICJEb2N1bWVudCBPYmpl Y3QgTW9kZWwiLAoJIkRTTCIgPT4gIkRpZ2l0YWwgU3Vic2NyaWJlciBMaW5lIChicm9hZGJh bmQgb3ZlciBwaG9uZSBsaW5lcykiLAoJIkRURCIgPT4gIkRvY3VtZW50IFR5cGUgRGVmaW5p dGlvbiIsCgkiRFZEIiA9PiAiRGlnaXRhbCBWaWRlbyBEaXNjIiwKCSJFQkkiID0+ICJFbGlt IEJpYmxlIEluc3RpdHV0ZSAoQmlibGUgQ29sbGVnZSBpbiB1cHN0YXRlIE5ZKSIsCgkiRUdD IiA9PiAiRWxpbSBHb3NwZWwgQ2h1cmNoIChteSBjaHVyY2gpIiwKCSJFRiIgPT4gIkVsaW0g RmVsbG93c2hpcCAoYW4gYXNzb2NpYXRpb24gb2YgZXZhbmdlbGljYWwgbWluaXN0ZXJzKSIs CgkiRkFRIiA9PiAiRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMiLAoJIkZDQyIgPT4gIkZl ZGVyYWwgQ29tbXVuaWNhdGlvbnMgQ29tbWlzc2lvbiIsCgkiRk9BRiIgPT4gIkZyaWVuZCBP ZiBBIEZyaWVuZCBpcyBhIFJERiBkaWFsZWN0IGZvciBkZXNjcmliaW5nIHJlbGF0aW9uc2hp cHMiLAoJIkYvT1NTIiA9PiAiRnJlZSBhbmQgT3BlbiBTb3VyY2UgU29mdHdhcmUiLAoJIkZT RiIgPT4gIkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiIsCgkiRlRQIiA9PiAiRmlsZSBUcmFu c2ZlciBQcm90b2NvbCIsCgkiRlRUSCIgPT4gIkZpYmVyIHRvIHRoZSBIb21lIiwKCSJHQiIg PT4gIkdpZ2FieXRlIiwKCSJHRkRMIiA9PiAiR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlIiwKCSJHTlUiID0+ICJHbnUncyBOb3QgVW5peCIsCgkiR1BHIiA9PiAiR251IFBHIChP cGVuIHNvdXJjZSBwdWJsaWMga2V5IGVuY3J5cHRpb24pIiwKCSJHUEwiID0+ICJHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSIsCgkiR1RLIiA9PiAiR1VJIFRvb2xLaXQgLSBUaGUgR0lN UCBUb29sIEtpdCBmb3IgZGNyZWF0aW5nIHVzZXItaW50ZXJmYWNlcyIsCgkiR1VJIiA9PiAi R3JhcGhpY2FsIFVzZXIgSW50ZXJmYWNlIiwKCSJIRFRWIiA9PiAiSGlnaCBEZWZpbml0aW9u IFRlbGVWaXNpb24iLAoJIkhUTUwiID0+ICJIeXBlclRleHQgTWFya3VwIExhbmd1YWdlIiwK CSJIVFRQIiA9PiAiSHlwZXJUZXh0IFRyYW5zZmVyIFByb3RvY29sIiwKCSJJRSIgPT4gIklu dGVybmV0IEV4cGxvcmVyIiwKCSJJQ0FOTiIgPT4gIkludGVybmV0IENvcnBvcmF0aW9uIGZv ciBBc3NpZ25lZCBOYW1lcyBhbmQgTnVtYmVycyIsCgkiSUhPUCIgPT4gIkludGVybmF0aW9u YWwgSG91c2Ugb2YgUGFuY2FrZXMiLAoJIklJUkMiID0+ICJpZiBJIHJlbWVtYmVyIGNvcnJl Y3RseSIsCgkiSUlTIiA9PiAiSW50ZXJuZXQgSW5mb21hdGlvbiBTZXJ2ZXIiLAoJIklNIiA9 PiAiSW5zdGFudCBNZXNzYWdlIiwKCSJJTUFQIiA9PiAiSW50ZXJuZXQgTWVzc2FnZSBBY2Nl c3MgUHJvdG9jb2wiLAoJIklQIiA9PiAiSW50ZXJuZXQgUHJvdG9jb2wiLAoJIklSQyIgPT4g IkludGVybmV0IFJlbGF5IENoYXQgLSBsaWtlIEluc3RhbnQgTWVzc2FnaW5nIGZvciBncm91 cHMiLAoJIkpTUCIgPT4gIkphdmEgU2VydmVyIFBhZ2VzIiwKCSJLQiIgPT4gIktpbG9ieXRl IiwKCSJLREUiID0+ICJLIERlc2t0b3AgRW52aXJvbm1lbnQiLAoJIktWTSIgPT4gIktleWJv YXJkLCBWaWRlbywgTW91c2Ugc3dpdGNoIGZvciBjb250cm9sbGluZyBtdWx0aXBsZSBjb21w dXRlcnMiLAoJIkxEQVAiID0+ICJMaWdodHdlaWdodCBEaXJlY3RvcnkgQWNjZXNzIFByb3Rv Y29sIiwKCSJMR1BMIiA9PiAiR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIiwK IAkiTUFQSSIgPT4gIk1haWwgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIiwK CSJNQiIgPT4gIk1lZ2FieXRlIiwKCSJNUDMiID0+ICJNUEVHIExheWVyIDMgLSBhIGNvbW1v biBhdWRpbyBjb2RlYyBmb3IgbXVzaWMgZmlsZXMiLAoJIk1TIiA9PiAiTWljcm9zb2Z0IiwK CSJNU0ROIiA9PiAiTWljcm9zb2Z0IERldmVsb3BlciBOZXR3b3JrIiwKCSJNU0lFIiA9PiAi TWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIiwKCSJNU04iID0+ICJNaWNyb3NvZnQgTmV0 d29yayIsCgkiTk5UUCIgPT4gIk5ldHdvcmsgTmV3cyBUcmFuc2ZlciBQcm90b2NvbCAtIHRo ZSBwcm90b2NvbCB1c2VkIGZvciBOZXdzR3JvdXBzIiwKCSJOWUMiID0+ICJOZXcgWW9yayBD aXR5IiwKCSJPUE1MIiA9PiAiT3V0bGluZSBQcm9jZXNzb3IgTWFya3VwIExhbmd1YWdlIiwK CSJQMlAiID0+ICJQZWVyIFRvIFBlZXIiLAoJIlBCUyIgPT4gIlB1YmxpYyBCcm9hZGNhc3Rp bmcgU3lzdGVtIiwKCSJQREYiID0+ICJQb3J0YWJsZSBEb2N1bWVudCBGb3JtYXQiLAoJIlBH UCIgPT4gIlByZXR0eSBHb29kIFByaXZhY3kgKHB1YmxpYyBrZXkgZW5jcnlwdGlvbikiLAoJ IlBIUCIgPT4gIkh5cGVydGV4dCBQcmVQcm9jZXNzaW5nIiwKCSJQTkciID0+ICJQb3J0YWJs ZSBOZXR3b3JrIEdyYXBoaWNzIiwKCSJQT1AiID0+ICJTaG9ydCBmb3IgUE9QMywgdGhlIFBv c3QgT2ZmaWNlIFByb3RvY29sIGZvciBlbWFpbCIsCgkiUE9QMyIgPT4gIlBvc3QgT2ZmaWNl IFByb3RvY29sIDMgKGZvciBlbWFpbCkiLAoJIlJBSUQiID0+ICJSZWR1bmRhbnQgQXJyYXkg b2YgSW5kZXBlbmRlbnQgRGlza3MiLAoJIlJERiIgPT4gIlJlc291cmNlIERlc2NyaXB0aW9u IEZyYW1ld29yayIsCgkiUlBDIiA9PiAiUmVtb3RlIFByb2NlZHVyZSBDYWxsIiwKCSJSU1Mi ID0+ICJSZWFsbHkgU2ltcGxlIFN5bmRpY2F0aW9uIiwKCSJTSUciID0+ICJTcGVjaWFsIElu dGVyZXN0IEdyb3VwIiwKCSJTT0FQIiA9PiAiU2ltcGxlIE9iamVjdCBBY2Nlc3MgUHJvdG9j b2wiLAoJIlNRTCIgPT4gIlN0cnVjdHVyZWQgUXVlcnkgTGFuZ3VhZ2UgKGEgZGF0YWJhc2Ug c3RhbmRhcmQpIiwKCSJTU0giID0+ICJTZWN1cmUgU0hlbGwgKGVuY3J5cHRlZCBwcm90b2Nv bCByZXBsYWNlcyB0ZWxuZXQgYW5kIEZUUCkiLAoJIlNTTiIgPT4gIlNvY2lhbCBTZWN1cml0 eSBOdW1iZXIiLAoJIlNTTCIgPT4gIlNlY3VyZSBTb2NrZXRzIExheWVyIChhIHNlY3VyaXR5 IHByb3RvY29sKSIsCgkiU1ZHIiA9PiAiU2NhbGFibGUgVmVjdG9yIEdyYXBoaWNzIiwKCSJU Q1AiID0+ICJUcmFuc21pc3Npb24gQ29udHJvbCBQcm90b2NvbCIsCgkiVFhQIiA9PiAiVGV4 dHBhdHRlcm4iLAoJIlVEUCIgPT4gIlVzZXIgRGF0YWdyYW0gUHJvdG9jb2wiLAoJIlVSSSIg PT4gIlVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciIsCgkiVVJMIiA9PiAiVW5pZm9ybSBS ZXNvdXJjZSBMb2NhdG9yIiwKCSJVU0IiID0+ICJVbml2ZXJzYWwgU2VyaWFsIEJ1cyIsCgki VkIiID0+ICJWaXN1YWwgQmFzaWMiLAoJIlZCUyIgPT4gIlZpc3VhbCBCYXNpYyBTY3JpcHQi LAoJIlZNIiA9PiAiVmlydHVhbCBNYWNoaW5lIiwKCSJWTkMiID0+ICJWaXJ0dWFsIE5ldHdv cmsgQ29tcHV0aW5nIiwKCSJXM0MiID0+ICJXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIiwK CSJXQ0FHIiA9PiAiV2ViIENvbnRlbnQgQWNjZXNzaWJpbGl0eSBHdWlkZWxpbmVzIiwKCSJX WVNJV1lHIiA9PiAid2hhdCB5b3Ugc2VlIGlzIHdoYXQgeW91IGdldCIsCgkiWEhUTUwiID0+ ICJlWHRlbnNpYmxlIEh5cGVyVGV4dCBNYXJrdXAgTGFuZ3VhZ2UgLSBIVE1MIHJlZm9ybXVs YXRlZCBhcyBYTUwiLAoJIlhNTCIgPT4gImVYdGVuc2libGUgTWFya3VwIExhbmd1YWdlIiwK CSJYU0wiID0+ICJlWHRlbnNpYmxlIFN0eWxlc2hlZXQgTGFuZ3VhZ2UiLAoJIlhTTFQiID0+ ICJlWHRlbnNpYmxlIFN0eWxlc2hlZXQgTGFuZ3VhZ2UgVHJhbnNmb3JtYXRpb24iLAoJIllN TVYiID0+ICJZb3VyIE1pbGVhZ2UgTWF5IFZhcnkiCiAgICAgICk7CiAgIH0KCiAgICR0ZXh0 ID0gIiAkdGV4dCAiOwoKICAgZm9yZWFjaCgkYWNyb255bV9hY3JvbnltIGFzICRhY3Jvbnlt ID0+ICRkZXNjcmlwdGlvbikgewoKICAgICAgLyogICAgRm9yIGFkdmFuY2VkIHVzZXJzLCB0 aGVyZSBhcmUgc2V2ZXJhbCBwb3NzaWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIGhlcmUuLi4u CiAgICAgICogICAgVGhlIHNhZmVzdCwgImRlZmF1bHQiIG9uZSBpcyBhdCB0aGUgdG9wIC4u LgogICAgICAqICAgIFlvdSAob3IgSSkgbWF5IGNob29zZSB0byB1c2Ugb25lIG9mIHRoZSBv dGhlcnMhCiAgICAgICogICAgUGljayB3aGljaGV2ZXIgeW91IHdhbnQsIGFuZCBtYWtlIFNV UkUgdGhlcmUgaXMgb25seSBvbmUgdGhhdCBpc24ndCBwcmVjZWRlZCBieSBzbGFzaGVzOiAv LwogICAgICAqLwoKCS8vIE5FVyBERUZBVUxUCgkvLyBBTk9USEVSIEFUVEVNUFQgKHYyLjgp CgoJCSR0ZXh0ID0gcHJlZ19yZXBsYWNlKCJ8KD8hPFtePD5dKj8pKD88IVs/Li8mXSlcYiRh Y3JvbnltXGIoPyE6KSg/IVtePD5dKj8+KXxpbXNVIiwiPGFjcm9ueW0gdGl0bGU9XCIkZGVz Y3JpcHRpb25cIj4kYWNyb255bTwvYWNyb255bT4iICwgJHRleHQpOwoKCgkvLyBERUZBVUxU OgoKCS8vIE9MRCBERUZBVUxUOiBDT05TRVJWQVRJVkUgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKCS8vLwkkdGV4dCA9IHByZWdfcmVwbGFjZSgifChbXHNcPl0pJGFjcm9ueW0oW1xz XDxcLiw7OlxcL1wtXSl8aW1zVSIgLCAiJDE8YWNyb255bSB0aXRsZT1cIiRkZXNjcmlwdGlv blwiPiRhY3JvbnltPC9hY3JvbnltPiQyIiAsICR0ZXh0KTsKCgoJLy8gTkVXIERFRkFVTFQ6 IE1PUkUgREFSSU5HICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkvLy8JJHRleHQgPSBw cmVnX3JlcGxhY2UoInwoW14uLz8mXVxiKSRhY3JvbnltKFxiW146XSl8aW1zVSIgLCAiJDE8 YWNyb255bSB0aXRsZT1cIiRkZXNjcmlwdGlvblwiPiRhY3JvbnltPC9hY3JvbnltPiQyIiAs ICR0ZXh0KTsKCgkvL2RvIGl0IHR3aWNlLCBpbiBjYXNlIHRoZXkgdXNlZCB0aGUgc2FtZSBh Y3JvbnltIGluIHRoZWlyIHRpdGxlIGFuZCBhbHQgdGFnLi4uCgkvLy8JJHRleHQgPSBwcmVn X3JlcGxhY2UoInwoPFtBLVphLXpdK1tePl0qKTxhY3JvbnltIHRpdGxlPVwiJGRlc2NyaXB0 aW9uXCI+JGFjcm9ueW08L2Fjcm9ueW0+KFtePl0qPil8aW1zVSIgLCAiJDEkYWNyb255bSQy IiAsICR0ZXh0KTsKCS8vLwkkdGV4dCA9IHByZWdfcmVwbGFjZSgifCg8W0EtWmEtel0rW14+ XSopPGFjcm9ueW0gdGl0bGU9XCIkZGVzY3JpcHRpb25cIj4kYWNyb255bTwvYWNyb255bT4o W14+XSo+KXxpbXNVIiAsICIkMSRhY3JvbnltJDIiICwgJHRleHQpOwoJLy8vCSR0ZXh0ID0g cHJlZ19yZXBsYWNlKCJ8KDxbQS1aYS16XStbXj5dKik8YWNyb255bSB0aXRsZT1cIiRkZXNj cmlwdGlvblwiPiRhY3JvbnltPC9hY3JvbnltPihbXj5dKj4pfGltc1UiICwgIiQxJGFjcm9u eW0kMiIgLCAkdGV4dCk7CgoKCS8vIFNBTUUgQVMgQUJPVkUsIGJ1dCBDQVNFIFNFTlNJVElW RSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJLy8vCSR0ZXh0ID0gcHJlZ19yZXBsYWNl KCJ8KFteLi9dXGIpJGFjcm9ueW0oXGJbXjpdKXxtc1UiICwgIiQxPGFjcm9ueW0gdGl0bGU9 XCIkZGVzY3JpcHRpb25cIj4kYWNyb255bTwvYWNyb255bT4kMiIgLCAkdGV4dCk7CgkvLy8J JHRleHQgPSBwcmVnX3JlcGxhY2UoInwoPFtBLVphLXpdKiBbXj5dKik8YWNyb255bSB0aXRs ZT1cIiRkZXNjcmlwdGlvblwiPiRhY3JvbnltPC9hY3JvbnltPihbXjxdKj4pfG1zVSIgLCAi JDEkYWNyb255bSQyIiAsICR0ZXh0KTsKCgoJLy8gQlkgUkVRVUVTVDogaWYgeW91IFVOQ09N TUVOVCB0aGUgbGFzdCBjb21tZW50ZWQgbGluZSBoZXJlOiAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgoJLy8JYWNyb255bXMgd3JhcHBlZCBpbiBkb2xsYXIgc2lnbnMgd2lsbCBqdXN0 IGJlIHVud3JhcHBlZDoKCS8vCVNvOiAkQU9MJCB3aWxsIGJlY29tZSBBT0wsIHdpdGhvdXQg dGhlIDxhY3JvbnltIHRpdGxlPSJBbWVyaWNhIE9ubGluZSI+QU9MPC9hY3JvbnltPgoKCQkk dGV4dCA9IHByZWdfcmVwbGFjZSgifFskXTxhY3JvbnltIHRpdGxlPVwiJGRlc2NyaXB0aW9u XCI+JGFjcm9ueW08L2Fjcm9ueW0+WyRdfGltc1UiICwgIiRhY3JvbnltIiAsICR0ZXh0KTsK CiAgIH0KCiAgIHJldHVybiB0cmltKCAkdGV4dCApOwoKfQoiO3M6MzoibWQ1IjtzOjMyOiI1 OGVjZTc3NjY1YWU2ZmNiY2YyN2JiNzk0YTRiZjk1MCI7fQ==