# Name: soo_required_files v0.2.8 # Type: Admin/Client side plugin # Load JavaScript and CSS files per article # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE4OiJzb29fcmVxdWlyZWRfZmlsZXMiO3M6NjoiYXV0aG9y IjtzOjg6IkplZmYgU29vIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI1OiJodHRwOi8vaXBzZWRp eGl0Lm5ldC90eHAvIjtzOjc6InZlcnNpb24iO3M6NToiMC4yLjgiO3M6MTE6ImRlc2NyaXB0 aW9uIjtzOjQxOiJMb2FkIEphdmFTY3JpcHQgYW5kIENTUyBmaWxlcyBwZXIgYXJ0aWNsZSI7 czo0OiJoZWxwIjtzOjEyNTc2OiI8aDE+c29vX3JlcXVpcmVkX2ZpbGVzPC9oMT4KCjxwPlRo aXMgaXMgYSBwbHVnaW4gZm9yIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5jb20iPlRl eHRwYXR0ZXJuPC9hPi48L3A+Cgo8dWw+Cgk8bGk+PGEgaHJlZj0iaHR0cHM6Ly9mb3J1bS50 ZXh0cGF0dGVybi5pby92aWV3dG9waWMucGhwP2lkPTMwNzIwIj5TdXBwb3J0IGZvcnVtIHRv cGljPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL2lwc2VkaXhpdC5uZXQvdHhwLzc0 L3Nvb19yZXF1aXJlZF9maWxlcyI+QXV0aG9yIHNpdGU8L2E+PC9saT4KCTxsaT48YSBocmVm PSJodHRwczovL2dpdGh1Yi5jb20vanNvby9zb29fcmVxdWlyZWRfZmlsZXMiPkdpdEh1Yjwv YT48L2xpPgo8L3VsPgoKPGRpdiBpZD0idG9jIj4KCjxoMj5Db250ZW50czwvaDI+Cgo8dWw+ Cgk8bGk+PGEgaHJlZj0iI292ZXJ2aWV3Ij5PdmVydmlldzwvYT48L2xpPgoJPGxpPjxhIGhy ZWY9IiNyZXF1aXJlbWVudHMiPlJlcXVpcmVtZW50czwvYT48L2xpPgoJPGxpPjxhIGhyZWY9 IiNpbnN0YWxsYXRpb24iPkluc3RhbGxhdGlvbjwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0i I3VwZ3JhZGluZyI+VXBncmFkaW5nPC9hPjwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+PGEgaHJl Zj0iI3VzYWdlIj5Vc2FnZTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2F0dHJpYnV0ZXMi PkF0dHJpYnV0ZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3Blci1wYWdlIj5QZXItcGFn ZSBsb2FkaW5nPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNwZXItc2VjdGlvbiI+UGVyLXNl Y3Rpb24gbG9hZGluZzwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjcGVyLWFydGljbGUiPlBl ci1hcnRpY2xlIGxvYWRpbmc8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3RhZy1jb250ZW50 cyI+TG9hZGluZyB0YWcgY29udGVudHM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2xvYWQt b3JkZXIiPkxvYWQgb3JkZXI8L2E+PC9saT4KCTwvdWw+PC9saT4KCTxsaT48YSBocmVmPSIj ZGVmYXVsdHMiPlByZWZlcmVuY2VzICZhbXA7IGRlZmF1bHRzPC9hPjwvbGk+Cgk8bGk+PGEg aHJlZj0iI2V4YW1wbGVzIj5FeGFtcGxlczwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNoaXN0 b3J5Ij5IaXN0b3J5PC9hPjwvbGk+CjwvdWw+Cgo8L2Rpdj4KCjxoMiBpZD0ib3ZlcnZpZXci Pk92ZXJ2aWV3PC9oMj4KCjxwPkF1dG9tYXRpYyBsb2FkaW5nIG9mIDxzcGFuIGNsYXNzPSJj YXBzIj5DU1M8L3NwYW4+IGFuZCBKYXZhU2NyaXB0IGZpbGVzIGluIHRoZSBwYWdlIDxjb2Rl PiZsdDtoZWFkJmd0OzwvY29kZT4gKG9yIGFueXdoZXJlIHlvdSBsaWtlKS4gRm9yIGJhY2tn cm91bmQsIHNlZSA8YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvNzMvYXJ0aWNs ZS1zcGVjaWZpYy1jc3MtamF2YXNjcmlwdC1pbi10ZXh0cGF0dGVybiI+QXJ0aWNsZS1zcGVj aWZpYyA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiAmYW1wOyBKYXZhU2NyaXB0IGlu IFRleHRwYXR0ZXJuPC9hPi48L3A+Cgo8cD48c3Ryb25nPnNvb19yZXF1aXJlZF9maWxlczwv c3Ryb25nPiBoYXMgZm91ciBvcHRpb25zIGZvciBsb2FkaW5nIGZpbGVzIGFuZCBmb3Jtczo8 L3A+Cgo8dWw+Cgk8bGk+YWxsIGNvbnRleHRzIChieSB0YWcgY29udGVudHMpPC9saT4KCTxs aT5wZXIgcGFnZSAoZm9yIGZpbGVzIHdpdGggbWF0Y2hpbmcgbmFtZXMpPC9saT4KCTxsaT5w ZXIgc2VjdGlvbiAoZm9yIGZpbGVzIHdpdGggbWF0Y2hpbmcgbmFtZXMpPC9saT4KCTxsaT5w ZXIgYXJ0aWNsZSAoYnkgY3VzdG9tIGZpZWxkKTwvbGk+CjwvdWw+Cgo8cD5UaGVzZSBtYXkg YmUgdXNlZCBpbiBhbnkgY29tYmluYXRpb24uPC9wPgoKPGgyIGlkPSJyZXF1aXJlbWVudHMi PlJlcXVpcmVtZW50czwvaDI+Cgo8cD5ObyBzcGVjaWFsIHJlcXVpcmVtZW50cywgZXhjZXB0 IHRoYXQgcGVyLWFydGljbGUgdXNlIDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+cmVxdWlyZXM8 L3NwYW4+IGEgY3VzdG9tIGZpZWxkIChuYW1lZCA8c3Ryb25nPlJlcXVpcmVzPC9zdHJvbmc+ IGJ5IGRlZmF1bHQpLjwvcD4KCjxwPkFsbCBteSBwbHVnaW5zIGFyZSBnZW5lcmFsbHkgZGV2 ZWxvcGVkIGluIHRoZSBsYXRlc3QgVHhwIHB1YmxpYyByZWxlYXNlIGFuZCBtYXkgbm90IGhh dmUgYmVlbiB0ZXN0ZWQgaW4gZWFybGllciB2ZXJzaW9ucy48L3A+Cgo8cD48c3Ryb25nPnNv b19yZXF1aXJlZF9maWxlczwvc3Ryb25nPiBpcyBjb21wYXRpYmxlIHdpdGggPGEgaHJlZj0i aHR0cDovL2lwc2VkaXhpdC5uZXQvdHhwLzkyL3Nvb19wbHVnaW5fcHJlZiI+c29vX3BsdWdp bl9wcmVmPC9hPiwgd2hpY2ggPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlczwvc3Bh bj4gVHhwIHZlcnNpb24gNC4yLjAgb3IgZ3JlYXRlci48L3A+Cgo8aDIgaWQ9Imluc3RhbGxh dGlvbiI+SW5zdGFsbGF0aW9uPC9oMj4KCjxwPkZvciBwZXItYXJ0aWNsZSBmaWxlIGFuZCBm b3JtIGxvYWRpbmcsIDxhIGhyZWY9Imh0dHA6Ly90ZXh0Ym9vay50ZXh0cGF0dGVybi5uZXQv d2lraS9pbmRleC5waHA/dGl0bGU9QWR2YW5jZWRfUHJlZmVyZW5jZXMjQ3VzdG9tX0ZpZWxk cyI+bmFtZSBvbmUgb2YgeW91ciBjdXN0b20gZmllbGRzPC9hPiAmIzgyMjA7UmVxdWlyZXMm IzgyMjE7LiAoSWYgeW91IHdpc2ggdG8gbmFtZSBpdCBzb21ldGhpbmcgZWxzZSwgY2hhbmdl IHRoZSBjdXN0b20gZmllbGQgc2V0dGluZyBpbiBwbHVnaW4gcHJlZmVyZW5jZXMgKHNlZSA8 YSBocmVmPSIjZGVmYXVsdHMiPlByZWZlcmVuY2VzICZhbXA7IGRlZmF1bHRzPC9hPiwgYmVs b3cuKTwvcD4KCjxwPkluc3RhbGwgdGhlIG9wdGlvbmFsIDxhIGhyZWY9Imh0dHA6Ly9pcHNl ZGl4aXQubmV0L3R4cC85Mi9zb29fcGx1Z2luX3ByZWYiPnNvb19wbHVnaW5fcHJlZjwvYT4g aWYgeW91IHdhbnQgdG8gY2hhbmdlIGRlZmF1bHQgc2V0dGluZ3MgKFR4cCB2ZXJzaW9uIDQu Mi4wIG9yIGdyZWF0ZXIgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj4p LjwvcD4KCjxoMyBpZD0idXBncmFkaW5nIj5VcGdyYWRpbmcgZnJvbSAwLjEuMTwvaDM+Cgo8 cD5JZiB5b3UgYXJlIHVwZ3JhZGluZyBmcm9tIHZlcnNpb24gMC4xLjEgd2l0aCA8c3Ryb25n PnNvb19wbHVnaW5fcHJlZjwvc3Ryb25nPiwgY2hlY2sgcHJlZmVyZW5jZXMgYWZ0ZXIgaW5z dGFsbGF0aW9uLiBUd28gYXR0cmlidXRlIG5hbWVzIGhhdmUgYmVlbiBjaGFuZ2VkIGluIHRo aXMgdmVyc2lvbiwgbWVhbmluZyBhbnkgY3VzdG9tIHNldHRpbmdzIGZvciB0aG9zZSBhdHRy aWJ1dGVzIChkZWZhdWx0IGpzIGFuZCBjc3MgZGlyZWN0b3JpZXMpIHdpbGwgYmUgb3Zlcndy aXR0ZW4gb24gdXBncmFkZS48L3A+Cgo8aDM+VXBncmFkaW5nIHRvIDAuMi42PC9oMz4KCjxw PlZlcnNpb24gMC4yLjYgYWRkcyBhIG5ldyBwcmVmZXJlbmNlLCA8Y29kZT5odG1sX3ZlcnNp b248L2NvZGU+LiBJZiB5b3UgYXJlIHJ1bm5pbmcgPHN0cm9uZz5zb29fcGx1Z2luX3ByZWY8 L3N0cm9uZz4sIGFmdGVyIGluc3RhbGxpbmcgdGhlIG5ldyB2ZXJzaW9uIG9mIDxzdHJvbmc+ c29vX3JlcXVpcmVkX2ZpbGVzPC9zdHJvbmc+IHlvdSBtdXN0IGRpc2FibGUgYW5kIHJlLWVu YWJsZSBpdCB0byBpbnN0YWxsIHRoZSBwcmVmZXJlbmNlLiAoVGhlIG5ldyBwcmVmZXJlbmNl IHdpbGwgZnVuY3Rpb24gYXQgaXRzIGRlZmF1bHQgdmFsdWUgZXZlbiBpZiB5b3UgZG9uJiM4 MjE3O3QgZG8gdGhpcy4pPC9wPgoKPGgzPlVwZ3JhZGluZyB0byAwLjIuNzwvaDM+Cgo8cD5P b3BzLCBJIHJlYWxseSBkaWRuJiM4MjE3O3QgbmVlZCB0byBhZGQgdGhhdCBwcmVmZXJlbmNl IHRvIDAuMi42LiBWZXJzaW9uIDAuMi43IHJlbW92ZXMgaXQsIGluIGZhdm9yIG9mIHRoZSBn bG9iYWwgZG9jdHlwZSBwcmVmZXJlbmNlLiBTbyBpZiB5b3UgcHJldmlvdXNseSBpbnN0YWxs ZWQgb3IgdXBncmFkZWQgdG8gMC4yLjYgYW5kIGFyZSBydW5uaW5nIDxzdHJvbmc+c29vX3Bs dWdpbl9wcmVmPC9zdHJvbmc+LCB0byBkcm9wIHRoZSBub3ctdXNlbGVzcyBwcmVmZXJlbmNl IGZyb20gdGhlIGRhdGFiYXNlLCBhZnRlciB1cGdyYWRpbmcgdG8gMC4yLjcsIGRpc2FibGUg YW5kIHJlLWVuYWJsZSB0aGUgcGx1Z2luLiBTb3JyeSBhYm91dCB0aGF0LjwvcD4KCjxoMiBp ZD0idXNhZ2UiPlVzYWdlPC9oMj4KCjxwPlBsYWNlIHRoZSA8Y29kZT5zb29fcmVxdWlyZWRf ZmlsZXM8L2NvZGU+IHRhZyBpbiB0aGUgcGFnZSA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+ LiBJdCB3b3JrcyBhcyBlaXRoZXIgYSBzaW5nbGUgb3IgY29udGFpbmVyIHRhZzo8L3A+Cgo8 cHJlPiZsdDt0eHA6c29vX3JlcXVpcmVkX2ZpbGVzIC8mZ3Q7PC9wcmU+Cgo8cD5vcjwvcD4K CjxwcmU+Jmx0O3R4cDpzb29fcmVxdWlyZWRfZmlsZXMmZ3Q7CgkmbHQ7IS0tIGNvbW1hLXNl cGFyYXRlZCBsaXN0IG9mIGZpbGUgYW5kIGZvcm0gbmFtZXMgLS0mZ3Q7CiZsdDsvdHhwOnNv b19yZXF1aXJlZF9maWxlcyZndDs8L3ByZT4KCjxoMyBpZD0iYXR0cmlidXRlcyI+QXR0cmli dXRlczwvaDM+Cgo8cD5Zb3UgY2FuIG92ZXJyaWRlIGFueSBvZiB0aGUgcHJlZmVyZW5jZXMg d2l0aCBpdHMgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGU7IHRoZSBmb2xsb3dpbmcgYXJlIHRo ZSBvbmVzIHlvdSBtaWdodCBhY3R1YWxseSB3YW50IHRvIHNldCB0aGlzIHdheTo8L3A+Cgo8 dWw+Cgk8bGk+PGNvZGU+cGVyX3BhZ2U8L2NvZGU+IDxlbT4oYm9vbGVhbik8L2VtPiBXaGV0 aGVyIHRvIGVuYWJsZSBwZXItcGFnZSBsb2FkaW5nPC9saT4KCTxsaT48Y29kZT5wZXJfc2Vj dGlvbjwvY29kZT4gPGVtPihib29sZWFuKTwvZW0+IFdoZXRoZXIgdG8gZW5hYmxlIHBlci1z ZWN0aW9uIGxvYWRpbmc8L2xpPgo8L3VsPgoKPGgzIGlkPSJwZXItcGFnZSI+UGVyLXBhZ2Ug bG9hZGluZzwvaDM+Cgo8cD5XaGVuIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIGVpdGhlciB0 aHJvdWdoIDxhIGhyZWY9IiNkZWZhdWx0cyI+cHJlZmVyZW5jZXM8L2E+IG9yIGJ5IHRoZSA8 Y29kZT5wZXJfcGFnZTwvY29kZT4gYXR0cmlidXRlLCB0aGUgcGx1Z2luIHdpbGwgbG9vayBm b3IgYSBjc3MgYW5kIGEganMgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGN1cnJl bnQgcGFnZS4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjdXJyZW50IHNlY3Rpb24gdXNlcyBhIHBh Z2UgY2FsbGVkICYjODIyMDthcnRpY2xlJiM4MjIxOywgdGhlIHBsdWdpbiB3aWxsIGxvb2sg Zm9yIGZpbGVzIG5hbWVkICYjODIyMDthcnRpY2xlLmNzcyYjODIyMTsgYW5kICYjODIyMDth cnRpY2xlLmpzJiM4MjIxOyBpbiB0aGVpciByZXNwZWN0aXZlIGRpcmVjdG9yaWVzLjwvcD4K CjxoMyBpZD0icGVyLXNlY3Rpb24iPlBlci1zZWN0aW9uIGxvYWRpbmc8L2gzPgoKPHA+V29y a3MgdGhlIHNhbWUgYXMgcGVyLXBhZ2UgbG9hZGluZywgZXhjZXB0IGJhc2VkIG9uIHRoZSBj dXJyZW50IHNlY3Rpb24gbmFtZSAoYW5kIHRoZSA8Y29kZT5wZXJfc2VjdGlvbjwvY29kZT4g YXR0cmlidXRlL3ByZWZlcmVuY2UpLjwvcD4KCjxoMyBpZD0icGVyLWFydGljbGUiPlBlci1h cnRpY2xlIGxvYWRpbmc8L2gzPgoKPHA+VGhlIDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9uZz4g ZmllbGQgdGFrZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4gTGlzdCBpdGVtcyBjYW4gaW5j bHVkZTo8L3A+Cgo8dWw+Cgk8bGk+SmF2YVNjcmlwdCBmaWxlIG5hbWVzIChlLmcuLCAmIzgy MjA7c2NyaXB0LmpzJiM4MjIxOyk8L2xpPgoJPGxpPjxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8 L3NwYW4+IGZpbGUgbmFtZXMgKGUuZywgJiM4MjIwO3N0eWxlLmNzcyYjODIyMTspPC9saT4K CTxsaT5UeHAgZm9ybSBuYW1lczwvbGk+CjwvdWw+Cgo8cD5BbnkgaXRlbSBlbmRpbmcgaW4g JiM4MjIwOy5qcyYjODIyMTsgaXMgYXNzdW1lZCB0byBiZSBhIEphdmFTY3JpcHQgZmlsZS4g SXQgd2lsbCByZXN1bHQgaW4gYSA8Y29kZT4mbHQ7c2NyaXB0Jmd0OzwvY29kZT4gZWxlbWVu dCBsb2FkaW5nIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkZWZhdWx0IEphdmFTY3Jp cHQgZGlyZWN0b3J5IChzZWUgPGEgaHJlZj0iI2RlZmF1bHRzIj5EZWZhdWx0czwvYT4sIGJl bG93KS48L3A+Cgo8cD5BbnkgaXRlbSBlbmRpbmcgaW4gJiM4MjIwOy5jc3MmIzgyMjE7IGlz IGFzc3VtZWQgdG8gYmUgYSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBmaWxlLiBJ dCB3aWxsIHJlc3VsdCBpbiBhIDxjb2RlPiZsdDtsaW5rJmd0OzwvY29kZT4gZWxlbWVudCBs b2FkaW5nIHRoZSBzcGVjaWZpZWQgZmlsZSBpbiB0aGUgZGVmYXVsdCA8c3BhbiBjbGFzcz0i Y2FwcyI+Q1NTPC9zcGFuPiBkaXJlY3RvcnkgKHNlZSA8YSBocmVmPSIjZGVmYXVsdHMiPkRl ZmF1bHRzPC9hPiwgYmVsb3cpLjwvcD4KCjxwPkFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0 byBiZSB0aGUgbmFtZSBvZiBhIFR4cCBmb3JtLiBUaGUgcGx1Z2luIHdpbGwgYXR0ZW1wdCB0 byBvdXRwdXQgdGhlIG5hbWVkIGZvcm0gKGZpcnN0IGFkZGluZyB0aGUgZGVmYXVsdCBwcmVm aXg7IHNlZSA8YSBocmVmPSIjZGVmYXVsdHMiPkRlZmF1bHRzPC9hPiwgYmVsb3cpLjwvcD4K CjxoMyBpZD0idGFnLWNvbnRlbnRzIj5Mb2FkaW5nIHRhZyBjb250ZW50czwvaDM+Cgo8cD5J ZiB5b3UgdXNlIDxjb2RlPnNvb19yZXF1aXJlZF9maWxlczwvY29kZT4gYXMgYSBjb250YWlu ZXIsIHRoZSB0YWcgY29udGVudHMgYXJlIHRyZWF0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRo ZSA8c3Ryb25nPlJlcXVpcmVzPC9zdHJvbmc+IGZpZWxkIGNvbnRlbnRzLCBhYm92ZS4gVGhh dCBpcywgdGhlIHRhZyBjb250ZW50cyBzaG91bGQgYmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlz dCBhbmQgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBjc3MgZmlsZXMsIGpzIGZpbGVzLCBh bmQgVHhwIGZvcm0gbmFtZXMuPC9wPgoKPHA+QXMgb2YgdmVyc2lvbiAwLjIuMiB5b3UgY2Fu IGluY2x1ZGUgVHhwIHRhZ3MgaW4gdGhlIHRhZyBjb250ZW50cywgYWxsb3dpbmcgZS5nLiBU eHAgY29uZGl0aW9uYWwgdGFncyBmb3IgZnVydGhlciBhdXRvbWF0aW9uIG9wdGlvbnMuPC9w PgoKPGgzIGlkPSJsb2FkLW9yZGVyIj5Mb2FkIG9yZGVyPC9oMz4KCjxwPkZpbGVzIGFuZCBm b3JtcyBhcmUgbG9hZGVkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6PC9wPgoKPG9sPgoJPGxp PlRhZyBjb250ZW50czwvbGk+Cgk8bGk+UGVyLXBhZ2UgZmlsZXM8L2xpPgoJPGxpPlBlci1z ZWN0aW9uIGZpbGVzPC9saT4KCTxsaT48c3Ryb25nPlJlcXVpcmVzPC9zdHJvbmc+IGZpZWxk IGNvbnRlbnRzPC9saT4KPC9vbD4KCjxoMiBpZD0iZGVmYXVsdHMiPlByZWZlcmVuY2VzICZh bXA7IGRlZmF1bHRzPC9oMj4KCjxwPllvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVl cyBmb3IgdmFyaW91cyBzZXR0aW5ncyBhbmQgYXR0cmlidXRlcyBieSBpbnN0YWxsaW5nIHRo ZSA8YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvOTIvc29vX3BsdWdpbl9wcmVm Ij5zb29fcGx1Z2luX3ByZWY8L2E+IHBsdWdpbi4gT25jZSBpbnN0YWxsZWQgeW91IGNhbiBh Y2Nlc3MgdGhlIHByZWZlcmVuY2VzIDxhIGhyZWY9Imh0dHA6Ly90ZXh0Ym9vay50ZXh0cGF0 dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0bGU9UGx1Z2lucyNQYW5lbF9sYXlvdXRfLjI2 X2NvbnRyb2xzIj5ieSBjbGlja2luZyB0aGUgPHN0cm9uZz5PcHRpb25zPC9zdHJvbmc+IGxp bmsgZm9yIDxzdHJvbmc+c29vX3JlcXVpcmVkX2ZpbGVzPC9zdHJvbmc+IGluIHRoZSBwbHVn aW4gbGlzdDwvYT4uPC9wPgoKPHA+VGhlIGluaXRpYWwgZGVmYXVsdHMgYXJlOjwvcD4KCjx0 YWJsZT4KCQk8dHI+CgkJCTx0aD5BdHRyaWJ1dGU8L3RoPgoJCQk8dGg+RGVzY3JpcHRpb248 L3RoPgoJCQk8dGg+RGVmYXVsdDwvdGg+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD48Y29kZT5j dXN0b21fZmllbGQ8L2NvZGU+PC90ZD4KCQkJPHRoPkN1c3RvbSBmaWVsZCBuYW1lPC90aD4K CQkJPHRkPjxrYmQ+UmVxdWlyZXM8L2tiZD48L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+ PGNvZGU+Y3NzX2RpcjwvY29kZT48L3RkPgoJCQk8dGg+PHNwYW4gY2xhc3M9ImNhcHMiPkNT Uzwvc3Bhbj4gZGlyZWN0b3J5PC90aD4KCQkJPHRkPjxrYmQ+Y3NzLzwva2JkPjwvdGQ+CgkJ PC90cj4KCQk8dHI+CgkJCTx0ZD48Y29kZT5qc19kaXI8L2NvZGU+PC90ZD4KCQkJPHRoPkpT IGRpcmVjdG9yeTwvdGg+CgkJCTx0ZD48a2JkPmpzLzwva2JkPjwvdGQ+CgkJPC90cj4KCQk8 dHI+CgkJCTx0ZD48Y29kZT5mb3JtX3ByZWZpeDwvY29kZT48L3RkPgoJCQk8dGg+Rm9ybS1u YW1lIHByZWZpeDwvdGg+CgkJCTx0ZD48a2JkPnJlcXVpcmVfPC9rYmQ+PC90ZD4KCQk8L3Ry PgoJCTx0cj4KCQkJPHRkPjxjb2RlPnBlcl9wYWdlPC9jb2RlPjwvdGQ+CgkJCTx0aD5QZXIt cGFnZSBsb2FkaW5nPC90aD4KCQkJPHRkPk5vPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRk Pjxjb2RlPnBlcl9zZWN0aW9uPC9jb2RlPjwvdGQ+CgkJCTx0aD5QZXItc2VjdGlvbiBsb2Fk aW5nPC90aD4KCQkJPHRkPk5vPC90ZD4KCQk8L3RyPgo8L3RhYmxlPgoKPGgyIGlkPSJleGFt cGxlcyI+RXhhbXBsZXM8L2gyPgoKPGgzPlVzaW5nIHRoZSBSZXF1aXJlcyBmaWVsZDwvaDM+ Cgo8cD5XaXRoIGRlZmF1bHRzIGFzIGFib3ZlLCBlbnRlcmluZyA8a2JkPnNjcmlwdDEuanMs IHN0eWxlMS5jc3MsIGZvbyA8L2tiZD4gaW4gdGhlIDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9u Zz4gZmllbGQgd2lsbCBnZXQgPGNvZGU+Jmx0O3R4cDpzb29fcmVxdWlyZWRfZmlsZXMgLyZn dDs8L2NvZGU+IHRvIG91dHB1dCBzb21ldGhpbmcgbGlrZTo8L3A+Cgo8cHJlPiZsdDtzY3Jp cHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90O2h0dHA6Ly9l eGFtcGxlLmNvbS9qcy9zY3JpcHQxLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7 bGluayByZWw9JnF1b3Q7c3R5bGVzaGVldCZxdW90OyB0eXBlPSZxdW90O3RleHQvY3NzJnF1 b3Q7IGhyZWY9JnF1b3Q7aHR0cDovL2V4YW1wbGUuY29tL2Nzcy9zdHlsZTEuY3NzJnF1b3Q7 IC8mZ3Q7PC9wcmU+Cgo8cD5mb2xsb3dlZCBieSB3aGF0ZXZlciBpcyBpbiB0aGUgZm9ybSBu YW1lZCAmIzgyMjA7cmVxdWlyZV9mb28mIzgyMjE7LjwvcD4KCjxwPkZvcm1zIGFyZSBlc3Bl Y2lhbGx5IHVzZWZ1bCBmb3IgcHJlc2V0IGNvbWJpbmF0aW9ucyBvZiBmaWxlcy4gRm9yIGV4 YW1wbGUsIHNvbWUgc2NyaXB0cyAoZS5nLiA8YSBocmVmPSJodHRwOi8vd3d3LnNoYWRvd2Jv eC1qcy5jb20vIj5TaGFkb3dib3g8L2E+KSByZXF1aXJlIGEgbWl4IG9mIEphdmFTY3JpcHQg YW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGZpbGVzLiBQdXR0aW5nIHRoZSBh cHByb3ByaWF0ZSA8Y29kZT4mbHQ7c2NyaXB0Jmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDts aW5rJmd0OzwvY29kZT4gZWxlbWVudHMgaW4gYSBmb3JtIGFsbG93cyB5b3UgdG8gY2FsbCB0 aGlzIHVwIHdpdGggYSBzaW5nbGUgZW50cnkgaW4gdGhlIDxzdHJvbmc+UmVxdWlyZXM8L3N0 cm9uZz4gZmllbGQuIFNvIHRvIGxvYWQgbXkgJiM4MjIwO3JlcXVpcmVfU2hhZG93Ym94JiM4 MjIxOyBmb3JtICh3aGljaCBsb2FkcyB0aGUgc2NyaXB0cyBhbmQgPHNwYW4gY2xhc3M9ImNh cHMiPkNTUzwvc3Bhbj4gcmVxdWlyZWQgZm9yIFNoYWRvd2JveCksIEkgZW50ZXIgPGtiZD5T aGFkb3dib3g8L2tiZD4gaW4gdGhlIDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9uZz4gZmllbGQu PC9wPgoKPGgzPkNvbWJpbmluZyBwZXItc2VjdGlvbi9wYWdlLCBwZXItYXJ0aWNsZSwgYW5k IHRhZyBjb250ZW50IGZpbGUgbG9hZGluZzwvaDM+Cgo8cD5Gb3IgbXkgPGEgaHJlZj0iaHR0 cDovL2lwc2VkaXhpdC5uZXQvIj5wZXJzb25hbCB3ZWJzaXRlPC9hPiBJIGhhdmUgPHNwYW4g Y2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gZmlsZXMgbmFtZWQgYWZ0ZXIgZWFjaCBzZWN0aW9u IChpbmNsdWRpbmcgdGhlIGRlZmF1bHQgc2VjdGlvbiksIHBsdXMgYSBmaWxlIGNhbGxlZCAm IzgyMjA7YmFzZS5jc3MmIzgyMjE7IGZvciBjb21tb24gc3R5bGVzLiBTb21lIGFydGljbGVz IGhhdmUgc3BlY2lmaWMganMvY3NzIHJlcXVpcmVtZW50cywgc28gSSBhbHNvIGhhdmUgYSA8 c3Ryb25nPlJlcXVpcmVzPC9zdHJvbmc+IGZpZWxkLCB1c2VkIGFzIGFib3ZlLiBJIGhhdmUg YSBmb3JtIGNhbGxlZCA8Y29kZT5wYWdlX3RvcDwvY29kZT4gdGhhdCBjcmVhdGVzIHRoZSA8 Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IGVsZW1lbnQgZm9yIGV2ZXJ5IHNlY3Rpb24uIEl0 IGRvZXNuJiM4MjE3O3QgaGF2ZSBhbnkgPGNvZGU+Jmx0O3NjcmlwdCZndDs8L2NvZGU+IG9y IDxjb2RlPiZsdDtsaW5rJmd0OzwvY29kZT4gdGFncywganVzdCB0aGlzOjwvcD4KCjxwcmU+ Jmx0O3R4cDpzb29fcmVxdWlyZWRfZmlsZXMmZ3Q7YmFzZS5jc3MmbHQ7L3R4cDpzb29fcmVx dWlyZWRfZmlsZXMmZ3Q7PC9wcmU+Cgo8cD5CZWNhdXNlIEkgaGF2ZSBlbmFibGVkIHBlci1z ZWN0aW9uIGxvYWRpbmcgaW4gcHJlZmVyZW5jZXMsIGV2ZXJ5IDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiBwYWdlIGF1dG9tYXRpY2FsbHkgZ2V0cyBib3RoIHRoZSBiYXNlIHN0 eWxlc2hlZXQgYW5kIHRoZSBzZWN0aW9uLXNwZWNpZmljIHN0eWxlc2hlZXQsIGFuZCBpbmRp dmlkdWFsIGFydGljbGUgcGFnZXMgd2lsbCBhbHNvIGxvYWQgYW55dGhpbmcgbGlzdGVkIGlu IDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9uZz4uPC9wPgoKPGgyIGlkPSJoaXN0b3J5Ij5IaXN0 b3J5PC9oMj4KCjxoMz5WZXJzaW9uIDAuMi44ICgyMDIwLzMvMTUpPC9oMz4KCjx1bD4KCTxs aT5GaXhlZCBlcnJvciBub3RpY2Ugd2hlbiBydW5uaW5nIHBsdWdpbiB1bmRlciBUeHAgNC44 KyBvbiBhIHBhZ2Ugd2l0aCBubyByZXF1aXJlZCBmaWxlczwvbGk+CjwvdWw+Cgo8aDM+VmVy c2lvbiAwLjIuNyAoMjAxNy8zLzE0KTwvaDM+Cgo8dWw+Cgk8bGk+UmVtb3ZlcyB0aGUgcHJl ZmVyZW5jZSBhZGRlZCBpbiAwLjIuNiBpbiBmYXZvciBvZiB0aGUgZ2xvYmFsIGRvY3R5cGUg cHJlZmVyZW5jZS4gKE5COiBzZWUgVXBncmFkZSBub3Rlcy4pPC9saT4KPC91bD4KCjxoMz5W ZXJzaW9uIDAuMi42ICgyMDE3LzIvMjMpPC9oMz4KCjx1bD4KCTxsaT5BZGRlZCA8c3BhbiBj bGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdmVyc2lvbiBwcmVmZXJlbmNlLCB3aGljaCBjb250 cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgPGNvZGU+dHlwZTwvY29kZT4gYXR0cmlidXRlIGlz IGFkZGVkIHRvIDxjb2RlPmxpbms8L2NvZGU+IGFuZCA8Y29kZT5zY3JpcHQ8L2NvZGU+IHRh Z3MuIChOQjogc2VlIFVwZ3JhZGUgbm90ZXMuKTwvbGk+CjwvdWw+Cgo8aDM+VmVyc2lvbiAw LjIuNSAoMjAxNy8yLzEzKTwvaDM+Cgo8dWw+Cgk8bGk+VHhwIDQuNiBjb21wYXRpYmlsaXR5 IHVwZGF0ZTwvbGk+CjwvdWw+Cgo8aDM+VmVyc2lvbiAwLjIuMyAoMjAxMC8xMi8yMCksIDAu Mi40ICgyMDEwLzEyLzI3KTwvaDM+Cgo8dWw+Cgk8bGk+Q29kZSBjbGVhbmluZyBvbmx5OyBu byBmdW5jdGlvbmFsIGNoYW5nZXM8L2xpPgo8L3VsPgoKPGgzPlZlcnNpb24gMC4yLjIgKDIw MTAvMDcvMTApPC9oMz4KCjx1bD4KCTxsaT5UYWcgY29udGVudHMgY2FuIG5vdyBpbmNsdWRl IG90aGVyIFR4cCB0YWdzLCBhbGxvd2luZyBlLmcuIFR4cCBjb25kaXRpb25hbCB0YWdzIGZv ciBmdXJ0aGVyIGF1dG9tYXRpb24gb3B0aW9ucy48L2xpPgo8L3VsPgoKPGgzPlZlcnNpb24g MC4yLjEgKDIwMDkvMTAvMDMpPC9oMz4KCjx1bD4KCTxsaT5GaXhlZCB0byB3b3JrIHdpdGgg c3ViLWRpcmVjdG9yeSBpbnN0YWxsYXRpb25zPC9saT4KPC91bD4KCjxoMz5WZXJzaW9uIDAu MiAoMjAwOS8wOS8yNSk8L2gzPgoKPHVsPgoJPGxpPk5ldyBmZWF0dXJlczoKCTx1bD4KCQk8 bGk+UGVyLXNlY3Rpb24gYW5kL29yIHBlci1wYWdlIGZpbGUgbG9hZGluZzwvbGk+CgkJPGxp PkNvbnRhaW5lciB0YWcgbW9kZSBmb3IgYWRkaXRpb25hbCBmaWxlcy9mb3JtczwvbGk+CgkJ PGxpPkFsbCBwcmVmZXJlbmNlcyBjYW4gbm93IGJlIG92ZXJyaWRlbiBieSB0YWcgYXR0cmli dXRlczwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+Tm90ZTogbmV3IGF0dHJpYnV0ZSBuYW1lcyBm b3IgZGVmYXVsdCBqcyBhbmQgY3NzIGRpcmVjdG9yaWVzLiBVc2VycyB1cGdyYWRpbmcgZnJv bSB2ZXJzaW9uIDAuMS4xIHNob3VsZCBjaGVjayBwcmVmZXJlbmNlcyBhbmQgdXBkYXRlIHRo ZXNlIHZhbHVlcyBpZiBuZWVkZWQuPC9saT4KPC91bD4KCjxoMz5WZXJzaW9uIDAuMS4xICgy MDA5LzA5LzE4KTwvaDM+Cgo8dWw+Cgk8bGk+QWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIDxh IGhyZWY9Imh0dHA6Ly9pcHNlZGl4aXQubmV0L3R4cC85Mi9zb29fcGx1Z2luX3ByZWYiPnNv b19wbHVnaW5fcHJlZjwvYT4gZm9yIHByZWZlcmVuY2UgbWFuYWdlbWVudDwvbGk+CjwvdWw+ Cgo8aDM+VmVyc2lvbiAwLjEgKDIwMDkvMDUvMTUpPC9oMz4KCjx1bD4KCTxsaT5Jbml0aWFs IHJlbGVhc2UuIFBlci1hcnRpY2xlIGxvYWRpbmcgb2YganMvY3NzIGZpbGVzLCBUeHAgZm9y bXMuPC9saT4KPC91bD4iO3M6NDoiY29kZSI7czo0NTk1OiIKaWYoY2xhc3NfZXhpc3RzKCdc VGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JykpIHsKICAgIFR4cDo6Z2V0KCdcVGV4dHBhdHRl cm5cVGFnXFJlZ2lzdHJ5JykKICAgICAgICAtPnJlZ2lzdGVyKCdzb29fcmVxdWlyZWRfZmls ZXMnKQogICAgICAgIDsKfQoKQHJlcXVpcmVfcGx1Z2luKCdzb29fcGx1Z2luX3ByZWYnKTsg ICAgIC8vIG9wdGlvbmFsCgppZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7CiAgICBh ZGRfcHJpdnMoJ3BsdWdpbl9wcmVmcy5zb29fcmVxdWlyZWRfZmlsZXMnLCcxLDInKTsKICAg IGFkZF9wcml2cygncGx1Z2luX2xpZmVjeWNsZS5zb29fcmVxdWlyZWRfZmlsZXMnLCcxLDIn KTsKICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCdzb29fcmVxdWlyZWRfZmlsZXNfbWFuYWdlX3By ZWZzJywgJ3BsdWdpbl9wcmVmcy5zb29fcmVxdWlyZWRfZmlsZXMnKTsKICAgIHJlZ2lzdGVy X2NhbGxiYWNrKCdzb29fcmVxdWlyZWRfZmlsZXNfbWFuYWdlX3ByZWZzJywgJ3BsdWdpbl9s aWZlY3ljbGUuc29vX3JlcXVpcmVkX2ZpbGVzJyk7Cn0KCmZ1bmN0aW9uIHNvb19yZXF1aXJl ZF9maWxlc19tYW5hZ2VfcHJlZnMoJGV2ZW50LCAkc3RlcCkKewogICAgaWYgKGZ1bmN0aW9u X2V4aXN0cygnc29vX3BsdWdpbl9wcmVmJykpCiAgICAgICAgcmV0dXJuIHNvb19wbHVnaW5f cHJlZigkZXZlbnQsICRzdGVwLCBzb29fcmVxdWlyZWRfZmlsZXNfcHJlZl9zcGVjKCkpOwoK ICAgICAgICAvLyBtZXNzYWdlIHRvIGluc3RhbGwgc29vX3BsdWdpbl9wcmVmCiAgICBpZiAo c3Vic3RyKCRldmVudCwgMCwgMTIpID09ICdwbHVnaW5fcHJlZnMnKSB7CiAgICAgICAgJHBs dWdpbiA9IHN1YnN0cigkZXZlbnQsIDEzKTsKICAgICAgICAkbWVzc2FnZSA9ICc8cD48YnIg Lz48c3Ryb25nPicuZ1R4dCgnZWRpdCcpLiIgJHBsdWdpbiAiLgogICAgICAgICAgICBnVHh0 KCdlZGl0X3ByZWZlcmVuY2VzJykuJzo8L3N0cm9uZz48YnIgLz4nLmdUeHQoJ2luc3RhbGxf cGx1Z2luJykuCiAgICAgICAgICAgICcgPGEgaHJlZj0iaHR0cDovL2lwc2VkaXhpdC5uZXQv dHhwLzkyL3Nvb19wbHVnaW5fcHJlZiI+Jy4KICAgICAgICAgICAgJ3Nvb19wbHVnaW5fcHJl ZjwvYT48L3A+JzsKICAgICAgICBwYWdldG9wKGdUeHQoJ2VkaXRfcHJlZmVyZW5jZXMnKS4i ICYjODI1MDsgJHBsdWdpbiIsICRtZXNzYWdlKTsKICAgIH0KfQoKZnVuY3Rpb24gc29vX3Jl cXVpcmVkX2ZpbGVzX3ByZWZfc3BlYygpCnsKICAgIHJldHVybiBhcnJheSgKICAgICAgICAn Y3VzdG9tX2ZpZWxkJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ZhbCcgICA9PiAnUmVxdWly ZXMnLAogICAgICAgICAgICAnaHRtbCcgID0+ICd0ZXh0X2lucHV0JywKICAgICAgICAgICAg J3RleHQnICA9PiAnQ3VzdG9tIGZpZWxkIG5hbWUnLAogICAgICAgICksCiAgICAgICAgJ2Nz c19kaXInID0+IGFycmF5KAogICAgICAgICAgICAndmFsJyAgID0+ICdjc3MvJywKICAgICAg ICAgICAgJ2h0bWwnICA9PiAndGV4dF9pbnB1dCcsCiAgICAgICAgICAgICd0ZXh0JyAgPT4g J0RlZmF1bHQgY3NzIGRpciAocmVsYXRpdmUgdG8gYmFzZSBVUkwsIHdpdGggY2xvc2luZyBz bGFzaCknLAogICAgICAgICksCiAgICAgICAgJ2pzX2RpcicgPT4gYXJyYXkoCiAgICAgICAg ICAgICd2YWwnICAgPT4gJ2pzLycsCiAgICAgICAgICAgICdodG1sJyAgPT4gJ3RleHRfaW5w dXQnLAogICAgICAgICAgICAndGV4dCcgID0+ICdEZWZhdWx0IGpzIGRpciAocmVsYXRpdmUg dG8gYmFzZSBVUkwsIHdpdGggY2xvc2luZyBzbGFzaCknLAogICAgICAgICksCiAgICAgICAg J2Zvcm1fcHJlZml4JyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ZhbCcgICA9PiAncmVxdWly ZV8nLAogICAgICAgICAgICAnaHRtbCcgID0+ICd0ZXh0X2lucHV0JywKICAgICAgICAgICAg J3RleHQnICA9PiAnT3B0aW9uYWwgcHJlZml4IGZvciBmb3JtIG5hbWVzJywKICAgICAgICAp LAogICAgICAgICdwZXJfcGFnZScgPT4gYXJyYXkoCiAgICAgICAgICAgICd2YWwnICAgPT4g MCwKICAgICAgICAgICAgJ2h0bWwnICA9PiAneWVzbm9yYWRpbycsCiAgICAgICAgICAgICd0 ZXh0JyAgPT4gJ0xvYWQge3BhZ2V9LmNzcyBhbmQge3BhZ2V9LmpzPycsCiAgICAgICAgKSwK ICAgICAgICAncGVyX3NlY3Rpb24nID0+IGFycmF5KAogICAgICAgICAgICAndmFsJyAgID0+ IDAsCiAgICAgICAgICAgICdodG1sJyAgPT4gJ3llc25vcmFkaW8nLAogICAgICAgICAgICAn dGV4dCcgID0+ICdMb2FkIHtzZWN0aW9ufS5jc3MgYW5kIHtzZWN0aW9ufS5qcz8nLAogICAg ICAgICksCiAgICApOwp9CgpmdW5jdGlvbiBzb29fcmVxdWlyZWRfZmlsZXNfcHJlZnMoKQp7 CiAgICBzdGF0aWMgJHByZWZzOwogICAgaWYgKCEgJHByZWZzKSB7CiAgICAgICAgZm9yZWFj aCAoc29vX3JlcXVpcmVkX2ZpbGVzX3ByZWZfc3BlYygpIGFzICRuYW1lID0+ICRzcGVjKSB7 CiAgICAgICAgICAgICRwcmVmc1skbmFtZV0gPSAkc3BlY1sndmFsJ107CiAgICAgICAgfQog ICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ3Nvb19wbHVnaW5fcHJlZl92YWxzJykpIHsK ICAgICAgICAgICAgJHByZWZzID0gYXJyYXlfbWVyZ2UoJHByZWZzLCBzb29fcGx1Z2luX3By ZWZfdmFscygnc29vX3JlcXVpcmVkX2ZpbGVzJykpOwogICAgICAgIH0KICAgIH0KICAgIHJl dHVybiAkcHJlZnM7Cn0KCmZ1bmN0aW9uIHNvb19yZXF1aXJlZF9maWxlcygkYXR0cywgJHRo aW5nID0gJycpCnsKICAgIGdsb2JhbCAkcGFnZSwgJHMsICRpZCwgJGRvY3R5cGU7CiAgICAk cHJlZnMgPSBzb29fcmVxdWlyZWRfZmlsZXNfcHJlZnMoKTsKICAgIGV4dHJhY3QoJHByZWZz KTsKICAgICRyZXF1aXJlZCA9ICR0aGluZyA/IGRvX2xpc3QocGFyc2UoJHRoaW5nKSkgOiBb XTsKCiAgICAvLyB0YWcgYXR0cyBvdmVycmlkZSBkZWZhdWx0cy9wcmVmcwogICAgZm9yZWFj aCAoJGF0dHMgYXMgJGsgPT4gJHYpCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGss ICRwcmVmcykpCiAgICAgICAgICAgICQkayA9ICR2OwoKICAgIGlmICgkcGVyX3BhZ2UpCiAg ICAgICAgJHJlcXVpcmVkID0gYXJyYXlfbWVyZ2UoJHJlcXVpcmVkLCBfc29vX3JlcXVpcmVk X2ZpbGVzX2FkZCgkcGFnZSkpOwoKICAgIGlmICgkcGVyX3NlY3Rpb24pCiAgICAgICAgJHJl cXVpcmVkID0gYXJyYXlfbWVyZ2UoJHJlcXVpcmVkLCBfc29vX3JlcXVpcmVkX2ZpbGVzX2Fk ZCgkcykpOwoKICAgIC8vIGlmIGluZGl2aWR1YWwgYXJ0aWNsZSwgZ2V0IGN1c3RvbSBmaWVs ZCBjb250ZW50cwogICAgaWYgKCRpZCBhbmQgJGN1c3RvbV9maWVsZCkKICAgICAgICAkcmVx dWlyZWQgPSBhcnJheV9tZXJnZSgkcmVxdWlyZWQsIGRvX2xpc3QoY3VzdG9tX2ZpZWxkKGFy cmF5KAogICAgICAgICAgICAnbmFtZScgICAgICA9PiAgJGN1c3RvbV9maWVsZCwKICAgICAg ICAgICAgJ2VzY2FwZScgICAgPT4gICdodG1sJywKICAgICAgICAgICAgJ2RlZmF1bHQnICAg PT4gICcnLAogICAgICAgICkpKSk7CgogICAgJHJlcXVpcmVkID0gYXJyYXlfdW5pcXVlKCRy ZXF1aXJlZCk7CgogICAgJGNzc0F0dHMgPSAkanNBdHRzID0gYXJyYXkoKTsKICAgICRjc3NB dHRzWydyZWwnXSA9ICdzdHlsZXNoZWV0JzsKICAgIGlmICgkZG9jdHlwZSAhPSAnaHRtbDUn KSB7CiAgICAgICAgJGNzc0F0dHNbJ3R5cGUnXSA9ICd0ZXh0L2Nzcyc7CiAgICAgICAgJGpz QXR0c1sndHlwZSddID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICB9CgogICAgZm9yZWFjaCAo JHJlcXVpcmVkIGFzICRyZXEpIHsKICAgICAgICBpZiAoc3Vic3RyKHN0cnRvbG93ZXIoJHJl cSksIC00KSA9PT0gJy5jc3MnKSB7CiAgICAgICAgICAgICRjc3NBdHRzWydocmVmJ10gPSBo dS4kY3NzX2Rpci4kcmVxOwogICAgICAgICAgICAkb3V0W10gPSB0YWdfdm9pZCgnbGluaycs ICRjc3NBdHRzKTsKICAgICAgICB9IGVsc2VpZiAoc3Vic3RyKHN0cnRvbG93ZXIoJHJlcSks IC0zKSA9PT0gJy5qcycpIHsKICAgICAgICAgICAgJGpzQXR0c1snc3JjJ10gPSBodS4kanNf ZGlyLiRyZXE7CiAgICAgICAgICAgICRvdXRbXSA9IHRhZyhudWxsLCAnc2NyaXB0JywgJGpz QXR0cyk7CiAgICAgICAgfQogICAgICAgIGVsc2VpZiAoJHJlcSkKICAgICAgICAgICAgJG91 dFtdID0gcGFyc2VfZm9ybSgkZm9ybV9wcmVmaXguJHJlcSk7CiAgICB9CgogICAgcmV0dXJu IGlzc2V0KCRvdXQpID8gaW1wbG9kZSgiXG4iLCAkb3V0KSA6ICcnOwp9CgpmdW5jdGlvbiBf c29vX3JlcXVpcmVkX2ZpbGVzX2FkZCgkbmFtZSkKewogICAgZXh0cmFjdChzb29fcmVxdWly ZWRfZmlsZXNfcHJlZnMoKSk7CiAgICAkcGF0aF9yb290ID0gcHJlZ19yZXBsYWNlKCcvaW5k ZXgucGhwLycsICcnLCAkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOwogICAgaWYgKGZp bGVfZXhpc3RzKCRwYXRoX3Jvb3QuJGNzc19kaXIuJG5hbWUuJy5jc3MnKSkKICAgICAgICAk b3V0W10gPSAkbmFtZS4nLmNzcyc7CiAgICBpZiAoZmlsZV9leGlzdHMoJHBhdGhfcm9vdC4k anNfZGlyLiRuYW1lLicuanMnKSkKICAgICAgICAkb3V0W10gPSAkbmFtZS4nLmpzJzsKICAg IHJldHVybiBpc3NldCgkb3V0KSA/ICRvdXQgOiBhcnJheSgpOwp9CiI7czo0OiJ0eXBlIjtz OjE6IjEiO3M6NToiZmxhZ3MiO3M6MToiMyI7czo1OiJvcmRlciI7czoxOiI1IjtzOjM6Im1k NSI7czozMjoiYzk3NmM4YjhjNTE3NWUzMDZlNjhmOTBkMDkwNjk2ZTIiO30=