# Name: soo_article_filter v0.3.3 # Type: Client side plugin # Create filtered list of articles before sending to txp:article or txp:article_custom # Author: Jeff Soo # URL: http://ipsedixit.net/txp/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE4OiJzb29fYXJ0aWNsZV9maWx0ZXIiO3M6NjoiYXV0aG9y IjtzOjg6IkplZmYgU29vIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI1OiJodHRwOi8vaXBzZWRp eGl0Lm5ldC90eHAvIjtzOjc6InZlcnNpb24iO3M6NToiMC4zLjMiO3M6MTE6ImRlc2NyaXB0 aW9uIjtzOjg0OiJDcmVhdGUgZmlsdGVyZWQgbGlzdCBvZiBhcnRpY2xlcyBiZWZvcmUgc2Vu ZGluZyB0byB0eHA6YXJ0aWNsZSBvciB0eHA6YXJ0aWNsZV9jdXN0b20iO3M6NDoiaGVscCI7 czoxODI2OToiPGgxPnNvb19hcnRpY2xlX2ZpbHRlcjwvaDE+Cgo8cD5UaGlzIGlzIGEgcGx1 Z2luIGZvciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4uY29tLyI+VGV4dHBhdHRlcm48 L2E+LjwvcD4KCjxwPkNvZGUgcHJldmlldyBhbmQgY29tcGlsZWQgKHJlYWR5LXRvLWluc3Rh bGwpIGRvd25sb2FkcyBhdmFpbGFibGUgPGEgaHJlZj0iaHR0cDovL2lwc2VkaXhpdC5uZXQv dHhwLzgwL3Nvb19hcnRpY2xlX2ZpbHRlciI+b24gdGhlIGF1dGhvciYjODIxNztzIHdlYnNp dGU8L2E+IChsYXRlc3QgcmVsZWFzZSBvbmx5KSBhbmQgPGEgaHJlZj0iaHR0cHM6Ly9naXRo dWIuY29tL2pzb28vc29vX2FydGljbGVfZmlsdGVyIj5vbiBHaXRIdWI8L2E+IChhbGwgcmVs ZWFzZSB2ZXJzaW9ucykuPC9wPgoKIDxkaXYgaWQ9InRvYyI+Cgo8aDI+Q29udGVudHM8L2gy PgoKPHVsPgoJPGxpPjxhIGhyZWY9IiNyZXF1aXJlbWVudHMiPlJlcXVpcmVtZW50czwvYT48 L2xpPgoJPGxpPjxhIGhyZWY9IiNvdmVydmlldyI+T3ZlcnZpZXc8L2E+PC9saT4KCTxsaT48 YSBocmVmPSIjdXNhZ2UiPlVzYWdlPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI2F0dHJpYnV0 ZXMiPkF0dHJpYnV0ZXM8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjZXhhbXBsZXMiPkV4YW1w bGVzPC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjZXhwaXJlZCI+RXhwaXJlZCBhcnRpY2xl czwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjY3VzdG9tX3NldCI+Q3VzdG9tIGZpZWxkIG5v dCBlbXB0eTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjY3VzdG9tX25vdF9zZXQiPkN1c3Rv bSBmaWVsZCBlbXB0eTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjY3VzdG9tX2luY2x1ZGVz Ij5DdXN0b20gZmllbGQgaW5jbHVkZXMgJiM4MjMwOzwvYT48L2xpPgoJCTxsaT48YSBocmVm PSIjY3VzdG9tX3JlZ2V4cCI+Q3VzdG9tIGZpZWxkIG1hdGNoZXMgcmVndWxhciBleHByZXNz aW9uPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNpbWFnZSI+QXJ0aWNsZXMgd2l0aCBhbiBh c3NpZ25lZCBpbWFnZTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjbGF0ZXN0X2ltYWdlIj5M YXRlc3QgYXJ0aWNsZSB3aXRoIGFuIGFzc2lnbmVkIGltYWdlPC9hPjwvbGk+CgkJPGxpPjxh IGhyZWY9IiNyYW5nZSI+U2VsZWN0IG9uIGEgbnVtZXJpYyByYW5nZTwvYT48L2xpPgoJCTxs aT48YSBocmVmPSIjaW5kZXgiPkFscGhhYmV0aWNhbCBpbmRleDwvYT48L2xpPgoJCTxsaT48 YSBocmVmPSIjdXBkYXRlIj5DaGFuZ2UgYXJ0aWNsZSBzdGF0dXM8L2E+PC9saT4KCTwvdWw+ PC9saT4KCTxsaT48YSBocmVmPSIjbm90ZXMiPlRlY2huaWNhbCBub3RlczwvYT4KCTx1bD4K CQk8bGk+PGEgaHJlZj0iI3NhZmV0eSI+U2FmZXR5PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9 IiN0cm91Ymxlc2hvb3RpbmciPlRyb3VibGVzaG9vdGluZzwvYT48L2xpPgoJCTxsaT48YSBo cmVmPSIjcGVyZm9ybWFuY2UiPlBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zPC9hPjwvbGk+ CgkJPGxpPjxhIGhyZWY9IiNtdWx0aWRvYyI+TXVsdGlkb2MgY29tcGF0aWJpbGl0eTwvYT48 L2xpPgoJPC91bD48L2xpPgoJPGxpPjxhIGhyZWY9IiNoaXN0b3J5Ij5IaXN0b3J5PC9hPjwv bGk+CjwvdWw+CgogPC9kaXY+Cgo8aDIgaWQ9InJlcXVpcmVtZW50cyI+UmVxdWlyZW1lbnRz PC9oMj4KCjxwPlRoaXMgcGx1Z2luIHJlbGllcyBvbiB0aGUgdHJpY2sgb2YgY3JlYXRpbmcg YSB0ZW1wb3JhcnkgZGF0YWJhc2UgdGFibGUgaW4gbWVtb3J5LiBTbyB0aGUgTXlTUUwgdXNl ciB5b3UgaGF2ZSBhc3NpZ25lZCB0byBUZXh0cGF0dGVybiAoaW5kaWNhdGVkIGluIGNvbmZp Zy5waHApIG11c3QgaGF2ZSA8Y29kZT5DUkVBVEU8L2NvZGU+IHByaXZpbGVnZXMuIElmIHRh YmxlIGNyZWF0aW9uIGZhaWxzLCB0aGUgcGx1Z2luIHdpbGwgcmV0dXJuIGJsYW5rIChhcyBv ZiB2ZXJzaW9uIDAuMi41KS48L3A+Cgo8aDIgaWQ9Im92ZXJ2aWV3Ij5PdmVydmlldzwvaDI+ Cgo8cD5Db250YWlucyBvbmUgdGFnLCA8Y29kZT5zb29fYXJ0aWNsZV9maWx0ZXI8L2NvZGU+ LiBJdCBhbGxvd3MgeW91IHRvIHByZS1zZWxlY3QgYXJ0aWNsZXMgdG8gbGltaXQgdGhlIHNj b3BlIG9mIGFuIDxjb2RlPmFydGljbGU8L2NvZGU+IG9yIDxjb2RlPmFydGljbGVfY3VzdG9t PC9jb2RlPiB0YWcsIHVzaW5nIHNlbGVjdGlvbiBjcml0ZXJpYSBub3Qgb2ZmZXJlZCBieSB0 aG9zZSB0YWdzLiBJbiBzaG9ydCwgaXQmIzgyMTc7cyBsaWtlIGFkZGluZyBzZWxlY3Rpb24g YXR0cmlidXRlcyB0byBvbmUgb2YgdGhvc2UgdGFncy48L3A+Cgo8cD5BcyBvZiB2ZXJzaW9u IDAuMi40IHRoZXJlIGlzIGFsc28gdGhlIG9wdGlvbiB0byBhZGQgaW5kZXgtc3R5bGUgdGl0 bGVzIHRvIGEgY3VzdG9tIGZpZWxkLiBFLmcuLCAmIzgyMjA7VGhlIEZpcnN0IEFydGljbGUm IzgyMjE7IGJlY29tZXMgJiM4MjIwO0ZpcnN0IEFydGljbGUsIFRoZSYjODIyMTsuIFlvdSBj YW4gdGhlbiBhY2Nlc3MgdGhhdCBjdXN0b20gZmllbGQgd2l0aCB0aGUgdXN1YWwgVHhwIGN1 c3RvbSBmaWVsZCB0YWdzLCBhbGxvd2luZyB5b3UgdG8gY3JlYXRlIGFscGhhYmV0aWNhbCBp bmRleGVzLjwvcD4KCjxwPkFzIG9mIHZlcnNpb24gMC4yLjYgeW91IGNhbiBkbyBhbiBhZGRp dGlvbmFsIDxjb2RlPlVQREFURTwvY29kZT4gcXVlcnkgb24gdGhlIHRlbXBvcmFyeSB0YWJs ZSwgYnkgdXNpbmcgdGhlIDxjb2RlPnVwZGF0ZV9zZXQ8L2NvZGU+IGFuZCA8Y29kZT51cGRh dGVfd2hlcmU8L2NvZGU+IGF0dHJpYnV0ZXMuIE9uZSB1c2UgZm9yIHRoaXMgaXMgdG8gY2hh bmdlIGFydGljbGUgc3RhdHVzIGZyb20gJiM4MjIwO0RyYWZ0JiM4MjIxOyB0byAmIzgyMjA7 TGl2ZSYjODIyMTsgb3IgJiM4MjIwO1N0aWNreSYjODIyMTssIGFsbG93aW5nIHlvdSB0byBk aXNwbGF5IGRyYWZ0IGFydGljbGVzIHB1YmxpY2x5LjwvcD4KCjxwPlRoYW5rcyB0byA8YSBo cmVmPSJodHRwczovL2dpdGh1Yi5jb20vbmV0Y2FydmVyIj5uZXQtY2FydmVyPC9hPiBmb3Ig Y2x1ZWluZyBtZSBpbiB0byBNeVNRTCB0ZW1wb3JhcnkgdGFibGVzLjwvcD4KCjxoMiBpZD0i dXNhZ2UiPlVzYWdlPC9oMj4KCjxwPjxjb2RlPnNvb19hcnRpY2xlX2ZpbHRlcjwvY29kZT4g aXMgYSBjb250YWluZXIgdGFnLCBpbnRlbmRlZCBhcyBhIHdyYXBwZXIgZm9yIDxjb2RlPmFy dGljbGU8L2NvZGU+IG9yIDxjb2RlPmFydGljbGVfY3VzdG9tPC9jb2RlPi48L3A+Cgo8cHJl PiZsdDt0eHA6c29vX2FydGljbGVfZmlsdGVyJmd0OwombHQ7dHhwOmFydGljbGUgLyZndDsK Jmx0Oy90eHA6c29vX2FydGljbGVfZmlsdGVyJmd0OzwvcHJlPgoKPHA+PHN0cm9uZz5Ob3Rl Ojwvc3Ryb25nPiB0aGUgZmlsdGVyIHdpbGwgbm90IGJlIGFwcGxpZWQgdG8gc2VhcmNoIHJl c3VsdHMuPC9wPgoKPGgyIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9oMj4KCjxwPk5v bmUgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj4sIGJ1dCB3aXRob3V0 IGF0dHJpYnV0ZXMgdGhlIHRhZyBkb2VzbiYjODIxNzt0IGRvIGFueXRoaW5nIHVzZWZ1bC48 L3A+Cgo8dWw+Cgk8bGk+PGNvZGU+ZXhwaXJlczwvY29kZT4gPGVtPigmIzgyMjA7cGFzdCYj ODIyMTssICYjODIyMDtmdXR1cmUmIzgyMjE7LCAmIzgyMjA7YW55JiM4MjIxOywgb3IgMCk8 L2VtPjxiciAvPgpJZiBzZXQgdG8gJiM4MjIwO3Bhc3QmIzgyMjE7LCAmIzgyMjA7ZnV0dXJl JiM4MjIxOywgb3IgJiM4MjIwO2FueSYjODIyMTssIG9ubHkgaW5jbHVkZSBhcnRpY2xlcyB3 aXRoIGFuIDxjb2RlPkV4cGlyZXM8L2NvZGU+IHZhbHVlLiBJZiAgc2V0IHRvICYjODIyMDsw JiM4MjIxOywgb25seSBpbmNsdWRlIGFydGljbGVzIHdpdGhvdXQgYW4gPGNvZGU+RXhwaXJl czwvY29kZT4gdmFsdWUuICg8c3BhbiBjbGFzcz0iZGVmYXVsdCI+RGVmYXVsdDwvc3Bhbj4g aXMgPGNvZGU+bnVsbDwvY29kZT47IG5vIGZpbHRlciBvbiA8Y29kZT5FeHBpcmVzPC9jb2Rl Pi4pPC9saT4KCTxsaT48Y29kZT5jdXN0b21maWVsZG5hbWU8L2NvZGU+IDxlbT4oZW1wdHkg b3IgcmVnZXhwIHBhdHRlcm4pPC9lbT4gcmVwbGFjZSAmIzgyMjA7Y3VzdG9tZmllbGRuYW1l JiM4MjIxOyB3aXRoIGFueSBjdXN0b20gZmllbGQgbmFtZSBhcyBzZXQgaW4gc2l0ZSBwcmVm ZXJlbmNlcy4gSWYgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpcyBlbXB0eSwgb25seSBhcnRpY2xl cyB3aXRoIGFuIGVtcHR5IHZhbHVlIGZvciB0aGlzIGN1c3RvbSBmaWVsZCB3aWxsIGJlIGlu Y2x1ZGVkLiBPdGhlcndpc2UgdGhlIGF0dHJpYnV0ZSB2YWx1ZSB3aWxsIGJlIHRyZWF0ZWQg YXMgYSA8YSBocmVmPSJodHRwOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzUuMS9lbi9y ZWdleHAuaHRtbCI+TXlTUUwgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm48L2E+LjwvbGk+ Cgk8bGk+PGNvZGU+YXJ0aWNsZV9pbWFnZTwvY29kZT4gPGVtPihib29sZWFuKTwvZW0+IElm IDxjb2RlPjE8L2NvZGU+LCBvbmx5IHNob3cgYXJ0aWNsZXMgd2l0aCBhbiBhcnRpY2xlIGlt YWdlLiBJZiA8Y29kZT4wPC9jb2RlPiwgb25seSBzaG93IGFydGljbGVzIHdpdGhvdXQgYW4g YXJ0aWNsZSBpbWFnZS4gSWYgbm90IHNldCAodGhlIDxzcGFuIGNsYXNzPSJkZWZhdWx0Ij5k ZWZhdWx0PC9zcGFuPiksIGFydGljbGUgaW1hZ2UgaGFzIG5vIGVmZmVjdC48L2xpPgoJPGxp Pjxjb2RlPm11bHRpZG9jPC9jb2RlPiA8ZW0+KGJvb2xlYW4pPC9lbT4gPHNwYW4gY2xhc3M9 ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+IGZhbHNlPGJyIC8+CkZvciB1c2Ugd2l0aCB0aGUg PGEgaHJlZj0iaHR0cDovL2lwc2VkaXhpdC5uZXQvdHhwLzI0L211bHRpZG9jIj5zb29fbXVs dGlkb2M8L2E+IHBsdWdpbi4gU2VlIDxhIGhyZWY9IiNtdWx0aWRvYyI+bm90ZTwvYT4gYmVs b3cuPC9saT4KCTxsaT48Y29kZT5pbmRleF9pZ25vcmU8L2NvZGU+IDxlbT4obGlzdCk8L2Vt PiBDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsZWFkaW5nIGFydGljbGVzIHRvIHRyYW5zcG9z ZSwgd2hlbiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggPGNvZGU+aW5kZXhfZmllbGQ8L2Nv ZGU+ICg8c3BhbiBjbGFzcz0iZGVmYXVsdCI+RGVmYXVsdDwvc3Bhbj4gJiM4MjIwO0EsQW4s VGhlJiM4MjIxOyk8L2xpPgoJPGxpPjxjb2RlPmluZGV4X2ZpZWxkPC9jb2RlPiA8ZW0+KGN1 c3RvbSBmaWVsZCBuYW1lKTwvZW0+IFNldCB0aGlzIHRvIHRoZSBuYW1lIG9mIGFuIGV4aXN0 aW5nIGN1c3RvbSBmaWVsZCB0byBob2xkIGluZGV4LXN0eWxlIHRpdGxlcyAoZS5nLiAmIzgy MjA7VGhlIFRpdGxlJiM4MjIxOyBiZWNvbWVzICYjODIyMDtUaXRsZSwgVGhlJiM4MjIxOyku IDxzcGFuIGNsYXNzPSJkZWZhdWx0Ij5EZWZhdWx0PC9zcGFuPiBlbXB0eS48L2xpPgoJPGxp Pjxjb2RlPnVwZGF0ZV9zZXQ8L2NvZGU+IDxlbT4oPHNwYW4gY2xhc3M9ImNhcHMiPlNRTDwv c3Bhbj4gY2xhdXNlKTwvZW0+IDxzcGFuIGNsYXNzPSJkZWZhdWx0Ij5kZWZhdWx0PC9zcGFu PiBlbXB0eS4gU2V0IHRoaXMgKGFuZCwgb3B0aW9uYWxseSwgPGNvZGU+dXBkYXRlX3doZXJl PC9jb2RlPikgdG8gcnVuIGFuIDxjb2RlPlVQREFURTwvY29kZT4gcXVlcnkgb24gdGhlIHRl bXBvcmFyeSB0YWJsZS48L2xpPgoJPGxpPjxjb2RlPnVwZGF0ZV93aGVyZTwvY29kZT4gPGVt Pig8c3BhbiBjbGFzcz0iY2FwcyI+U1FMPC9zcGFuPiBjbGF1c2UpPC9lbT4gPHNwYW4gY2xh c3M9ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+ICYjODIyMDsxPTEmIzgyMjE7LiBVc2UgdGhp cyBpbiBjb25qdW5jdGlvbiB3aXRoIDxjb2RlPnVwZGF0ZV93aGVyZTwvY29kZT4gdG8gcnVu IGFuIDxjb2RlPlVQREFURTwvY29kZT4gcXVlcnkgb24gdGhlIHRlbXBvcmFyeSB0YWJsZS48 L2xpPgoJPGxpPjxjb2RlPndoZXJlPC9jb2RlPiA8ZW0+KDxzcGFuIGNsYXNzPSJjYXBzIj5T UUw8L3NwYW4+IGNsYXVzZSk8L2VtPiA8c3BhbiBjbGFzcz0iZGVmYXVsdCI+ZGVmYXVsdDwv c3Bhbj4gZW1wdHkuIEFueSB0ZXh0IGhlcmUgd2lsbCBiZSBhZGRlZCB0byB0aGUgZW5kIG9m IHRoZSBhcnJheSBvZiA8Y29kZT5XSEVSRTwvY29kZT4gZXhwcmVzc2lvbnMgdXNlZCBmb3Ig YXJ0aWNsZSBzZWxlY3Rpb24uPC9saT4KCTxsaT48Y29kZT5saW1pdDwvY29kZT4gPGVtPihp bnRlZ2VyKTwvZW0+IE51bWJlciBvZiBhcnRpY2xlcyB0byBzZWxlY3QuIDxzcGFuIGNsYXNz PSJkZWZhdWx0Ij5kZWZhdWx0PC9zcGFuPiB1bnNldCwgbm8gbGltaXQuPC9saT4KCTxsaT48 Y29kZT5vZmZzZXQ8L2NvZGU+IDxlbT4oaW50ZWdlcik8L2VtPiBOdW1iZXIgb2YgYXJ0aWNs ZXMgdG8gc2tpcC4gPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+IHVuc2V0 LCBubyBvZmZzZXQuPC9saT4KCTxsaT48Y29kZT5zb3J0PC9jb2RlPiA8ZW0+KENvbHVtbiBb ZGlyZWN0aW9uXSk8L2VtPiBTb3J0IGNvbHVtbiAoYW5kIG9wdGlvbmFsIHNvcnQgZGlyZWN0 aW9uKSwgZS5nLiA8Y29kZT5Qb3N0ZWQgYXNjPC9jb2RlPi4gPHNwYW4gY2xhc3M9ImRlZmF1 bHQiPmRlZmF1bHQ8L3NwYW4+IHVuc2V0LjwvbGk+CjwvdWw+Cgo8aDIgaWQ9ImNvbXBsZXgi PkNvbXBsZXggc2VsZWN0aW9uPC9oMj4KCjxwPlRoZSBzZWxlY3Rpb24gYXR0cmlidXRlcyAo PGNvZGU+ZXhwaXJlczwvY29kZT4sIDxjb2RlPmN1c3RvbWZpZWxkbmFtZTwvY29kZT4sIDxj b2RlPmFydGljbGVfaW1hZ2U8L2NvZGU+LCA8Y29kZT5tdWx0aWRvYzwvY29kZT4sIGFuZCA8 Y29kZT53aGVyZTwvY29kZT4pIG1heSBiZSB1c2VkIGluIGNvbWJpbmF0aW9uLiBUaGUgcmVz dWx0IGlzIGEgY29uanVuY3RpdmUgKDxjb2RlPkFORDwvY29kZT4pIHNlYXJjaCwgaS5lLiwg ZWFjaCBhZGRpdGlvbmFsIGF0dHJpYnV0ZSBtYWtlcyB0aGUgZmlsdGVyIG1vcmUgcmVzdHJp Y3RpdmUuPC9wPgoKPHA+VGhlIDxjb2RlPndoZXJlPC9jb2RlPiBhdHRyaWJ1dGUgYWxsb3dz IHlvdSB0byBlbnRlciBNeVNRTCBleHByZXNzaW9ucyBhbmQgZnVuY3Rpb25zIGZvciBldmVu IGdyZWF0ZXIgcG93ZXIuPC9wPgoKPGgyIGlkPSJleGFtcGxlcyI+RXhhbXBsZXM8L2gyPgoK PGgzIGlkPSJleHBpcmVkIj5Pbmx5IHNob3cgZXhwaXJlZCBhcnRpY2xlczwvaDM+Cgo8cD5Z b3UgbXVzdCBzZXQgJiM4MjIwO1B1Ymxpc2ggZXhwaXJlZCBhcnRpY2xlcyYjODIyMTsgdG8g JiM4MjIwO1llcyYjODIyMTsgaW4gYWR2YW5jZWQgc2l0ZSBwcmVmZXJlbmNlcy48L3A+Cgo8 cHJlPiZsdDt0eHA6c29vX2FydGljbGVfZmlsdGVyIGV4cGlyZXM9JnF1b3Q7cGFzdCZxdW90 OyZndDsKJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDsvdHhwOnNvb19hcnRpY2xlX2ZpbHRl ciZndDs8L3ByZT4KCjxoMyBpZD0iY3VzdG9tX3NldCI+T25seSBzaG93IGFydGljbGVzIHdp dGggJiM4MjIwO215LWN1c3RvbS1maWVsZCYjODIyMTsgc2V0PC9oMz4KCjxwPk5vdGUgdGhl IHZhbHVlLCA8Y29kZT4mcXVvdDsuKyZxdW90OzwvY29kZT4uIFRoaXMgd2lsbCBtYXRjaCBh bnkgY2hhcmFjdGVyLiBOb3RlIGFsc28gdGhhdCB5b3UgY2FuIGFjY29tcGxpc2ggdGhlIHNh bWUgdGhpbmcgd2l0aG91dCBhIHBsdWdpbiwgdXNpbmcgdGhlIHRlY2huaXF1ZSBkaXNjdXNz ZWQgaW4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMu cGhwP3BpZD0yMTA0NTMjcDIxMDQ1MyI+dGhpcyBUeHAgZm9ydW0gdGhyZWFkPC9hPi48L3A+ Cgo8cHJlPiZsdDt0eHA6c29vX2FydGljbGVfZmlsdGVyIG15LWN1c3RvbS1maWVsZD0mcXVv dDsuKyZxdW90OyZndDsKJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDsvdHhwOnNvb19hcnRp Y2xlX2ZpbHRlciZndDs8L3ByZT4KCjxoMyBpZD0iY3VzdG9tX25vdF9zZXQiPk9ubHkgc2hv dyBhcnRpY2xlcyB3aXRoICYjODIyMDtteS1jdXN0b20tZmllbGQmIzgyMjE7IG5vdCBzZXQ8 L2gzPgoKPHByZT4mbHQ7dHhwOnNvb19hcnRpY2xlX2ZpbHRlciBteS1jdXN0b20tZmllbGQ9 JnF1b3Q7JnF1b3Q7Jmd0OwombHQ7dHhwOmFydGljbGUgLyZndDsKJmx0Oy90eHA6c29vX2Fy dGljbGVfZmlsdGVyJmd0OzwvcHJlPgoKPGgzIGlkPSJjdXN0b21faW5jbHVkZXMiPk9ubHkg c2hvdyBhcnRpY2xlcyB3aGVyZSAmIzgyMjA7bXktY3VzdG9tLWZpZWxkJiM4MjIxOyBpbmNs dWRlcyAmIzgyMjA7Ymx1ZSYjODIyMTs8L2gzPgoKPHA+Tm90ZTogdGhpcyBpcyBub3QgY2Fz ZSBzZW5zaXRpdmUuIFdvdWxkIG1hdGNoICYjODIyMDtCbHVlcyYjODIyMTssICYjODIyMDt0 cnVlIGJsdWUmIzgyMjE7LCBldGMuIDxjb2RlPmFydGljbGU8L2NvZGU+IGFuZCA8Y29kZT5h cnRpY2xlX2N1c3RvbTwvY29kZT4gYWxyZWFkeSB3b3JrIHRoaXMgd2F5IGlmIHlvdSBhZGQg dGhlIHdpbGRjYXJkIGNoYXJhY3RlciA8Y29kZT4lPC9jb2RlPiAoZS5nLiwgPGNvZGU+bXkt Y3VzdG9tLWZpZWxkPSZxdW90OyVibHVlJSZxdW90OzwvY29kZT4pLCBzbyB5b3UgZG9uJiM4 MjE3O3QgbmVlZCB0aGlzIHBsdWdpbiBqdXN0IHRvIGRvIHRoaXMuPC9wPgoKPHByZT4mbHQ7 dHhwOnNvb19hcnRpY2xlX2ZpbHRlciBteS1jdXN0b20tZmllbGQ9JnF1b3Q7Ymx1ZSZxdW90 OyZndDsKJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDsvdHhwOnNvb19hcnRpY2xlX2ZpbHRl ciZndDs8L3ByZT4KCjxoMyBpZD0iY3VzdG9tX3JlZ2V4cCI+T25seSBzaG93IGFydGljbGVz IHdoZXJlICYjODIyMDtteS1jdXN0b20tZmllbGQmIzgyMjE7IGNvbnRhaW5zIG9ubHkgZGln aXRzPC9oMz4KCjxwPk5vdGUgdGhlIHZhbHVlLCA8Y29kZT4mcXVvdDteW1s6ZGlnaXQ6XV0r JCZxdW90OzwvY29kZT4uIFRoaXMgaXMgYSA8YSBocmVmPSJodHRwOi8vZGV2Lm15c3FsLmNv bS9kb2MvcmVmbWFuLzUuMS9lbi9yZWdleHAuaHRtbCI+TXlTUUwgcmVnZXhwIHBhdHRlcm48 L2E+LCA8c3Ryb25nPm5vdDwvc3Ryb25nPiBhIDxhIGhyZWY9Imh0dHA6Ly91cy5waHAubmV0 L21hbnVhbC9lbi9yZWZlcmVuY2UucGNyZS5wYXR0ZXJuLnN5bnRheC5waHAiPjxzcGFuIGNs YXNzPSJjYXBzIj5QQ1JFPC9zcGFuPiBwYXR0ZXJuPC9hPi48L3A+Cgo8cHJlPiZsdDt0eHA6 c29vX2FydGljbGVfZmlsdGVyIG15LWN1c3RvbS1maWVsZD0mcXVvdDteW1s6ZGlnaXQ6XV0r JCZxdW90OyZndDsKJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDsvdHhwOnNvb19hcnRpY2xl X2ZpbHRlciZndDs8L3ByZT4KCjxoMyBpZD0iaW1hZ2UiPk9ubHkgc2hvdyBhcnRpY2xlcyB0 aGF0IGhhdmUgYW4gYXJ0aWNsZSBpbWFnZTwvaDM+Cgo8cHJlPiZsdDt0eHA6c29vX2FydGlj bGVfZmlsdGVyIGFydGljbGVfaW1hZ2U9JnF1b3Q7MSZxdW90OyZndDsKJmx0O3R4cDphcnRp Y2xlJmd0OwombHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6YXJ0aWNsZV9pbWFnZSB0aHVt Ym5haWw9JnF1b3Q7MSZxdW90OyAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7L3R4 cDphcnRpY2xlJmd0OwombHQ7L3R4cDpzb29fYXJ0aWNsZV9maWx0ZXImZ3Q7PC9wcmU+Cgo8 aDMgaWQ9ImxhdGVzdF9pbWFnZSI+T25seSBzaG93IHRoZSBtb3N0IHJlY2VudCBhcnRpY2xl IHdpdGggYW4gYXJ0aWNsZSBpbWFnZTwvaDM+Cgo8cHJlPiZsdDt0eHA6c29vX2FydGljbGVf ZmlsdGVyIGFydGljbGVfaW1hZ2U9JnF1b3Q7MSZxdW90OyBsaW1pdD0mcXVvdDsxJnF1b3Q7 IHNvcnQ9JnF1b3Q7UG9zdGVkIGRlc2MmcXVvdDsmZ3Q7CiZsdDt0eHA6YXJ0aWNsZSZndDsK Jmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOmFydGljbGVfaW1hZ2UgdGh1bWJuYWlsPSZx dW90OzEmcXVvdDsgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6YXJ0aWNs ZSZndDsKJmx0Oy90eHA6c29vX2FydGljbGVfZmlsdGVyJmd0OzwvcHJlPgoKPHA+KE5vdGU6 IHdoaWxlIHlvdSBjb3VsZCBkZWNsYXJlIHRoZSA8Y29kZT5saW1pdDwvY29kZT4gaW4gdGhl IDxjb2RlPmFydGljbGU8L2NvZGU+IHRhZywgdGhpcyBtZXRob2QgdXNlcyBsZXNzIG1lbW9y eS4pPC9wPgoKPGgzIGlkPSJyYW5nZSI+VXNlIDxjb2RlPndoZXJlPC9jb2RlPiB0byBzZWxl Y3Qgb24gYSBudW1lcmljIHJhbmdlPC9oMz4KCjxwcmU+Jmx0O3R4cDpzb29fYXJ0aWNsZV9m aWx0ZXIgd2hlcmU9JnF1b3Q7aW1hZ2UgQkVUV0VFTiA0IEFORCAyNyZxdW90OyZndDsKJmx0 O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDsvdHhwOnNvb19hcnRpY2xlX2ZpbHRlciZndDs8L3By ZT4KCjxoMyBpZD0iaW5kZXgiPkFuIGFscGhhYmV0aWNhbCBpbmRleCB1c2luZyA8Y29kZT5p bmRleF9pZ25vcmU8L2NvZGU+IGFuZCA8Y29kZT5pbmRleF9maWVsZDwvY29kZT48L2gzPgoK PHByZT4mbHQ7dHhwOnNvb19hcnRpY2xlX2ZpbHRlciBpbmRleF9maWVsZD0mcXVvdDtpbmRl eF90aXRsZSZxdW90OyZndDsKJmx0O3R4cDphcnRpY2xlIHNvcnQ9JnF1b3Q7Y3VzdG9tXzMg YXNjJnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsm Z3Q7CiZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDpjdXN0b21fZmllbGQgbmFtZT0mcXVv dDtpbmRleF90aXRsZSZxdW90OyAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7L3R4 cDphcnRpY2xlJmd0OwombHQ7L3R4cDpzb29fYXJ0aWNsZV9maWx0ZXImZ3Q7PC9wcmU+Cgo8 cD5XaGVuIDxjb2RlPmluZGV4X2ZpZWxkPC9jb2RlPiBpcyBzZXQgdG8gdGhlIG5hbWUgb2Yg YW4gZXhpc3RpbmcgY3VzdG9tIGZpZWxkLCB0aGlzIGZpZWxkIHdpbGwgcmVjZWl2ZSBhbiBp bmRleC1zdHlsZSB2ZXJzaW9uIG9mIHRoZSBhcnRpY2xlIHRpdGxlLCBlLmcuICYjODIyMDtU aGUgVGl0bGUmIzgyMjE7IGJlY29tZXMgJiM4MjIwO1RpdGxlLCBUaGUmIzgyMjE7LiBZb3Ug Y2FuIHRoZW4gc29ydCBvbiBhbmQvb3IgZGlzcGxheSB0aGUgaW5kZXgtc3R5bGUgdGl0bGUg d2l0aCBzdGFuZGFyZCBUZXh0cGF0dGVybiBjdXN0b20gZmllbGQgdGFncyBhbmQgYXR0cmli dXRlcywgYXMgc2hvd24uPC9wPgoKPHA+TGVhZGluZyB3b3JkcyBnZXR0aW5nIHNwZWNpYWwg dHJlYXRtZW50IGFyZSB0aG9zZSBsaXN0ZWQgaW4gPGNvZGU+aW5kZXhfaWdub3JlPC9jb2Rl Pi4gVGhpcyBkZWZhdWx0cyB0byBFbmdsaXNoIGFydGljbGVzLCBpLmUuICYjODIyMDtBLEFu LFRoZSYjODIyMTsuPC9wPgoKPHA+VGhlIGN1c3RvbSBmaWVsZCBoYXMgdG8gYmUgb25lIHlv dSBoYXZlIGFjdHVhbGx5IGNyZWF0ZWQgaW4gc2l0ZSBwcmVmcy4gSW4gdGhlIGV4YW1wbGUg aXQgaXMgY2FsbGVkICYjODIyMDtpbmRleF90aXRsZSYjODIyMTssIGFuZCBpdCBpcyBjdXN0 b20gZmllbGQgIzMuIFdoZW4gc2F2aW5nIGFydGljbGVzIGxlYXZlIHRoaXMgZmllbGQgYmxh bmssIG90aGVyd2lzZSA8Y29kZT5zb29fYXJ0aWNsZV9maWx0ZXI8L2NvZGU+IHdpbGwgbGVh dmUgaXQgdW5jaGFuZ2VkLjwvcD4KCjxwPlRoZSBpbmRleC1zdHlsZSB0aXRsZSBpcyBjcmVh dGVkIG9ubHkgd2l0aGluIHRoZSA8Y29kZT5zb29fYXJ0aWNsZV9maWx0ZXI8L2NvZGU+IGNv bnRhaW5lciAmbWRhc2g7IGNvcnJlc3BvbmRpbmcgY3VzdG9tIGZpZWxkIGluIHRoZSBkYXRh YmFzZSByZW1haW5zIGJsYW5rLjwvcD4KCjxoMyBpZD0idXBkYXRlIj5BZGQgYW4gPGNvZGU+ VVBEQVRFPC9jb2RlPiBxdWVyeSB0byBjaGFuZ2UgYXJ0aWNsZSBzdGF0dXM8L2gzPgoKPHA+ VGhlIDxjb2RlPnVwZGF0ZV9zZXQ8L2NvZGU+IGF0dHJpYnV0ZSBhbGxvd3MgeW91IHRvIHJ1 biBhbiA8Y29kZT5VUERBVEU8L2NvZGU+IHF1ZXJ5IG9uIHRoZSB0ZW1wb3JhcnkgdGFibGUu IEZvciBleGFtcGxlLCB0byB0ZW1wb3JhcmlseSBjaGFuZ2UgdGhlIHN0YXR1cyBvZiBhbGwg JiM4MjIwO2RyYWZ0JiM4MjIxOyBhcnRpY2xlcyBpbiB0aGUgJiM4MjIwO05ld3MmIzgyMjE7 IHNlY3Rpb24gdG8gJiM4MjIwO2xpdmUmIzgyMjE7IChUZXh0cGF0dGVybiYjODIxNztzIHN0 YXR1cyBjb2RlIGZvciAmIzgyMjA7bGl2ZSYjODIyMTsgaXMgNCBhbmQgZm9yICYjODIyMDtk cmFmdCYjODIyMTsgaXMgMSk6PC9wPgoKPHByZT4mbHQ7dHhwOnNvb19hcnRpY2xlX2ZpbHRl ciB1cGRhdGVfc2V0PSZxdW90O1N0YXR1cz00JnF1b3Q7IHVwZGF0ZV93aGVyZT0mcXVvdDtT dGF0dXM9MSBBTkQgU2VjdGlvbj0mIzM5O05ld3MmIzM5OyZxdW90OyZndDsKJmx0O3R4cDph cnRpY2xlIC8mZ3Q7CiZsdDsvdHhwOnNvb19hcnRpY2xlX2ZpbHRlciZndDs8L3ByZT4KCjxo MiBpZD0ibm90ZXMiPlRlY2huaWNhbCBub3RlczwvaDI+Cgo8aDMgaWQ9InNhZmV0eSI+U2Fm ZXR5PC9oMz4KCjxwPlRoaXMgcGx1Z2luIGF0dGVtcHRzIHRvIHJ1biA8Y29kZT5DUkVBVEU8 L2NvZGU+LCA8Y29kZT5EUk9QPC9jb2RlPiwgYW5kLCBvcHRpb25hbGx5LCA8Y29kZT5VUERB VEU8L2NvZGU+IHF1ZXJpZXMuIFRoZXJlIGlzIGEgc2FmZXR5IGNoZWNrOiBpZiB0aGUgaW5p dGlhbCA8Y29kZT5DUkVBVEUgVEVNUE9SQVJZIFRBQkxFPC9jb2RlPiBxdWVyeSBmYWlscywg dGhlIHBsdWdpbiBleGl0cyBpbW1lZGlhdGVseSwgd2l0aG91dCBwYXJzaW5nIHRoZSB0YWcg Y29udGVudHMuIEhvd2V2ZXIsIHRoZSBwbHVnaW4gaGFzIG5vdCBiZWVuIHRlc3RlZCBleHRl bnNpdmVseSwgYW5kIHlvdSBzaG91bGQgY2VydGFpbmx5IGtlZXAgcmVndWxhciBkYXRhYmFz ZSBiYWNrdXBzIGlmIHlvdSBhcmUgZG9pbmcgYW55dGhpbmcgZXNwZWNpYWxseSBpbnRlcmVz dGluZyB3aXRoIHRoaXMgcGx1Z2luLiBPZiBjb3Vyc2UsIHlvdSBzaG91bGQga2VlcCByZWd1 bGFyIGRhdGFiYXNlIGJhY2t1cHMgaW4gYW55IGV2ZW50LjwvcD4KCjxwPk9uZSB0aGluZyB5 b3Ugc2hvdWxkIGFic29sdXRlbHkgPHNwYW4gY2xhc3M9Indhcm5pbmciPjxzcGFuIGNsYXNz PSJjYXBzIj5OT1Q8L3NwYW4+PC9zcGFuPiBkbyBpcyBhc3N1bWUgdGhhdCBpdCBpcyBzYWZl IHRvIGRvIGFueXRoaW5nIHlvdSBsaWtlIHdpdGhpbiB0aGUgdGFnIGNvbnRlbnRzLiBUaGUg bWFpbiBpc3N1ZSBpcyB0aGF0IGlmIHRoZSBwYWdlIGNvbnRleHQgaXMgc2VhcmNoIHJlc3Vs dHMgKGkuZS4sIHRoZSA8Y29kZT5xPC9jb2RlPiBxdWVyeSBwYXJhbWV0ZXIgaXMgc2V0KSwg dGhlIHRhZyB3aWxsIHNpbXBseSBwYXJzZSBpdHMgY29udGVudHMgYW5kIHJldHVybiB0aGVt IGFzIGlzLiBJZiB5b3Ugc3R1Y2sgYSByYXcgcXVlcnkgaW50byB0aGUgdGFnIGNvbnRlbnRz IG9uIHRoZSBhc3N1bXB0aW9uIHRoZSBxdWVyeSB3b3VsZCBvbmx5IHJ1biB3aGVuIHRoZSB0 ZW1wb3JhcnkgdGV4dHBhdHRlcm4gdGFibGUgZXhpc3RzLCB5b3UmIzgyMTc7ZCByZWdyZXQg aXQuIE1heWJlIG5vdCB0b2RheSwgbWF5YmUgbm90IHRvbW9ycm93LCBidXQgc29vbiwgYW5k IGZvciB0aGUgcmVzdCBvZiB5b3VyIGxpZmUuPC9wPgoKPGgzIGlkPSJ0cm91Ymxlc2hvb3Rp bmciPlRyb3VibGVzaG9vdGluZzwvaDM+Cgo8cD5Zb3UgbWlnaHQgZ2V0IGFuIGVycm9yIGxp a2UgdGhpczogPGNvZGU+VGV4dHBhdHRlcm4gV2FybmluZzogTm90IHVuaXF1ZSB0YWJsZS9h bGlhczogJiMzOTt0ZXh0cGF0dGVybiYjMzk7PC9jb2RlPi4gSXQgc2VlbXMgdGhhdCBzb21l IGNvbmZpZ3VyYXRpb25zIGFsbG93IHRoZSBzaG9ydGN1dCBvZiBjcmVhdGluZyB0aGUgdGVt cG9yYXJ5IHRhYmxlIGFuZCBzZWxlY3RpbmcgZnJvbSB0aGUgYWN0dWFsIHRhYmxlIG9mIHRo ZSBzYW1lIG5hbWUgaW4gdGhlIHNhbWUgc3RhdGVtZW50LCBidXQgc29tZSBkb24mIzgyMTc7 dC4gUGVyZm9ybWFuY2Utd2lzZSBpdCBpcyBjZXJ0YWlubHkgYmV0dGVyIHRvIHVzZSBhIHNp bmdsZSBzdGF0ZW1lbnQsIGJ1dCBpZiB0aGlzIGRvZXNuJiM4MjE3O3Qgd29yayBmb3IgeW91 LCA8ZGVsPnVzZSB0aGUgYWx0ZXJuYXRlIHZlcnNpb24gb2YgdGhlIHBsdWdpbiwgaW5jbHVk ZWQgaW4gdGhlIGRvd25sb2FkPC9kZWw+IHBsZWFzZSA8YSBocmVmPSJodHRwOi8vaXBzZWRp eGl0Lm5ldC9pbmZvLzIvY29udGFjdCI+Y29udGFjdCBtZTwvYT4uPC9wPgoKPHA+SWYgeW91 IHVzZSA8YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvMjQvbXVsdGlkb2MiPk11 bHRpZG9jPC9hPiBhbmQgc2VlIGFuIGVycm9yIG1lc3NhZ2UgaW5jbHVkaW5nIDxjb2RlPlRh YmxlICYjMzk7dGV4dHBhdHRlcm4mIzM5OyBhbHJlYWR5IGV4aXN0czwvY29kZT4sIHNlZSB0 aGUgPGEgaHJlZj0iI211bHRpZG9jIj5ub3RlIG9uIE11bHRpZG9jIGNvbXBhdGliaWxpdHk8 L2E+LCBiZWxvdy48L3A+Cgo8aDMgaWQ9InBlcmZvcm1hbmNlIj5QZXJmb3JtYW5jZSBjb25z aWRlcmF0aW9uczwvaDM+Cgo8cD5Nb3N0IHBsdWdpbnMgdGhhdCBnaXZlIHlvdSBhIHNvdXBl ZC11cCBlcXVpdmFsZW50IG9mIDxjb2RlPmFydGljbGU8L2NvZGU+IG9yIDxjb2RlPmFydGlj bGVfY3VzdG9tPC9jb2RlPiBoYXZlIHRvIGR1cGxpY2F0ZSBhbmQgbW9kaWZ5IDxjb2RlPmRv QXJ0aWNsZXMoKTwvY29kZT4gcGx1cyBhIGNvdXBsZSBvZiBvdGhlciBjb3JlIFR4cCBmdW5j dGlvbnMuIExlc3MgdGhhbiBpZGVhbCwgYXQgbGVhc3QgaW4gdGVybXMgb2YgZWFzZSBvZiBw bHVnaW4gYXV0aG9yaW5nLCBiZWNhdXNlIDxjb2RlPmRvQXJ0aWNsZXMoKTwvY29kZT4gaXMg cXVpdGUgYSBsb3Qgb2YgY29kZSB0byBkdXBsaWNhdGUgYW5kIGVkaXQgaW4gYSBwbHVnaW4u PC9wPgoKPHA+VGhpcyBwbHVnaW4gdGFrZXMgYSB2ZXJ5IGRpZmZlcmVudCBhcHByb2FjaCYj ODIxMjtpdCBjcmVhdGVzIGEgdGVtcG9yYXJ5IHRhYmxlIGhvbGRpbmcgYSBmaWx0ZXJlZCBz ZXQgb2YgYXJ0aWNsZXMsIHRodXMgYWxsb3dpbmcgeW91IHRvIHVzZSA8Y29kZT5hcnRpY2xl PC9jb2RlPiBhbmQvb3IgPGNvZGU+YXJ0aWNsZV9jdXN0b208L2NvZGU+IG5vcm1hbGx5LiBD b2RlLXdpc2UgdGhpcyBpcyB2ZXJ5IHNpbXBsZTsgcGVyZm9ybWFuY2Utd2lzZSBpdCBtaWdo dCBiZSBpbmZlcmlvciAoSSBkb24mIzgyMTc7dCBrbm93KS4gSW4gbXkgbGltaXRlZCBhbmQg aW5mb3JtYWwgdGVzdGluZyB0aGUgZXh0cmEgdGltZSByZXF1aXJlZCBmb3IgZGVhbGluZyB3 aXRoIHRoZSB0ZW1wb3JhcnkgdGFibGUgaXMgYSBub24taXNzdWUuIFRoaXMgY291bGQgY2hh bmdlIHdpdGggYSB2ZXJ5IGxhcmdlIDxjb2RlPnRleHRwYXR0ZXJuPC9jb2RlPiAoYXJ0aWNs ZXMpIHRhYmxlLiBCdXQgYXMgbG9uZyBhcyB5b3Ugc2V0IDxjb2RlPnNvb19hcnRpY2xlX2Zp bHRlcjwvY29kZT4mIzgyMTc7cyBhdHRyaWJ1dGVzIHNvIGFzIHRvIHByb2R1Y2UgYSByZWxh dGl2ZWx5IHNtYWxsIG51bWJlciBvZiBhcnRpY2xlcywgdGhlcmUgc2hvdWxkbiYjODIxNzt0 IGJlIGEgcHJvYmxlbSBpbiBtb3N0IGNhc2VzLiAoVmVyc2lvbiAwLjMuMSBhZGRzIDxjb2Rl PmxpbWl0PC9jb2RlPiwgPGNvZGU+b2Zmc2V0PC9jb2RlPiwgYW5kIDxjb2RlPnNvcnQ8L2Nv ZGU+IGF0dHJpYnV0ZXMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdGFyZ2V0IHRoZSBleGFjdCBh cnRpY2xlcyB5b3Ugd2FudC4pPC9wPgoKPHA+TWlnaHQgYmUgYW5vdGhlciBzdG9yeSBvbiBh IGhpZ2hseS1vcHRpbWl6ZWQsIGxhcmdlLCBoaWdoLXRyYWZmaWMgd2Vic2l0ZSB3aGVyZSBt YXhpbXVtIHBlcmZvcm1hbmNlIGlzIGEgbWFqb3IgY29uY2Vybi48L3A+Cgo8aDMgaWQ9Im11 bHRpZG9jIj5NdWx0aWRvYyBjb21wYXRpYmlsaXR5PC9oMz4KCjxwPlRoZSA8YSBocmVmPSJo dHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvMjQvbXVsdGlkb2MiPnNvb19tdWx0aWRvYzwvYT4g cGx1Z2luIGFsc28gdXNlcyB0aGUgdGVtcG9yYXJ5IHRhYmxlIHRyaWNrIHRvIGZpbHRlciBh cnRpY2xlcywgd2hpY2ggY2FuIG9ubHkgYmUgZG9uZSBvbmNlIHBlciBwYWdlIGxvYWQuIFRv IGFjaGlldmUgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIDxzdHJvbmc+c29vX2FydGljbGVfZmls dGVyPC9zdHJvbmc+IGFuZCA8c3Ryb25nPnNvb19tdWx0aWRvYzwvc3Ryb25nPiwgZm9sbG93 IHRoZXNlIHN0ZXBzOjwvcD4KCjx1bD4KCTxsaT5JbiBNdWx0aWRvYyBwcmVmcyAoY2xpY2sg PHN0cm9uZz5zb29fbXVsdGlkb2M8L3N0cm9uZz4mIzgyMTc7cyAmIzgyMjA7T3B0aW9ucyYj ODIyMTsgbGluayBpbiB0aGUgcGx1Z2luIGxpc3QpIHNldCB0aGUgJiM4MjIwO1Nob3cgYWxs JiM4MjIxOyBwcmVmZXJlbmNlIHRvICYjODIyMDt5ZXMmIzgyMjE7LjwvbGk+Cgk8bGk+QXMg bmVlZGVkLCB1c2UgPGNvZGU+c29vX2FydGljbGVfZmlsdGVyPC9jb2RlPiwgd2l0aCA8Y29k ZT5tdWx0aWRvYz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiwgdG8gZmlsdGVyIE11bHRpZG9jIGlu dGVyaW9yIHBhZ2VzLjwvbGk+CjwvdWw+Cgo8cD5Ob3RlIHRoYXQsIHVubGlrZSBNdWx0aWRv YyYjODIxNztzIGJ1aWx0LWluIGZpbHRlciwgPGNvZGU+c29vX2FydGljbGVfZmlsdGVyPC9j b2RlPiBkb2VzIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGxpc3QgYW5kIGluZGl2aWR1YWwg YXJ0aWNsZSBjb250ZXh0LCBzbyBpZiB5b3VyIE11bHRpZG9jIHNldHVwIHVzZXMgdGhlIHNh bWUgPGNvZGU+YXJ0aWNsZTwvY29kZT4gdGFnIGZvciBsaXN0cyBhbmQgaW5kaXZpZHVhbCBh cnRpY2xlcyB5b3Ugd2lsbCBoYXZlIGNoYW5nZSB0aGlzLiAoVGhpcyBpcyBkZWxpYmVyYXRl OyBpdCBhbGxvd3MgeW91IHRvIHVzZSA8Y29kZT5zb29fYXJ0aWNsZV9maWx0ZXI8L2NvZGU+ IGZvciBhbiA8Y29kZT5hcnRpY2xlX2N1c3RvbTwvY29kZT4gbGlzdCBvbiBhbiBpbmRpdmlk dWFsIGFydGljbGUgcGFnZS4pPC9wPgoKPGgyIGlkPSJoaXN0b3J5Ij5WZXJzaW9uIGhpc3Rv cnk8L2gyPgoKPGgzPjAuMy4zICgyMDE3LzAyLzE1KTwvaDM+Cgo8cD5UZXh0cGF0dGVybiA0 LjYgY29tcGF0aWJpbGl0eSB1cGRhdGU8L3A+Cgo8aDM+MC4zLjIgKEphbiAzLCAyMDExKTwv aDM+Cgo8cD5NdWx0aWRvYyBjb21wYXRpYmlsaXR5IHVwZGF0ZTwvcD4KCjxoMz4wLjMuMSAo RGVjIDksIDIwMTApPC9oMz4KCjxwPkFkZGVkIDxjb2RlPmxpbWl0PC9jb2RlPiwgPGNvZGU+ b2Zmc2V0PC9jb2RlPiwgYW5kIDxjb2RlPnNvcnQ8L2NvZGU+IGF0dHJpYnV0ZXMuPC9wPgoK PGgzPjAuMy4wIChKdWwgMTEsIDIwMTApPC9oMz4KCjxwPk5ldyBhdHRyaWJ1dGU6IDxjb2Rl PndoZXJlPC9jb2RlPiwgYWxsb3dzIHlvdSB0byBhZGQgYSByYXcgPGNvZGU+V0hFUkU8L2Nv ZGU+IGV4cHJlc3Npb24gdG8gdGhlIHNlbGVjdGlvbiBjcml0ZXJpYS4gKFRoYW5rcyB0byBW aWN0b3IgZm9yIHRoZSBpZGVhLik8L3A+Cgo8aDM+MC4yLjcgKEp1biA2LCAyMDEwKTwvaDM+ Cgo8cD5GaXhlZCBidWcgaW4gPGNvZGU+aW5kZXhfaWdub3JlPC9jb2RlPiBhdHRyaWJ1dGUu IChUaGFua3MgdG8gdGgzbG9uaXVzIGZvciBzcG90dGluZyBpdC4pPC9wPgoKPGgzPjAuMi42 IChNYXIgOCwgMjAxMCk8L2gzPgoKPHA+TmV3IGF0dHJpYnV0ZXMsIDxjb2RlPnVwZGF0ZV9z ZXQ8L2NvZGU+IGFuZCA8Y29kZT51cGRhdGVfd2hlcmU8L2NvZGU+LCBhbGxvd2luZyBhbiBh ZGRpdGlvbmFsIDxjb2RlPlVQREFURTwvY29kZT4gcXVlcnkgb24gdGhlIHRlbXBvcmFyeSB0 YWJsZS48L3A+Cgo8aDM+MC4yLjUgKEZlYiAxOSwgMjAxMCk8L2gzPgoKPHA+Q2hlY2tzIHRo YXQgdGVtcG9yYXJ5IHRhYmxlIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLCBlbHNlIHJldHVy bnMgbm90aGluZy48L3A+Cgo8aDM+MC4yLjQgKEZlYiAxOSwgMjAxMCk8L2gzPgoKPHA+Q3Jl YXRlIHByb3Blcmx5LWFscGhhYmV0aXplZCBpbmRleGVzIHdpdGggdGhlIG5ldyA8Y29kZT5p bmRleF9pZ25vcmU8L2NvZGU+IGFuZCA8Y29kZT5pbmRleF9maWVsZDwvY29kZT4gYXR0cmli dXRlcy48L3A+Cgo8aDM+MC4yLjMgKEphbiAyMCwgMjAxMCk8L2gzPgoKPHA+Rml4ZWQgY3Vz dG9tIGZpZWxkIGJ1ZzwvcD4KCjxoMz4wLjIuMiAoU2VwdCAyOCwgMjAwOSk8L2gzPgoKPHA+ TmV3IDxjb2RlPmFydGljbGVfaW1hZ2U8L2NvZGU+IGF0dHJpYnV0ZTwvcD4KCjxoMz4wLjIu MSAoSnVseSA3LCAyMDA5KTwvaDM+Cgo8cD48YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5l dC90eHAvMjQvbXVsdGlkb2MiPnNvb19tdWx0aWRvYzwvYT4gY29tcGF0aWJpbGl0eS48L3A+ Cgo8aDM+MC4yIChKdWx5IDQsIDIwMDkpPC9oMz4KCjxwPkZpeGVkIGJlaGF2aW9yIG9mIDxj b2RlPmV4cGlyZXM8L2NvZGU+IGF0dHJpYnV0ZS48L3A+Cgo8aDM+MC4xIChKdWx5IDMsIDIw MDkpPC9oMz4KCjxwPkluaXRpYWwgcmVsZWFzZS4gQWxsb3dzIGZpbHRlcmluZyBvbiB0aGUg PGNvZGU+RXhwaXJlczwvY29kZT4gZmllbGQsIGFuZCByZWdleHAgcGF0dGVybiBtYXRjaGlu ZyBvbiBhbnkgY3VzdG9tIGZpZWxkLjwvcD4iO3M6NDoiY29kZSI7czo0MTg1OiIKaWYoY2xh c3NfZXhpc3RzKCdcVGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JykpIHsKICAgIFR4cDo6Z2V0 KCdcVGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JykKICAgICAgICAtPnJlZ2lzdGVyKCdzb29f YXJ0aWNsZV9maWx0ZXInKTsKfQoKZnVuY3Rpb24gc29vX2FydGljbGVfZmlsdGVyKCAkYXR0 cywgJHRoaW5nICkKewogICAgZ2xvYmFsICRwcmV0ZXh0OwogICAgaWYgKCRwcmV0ZXh0Wydx J10pIHJldHVybiBwYXJzZSgkdGhpbmcpOwoKICAgICRjdXN0b21GaWVsZHMgPSBnZXRDdXN0 b21GaWVsZHMoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gZmllbGQgbmFtZXMKICAgICRjdXN0b21BdHRzID0gYXJyYXlfbnVsbChhcnJheV9m bGlwKCRjdXN0b21GaWVsZHMpKTsKICAgICRzdGFuZGFyZEF0dHMgPSBhcnJheSgKICAgICAg ICAnZXhwaXJlcycgICAgICAgICAgICAgICA9PiBudWxsLCAgICAgICAgLy8gYWNjZXB0ICdh bnknLCAncGFzdCcsICdmdXR1cmUnLCBvciAwCiAgICAgICAgJ2FydGljbGVfaW1hZ2UnID0+ IG51bGwsICAgICAgICAvLyBib29sZWFuOiAwID0gbm8gaW1hZ2UsIDEgPSBoYXMgaW1hZ2UK ICAgICAgICAnbXVsdGlkb2MnICAgICAgICAgICAgICA9PiBudWxsLCAgICAgICAgLy8gZm9y IHNvb19tdWx0aWRvYyBjb21wYXRpYmlsaXR5CiAgICAgICAgJ2luZGV4X2lnbm9yZScgID0+ ICdhLGFuLHRoZScsICAvLyBsZWFkaW5nIHdvcmRzIHRvIG1vdmUgaW4gaW5kZXggdGl0bGVz CiAgICAgICAgJ2luZGV4X2ZpZWxkJyAgID0+IG51bGwsICAgICAgICAvLyBjdXN0b20gZmll bGQgbmFtZSBmb3IgaW5kZXgtc3R5bGUgdGl0bGUKICAgICAgICAndXBkYXRlX3NldCcgICAg PT4gbnVsbCwgICAgICAgIC8vIFNFVCBjbGF1c2UgZm9yIGN1c3RvbSB1cGRhdGUgcXVlcnkK ICAgICAgICAndXBkYXRlX3doZXJlJyAgPT4gbnVsbCwgICAgICAgIC8vIFdIRVJFIGNsYXVz ZSBmb3IgY3VzdG9tIHVwZGF0ZSBxdWVyeQogICAgICAgICd3aGVyZScgICAgICAgICAgICAg ICAgID0+IG51bGwsICAgICAgICAvLyByYXcgV0hFUkUgZXhwcmVzc2lvbiBmb3IgZmlsdGVy CiAgICAgICAgJ2xpbWl0JyAgICAgICAgICAgICAgICAgPT4gbnVsbCwgICAgICAgIC8vIExJ TUlUIHZhbHVlCiAgICAgICAgJ29mZnNldCcgICAgICAgICAgICAgICAgPT4gbnVsbCwgICAg ICAgIC8vIE9GRlNFVCB2YWx1ZQogICAgICAgICdzb3J0JyAgICAgICAgICAgICAgICAgID0+ IG51bGwsICAgICAgICAvLyBPUkRFUiBCWSBleHByZXNzaW9uCiAgICApOwogICAgZXh0cmFj dChsQXR0cygkc3RhbmRhcmRBdHRzICsgJGN1c3RvbUF0dHMsICRhdHRzKSk7CiAgICBpZiAo ISBpc19udWxsKCRleHBpcmVzKSkgewogICAgICAgIHN3aXRjaCAoICRleHBpcmVzICkgewog ICAgICAgICAgICBjYXNlICdhbnknOgogICAgICAgICAgICAgICAgJHdoZXJlX2V4cFtdID0g J0V4cGlyZXMgPiAwJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNl ICdwYXN0JzoKICAgICAgICAgICAgICAgICR3aGVyZV9leHBbXSA9ICdFeHBpcmVzIDw9IG5v dygpIGFuZCBFeHBpcmVzID4gMCc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg ICAgY2FzZSAnZnV0dXJlJzoKICAgICAgICAgICAgICAgICR3aGVyZV9leHBbXSA9ICdFeHBp cmVzID4gbm93KCknOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2Ug MDoKICAgICAgICAgICAgICAgICR3aGVyZV9leHBbXSA9ICdFeHBpcmVzID0gMCc7CiAgICAg ICAgfQogICAgfQoKICAgIGlmICghIGlzX251bGwoJGFydGljbGVfaW1hZ2UpKQogICAgICAg ICR3aGVyZV9leHBbXSA9ICdJbWFnZSAnLigkYXJ0aWNsZV9pbWFnZSA/ICchJyA6ICcnKS4i PSAnJyI7CgogICAgaWYgKCRjdXN0b21GaWVsZHMpCiAgICAgICAgZm9yZWFjaCggJGN1c3Rv bUZpZWxkcyBhcyAkaSA9PiAkZmllbGQgKQogICAgICAgICAgICAgICAgICAgIC8vIHRvIHBy ZXZlbnQgY29uZmxpY3RzIGJldHdlZW4gbmFtZWQgYXR0cyBhbmQgY3VzdG9tIGZpZWxkcwog ICAgICAgICAgICBpZiAoICEgYXJyYXlfa2V5X2V4aXN0cygkZmllbGQsICRzdGFuZGFyZEF0 dHMpIGFuZCBpc3NldCgkYXR0c1skZmllbGRdKSApIHsKICAgICAgICAgICAgICAgICR2YWx1 ZSA9ICRhdHRzWyRmaWVsZF07CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCAkdmFsdWUgKSB7 CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnJzoKICAgICAgICAgICAgICAgICAgICAgICAg JHdoZXJlX2V4cFtdID0gImN1c3RvbV8kaSA9ICcnIjsKICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg ICAgICAgICAgJHdoZXJlX2V4cFtdID0gImN1c3RvbV8kaSByZWdleHAgJyR2YWx1ZSciOwog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgaWYgKCAkbXVsdGlkb2MgYW5k IF9zb29fbXVsdGlkb2NfaWRzX2luaXQoKSApIHsKICAgICAgICAgICAgZ2xvYmFsICRzb29f bXVsdGlkb2M7CiAgICAgICAgICAgICR3aGVyZV9leHBbXSA9ICJJRCBub3QgaW4gKHNlbGVj dCBpZCBmcm9tICIgLiBzYWZlX3BmeCgnc29vX211bHRpZG9jJykgLiAiIHdoZXJlIGlkICE9 IHJvb3QpIjsKICAgIH0KCiAgICBpZiAoJHdoZXJlKSAkd2hlcmVfZXhwW10gPSAkd2hlcmU7 CgogICAgJHNlbGVjdCA9ICcqJzsKICAgICR0YWJsZSA9IHNhZmVfcGZ4KCd0ZXh0cGF0dGVy bicpOwogICAgJHdoZXJlX2V4cCA9IGlzc2V0KCR3aGVyZV9leHApID8gJyB3aGVyZSAnLmlt cGxvZGUoJyBhbmQgJywgJHdoZXJlX2V4cCkgOiAnJzsKICAgICRzb3J0ID0gJHNvcnQgPyAn IG9yZGVyIGJ5ICcuZG9TbGFzaCgkc29ydCkgOiAnJzsKICAgICRsaW1pdCA9ICRsaW1pdCA/ ICcgbGltaXQgJy5pbnR2YWwoJG9mZnNldCkuJywnLmludHZhbCgkbGltaXQpIDogJyc7Cgog ICAgaWYgKCRpbmRleF9maWVsZCkgewogICAgICAgICRpID0gYXJyYXlfc2VhcmNoKCRpbmRl eF9maWVsZCwgJGN1c3RvbUZpZWxkcyk7CiAgICAgICAgaWYgKCAkaSApIHsKICAgICAgICAg ICAgJHJlZ2V4cCA9ICInXigiIC4gaW1wbG9kZSgnfCcsIGRvX2xpc3QoJGluZGV4X2lnbm9y ZSkpIC4gIikkJyI7CiAgICAgICAgICAgICRzZWxlY3QgLj0gIiwgdHJpbShUaXRsZSkgYXMg aW5kZXhfdGl0bGUsIHN1YnN0cmluZ19pbmRleCh0cmltKFRpdGxlKSwnICcsMSkgYXMgZmly c3Rfd29yZCwgc3Vic3RyaW5nKHRyaW0oVGl0bGUpLCBsb2NhdGUoJyAnLHRyaW0oVGl0bGUp KSsxKSBhcyByZW1haW5pbmdfd29yZHMiOwogICAgICAgICAgICAkdXBkYXRlW10gPSBhcnJh eSgKICAgICAgICAgICAgICAgICdzZXQnID0+ICJjdXN0b21fJGkgPSBjb25jYXQocmVtYWlu aW5nX3dvcmRzLCAnLCAnLCBmaXJzdF93b3JkKSIsCiAgICAgICAgICAgICAgICAnd2hlcmUn ID0+ICJmaXJzdF93b3JkIHJlZ2V4cCAkcmVnZXhwIGFuZCBjdXN0b21fJGkgPSAnJyIsCiAg ICAgICAgICAgICk7CiAgICAgICAgICAgICR1cGRhdGVbXSA9IGFycmF5KAogICAgICAgICAg ICAgICAgJ3NldCcgPT4gImN1c3RvbV8kaSA9IHRyaW0oVGl0bGUpIiwKICAgICAgICAgICAg ICAgICd3aGVyZScgPT4gImN1c3RvbV8kaSA9ICcnIiwKICAgICAgICAgICAgKTsKCiAgICAg ICAgfQogICAgfQoKICAgIGlmICghIHNhZmVfcXVlcnkoImNyZWF0ZSB0ZW1wb3JhcnkgdGFi bGUgJHRhYmxlIHNlbGVjdCAkc2VsZWN0IGZyb20gJHRhYmxlIi4kd2hlcmVfZXhwLiRzb3J0 LiRsaW1pdCkpCiAgICAgICAgcmV0dXJuOwoKICAgIGlmICgkdXBkYXRlX3NldCkKICAgICAg ICAkdXBkYXRlW10gPSBhcnJheSgKICAgICAgICAgICAgJ3NldCcgPT4gJHVwZGF0ZV9zZXQs CiAgICAgICAgICAgICd3aGVyZScgPT4gJHVwZGF0ZV93aGVyZSA/ICR1cGRhdGVfd2hlcmUg OiAnMT0xJywKICAgICAgICApOwoKICAgIGlmICghIGVtcHR5KCR1cGRhdGUpKQogICAgICAg IGZvcmVhY2ggKCR1cGRhdGUgYXMgJHUpCiAgICAgICAgICAgIHNhZmVfdXBkYXRlKCd0ZXh0 cGF0dGVybicsICR1WydzZXQnXSwgJHVbJ3doZXJlJ10pOwoKICAgICRvdXQgPSBwYXJzZSgk dGhpbmcpOwogICAgc2FmZV9xdWVyeSgiZHJvcCB0ZW1wb3JhcnkgdGFibGUgJHRhYmxlIik7 CiAgICByZXR1cm4gJG91dDsKfQoiO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6ImZsYWdzIjtz OjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czozOiJtZDUiO3M6MzI6IjVhNDU2Y2JlYWQy MDMyMDljYWZjYzEyZGM4YjdlMzUzIjt9