# Name: smd_random_text v0.1 # Type: Client side plugin # Random text from file, database, string or TXP field/variable # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTU6InNtZF9yYW5kb21fdGV4dCI7czo2OiJhdXRob3IiO3M6 MTE6IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRh d3Nvbi5jb20vIjtzOjc6InZlcnNpb24iO3M6MzoiMC4xIjtzOjExOiJkZXNjcmlwdGlvbiI7 czo2MToiUmFuZG9tIHRleHQgZnJvbSBmaWxlLCBkYXRhYmFzZSwgc3RyaW5nIG9yIFRYUCBm aWVsZC92YXJpYWJsZSI7czo0OiJjb2RlIjtzOjM1OTM6ImZ1bmN0aW9uIHNtZF9yYW5kb21f dGV4dCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICR0eHBjZmcsICR2YXJpYWJsZSwgJHBy ZXRleHQsICR0aGlzYXJ0aWNsZSwgJHRoaXNmaWxlLCAkdGhpc2xpbmssICR0aGlzaW1hZ2U7 DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndHlwZScgPT4gJ3N0cmluZycsDQoJCSdz b3VyY2UnID0+ICdoZWxsbyB3b3JsZCcsDQoJCSdkZWxpbScgPT4gJ3wnLA0KCQknZmlsZV9k ZWxpbScgPT4gJ1xuJywNCgkJJ2Zvcm0nID0+ICcnLA0KCQknbGltaXQnID0+ICcxJywNCgkJ J2NvdW50JyA9PiAndXAnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdicmVhaycgPT4gJycs DQoJCSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gJzAnLA0KCSksICRhdHRzKSk7DQoN Cgkkc3JjcHQgPSBleHBsb2RlKCRkZWxpbSwgJHNvdXJjZSk7DQoJJGxpbWl0ID0gKCRsaW1p dCA8IDEpID8gMSA6ICRsaW1pdDsNCgkkZnJvbSA9IGFycmF5KCk7DQoJJGl0ZW1zID0gYXJy YXkoKTsNCg0KCXN3aXRjaCAoJHR5cGUpIHsNCgkJY2FzZSAiZmllbGQiOg0KCQkJaWYgKGlz c2V0KCR0aGlzZmlsZVskc3JjcHRbMF1dKSAmJiAkdGhpc2ZpbGVbJHNyY3B0WzBdXSAhPSAi Iikgew0KCQkJCSRmcm9tID0gJHRoaXNmaWxlWyRzcmNwdFswXV07DQoJCQl9IGVsc2UgaWYg KGlzc2V0KCR0aGlzbGlua1skc3JjcHRbMF1dKSAmJiAkdGhpc2xpbmtbJHNyY3B0WzBdXSAh PSAiIikgew0KCQkJCSRmcm9tID0gJHRoaXNsaW5rWyRzcmNwdFswXV07DQoJCQl9IGVsc2Ug aWYgKGlzc2V0KCR0aGlzaW1hZ2VbJHNyY3B0WzBdXSkgJiYgJHRoaXNpbWFnZVskc3JjcHRb MF1dICE9ICIiKSB7DQoJCQkJJGZyb20gPSAkdGhpc2ltYWdlWyRzcmNwdFswXV07DQoJCQl9 IGVsc2UgaWYgKGlzc2V0KCRwcmV0ZXh0WyRzcmNwdFswXV0pICYmICRwcmV0ZXh0WyRzcmNw dFswXV0gIT0gIiIpIHsNCgkJCQkkZnJvbSA9ICRwcmV0ZXh0WyRzcmNwdFswXV07DQoJCQl9 IGVsc2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskc3JjcHRbMF1dKSAmJiAkdGhpc2FydGlj bGVbJHNyY3B0WzBdXSAhPSAiIikgew0KCQkJCSRmcm9tID0gJHRoaXNhcnRpY2xlWyRzcmNw dFswXV07DQoJCQl9DQoJCQlpZiAoJGZyb20pIHsNCgkJCQkkZnJvbSA9IGV4cGxvZGUoJGRl bGltLCAkZnJvbSk7DQoJCQkJJGxpbWl0ID0gKGNvdW50KCRmcm9tKSA8ICRsaW1pdCkgPyBj b3VudCgkZnJvbSkgOiAkbGltaXQ7DQoJCQkJJGl0ZW1zID0gYXJyYXlfcmFuZCgkZnJvbSwg JGxpbWl0KTsNCgkJCX0NCgkJCWJyZWFrOw0KCQljYXNlICJ0eHB2YXIiOg0KCQkJJGZyb20g PSBleHBsb2RlKCRkZWxpbSwgJHZhcmlhYmxlWyRzcmNwdFswXV0pOw0KCQkJJGxpbWl0ID0g KGNvdW50KCRmcm9tKSA8ICRsaW1pdCkgPyBjb3VudCgkZnJvbSkgOiAkbGltaXQ7DQoJCQkk aXRlbXMgPSBhcnJheV9yYW5kKCRmcm9tLCAkbGltaXQpOw0KCQkJYnJlYWs7DQoJCWNhc2Ug InVybHZhciI6DQoJCQkkZnJvbSA9IGV4cGxvZGUoJGRlbGltLCBncHMoJHNyY3B0WzBdKSk7 DQoJCQkkbGltaXQgPSAoY291bnQoJGZyb20pIDwgJGxpbWl0KSA/IGNvdW50KCRmcm9tKSA6 ICRsaW1pdDsNCgkJCSRpdGVtcyA9IGFycmF5X3JhbmQoJGZyb20sICRsaW1pdCk7DQoJCQli cmVhazsNCgkJY2FzZSAiZGF0YWJhc2UiOg0KCQkJJHdoZXJlID0gIjE9MSBPUkRFUiBCWSBS QU5EKCkgTElNSVQgIi4kbGltaXQ7DQoJCQkkZnJvbSA9IHNhZmVfY29sdW1uKCRzcmNwdFsx XSwgJHNyY3B0WzBdLCAkd2hlcmUsICRkZWJ1Zyk7DQoJCQkkbGltaXQgPSBjb3VudCgkZnJv bSk7DQoJCQkkaXRlbXMgPSBhcnJheV9rZXlzKCRmcm9tKTsNCgkJCWJyZWFrOw0KCQljYXNl ICJmaWxlIjoNCgkJCSRwYXRoID0gJHR4cGNmZ1snZG9jX3Jvb3QnXS4oKHN1YnN0cigkc3Jj cHRbMF0sIDAsIDEpPT0nLycpID8gJycgOiAnLycpLiRzcmNwdFswXTsNCgkJCWlmICgkZGVi dWcpIHsNCgkJCQllY2hvICIrKyBGSUxFIFBBVEggKysiOw0KCQkJCWRtcCAoJHBhdGgpOw0K CQkJfQ0KCQkJaWYgKGZpbGVfZXhpc3RzKCRwYXRoKSkgew0KCQkJCSRmcm9tID0gZG9BcnJh eShmaWxlKCRwYXRoKSwgJ3J0cmltJyk7DQoJCQkJaWYgKCRmaWxlX2RlbGltICE9ICdcbicp IHsNCgkJCQkJJGZyb20gPSBleHBsb2RlKCRmaWxlX2RlbGltLCAkZnJvbVswXSk7DQoJCQkJ fQ0KCQkJCSRsaW1pdCA9IChjb3VudCgkZnJvbSkgPCAkbGltaXQpID8gY291bnQoJGZyb20p IDogJGxpbWl0Ow0KCQkJCSRpdGVtcyA9IGFycmF5X3JhbmQoJGZyb20sICRsaW1pdCk7DQoJ CQl9DQoJCQlicmVhazsNCgkJY2FzZSAic3RyaW5nIjoNCgkJZGVmYXVsdDoNCgkJCSRmcm9t ID0gJHNyY3B0Ow0KCQkJJGxpbWl0ID0gKGNvdW50KCRmcm9tKSA8ICRsaW1pdCkgPyBjb3Vu dCgkZnJvbSkgOiAkbGltaXQ7DQoJCQkkaXRlbXMgPSBhcnJheV9yYW5kKCRmcm9tLCAkbGlt aXQpOw0KCQkJYnJlYWs7DQoJfQ0KDQoJLy8gRm9yY2UgYXJyYXkgaWYgaXQgaXNuJ3QgYWxy ZWFkeSAoc29tZSBQSFAgZnVuY3Rpb25zIHJldHVybiBzaW5nbGUgdmFsdWVzKQ0KCWlmICgh aXNfYXJyYXkoJGl0ZW1zKSkgew0KCQkkaXRlbXMgPSBhcnJheSgkaXRlbXMpOw0KCX0NCg0K CWlmICgkZGVidWcpIHsNCgkJZWNobyAiKysgSVRFTSBQT09MICsrIjsNCgkJZG1wKCRmcm9t KTsNCgkJZWNobyAiKysgQ0hPU0VOIElURU1TICsrIjsNCgkJZG1wKCRpdGVtcyk7DQoJfQ0K CWlmICgkZGVidWcgPiAxKSB7DQoJCWVjaG8gIisrIFBSRVRFWFQgKysiOw0KCQlkbXAoJHBy ZXRleHQpOw0KCQllY2hvICIrKyBUSElTIEZJTEUgKysiOw0KCQlkbXAoJHRoaXNmaWxlKTsN CgkJZWNobyAiKysgVEhJUyBMSU5LICsrIjsNCgkJZG1wKCR0aGlzbGluayk7DQoJCWVjaG8g IisrIFRISVMgSU1BR0UgKysiOw0KCQlkbXAoJHRoaXNpbWFnZSk7DQoJCWVjaG8gIisrIFRI SVMgQVJUSUNMRSArKyI7DQoJCWRtcCgkdGhpc2FydGljbGUpOw0KCX0NCg0KCS8vIEZpbmQg b3V0IGhvdyB0byBwbG9uayB0aGUgb3V0cHV0DQoJJHdoYXQgPSAoJGZvcm0pID8gZmV0Y2hf Zm9ybSgkZm9ybSkgOiAoKCR0aGluZykgPyAkdGhpbmcgOiAne3NtZF9ybmRfdHh0fScpOw0K DQoJLy8gUGljayB0aGUgZ2l2ZW4gJGl0ZW1zIGtleXMgb3V0IG9mIHRoZSAkZnJvbSBhcnJh eSBhbmQgZGlzcGxheSB0aGVtDQoJJG91dCA9IGFycmF5KCk7DQoJJGN0ciA9ICgkY291bnQ9 PSJ1cCIpID8gMCA6ICRsaW1pdC0xOw0KCWZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkgew0K CQkkcmVwbGFjZW1lbnQgPSBhcnJheSgNCgkJCSd7c21kX3JuZF90eHR9JyA9PiAkZnJvbVsk aXRlbV0sDQoJCQkne3NtZF9ybmRfdHh0X3Jvd3N9JyA9PiAkbGltaXQsDQoJCQkne3NtZF9y bmRfdHh0X3RoaXNpbmRleH0nID0+ICRjdHIsDQoJCQkne3NtZF9ybmRfdHh0X3RoaXNyb3d9 JyA9PiAkY3RyICsgMSwNCgkJKTsNCgkJJG91dFtdID0gcGFyc2Uoc3RydHIoJHdoYXQsICRy ZXBsYWNlbWVudCkpOw0KCQkkY3RyID0gKCRjb3VudD09InVwIikgPyAkY3RyKzEgOiAkY3Ry LTE7DQoJfQ0KDQoJcmV0dXJuIGRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xh c3MpOw0KfQ0KIjtzOjQ6InR5cGUiO3M6MToiMCI7czo0OiJoZWxwIjtzOjEwMDMwOiIJPHA+ PGRpdiBpZD0ic21kX2hlbHAiPjwvcD4KCgk8aDE+c21kX3JhbmRvbV90ZXh0PC9oMT4KCgk8 cD5DaG9vc2UgcmFuZG9tIHRleHQgc3RyaW5ncyBmcm9tIGEgdmFyaWV0eSBvZiBzb3VyY2Vz LiBDb3VsZCBiZSB1c2VkIGFzIGEgcXVvdGUtb2YtdGhlLWRheSBzeXN0ZW0sIHJhbmRvbSB0 YWcgbGluZXMsIG9yIHNvbWV0aGluZyBtb3JlIGVsYWJvcmF0ZS48L3A+CgoJPGgyPkZlYXR1 cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlB1bGwgdGhlIGl0ZW0gbGlzdCBmcm9tIGVpdGhlcjog YSBnaXZlbiBkZWxpbWl0ZWQgc3RyaW5nLCBhIGZpbGUsIGEgZGF0YWJhc2UgY29sdW1uLCBh IDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+LCB1c2VyLXN1Ym1pdHRlZCBm b3JtIGRhdGEsIG9yIGEgVGV4dHBhdHRlcm4gZmllbGQ8L2xpPgoJCTxsaT5HcmFiIGFzIG1h bnkgcmFuZG9tIGl0ZW1zIGFzIHlvdSBsaWtlIGZyb20geW91ciBjaG9zZW4gbGlzdDwvbGk+ CgkJPGxpPlBhc3MgZWFjaCB0byBhIGZvcm0vdGhlIGNvbnRhaW5lciBpZiB5b3Ugd2lzaCB0 byBmb3JtYXQgdGhlbTwvbGk+Cgk8L3VsPgoKCTxoMj5BdXRob3I8L2gyPgoKCTxwPjxhIGhy ZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb21tZW50Rm9ybSI+U3RlZiBEYXdzb248L2E+ LiBDb21iaW5lcyBpZGVhcyBmcm9tIGRydV9yYW5kb21fdGV4dCBieSBEcmV3IE1jTGVsbGFu IGFuZCBzaW1wbGVfcmFuZG9tX3RleHQgYnkgTWFudWVsIEViZXJ0LCBwbHVzIHNvbWUgc3By aW5rbGluZ3Mgb2YgbXkgb3duLiBNYW55IHRoYW5rcyB0byB0aGUgYXV0aG9ycyBvZiB0aG9z ZSB3b3Jrcy48L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4K Cgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90 ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy8xMDIyL3NtZF9yYW5kb21fdGV4dCI+dGV4dHBhdHRl cm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+ c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBh bmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0u dGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE5MDY3NSI+Zm9ydW0gdGhyZWFk PC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhl cndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+VG8gdW5pbnN0YWxsLCBzaW1wbHkgZGVs ZXRlIGZyb20gdGhlIEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFnZS48L3A+CgoJPGgyPlVzYWdl PC9oMj4KCgk8cD5Vc2UgdGhlIHRhZyBpbiBhbnkgcGFnZSwgZm9ybSBvciBhcnRpY2xlL2Zp bGUvaW1hZ2UvbGluayBjb250ZXh0LjwvcD4KCgk8aDMgY2xhc3M9InRhZyI+c21kX3JhbmRv bV90ZXh0PC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRoZXJlIGFyZSB0d28gbWFu ZGF0b3J5IGF0dHJpYnV0ZXM6IDxjb2RlPnR5cGU8L2NvZGU+IGFuZCA8Y29kZT5zb3VyY2U8 L2NvZGU+LiBUaGUgb3RoZXJzIGFyZSB1c2VkIHRvIGNvbnRyb2wgaG93IHRoZSBpbmZvcm1h dGlvbiBpcyBleHRyYWN0ZWQgYW5kL29yIHByZXNlbnRlZC48L3A+CgoJPGg0IGNsYXNzPSJh dHRzICIgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0gbWFuZCI+dHlwZTwvc3Bhbj4gOiB3aGVyZSB0byBsb29rIGZvciB0 aGUgcG9vbCBvZiB0ZXh0IHN0cmluZ3MuIENhbiBiZSBvbmUgb2YgPGNvZGU+c3RyaW5nPC9j b2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5maWVsZDwvY29kZT4sIDxjb2RlPnR4cHZhcjwv Y29kZT4sIDxjb2RlPnVybHZhcjwvY29kZT4sIDxjb2RlPmRhdGFiYXNlPC9jb2RlPiwgb3Ig PGNvZGU+ZmlsZTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSBtYW5kIj5z b3VyY2U8L3NwYW4+IDogZnVydGhlciByZWZpbmVtZW50IG9mIHdoZXJlIHRvIGZpbmQgdGhl IHN0cmluZ3MgdXNpbmcgdGhlIGZvbGxvd2luZyBydWxlczoKCTx1bD4KCQk8bGk+PHNwYW4+ c3RyaW5nPC9zcGFuPiA6IGEgZGVsaW1pdGVkIGxpc3Qgb2YgdGV4dCAoZS5nLiA8Y29kZT5z b3VyY2U9JnF1b3Q7bXl8Y3JhY2tpbmd8d29yZHN8b2Z8dGhlfGRheXxpbiBhIG5hdHR5fGxp c3QmcXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxzcGFuPmZpZWxkPC9zcGFuPiA6IHRoZSBu YW1lIG9mIHRoZSBUZXh0cGF0dGVybiBmaWVsZCB0byBsb29rIGluIChlLmcuIDxjb2RlPnNv dXJjZT0mcXVvdDthcnRpY2xlX2ltYWdlJnF1b3Q7PC9jb2RlPiBvciA8Y29kZT5zb3VyY2U9 JnF1b3Q7bXlfY3VzdG9tX2ZpZWxkX25hbWUmcXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxz cGFuPnR4cHZhcjwvc3Bhbj4gOiB0aGUgbmFtZSBvZiBhIDxjb2RlPiZsdDt0eHA6dmFyaWFi bGUgLyZndDs8L2NvZGU+IHRoYXQgaGFzIGJlZW4gZGVmaW5lZCBpbiAoZS5nLiA8Y29kZT5z b3VyY2U9JnF1b3Q7bXlfbGlzdCZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4+dXJs dmFyPC9zcGFuPiA6IHRoZSBuYW1lIG9mIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gdmFyaWFibGUgKHZpYSA8c3BhbiBjbGFzcz0iY2FwcyI+R0VUPC9zcGFuPiBvciA8c3Bh biBjbGFzcz0iY2FwcyI+UE9TVDwvc3Bhbj4pIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhl IHBhZ2UgKGUuZy4gPGNvZGU+c291cmNlPSZxdW90O3Byb3BlcnR5X2xpc3QmcXVvdDs8L2Nv ZGU+KTwvbGk+CgkJPGxpPjxzcGFuPmRhdGFiYXNlPC9zcGFuPiA6IHRoZSB0YWJsZSBhbmQg Y29sdW1uIG5hbWUsIHNlcGFyYXRlZCBieSA8Y29kZT5kZWxpbTwvY29kZT4gKGUuZy4gPGNv ZGU+c291cmNlPSZxdW90O3R4cF9jYXRlZ29yeXx0aXRsZSZxdW90OzwvY29kZT4pPC9saT4K CQk8bGk+PHNwYW4+ZmlsZTwvc3Bhbj4gOiBhIGZpbGUgbmFtZSByZWxhdGl2ZSB0byB0aGUg cm9vdCBvZiB5b3VyIHNpdGUsIHdpdGggb3Igd2l0aG91dCBsZWFkaW5nIHNsYXNoIChlLmcu IDxjb2RlPnNvdXJjZT0mcXVvdDtmaWxlcy9teV9zdHJpbmdzLnR4dCZxdW90OzwvY29kZT4p PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRlbGltPC9zcGFu PiA6IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4gd29yZHMvYXR0cmlidXRlIG9wdGlv bnMuIERlZmF1bHQgaXMgYSBwaXBlIDxjb2RlPnw8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmZpbGVfZGVsaW08L3NwYW4+IDogdGhlIGRlbGltaXRlciB0byB1c2Ug d2hlbiBwYXJzaW5nIGZpbGVzLiBJZiBlYWNoIHdvcmQgb3IgcGhyYXNlIGlzIG9uIGl0cyBv d24gbGluZSB0aGVuIHRoZSBkZWZhdWx0IG5ld2xpbmUgKDxjb2RlPlxuPC9jb2RlPikgaXMg c3VmZmljaWVudC4gSWYgeW91IHdpc2ggdG8gaGF2ZSBhbGwgeW91ciB0ZXh0IHN0cmluZ3Mg b24gb25lIGxpbmUgb2YgdGhlIGZpbGUgZGVsaW1pdGVkIGJ5IHNvbWUgb3RoZXIgY2hhcmFj dGVyLCBzZXQgeW91ciBvd24gZGVsaW1pdGVyIGhlcmU8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+bGltaXQ8L3NwYW4+IDogdGhlIG51bWJlciBvZiBpdGVtcyB0byBwdWxsIGZy b20gdGhlIGxpc3QuIERlZmF1bHRzIHRvIDEuIElmIHlvdSBzcGVjaWZ5IG1vcmUgdGhhbiB0 aGUgYXZpbGFibGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBwb29sLCB0aGUgZW50aXJlIHBv b2wgd2lsbCBiZSB1c2VkIGFuZCBwcmVzZW50ZWQgaW4gYSByYW5kb20gb3JkZXI8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y291bnQ8L3NwYW4+IDogd2hldGhlciB0byBjb3Vu dCA8Y29kZT51cDwvY29kZT4gKHRoZSBkZWZhdWx0KSBvciA8Y29kZT5kb3duPC9jb2RlPiBm b3IgZWFjaCByYW5kb20gcGllY2Ugb2YgdGV4dDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5mb3JtPC9zcGFuPiA6IHRoZSBmb3JtIHRvIHVzZSB0byBmb3JtYXQgdGhlIHRleHQu IElmIG5vdCBzdXBwbGllZCwgd2lsbCB0cnkgdGhlIGNvbnRhaW5lci4gSWYgdGhhdCYjODIx NztzIG5vdCB1c2VkIGVpdGhlciwgdGhlIHBsdWdpbiB3aWxsIHNpbXBseSBvdXRwdXQgdGhl IGNob3NlbiB0ZXh0IG9uIGl0cyBvd248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgd2l0aCB3aGljaCB0byB3cmFwIHRo ZSBjaG9zZW4gc3RyaW5ncywgZWcgPGNvZGU+d3JhcHRhZz0mcXVvdDt1bCZxdW90OzwvY29k ZT4uIERlZmF1bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YnJl YWs8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHB1dCBiZXR3ZWVuIHN1Y2Nlc3NpdmUg aXRlbXMgb2YgdGV4dCwgZWcgPGNvZGU+YnJlYWs9JnF1b3Q7bGkmcXVvdDs8L2NvZGU+LiBE ZWZhdWx0IGlzIHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9z cGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyB0byBhcHBs eSB0byB0aGUgaXRlbSB3cmFwdGFnLCBlZyA8Y29kZT5jbGFzcz0mcXVvdDtyYW5kb21fc3Ry aW5ncyZxdW90OzwvY29kZT4uIERlZmF1bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+ZGVidWc8L3NwYW4+IDogc2V0IHRvIDxjb2RlPjE8L2NvZGU+IHRvIHNo b3cgdGhlIHBvb2wsIHRoZSBmaWxlIG5hbWUgKGlmIGFwcGxpY2FibGUpIGFuZCB0aGUgY2hv c2VuIGl0ZW1zLiBVc2UgPGNvZGU+MjwvY29kZT4gdG8gc2VlIHdoYXQgPGNvZGU+ZmllbGQ8 L2NvZGU+cyBhcmUgYXZhaWxhYmxlPC9saT4KCTwvdWw+CgoJPGgzPlJlcGxhY2VtZW50IHRh Z3M8L2gzPgoKCTxwPldoZW4gdXNpbmcgYSBmb3JtIG9yIGNvbnRhaW5lciwgdXNlIHRoZSBm b2xsb3dpbmcgcmVwbGFjZW1lbnQgdGFncyB0byBpbnNlcnQgdGhlIHJlbGV2YW50IHBpZWNl IG9mIGluZm9ybWF0aW9uIHdoZXJldmVyIHlvdSB3YW50IGl0OjwvcD4KCgk8cD48Y29kZT57 c21kX3JuZF90eHR9PC9jb2RlPiA6IHRoZSB0ZXh0IHN0cmluZyBpdHNlbGY8YnIgLz4KPGNv ZGU+e3NtZF9ybmRfdHh0X3Jvd3N9PC9jb2RlPiA6IHRoZSBudW1iZXIgb2YgaXRlbXMgaW4g dG90YWw8YnIgLz4KPGNvZGU+e3NtZF9ybmRfdHh0X3RoaXNyb3d9PC9jb2RlPiA6IHRoZSBj dXJyZW50IHJvdyBudW1iZXI8YnIgLz4KPGNvZGU+e3NtZF9ybmRfdHh0X3RoaXNpbmRleH08 L2NvZGU+IDogdGhlIGN1cnJlbnQgcm93IGluZGV4ICh6ZXJvLWJhc2VkKTwvcD4KCgk8aDI+ RXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE8L2gzPgoKCTxwPlF1b3Rl IG9mIHRoZSBkYXkgZnJvbSBhIGRhdGFiYXNlLiBUaGUgdGFibGUgKGFkZGVkIHRvIHRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBkYXRhYmFzZTsgdGhlIGNvbm5lY3Rpb24g bXVzdCBhbHJlYWR5IGJlIG9wZW4pIGlzIGNhbGxlZCAmIzgyMjA7cXVvdGVzJiM4MjIxOyBh bmQgdGhlIGNvbHVtbiBjb250YWluaW5nIHRoZSBxdW90ZXMgaXMgY2FsbGVkICYjODIyMDt0 ZXh0JiM4MjIxOzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9yYW5kb21fdGV4dCB0eXBlPSZxdW90O2RhdGFiYXNlJnF1b3Q7CiAg ICAgc291cmNlPSZxdW90O3F1b3Rlc3x0ZXh0JnF1b3Q7Jmd0OwogICZsdDtkaXYgY2xhc3M9 JnF1b3Q7cW90ZCZxdW90OyZndDtRdW90ZSBvZiB0aGUgZGF5OiAmbHQ7YnIgLyZndDt7c21k X3JuZF90eHR9Jmx0Oy9kaXYmZ3Q7CiZsdDsvdHhwOnNtZF9yYW5kb21fdGV4dCZndDsKPC9j b2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI8L2gzPgoKCTxwPjUgcmFuZG9t IGNvbW1lbnRzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDt0eHA6c21kX3JhbmRvbV90ZXh0IHR5cGU9JnF1b3Q7ZGF0YWJhc2UmcXVvdDsKICAg ICBzb3VyY2U9JnF1b3Q7dHhwX2Rpc2N1c3N8bWVzc2FnZSZxdW90OyBsaW1pdD0mcXVvdDs1 JnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzwvaDM+CgoJ PHA+VG9wIHRlbiByYW5kb20gc2lsbHkgd29yZHMgZnJvbSBhIGxpc3QgaW4gYSBmaWxlIGlu IHRoZSB0ZXh0cGF0dGVybiByb290IGZvbGRlciwgY291bnRpbmcgZG93biBmcm9tIDEwIHRv IDEuIEVhY2ggd29yZCBtdXN0IGJlIG9uIGEgc2VwYXJhdGUgcm93IG9mIHRoZSBmaWxlIHVu bGVzcyB5b3Ugc3BlY2lmeSB0aGUgPGNvZGU+ZGVsaW08L2NvZGU+IGF0dHJpYnV0ZSB0byBi ZSBzb21ldGhpbmcgZWxzZTsgaW4gd2hpY2ggY2FzZSB0aGUgd29yZHMgbXVzdCBhbGwgYXBw ZWFyIG9uIHRoZSBmaXJzdCByb3cgb2YgdGhlIGZpbGUuIElmIHRoZXJlIGFyZW4mIzgyMTc7 dCAxMCBpdGVtcyBpbiB0aGUgZmlsZSwgdGhlIGNvdW50IGJlZ2lucyBmcm9tIGhvd2V2ZXIg aGlnaCBpdCBjYW4gZ28uPC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfcmFuZG9tX3RleHQgdHlwZT0mcXVvdDtmaWxlJnF1b3Q7CiAg ICAgc291cmNlPSZxdW90O3dvcmRzLnR4dCZxdW90OyBsaW1pdD0mcXVvdDsxMCZxdW90Owog ICAgIGZvcm09JnF1b3Q7d29yZG91dCZxdW90OyBjb3VudD0mcXVvdDtkb3duJnF1b3Q7IC8m Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5hbmQgaW4gZm9ybSA8Y29kZT53b3Jkb3V0PC9jb2Rl Pjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4je3NtZF9y bmRfdHh0X3RoaXNyb3d9IDoge3NtZF9ybmRfdHh0fSAmbHQ7YnIgLyZndDsKPC9jb2RlPjwv cHJlPgoKCTxoMyBpZD0iZWc0Ij5FeGFtcGxlIDQ8L2gzPgoKCTxwPlVzZSBhIDxjb2RlPiZs dDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+IHRvIGhvbGQgYSBsaXN0IG9mIHJhbmRvbSBl LW1haWwgYWRkcmVzc2VzIGZyb20gd2hpY2ggb25lIHdpbGwgYmUgc2VsZWN0ZWQgdG8gYmUg c2VudCB2aWEgYSB6ZW1fY29udGFjdF9yZWJvcm4gZm9ybTo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnZhcmlhYmxlIG5hbWU9JnF1b3Q7 ZW1haWxzJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7QWxkb3VzLkh1eGxleXxXaWxsaWFtLlNo YWtlc3BlYXJlfEpvaG4uQmV0amVtYW4mcXVvdDsgLyZndDsKJmx0O3R4cDp6ZW1fY29udGFj dAogICAgIHRvPSYjMzk7Jmx0O3R4cDpzbWRfcmFuZG9tX3RleHQgdHlwZT0mcXVvdDt0eHB2 YXImcXVvdDsKICAgICBzb3VyY2U9JnF1b3Q7ZW1haWxzJnF1b3Q7IC8mZ3Q7QHdyaXRlcnMu Y29tJiMzOTsmZ3Q7CiAgLy8gT3RoZXIgemVtX2NvbnRhY3Qgb3B0aW9ucwombHQ7L3R4cDp6 ZW1fY29udGFjdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWc1Ij5FeGFtcGxlIDU8 L2gzPgoKCTxwPkluZGlyZWN0bHksIG5vdCBqdXN0IGZvciB0ZXh0ISBDaG9vc2UgdHdvIHJh bmRvbSBpbWFnZSBJRHMgZnJvbSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGdpdmVuIGluIHRo ZSBjdXN0b20gZmllbGQgbGFiZWxsZWQgJiM4MjIwO215X2ltYWdlcyYjODIyMTsgYW5kIGRp c3BsYXkgdGhlbSB2aWEgdGhlIGJ1aWx0LWluIDxjb2RlPiZsdDt0eHA6aW1hZ2UgLyZndDs8 L2NvZGU+IHRhZy48L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9yYW5kb21fdGV4dCB0eXBlPSZxdW90O2ZpZWxkJnF1b3Q7CiAgICAg c291cmNlPSZxdW90O215X2ltYWdlcyZxdW90OyBsaW1pdD0mcXVvdDsyJnF1b3Q7IGRlbGlt PSZxdW90OywmcXVvdDsmZ3Q7CiAgJmx0O3R4cDppbWFnZSBpZD0mcXVvdDt7c21kX3JuZF90 eHR9JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnNtZF9yYW5kb21fdGV4dCZndDsKPC9jb2RlPjwv cHJlPgoKCTxoMyBpZD0iZWc2Ij5FeGFtcGxlIDY8L2gzPgoKCTxwPkFkZCB0aGlzIHRvIHlv dXIgPGNvZGU+ZmlsZXM8L2NvZGU+IGZvcm0gdG8gZGlzcGxheSBhIHJhbmRvbSBmYWN0IGFi b3V0IGVhY2ggZmlsZSBmcm9tIGEgcGlwZS1kZWxtaWl0ZWQgbGlzdCBkZWZpbmVkIGluIHRo ZSBmaWxlJiM4MjE3O3MgPGNvZGU+ZGVzY3JpcHRpb248L2NvZGU+IGZpZWxkOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3JhbmRv bV90ZXh0IHR5cGU9JnF1b3Q7ZmllbGQmcXVvdDsKICAgICBzb3VyY2U9JnF1b3Q7ZGVzY3Jp cHRpb24mcXVvdDsmZ3Q7CiZsdDticiAvJmd0O0ZBQ1Q6IHtzbWRfcm5kX3R4dH0KJmx0Oy90 eHA6c21kX3JhbmRvbV90ZXh0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+PC9kaXY+PC9wPgo8 IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5cGU9InRleHQvY3Nz Ij4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVscCBjb2RlIHsgZm9u dC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIs IG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVscCBjb2Rl LmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyBi YWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAx MHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21kX2hlbHAg YTp2aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVy LWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVs cCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNv cmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFkZGluZy1i b3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIwcHggR2Vv cmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KI3Nt ZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjEw cHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9 CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250OiBib2xkIDEycHggQXJpYWwsIHNh bnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7dGV4dC10 cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CiNzbWRf aGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNw YWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2Fz ZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojMzNkOyB9 CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQg Izk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpjZW50ZXI7 IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3Jk ZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVsIHsgbGlz dC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHgg NXB4IDMwcHg7IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5 bGU+CjwhLS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoi OWUzOWM4ZGM0YmZiOGFiMmUzZTQ5NTQ4OTliMTc3MDMiO30=