# Name: smd_featured v0.10 # Type: Admin/Client side plugin # Quickly label and display featured articles for your site's home / landing pages # Author: Stef Dawson # URL: http://stefdawson.com/ # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfZmVhdHVyZWQiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMTAiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjgwOiJRdWlja2x5IGxhYmVsIGFuZCBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIGZvciB5 b3VyIHNpdGUncyBob21lIC8gbGFuZGluZyBwYWdlcyI7czo0OiJoZWxwIjtzOjE1NDU1OiI8 ZGl2IGlkPSJzbWRfaGVscCI+CgoJPGgxPnNtZF9mZWF0dXJlZDwvaDE+CgoJPHA+UHVsbCBv bmUgb3IgbW9yZSBhcnRpY2xlcyBvdXQgb2YgdGhlIHJlZ3VsYXIgYXJ0aWNsZSBmbG93IGFu ZCBwaW1wIHRoZW0gJiM4MjEyOyBwZXJoYXBzIG9uIGEgc2VjdGlvbiBsYW5kaW5nIHBhZ2Ug b3IgeW91ciBob21lIHBhZ2UuPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxs aT5PbmUtY2xpY2sgc2VsZWN0aW9uIG9mIGFydGljbGVzIHRvIGZlYXR1cmU8L2xpPgoJCTxs aT5MYWJlbCB5b3VyIGZlYXR1cmVkIGFydGljbGVzLCBhbGxvd2luZyB5b3UgdG8gZ3JvdXAg dGhlbSBpbnRvIGFyZWFzIGxpa2UgRmVhdHVyZWQsIFRlYXNlcnMsIGV0YzwvbGk+CgkJPGxp PkFkZCBhbiBvcHRpb25hbCBkZXNjcmlwdGlvbiB0byBlYWNoIGFydGljbGUgc28geW91IGNh biB1c2UgdGhhdCBhcyBjb3B5LCBpbnN0ZWFkIG9mIHNvbWV0aGluZyBmcm9tIHRoZSBhcnRp Y2xlIGl0c2VsZiAoc3VwcG9ydHMgVGV4dGlsZSBhbmQgc29tZSA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiB0YWdzKTwvbGk+CgkJPGxpPlNlYXJjaCB5b3VyIGFydGljbGVzIGJ5 IHRpdGxlIG9yIGxhYmVsOyBmaWx0ZXJpbmcgaW4gcmVhbC10aW1lPC9saT4KCQk8bGk+SGlk ZGVuIHByZWYgYWxsb3dzIHByZS1maWx0ZXJpbmcgYnkgYW4gYWRtaW5pc3RyYXRvciBzbyBv bmx5IGFydGljbGVzIGZyb20gY2VydGFpbiBzZWN0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciBw aW1wYWdlPC9saT4KCQk8bGk+RGlzcGxheSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBmZWF0dXJl ZCBhcnRpY2xlcyB1c2luZyByZWd1bGFyIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+ IGFydGljbGUgdGFnczwvbGk+CgkJPGxpPktlZXBzIHRyYWNrIG9mIHdoaWNoIGFydGljbGVz IGhhdmUgYmVlbiBzZWVuIGFscmVhZHkgb24gdGhlIHBhZ2Ugc28gbGF0ZXIgZmVhdHVyZWQg KG9yIHVuZmVhdHVyZWQpIGFydGljbGVzIGFyZW4mIzgyMTc7dCBkdXBsaWNhdGVkPC9saT4K CTwvdWw+CgoJPGgyPkF1dGhvciAvIENyZWRpdHM8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6 Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT48L3A+CgoJPGgyPklu c3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0icmVxdWlyZWQi PlJlcXVpcmVzIFRleHRwYXR0ZXJuIDQuMi4wKzwvcD4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1 Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lu cy8xMTc0L3NtZF9mZWF0dXJlZCI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhy ZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3Rl IHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWlu IC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZp c2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3Bp Yy5waHA/aWQ9MzM5MzgiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byBy ZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoK CTxwPldoZW4geW91IGluc3RhbGwgdGhlIHBsdWdpbiwgdGhlIG5lY2Vzc2FyeSB0YWJsZSBp cyBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZCBmb3IgeW91LiBUaGVyZSYjODIxNztzIGN1cnJl bnRseSBubyBmYWNpbGl0eSBmb3IgcmVtb3ZpbmcgaXQgZHVyaW5nIHBsdWdpbiBvcGVyYXRp b24sIGJ1dCBpdCB3aWxsIGJlIGRlbGV0ZWQgaWYgdGhlIHBsdWdpbiBpcyByZW1vdmVkIGZy b20geW91ciBzeXN0ZW0uPC9wPgoKCTxwPlRvIHVuaW5zdGFsbCwgc2ltcGx5IGRlbGV0ZSB0 aGUgcGx1Z2luIGZyb20gdGhlIEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFnZS48L3A+CgoJPGgy PkNvbmZpZ3VyaW5nIGZlYXR1cmVkIGFydGljbGVzPC9oMj4KCgk8cD5WaXNpdCB0aGUgPGVt PkNvbnRlbnQtJmd0O0ZlYXR1cmVkIGFydGljbGVzPC9lbT4gY29uZmlnIHRhYi4gQSBsaXN0 IG9mIGFsbCBhcnRpY2xlcyAoZnJvbSB0aGUgYWRtaW4tc2VsZWN0ZWQgc2VjdGlvbnMpIGFy ZSBwcmVzZW50ZWQgaW4gYSBncmlkLjwvcD4KCgk8aDM+VG8gZmVhdHVyZSBhbiBhcnRpY2xl PC9oMz4KCgk8cD5DbGljayBpdHMgbmFtZS4gSXQgd2lsbCBiZSBoaWdobGlnaHRlZCBhbmQg YW4gPGNvZGU+W0VkaXRdPC9jb2RlPiBidXR0b24gYXBwZWFycyBiZXNpZGUgaXQuIElmIHlv dSBjaG9vc2Ugbm90IHRvIGVkaXQgdGhlIGFydGljbGUgaW5mb3JtYXRpb24sIGl0IHdpbGwg YmUgZmVhdHVyZWQgYnV0IHVubGFiZWxsZWQuPC9wPgoKCTxwPkNsaWNraW5nIDxjb2RlPltF ZGl0XTwvY29kZT4gd2lsbCBkaXNwbGF5IHR3byBpbnB1dCBib3hlczo8L3A+CgoJPHVsPgoJ CTxsaT48c3Ryb25nPkxhYmVsPC9zdHJvbmc+IDogYWxsb3dzIHlvdSB0byBsYWJlbCAoZ3Jv dXApIHRoZSBhcnRpY2xlIHdpdGggb3RoZXJzIG9mIGEgc2ltaWxhciBmZWF0dXJlZCBzdGF0 dXMuIEZvciBleGFtcGxlLCB5b3UgY291bGQgbGFiZWwgc29tZSBhcnRpY2xlcyB0byBnbyBp biBhICYjODIxNjt0ZWFzZXJzJiM4MjE3OyBibG9jayBvbiB5b3VyIGhvbWUgcGFnZSBieSBs YWJlbGxpbmcgZWFjaCBwb3RlbnRpYWwgYXJ0aWNsZSB3aXRoIDxjb2RlPlRlYXNlcjwvY29k ZT4uIEJlIGNhcmVmdWw6IDxzdHJvbmc+bGFiZWxzIGFyZSBjYXNlIHNlbnNpdGl2ZTwvc3Ry b25nPjwvbGk+CgkJPGxpPjxzdHJvbmc+RGVzY3JpcHRpb248L3N0cm9uZz4gOiBhbGxvd3Mg eW91IHRvIHN0b3JlIHNvbWUgVGV4dGlsZS1hd2FyZSBzdXBwb3J0aW5nIGluZm9ybWF0aW9u IGFib3V0IHRoZSBhcnRpY2xlLiBUaGlzIGNvdWxkIHNpbXBseSBiZSBhZGRpdGlvbmFsIGlu Zm9ybWF0aW9uIGZvciB5b3VyIG93biB1c2UsIG9yIHNvbWUgY29weSB0aGF0IHlvdSBtYXkg d2lzaCB0byBkaXNwbGF5IGluIHlvdXIgdGVhc2VycyBibG9jayB0byBlbnRpY2UgcGVvcGxl IHRvIHJlYWQgdGhlIGFydGljbGUuIEl0IGNhbiBiZSBhcyBzaW1wbGUgb3IgYXMgY29tcGxl eCBhcyB5b3UgbGlrZSBhbmQgY2FuIGNvbnRhaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwv c3Bhbj4gdGFncyAoaWYgdGhleSBtYWtlIHNlbnNlIHRvIHVzZSBhdCB0aGF0IHBvaW50ICYj ODIxMjsgYXJ0aWNsZSB0YWdzIGNhbm5vdCBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgYnV0IDxj b2RlPiZsdDt0eHA6c2l0ZV91cmwgLyZndDs8L2NvZGU+IGNhbik8L2xpPgoJPC91bD4KCgk8 cD5XaGVuIHlvdSYjODIxNztyZSBoYXBweSB3aXRoIHlvdXIgY2F0ZWdvcmlzYXRpb24gYW5k L29yIGRlc2NyaXB0aW9uIHRleHQsIGhpdCBTYXZlIHRvIHN0b3JlIGl0LiBZb3UgY2FuIGVk aXQgdGhlIGluZm9ybWF0aW9uIGF0IGFueSB0aW1lIGJ5IGNsaWNraW5nIHRoZSBhcHByb3By aWF0ZSA8Y29kZT5bRWRpdF08L2NvZGU+IGJ1dHRvbiBmcm9tIHRoZSBhcnRpY2xlIGxpc3Qu PC9wPgoKCTxoMz5UbyB1bmZlYXR1cmUgYW4gYXJ0aWNsZTwvaDM+CgoJPHA+Q2xpY2sgaXRz IG5hbWUgYWdhaW4uIFdoZW4geW91IGNvbmZpcm0gdGhhdCB5b3UgYXJlIHN1cmUsIHRoZSBh cnRpY2xlJiM4MjE3O3MgbGFiZWwgYW5kIGRlc2NyaXB0aW9uIGFyZSBkZWxldGVkLCBzbyBi ZSBzdXJlIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgdGhlbSwgb3IgaGF2ZSBiYWNrZWQg dGhlIGluZm9ybWF0aW9uIHVwIHNvbWV3aGVyZS48L3A+CgoJPGgzPkZpbmRpbmcgYXJ0aWNs ZXMgdG8gZmVhdHVyZTwvaDM+CgoJPHA+V2l0aCBsYXJnZSBhcnRpY2xlIGxpc3RzIGl0IGNh biBiZWNvbWUgZGlmZmljdWx0IHRvIGZpbmQgdGhlIG9uZSB5b3Ugd2FudC4gSW4gdGhlIHRv cC1sZWZ0IGlzIGFuIDxlbT5BcnRpY2xlIGxpdmUgc2VhcmNoPC9lbT4uIENsaWNrIGl0IHRv IHJldmVhbCB0aGUgc2VhcmNoIGNyaXRlcmlhLiBTaW1wbHkgc3RhcnQgdHlwaW5nIGluIHRo ZSA8ZW0+QnkgbmFtZTwvZW0+IGJveCBhbmQgeW91ciBhcnRpY2xlIGxpc3Qgd2lsbCBiZSBy ZWR1Y2VkIGFzIHlvdSB0eXBlIHRvIG9ubHkgdGhvc2UgdGhhdCBtYXRjaC4gVHlwZSBtdWx0 aXBsZSB3b3JkcyB0byBmaW5kIGFydGljbGVzIHRoYXQgY29udGFpbiBhbnkgb2YgdGhlIGdp dmVuIHdvcmRzLiBUbyBxdWlja2x5IGNsZWFyIHRoZSBib3gsIGhpdCB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPkVTQzwvc3Bhbj5hcGUga2V5LjwvcD4KCgk8cD5BbHRlcm5hdGl2ZWx5LCB5 b3UgY2FuIHVzZSB0aGUgc2VsZWN0IGxpc3QgdG8gY2hvb3NlIGFsbCBhcnRpY2xlcyB3aXRo IGEgcGFydGljdWxhciBsYWJlbC4gVGhlIGVtcHR5IGVudHJ5IGF0IHRoZSB0b3Agb2YgdGhl IGxpc3QgbWVhbnMgJiM4MjIwO2FsbCBhcnRpY2xlcyYjODIyMTsuIElmIHlvdSBjbGljayB0 byBmZWF0dXJlIGFuIGFydGljbGUgYnV0IGRvbiYjODIxNzt0IHN1cHBseSBhIGxhYmVsIHlv dSBjYW4gZGlzcGxheSBpdCBieSBjaG9vc2luZyB0aGUgPGNvZGU+W3VubGFiZWxsZWRdPC9j b2RlPiBpdGVtIGZyb20gdGhlIGxpc3QuIElmIHlvdSBoYXZlIGxhYmVsbGVkIGFueSBhcnRp Y2xlcywgZWFjaCBsYWJlbCB5b3UgaGF2ZSBzdXBwbGllZCB3aWxsIGFsc28gYmUgYW4gb3B0 aW9uIGluIHRoZSBsaXN0LiBSZW1lbWJlciB0aGF0IGxhYmVscyBhcmUgY2FzZSBzZW5zaXRp dmUuPC9wPgoKCTxwPk5vdGUgdGhhdCBmaWx0ZXJpbmcgYnkgbmFtZSBvciBieSBsYWJlbCBh cmUgbXV0dWFsbHkgZXhjbHVzaXZlIGFjdGlvbnM6IHNlbGVjdGluZyBzb21ldGhpbmcgZnJv bSB0aGUgZHJvcGRvd24gd2lsbCBjbGVhciB0aGUgdGV4dCBib3gsIGFuZCB0eXBpbmcgc29t ZXRoaW5nIGluIHRoZSB0ZXh0IGJveCB3aWxsIHJlc2V0IHRoZSBkcm9wZG93bi48L3A+CgoJ PHA+WW91ciBzZWFyY2ggY3JpdGVyaWEgYXJlIHJlbWVtYmVyZWQgYmV0d2VlbiBlZGl0L2xp c3Qgdmlld3Mgc28geW91IHdvbiYjODIxNzt0IGxvc2UgeW91ciBwbGFjZS48L3A+CgoJPGgz PlBsdWdpbiBjb25maWd1cmF0aW9uPC9oMz4KCgk8cD5Zb3UgY2FuIGFsdGVyIHRoZSBiZWhh dmlvdXIgb2YgdGhlIHBsdWdpbiBieSBjcmVhdGluZyBzb21lIGhpZGRlbiBwcmVmZXJlbmNl cyAodGhlIHNtZF9wcmVmYWxpemVyIHBsdWdpbiBjYW4gaGVscCBoZXJlKS4gVGhlcmUgYXJl IGEgZmV3IHByZWZzIHlvdSBtYXkgZGVmaW5lOjwvcD4KCgk8b2w+CgkJPGxpPjxzdHJvbmc+ c21kX2ZlYXR1cmVkX3ByaXZzPC9zdHJvbmc+IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBv ZiBwcml2IGxldmVsIG51bWJlcnMgdGhhdCBjYW4gYWNjZXNzIHRoZSA8ZW0+RmVhdHVyZWQg YXJ0aWNsZXM8L2VtPiB0YWIuIERlZmF1bHQ6IDxjb2RlPjEsMjwvY29kZT48L2xpPgoJCTxs aT48c3Ryb25nPnNtZF9mZWF0dXJlZF9ib3hfc2l6ZTwvc3Ryb25nPiA6IHRha2VzIGEgPGNv ZGU+d2lkdGggeCBoZWlnaHQ8L2NvZGU+IHZhbHVlIGFuZCBzcGVjaWZpZXMgdGhlIHNpemUg aW4gcGl4ZWxzIG9mIGVhY2ggY2VsbCBpbiB0aGUgZ3JpZC4gRGVmYXVsdCBpcyA8Y29kZT4x NTB4NDA8L2NvZGU+PC9saT4KCQk8bGk+PHN0cm9uZz5zbWRfZmVhdHVyZWRfc2VjdGlvbl9s aXN0PC9zdHJvbmc+OiBkZWZpbmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBzZWN0aW9u IG5hbWVzLiBUaGVzZSB3aWxsIGJlIHRoZSBvbmx5IHNlY3Rpb25zIGZyb20gd2hpY2ggYXJ0 aWNsZXMgYXJlIGFsbG93ZWQgdG8gYmUgZmVhdHVyZWQ8L2xpPgoJCTxsaT48c3Ryb25nPnNt ZF9mZWF0dXJlZF9zb3J0PC9zdHJvbmc+IDogZGVmaW5lcyB0aGUgc29ydCBvcmRlciBvZiB0 aGUgYXJ0aWNsZSBsaXN0LiBVc2UgYW55IHZhbGlkIGRhdGFiYXNlIGNvbHVtbiBuYW1lIGZv bGxvd2VkIGJ5IGVpdGhlciA8Y29kZT5hc2M8L2NvZGU+IG9yIDxjb2RlPmRlc2M8L2NvZGU+ IHRvIGNob29zZSB0aGUgc29ydCBkaXJlY3Rpb24uIEZvciBleGFtcGxlLCA8Y29kZT5UaXRs ZSBhc2M8L2NvZGU+LiBEZWZhdXQgaXMgPGNvZGU+UG9zdGVkIGRlc2M8L2NvZGU+PC9saT4K CTwvb2w+CgoJPHA+SWYgdXNpbmcgc21kX3ByZWZhbGl6ZXIgdG8gY3JlYXRlIHRoZSBwcmVm cywgc2V0IHRoZSBuYW1lIGFuZCB2YWx1ZSBhcyBhYm92ZSBhbmQgdGhlbiBzZXQgdGhlIGZv bGxvd2luZyBhZGRpdGlvbmFsIHBhcmFtZXRlcnM6PC9wPgoKCTx1bD4KCQk8bGk+PHN0cm9u Zz50eXBlPC9zdHJvbmc+IDogaGlkZGVuPC9saT4KCQk8bGk+PHN0cm9uZz5ldmVudDwvc3Ry b25nPiA6IHNtZF9mZWF0dXJlZDwvbGk+CgkJPGxpPjxzdHJvbmc+aW5wdXQgY29udHJvbDwv c3Ryb25nPiA6IHRleHRfaW5wdXQ8L2xpPgoJCTxsaT48c3Ryb25nPnVzZXI8L3N0cm9uZz4g OiAvIGVtcHR5IC88L2xpPgoJCTxsaT48c3Ryb25nPnBvc2l0aW9uPC9zdHJvbmc+OiAwPC9s aT4KCTwvdWw+CgoJPGgyPkRpc3BsYXlpbmcgZmVhdHVyZWQgYXJ0aWNsZXM8L2gyPgoKCTxw Pk9uY2UgeW91IGhhdmUgY2hvc2VuIHlvdXIgZmVhdHVyZWQgYXJ0aWNsZXMsIHlvdSBuZWVk IGEgd2F5IHRvIGRpc3BsYXkgdGhlbTo8L3A+CgoJPGgzPjxjb2RlPiZsdDt0eHA6c21kX2Zl YXR1cmVkIC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+QWN0cyBhIGJpdCBsaWtlIHRoZSBzdGFu ZGFyZCA8Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZndDs8L2NvZGU+IHRhZyB0byBkaXNwbGF5 IGZlYXR1cmVkIGFydGljbGVzLiBBdHRyaWJ1dGVzOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5sYWJlbDwvc3Bhbj4gOiBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVz IHdpdGggdGhpcyBsYWJlbC4gU3BlY2lmeSA8Y29kZT5sYWJlbD0mcXVvdDsmcXVvdDs8L2Nv ZGU+IHRvIGRpc3BsYXkgdW5sYWJlbGxlZCBhcnRpY2xlcyAod2hpY2ggYXJlIDxzdHJvbmc+ bm90PC9zdHJvbmc+IHRoZSBzYW1lIGFzIHVuZmVhdHVyZWQgYXJ0aWNsZXMpLiBJZiB0aGlz IGF0dHJpYnV0ZSBpcyBvbWl0dGVkLCBhbGwgZmVhdHVyZWQgYXJ0aWNsZXMgJiM4MjEyOyBp cnJlc3BlY3RpdmUgb2YgbGFiZWwgJiM4MjEyOyB3aWxsIGJlIGRpc3BsYXllZDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYWJlbHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0 YWcgJiM4MjEyOyB3aXRob3V0IGJyYWNrZXRzICYjODIxMjsgdG8gYXBwbHkgdG8gdGhlIGxh YmVsIGF0dHJpYnV0ZS4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIHRoZSBsYWJl bCBpdHNlbGYgaXMgZGlzcGxheWVkIGF0IHRoZSBoZWFkIG9mIHlvdXIgZmVhdHVyZWQgYXJ0 aWNsZSBsaXN0LiBJZiB5b3Ugd2lzaCB0byBkaXNwbGF5IHVubGFiZWxsZWQgYXJ0aWNsZXMg eW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgPGNvZGU+dW5sYWJlbDwvY29kZT4gYXR0cmlidXRl IG9yIHlvdSYjODIxNztsbCBzZWUgbm8gbGFiZWwuIE5vdGUgdGhhdCB0aGlzIHRhZyBkaWZm ZXJzIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGNvbnZlbnRpb246 IHlvdSB3aWxsIDxlbT5vbmx5PC9lbT4gc2VlIHRoZSBsYWJlbCBpZiB5b3Ugc3BlY2lmeSB0 aGUgPGNvZGU+bGFiZWx0YWc8L2NvZGU+LiBZb3UgY2FuIGRpc3BsYXkgdGhlIGxhYmVsIGlu c2lkZSB5b3VyIGFydGljbGVzIHVzaW5nIHRoZSA8Y29kZT4mbHQ7dHhwOmZlYXR1cmVkX2lu Zm8gLyZndDs8L2NvZGU+IHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj51bmxh YmVsPC9zcGFuPiA6IHdoZW4gdXNpbmcgPGNvZGU+bGFiZWw9JnF1b3Q7JnF1b3Q7PC9jb2Rl PiAodG8gc2hvdyB1bmxhYmVsbGVkIGFydGljbGVzKSB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZp ZXMgdGhlIGxhYmVsIHRvIHVzZSBpbnNpZGUgdGhlIDxjb2RlPmxhYmVsdGFnPC9jb2RlPi4g RGVmYXVsdDogJiM4MjIwO0ZlYXR1cmVkJiM4MjIxOzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj50aW1lPC9zcGFuPiA6IGxpbWl0IHRoZSBhcnRpY2xlcyB0byB0aG9zZSBpbiB0 aGUgPGNvZGU+cGFzdDwvY29kZT4sIHRoZSA8Y29kZT5mdXR1cmU8L2NvZGU+IG9yIDxjb2Rl PmFueTwvY29kZT4uIERlZmF1bHQ6IDxjb2RlPnBhc3Q8L2NvZGU+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnN0YXR1czwvc3Bhbj4gOiBvbmx5IGRpc3BsYXkgYXJ0aWNsZXMg b2YgdGhlIGdpdmVuIHN0YXR1cyBudW1iZXIocykuIERlZmF1bHQ6IDxjb2RlPjQsNTwvY29k ZT4gKGEuay5hLiBsaXZlIGFuZCBzdGlja3kpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnNlY3Rpb248L3NwYW4+IDogb25seSBkaXNwbGF5IGFydGljbGVzIGZyb20gdGhlIGdp dmVuIHNlY3Rpb24ocykuIElmIHRoZSBzZWN0aW9uIGxpc3QgaXMgcmVzdHJpY3RlZCB1c2lu ZyB0aGUgcGx1Z2luIHByZWZlcmVuY2VzLCB0aGUgc2VjdGlvbnMgdXNlZCBoZXJlIG11c3Qg YWxzbyBiZSBpbiB0aGF0IGxpc3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9y bTwvc3Bhbj4gOiB1c2UgdGhpcyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3Jt IHRvIGRpc3BsYXkgZWFjaCBhcnRpY2xlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBjb250YWlu ZXIgY29udGVudHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGltaXQ8L3NwYW4+ IDogbWF4aW11bSBudW1iZXIgb2YgZmVhdHVyZWQgYXJ0aWNsZXMgdG8gZGlzcGxheTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zb3J0PC9zcGFuPiA6IG9yZGVyIHRoZSBmZWF0 dXJlZCBhcnRpY2xlcyBieSA8Y29kZT5pZDwvY29kZT4sIDxjb2RlPmxhYmVsPC9jb2RlPiwg PGNvZGU+VGl0bGU8L2NvZGU+LCA8Y29kZT5Qb3N0ZWQ8L2NvZGU+LCBhbmQgc28gb24uIFRo ZSBzYW1lIGxpc3QgYXZhaWxhYmxlIGZvciB0aGUgPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8m Z3Q7PC9jb2RlPiB0YWcgYXJlIHVzYWJsZSBoZXJlLiBBZGQgPGNvZGU+YXNjPC9jb2RlPiBv ciA8Y29kZT5kZXNjPC9jb2RlPiB0byB0aGUgYXR0cmlidXRlIHRvIGFsdGVyIHRoZSBkaXJl Y3Rpb24gb2YgdGhlIHNvcnQuIFlvdSBtYXkgYWxzbyB1c2UgPGNvZGU+cmFuZCgpPC9jb2Rl PiB0byBzb3J0IHRoZSBhcnRpY2xlcyByYW5kb21seTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyAmIzgyMTI7IHdpdGhv dXQgYnJhY2tldHMgJiM4MjEyOyB0byB3cmFwIGFyb3VuZCB0aGUgbGlzdCBvZiBmZWF0dXJl ZCBhcnRpY2xlczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwvc3Bhbj4g OiB0aGUgKFgpSFRNTCB0YWcgJiM4MjEyOyB3aXRob3V0IGJyYWNrZXRzICYjODIxMjsgb3Ig dGV4dCB0byBwdXQgYmV0d2VlbiBlYWNoIGFydGljbGU8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3Nw YW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWc8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+aHRtbF9pZDwvc3Bhbj4gOiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5E T008L3NwYW4+IElEIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnPC9saT4KCTwvdWw+CgoJPHA+ WW91IG1heSB1c2UgdGhlIHRhZyBhcyBhIGNvbnRhaW5lciBhbmQgYW55IHRhZ3MgeW91IHNw ZWNpZnkgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBmZWF0dXJlZCBhcnRpY2xlLiBZb3Ug Y2FuIHVzZSBzdGFuZGFyZCBhcnRpY2xlIHRhZ3Mgc3VjaCBhcyA8Y29kZT4mbHQ7dHhwOnRp dGxlIC8mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7PC9jb2RlPiwg PGNvZGU+Jmx0O3R4cDpwZXJtbGluayAvJmd0OzwvY29kZT4sIGV0YzwvcD4KCgk8cCBjbGFz cz0iaW1wb3J0YW50Ij5Ob3RlIHRoYXQgeW91IGNhbiYjODIxNzt0IHVzZSA8Y29kZT4mbHQ7 dHhwOnNtZF9mZWF0dXJlZCZndDs8L2NvZGU+IGluc2lkZSBhbiBhcnRpY2xlIG9yIGFuIEFy dGljbGUgRm9ybS4gRG9pbmcgc28gd2lsbCB0cmlnZ2VyIGEgd2FybmluZyBiZWNhdXNlIGl0 JiM4MjE3O3MgdGhlIHNhbWUgYXMgcHV0dGluZyBhbm90aGVyIGFydGljbGUgdGFnIGluc2lk ZSBhbiBhcnRpY2xlLiBVc2UgdGhlIHRhZyBvbmx5IGluIFBhZ2VzLCBvciBpbiBhIEZvcm0g dGhhdCBpcyBuZXZlciBkaXJlY3RseSB1c2VkIHRvIGRpc3BsYXkgYXJ0aWNsZSBjb250ZW50 LjwvcD4KCgk8cD5FYWNoIHRpbWUgeW91IHVzZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJl ZCAvJmd0OzwvY29kZT4gaXQgbWFrZXMgYSBub3RlIG9mIHRoZSBhcnRpY2xlcyBpdCBoYXMg ZGlzcGxheWVkIGFuZCB3aWxsIG5vdCBkdXBsaWNhdGUgYXJ0aWNsZXMgaW4gbGF0ZXIgdGFn cy48L3A+CgoJPGgzPjxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVkX2luZm8gLyZndDs8L2Nv ZGU+PC9oMz4KCgk8cD5BbGxvd3MgeW91IHRvIGRpc3BsYXkgdGhlIGxhYmVsIG9yIHRoZSBk ZXNjcmlwdGlvbiB3aXRoaW4geW91ciA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0 OzwvY29kZT4gIGZvcm0vY29udGFpbmVyLjwvcD4KCgk8cD5IYXMgb25lIGF0dHJpYnV0ZTo8 L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aXRlbTwvc3Bhbj4gOiB0aGUg dGhpbmcgeW91IHdhbnQgdG8gZGlzcGxheS4gQ2hvb3NlIGZyb206Cgk8dWw+CgkJPGxpPjxz dHJvbmc+bGFiZWw8L3N0cm9uZz46IHRoZSBsYWJlbDwvbGk+CgkJPGxpPjxzdHJvbmc+ZGVz Y3JpcHRpb248L3N0cm9uZz46IHRoZSBUZXh0aWxlLXByb2Nlc3NlZCBkZXNjcmlwdGlvbjwv bGk+Cgk8L3VsPjwvbGk+Cgk8L3VsPgoKCTxoMz48Y29kZT4mbHQ7dHhwOnNtZF91bmZlYXR1 cmVkIC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+VXNlIHRoaXMgdGFnIGlmIHlvdSB3aXNoIHRv IHNob3cgdGhlICYjODIxNjtyZW1haW5pbmcmIzgyMTc7IGFydGljbGVzICYjODIxMjsgaS5l LiBvbmVzIG5vdCBhbHJlYWR5IGRpc3BsYXllZCBieSBhbnkgcHJlY2VkaW5nIDxjb2RlPiZs dDt0eHA6c21kX2ZlYXR1cmVkIC8mZ3Q7PC9jb2RlPiB0YWdzLiBJdCBhY3RzIHZlcnkgbXVj aCBsaWtlIHRoZSBidWlsdC1pbiBhcnRpY2xlIHRhZyAmIzgyMTI7IGFuZCB0YWtlcyBhbGwg dGhlIHNhbWUgYXR0cmlidXRlcyAmIzgyMTI7IGJ1dCBpdHMgY29udGV4dCBpcyAmIzgyMjA7 YW55IGFydGljbGVzIGZyb20gYW55IHNlY3Rpb24gZGVmaW5lZCBpbiB0aGUgc21kX2ZlYXR1 cmVkIHBsdWdpbiB0aGF0IGhhdmUgbm90IGJlZW4gZGlzcGxheWVkIGFscmVhZHkmIzgyMjE7 LjwvcD4KCgk8aDI+RXhhbXBsZXM8L2gyPgoKCTxoMz5FeGFtcGxlIDE6IENvbXBsZXRlIGRp cmVjdG9yeSBvZiBmZWF0dXJlZCBhcnRpY2xlczwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9mZWF0dXJlZCBsYWJlbHRhZz0mcXVv dDtoMiZxdW90OyBsaW1pdD0mcXVvdDsyMCZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7ZGwm cXVvdDsgc29ydD0mcXVvdDtsYWJlbCZxdW90OyZndDsKICAgJmx0O3R4cDppZl9kaWZmZXJl bnQmZ3Q7CiAgICAgICZsdDtoMiZndDsmbHQ7dHhwOnNtZF9mZWF0dXJlZF9pbmZvIGl0ZW09 JnF1b3Q7bGFiZWwmcXVvdDsgLyZndDsmbHQ7L2gyJmd0OwogICAmbHQ7L3R4cDppZl9kaWZm ZXJlbnQmZ3Q7CiAgICZsdDtkdCZndDsKICAgICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7 dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICZsdDsvZHQmZ3Q7CiAg ICZsdDtkZCZndDsKICAgICAgJmx0O3R4cDpleGNlcnB0IC8mZ3Q7CiAgICZsdDsvZGQmZ3Q7 CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMz5FeGFtcGxl IDI6IE9uZSBmZWF0dXJlZCBhcnRpY2xlIGFuZCBzaXggdGVhc2VycyBvbiB0aGUgaG9tZSBw YWdlPC9oMz4KCgk8cD5TZWxlY3QgYW4gYXJ0aWNsZSBhbmQgbGFiZWwgaXQgPGNvZGU+ZmVh dHVyZTwvY29kZT4uIFNlbGVjdCBzaXggb3RoZXJzIGFuZCBsYWJlbCB0aGVtIDxjb2RlPnRl YXNlcnM8L2NvZGU+LiBBZGQgc29tZSBkZXNjcmlwdGlvbiB0ZXh0IHRvIHlvdXIgdGVhYXNl ciBhcnRpY2xlcy48L3A+CgoJPHA+SW4geW91ciBkZWZhdWx0IFBhZ2UsIHB1dCB0aGlzOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X2ZlYXR1cmVkIGxhYmVsPSZxdW90O2ZlYXR1cmUmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90 O2RpdiZxdW90OyBodG1sX2lkPSZxdW90O21haW5fZmVhdHVyZSZxdW90OyZndDsKICAgJmx0 O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsm Z3Q7CiAgICZsdDt0eHA6YXJ0aWNsZV9pbWFnZSBjbGFzcz0mcXVvdDtmZWF0X2ltYWdlJnF1 b3Q7IC8mZ3Q7CiAgICZsdDtwIGNsYXNzPSZxdW90O2xlYWRpbiZxdW90OyZndDsmbHQ7dHhw OmV4Y2VycHQgLyZndDsmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsKPC9j b2RlPjwvcHJlPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfZmVhdHVyZWQgbGFiZWw9JnF1b3Q7dGVhc2VycyZxdW90OwogICAgIHdyYXB0 YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgaHRtbF9pZD0mcXVvdDt0 ZWFzZXJfYmxvY2smcXVvdDsmZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0 aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7cCBjbGFzcz0mcXVvdDts ZWFkaW4mcXVvdDsmZ3Q7Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7Jmx0Oy9wJmd0OwombHQ7L3R4 cDpzbWRfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JZiB5b3Ugd2FudGVkIHRv IGhhdmUgc29tZSBvdGhlciBhcnRpY2xlcyBiZW5lYXRoIHRob3NlLCBidXQgZGlkbiYjODIx Nzt0IHdhbnQgYW55IGR1cGxpY2F0ZXMgdG8gYXBwZWFyIHlvdSBjb3VsZCB1c2U6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfdW5m ZWF0dXJlZCBmb3JtPSZxdW90O215X2xpc3QmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoK CTxoMz5FeGFtcGxlIDM6IFBlci1zZWN0aW9uIGxhbmRpbmcgcGFnZSBmZWF0dXJlZCBhcnRp Y2xlczwvaDM+CgoJPHA+SWYgeW91IGhhZCBhIHpvbyBzaXRlIHdpdGggYSBzZWNpdG9uIGZv ciBwcmltYXRlcywgYSBzZWN0aW9uIGZvciBtYW1tYWxzIGFuZCBhIHNlY3Rpb24gZm9yIHJl cHRpbGVzLCB3aGVuIHlvdSBzZXQgdXAgeW91ciBmZWF0dXJlZCBhcnRpY2xlIGxpc3QgZGVm aW5lIHRoZWlyIG5hbWVzIGxpa2UgdGhpczo8L3A+CgoJPHVsPgoJCTxsaT5GZWF0dXJlZCBw cmltYXRlczwvbGk+CgkJPGxpPkZlYXR1cmVkIG1hbW1hbHM8L2xpPgoJCTxsaT5GZWF0dXJl ZCByZXB0aWxlczwvbGk+Cgk8L3VsPgoKCTxwPk9uIHlvdXIgc2VjdGlvbiBsYW5kaW5nIHBh Z2UgdGVtcGxhdGUgeW91IGNhbiB0aGVuIGRvIHRoaXMgdG8gZGlzcGxheSBmb3VyIGFydGlj bGVzIGZyb20gdGhlIHJlbGV2YW50IChjdXJyZW50KSBzZWN0aW9uOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtoMiZndDtMb29rIHdobyYjMzk7 cyBoZXJlOiZsdDsvaDImZ3Q7CiZsdDt0eHA6c21kX2ZlYXR1cmVkIGxhYmVsPSYjMzk7RmVh dHVyZWQgJmx0O3R4cDpzZWN0aW9uIC8mZ3Q7JiMzOTsKICAgICBzZWN0aW9uPSYjMzk7Jmx0 O3R4cDpzZWN0aW9uIC8mZ3Q7JiMzOTsgbGltaXQ9JnF1b3Q7NCZxdW90OwogICAgIHdyYXB0 YWc9JnF1b3Q7ZGl2JnF1b3Q7IGh0bWxfaWQ9JnF1b3Q7ZmVhdF9ibG9jayZxdW90OyZndDsK ICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtwaW1wZWRfYXJ0aWNsZSZxdW90OyZndDsKICAgICAg Jmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxp bmsmZ3Q7CiAgICAgICZsdDt0eHA6c21kX2ZlYXR1cmVkX2luZm8gaXRlbT0mcXVvdDtkZXNj cmlwdGlvbiZxdW90OyAvJmd0OwogICAmbHQ7L2RpdiZndDsKJmx0Oy90eHA6c21kX2ZlYXR1 cmVkJmd0Owo8L2NvZGU+PC9wcmU+Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENT UyAqKiogLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVp Z2h0OjEuNSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEw NSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQt Y29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5v cm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4 YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7 IH0KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fu cy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgy IHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjEwcHggMCAwOyBj b2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVs cCBoMyB7IGNvbG9yOiAjMjc1Njg1OyBmb250OiBib2xkIDEycHggQXJpYWwsIHNhbnMtc2Vy aWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7dGV4dC10cmFuc2Zv cm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CiNzbWRfaGVscCBo NCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6 IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQoj c21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojMzNkOyB9CiNzbWRf aGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsg fQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRp bmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4 IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVsIHsgbGlzdC1zdHls ZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLmltcG9ydGFudCB7Y29sb3I6cmVkO30KI3Nt ZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJl YWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lOIENT UyAqKiogLS0+CiI7czo0OiJjb2RlIjtzOjE5MDc0OiJpZiAoQHR4cGludGVyZmFjZSA9PSAn YWRtaW4nKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRfZXZlbnQ7DQoNCgkkc21kX2ZlYXR1 cmVkX2V2ZW50ID0gJ3NtZF9mZWF0dXJlZCc7DQoJJHNtZF9mZWF0dXJlZF9wcml2cyA9IGdl dF9wcmVmKCdzbWRfZmVhdHVyZWRfcHJpdnMnLCAnMSwyJyk7DQoNCglhZGRfcHJpdnMoJHNt ZF9mZWF0dXJlZF9ldmVudCwgJHNtZF9mZWF0dXJlZF9wcml2cyk7DQoJcmVnaXN0ZXJfdGFi KCJjb250ZW50IiwgJHNtZF9mZWF0dXJlZF9ldmVudCwgc21kX2ZlYXR1cmVkX2dUeHQoJ3Rh Yl9uYW1lJykpOw0KCXJlZ2lzdGVyX2NhbGxiYWNrKCdzbWRfZmVhdHVyZWRfbWFuYWdlJywg JHNtZF9mZWF0dXJlZF9ldmVudCk7DQoJcmVnaXN0ZXJfY2FsbGJhY2soJ3NtZF9mZWF0dXJl ZF93ZWxjb21lJywgJ3BsdWdpbl9saWZlY3ljbGUuc21kX2ZlYXR1cmVkJyk7DQp9DQoNCmlm ICghZGVmaW5lZCgnU01EX0ZFQVQnKSkgew0KCWRlZmluZSgiU01EX0ZFQVQiLCAnc21kX2Zl YXR1cmVkJyk7DQp9DQoNCi8vICoqKioqKioqKioNCi8vIEFETUlOIFNJREUNCi8vICoqKioq KioqKioNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1 cmVkX21hbmFnZSgkZXZ0LCAkc3RwKSB7DQoJaWYgKCRzdHAgPT0gJ3NhdmVfcGFuZV9zdGF0 ZScpIHsNCgkJc21kX2ZlYXR1cmVkX3NhdmVfcGFuZV9zdGF0ZSgpOw0KCX0gZWxzZSB7DQoJ CWlmKCEkc3RwIG9yICFpbl9hcnJheSgkc3RwLCBhcnJheSgNCgkJCQknc21kX2ZlYXR1cmVk X3RhYmxlX2luc3RhbGwnLA0KCQkJCSdzbWRfZmVhdHVyZWRfdGFibGVfcmVtb3ZlJywNCgkJ CQknc21kX2ZlYXR1cmVkX3NhdmUnLA0KCQkJCSdzbWRfZmVhdHVyZWRfdGFnaXQnLA0KCQkJ KSkpIHsNCgkJCXNtZF9mZWF0dXJlZF9saXN0KCcnKTsNCgkJfSBlbHNlICRzdHAoKTsNCgl9 DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1 cmVkX3dlbGNvbWUoJGV2dCwgJHN0cCkgew0KCSRtc2cgPSAnJzsNCglzd2l0Y2ggKCRzdHAp IHsNCgkJY2FzZSAnaW5zdGFsbGVkJzoNCgkJCXNtZF9mZWF0dXJlZF90YWJsZV9pbnN0YWxs KDApOw0KCQkJJG1zZyA9ICdUaGFua3MgZm9yIGluc3RhbGxpbmcgc21kX2ZlYXR1cmVkLiBQ bGVhc2UgcmVhZCB0aGUgZG9jcyA6LSknOw0KCQkJYnJlYWs7DQoJCWNhc2UgJ2RlbGV0ZWQn Og0KCQkJc21kX2ZlYXR1cmVkX3RhYmxlX3JlbW92ZSgwKTsNCgkJCWJyZWFrOw0KCX0NCgly ZXR1cm4gJG1zZzsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBzbWRfZmVhdHVyZWRfbGlzdCgkbXNnPScnKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQ7DQoNCglwYWdldG9wKHNtZF9mZWF0dXJlZF9nVHh0KCd0YWJfbmFtZScpLCAkbXNn KTsNCglleHRyYWN0KGdwc2EoYXJyYXkoJ3NtZF9mZWF0X2lkJywgJ3NtZF9mZWF0X2xhYmVs JywgJ3NtZF9mZWF0X3NlYXJjaGtlZXAnLCAnc21kX2ZlYXRfZmlsdGtlZXAnKSkpOw0KDQoJ aWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgpKSB7DQoJCSRmZWF0bGlzdCA9IHNhZmVf cm93cygnKicsIFNNRF9GRUFULCAnMT0xJyk7DQoJCSRmZWF0bGlzdCA9IGVtcHR5KCRmZWF0 bGlzdCkgPyBhcnJheSgpIDogJGZlYXRsaXN0Ow0KCQkkZWRpdG5hbWUgPSAkZmVhdF9sYWJl bCA9ICRmZWF0X2Rlc2MgPSAnJzsNCg0KCQkkZnR5cGVzID0gJGZsaXN0ID0gYXJyYXkoKTsN CgkJJGZ0eXBlc1snc21kX3VubGFiZWxsZWQnXSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd1bmxh YmVsbGVkJyk7DQoJCWZvcmVhY2ggKCRmZWF0bGlzdCBhcyAkaXRlbSkgew0KCQkJaWYgKGlz c2V0KCRpdGVtWydsYWJlbCddKSAmJiAhZW1wdHkoJGl0ZW1bJ2xhYmVsJ10pKSB7DQoJCQkJ JGZ0eXBlc1skaXRlbVsnbGFiZWwnXV0gPSAkaXRlbVsnbGFiZWwnXTsNCgkJCX0NCgkJCSRm bGlzdFskaXRlbVsnaWQnXV0gPSBhcnJheSgnbGFiZWwnID0+ICRpdGVtWydsYWJlbCddLCAn ZGVzY3JpcHRpb24nID0+ICRpdGVtWydkZXNjcmlwdGlvbiddLCAnZGVzY19odG1sJyA9PiAk aXRlbVsnZGVzY19odG1sJ10pOw0KCQl9DQoNCgkJJGZlYXRsaXN0ID0gJGZsaXN0Ow0KDQoJ CS8vIEdldCBhZGRpdGlvbmFsIGZpbHRlcmluZyBmcm9tIGhpZGRlbiBwcmVmcw0KCQkkd2hl cmUgPSBhcnJheSgnMT0xJyk7DQoJCSRzZWNsaXN0ID0gZ2V0X3ByZWYoJ3NtZF9mZWF0dXJl ZF9zZWN0aW9uX2xpc3QnLCAnJyk7DQoJCWlmICgkc2VjbGlzdCkgew0KCQkJJHdoZXJlW10g PSAiU2VjdGlvbiBJTiAoJyIuam9pbigiJywnIiwgZG9fbGlzdCgkc2VjbGlzdCkpLiInKSI7 DQoJCX0NCgkJJHdoZXJlW10gPSAiU3RhdHVzIElOICg0LDUpIjsNCgkJJG9yZGVyYnkgPSBn ZXRfcHJlZignc21kX2ZlYXR1cmVkX3NvcnQnLCAnUG9zdGVkIGRlc2MnKTsNCg0KCQkkcnMg PSBzYWZlX3Jvd3MoJyonLCAndGV4dHBhdHRlcm4nLCBqb2luKCcgQU5EICcsICR3aGVyZSku ICcgT1JERVIgQlkgJy4kb3JkZXJieSk7DQoJCWZvcmVhY2ggKCRycyBhcyAkcm93KSB7DQoJ CQkkZnR5cGUgPSBpc3NldCgkZmVhdGxpc3RbJHJvd1snSUQnXV1bJ2xhYmVsJ10pID8gJGZl YXRsaXN0WyRyb3dbJ0lEJ11dWydsYWJlbCddIDogJyc7DQoJCQkkb3V0W10gPSBhcnJheSgk cm93WydJRCddLCAkcm93WydUaXRsZSddLCAkZnR5cGUpOw0KCQkJaWYgKCRzbWRfZmVhdF9p ZCAmJiAkcm93WydJRCddID09ICRzbWRfZmVhdF9pZCkgew0KCQkJCSRlZGl0bmFtZSA9ICRy b3dbJ1RpdGxlJ107DQoJCQkJJGZlYXRfbGFiZWwgPSAkZmVhdGxpc3RbJHNtZF9mZWF0X2lk XVsnbGFiZWwnXTsNCgkJCQkkZmVhdF9kZXNjID0gZG9TdHJpcChzdHJfcmVwbGFjZSgnXHJc bicsJw0KJywgJGZlYXRsaXN0WyRzbWRfZmVhdF9pZF1bJ2Rlc2NyaXB0aW9uJ10pKTsNCgkJ CX0NCgkJfQ0KCQllY2hvICc8ZmllbGRzZXQgaWQ9InNtZF9mZWF0dXJlZF9maWx0Ij48bGVn ZW5kIGNsYXNzPSJwbGFpbiBsZXZlcicuKGdldF9wcmVmKCdwYW5lX3NtZF9mZWF0dXJlZF9m aWx0ZXJzX3Zpc2libGUnKSA/ICcgZXhwYW5kZWQnIDogJycpLiciPjxhIGhyZWY9IiNzbWRf ZmVhdHVyZWRfZmlsdGVycyI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgnbGl2ZV9zZWFyY2gnKS4n PC9hPjwvbGVnZW5kPjxkaXYgaWQ9InNtZF9mZWF0dXJlZF9maWx0ZXJzIiBjbGFzcz0idG9n Z2xlIiBzdHlsZT0iZGlzcGxheTonLihnZXRfcHJlZigncGFuZV9zbWRfZmVhdHVyZWRfZmls dGVyc192aXNpYmxlJykgPyAnYmxvY2snIDogJ25vbmUnKS4nIj4nOw0KCQllY2hvIHNtZF9m ZWF0dXJlZF9nVHh0KCdieV9uYW1lJykuZklucHV0KCd0ZXh0JywgJ3NtZF9mZWF0X3NlYXJj aCcsICRzbWRfZmVhdF9zZWFyY2hrZWVwLCAnJywgJycsICcnLCAnJywgJycsICdzbWRfZmVh dF9zZWFyY2gnKS4NCgkJCSgoJGZ0eXBlcykgPyAnPGRpdiBpZD0ic21kX2ZlYXR1cmVkX2J5 bGFiZWwiPicuc21kX2ZlYXR1cmVkX2dUeHQoJ2J5X2xhYmVsJykuc2VsZWN0SW5wdXQoJ3Nt ZF9mZWF0X2ZpbHQnLCAkZnR5cGVzLCAkc21kX2ZlYXRfZmlsdGtlZXAsIDEsICcnLCAnc21k X2ZlYXRfZmlsdCcpLic8L2Rpdj4nIDogJycpOw0KCQllY2hvICc8L2Rpdj48L2ZpZWxkc2V0 Pic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9InNtZF9mZWF0X2VkaXRmb3JtIiBhY3Rpb249Imlu ZGV4LnBocCIgbWV0aG9kPSJwb3N0Ij4nOw0KCQllY2hvIGhJbnB1dCgnc21kX2ZlYXRfc2Vh cmNoa2VlcCcsICcnKS4NCgkJCQloSW5wdXQoJ3NtZF9mZWF0X2ZpbHRrZWVwJywgJycpLg0K CQkJCWhJbnB1dCgnc21kX2ZlYXRfaWQnLCAnJykuDQoJCQkJZUlucHV0KCRzbWRfZmVhdHVy ZWRfZXZlbnQpLg0KCQkJCXNJbnB1dCgnc21kX2ZlYXR1cmVkX2xpc3QnKTsNCgkJZWNobyAn PC9mb3JtPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9InNtZF9mZWF0X3NhdmVmb3JtIiBhY3Rp b249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0IiBvbnN1Ym1pdD0icmV0dXJuIHNtZF9mZWF0 dXJlZF9zYXZla2VlcCgpOyI+JzsNCgkJZWNobyBzdGFydFRhYmxlKCdjb250cm9sJywnJywn JywnMycpOw0KCQlpZiAoJHNtZF9mZWF0X2lkKSB7DQoJCQllY2hvIHRyKA0KCQkJCXRkKCcm bmJzcDsnKS50ZGNzKGdUeHQoJ2VkaXQnKS5zcC5zdHJvbmcoJGVkaXRuYW1lKSwgMikNCgkJ CSk7DQoJCQllY2hvIHRyKA0KCQkJCWZMYWJlbENlbGwoZ1R4dCgnbGFiZWwnKSwgJycsICdz bWRfZmVhdF9sYWJlbCcpLg0KCQkJCXRkKGZJbnB1dCgndGV4dCcsICdzbWRfZmVhdF9sYWJl bCcsICRmZWF0X2xhYmVsLCAnJywgJycsICcnLCAnJywgJycsICdzbWRfZmVhdF9sYWJlbCcp KQ0KCQkJKTsNCgkJCWVjaG8gdHIoDQoJCQkJZkxhYmVsQ2VsbChnVHh0KCdkZXNjcmlwdGlv bicpLCAnJywgJ3NtZF9mZWF0X2Rlc2MnKS4NCgkJCQl0ZCh0ZXh0X2FyZWEoJ3NtZF9mZWF0 X2Rlc2MnLCA4MCwgNDAwLCAkZmVhdF9kZXNjLCAnc21kX2ZlYXRfZGVzYycpKS4NCgkJCQl0 ZChmSW5wdXQoJ3N1Ym1pdCcsICcnLCBnVHh0KCdzYXZlJyksICdzbWFsbGVyYm94JykpLg0K CQkJCWhJbnB1dCgnc21kX2ZlYXRfc2VhcmNoa2VlcCcsICcnKS4NCgkJCQloSW5wdXQoJ3Nt ZF9mZWF0X2ZpbHRrZWVwJywgJycpLg0KCQkJCWhJbnB1dCgnc21kX2ZlYXRfaWQnLCAkc21k X2ZlYXRfaWQpLg0KCQkJCWVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50KS4NCgkJCQlzSW5w dXQoJ3NtZF9mZWF0dXJlZF9zYXZlJykNCgkJCSk7DQoJCX0NCgkJZWNobyBlbmRUYWJsZSgp Ow0KCQllY2hvICc8L2Zvcm0+JzsNCg0KCQkkZWRidG4gPSBzbWFsbCgnWycuZ1R4dCgnZWRp dCcpLiddJyk7DQoNCgkJaWYgKCRvdXQpIHsNCgkJCSRzaXplcyA9IGRvX2xpc3QoZ2V0X3By ZWYoJ3NtZF9mZWF0dXJlZF9ib3hfc2l6ZScsICcxNTB4NDAnKSwgJ3gnKTsNCgkJCSRzaXpl c1swXSA9IChpc3NldCgkc2l6ZXNbMF0pICYmIGlzX251bWVyaWMoJHNpemVzWzBdKSkgPyAk c2l6ZXNbMF0gOiAnMTUwJzsNCgkJCSRzaXplc1sxXSA9IChpc3NldCgkc2l6ZXNbMV0pICYm IGlzX251bWVyaWMoJHNpemVzWzFdKSkgPyAkc2l6ZXNbMV0gOiAnNDAnOw0KDQoJCQkkcm93 cyA9IGNvdW50KCRycyk7DQoJCQkkdGJsb3V0ID0gYXJyYXkoKTsNCgkJCSRhdHRzID0gJyBj bGFzcz0ic21kX2ZlYXR1cmVkX3RhYmxlIHNtZF9jbGVhciIgaWQ9Imxpc3QiIGFsaWduPSJj ZW50ZXIiJzsNCg0KCQkJJHRibG91dFtdID0gaGVkKHNtZF9mZWF0dXJlZF9nVHh0KCdtYW5h Z2VfbGJsJywgYXJyYXkoKSwgJ3JhdycpLCAzLCAnIGNsYXNzPSJzbWRfY2xlYXIiJyk7DQoJ CQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgJHJvd3M7ICRpZHgrKykgew0KCQkJCSRpc2ZlYXQg PSAoaXNzZXQoJG91dFskaWR4XSkgJiYgYXJyYXlfa2V5X2V4aXN0cygkb3V0WyRpZHhdWzBd LCAkZmVhdGxpc3QpKTsNCgkJCQkkY2VsbGNsYXNzID0gJGlzZmVhdCA/ICcgY2xhc3M9InNt ZF9mZWF0dXJlZCInIDogJyc7DQoJCQkJJGVkbGluayA9ICRpc2ZlYXQgPyAnPGEgY2xhc3M9 ImVkbGluayIgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHNtZF9mZWF0dXJlZF9lZGl0a2Vl cChcJycuJG91dFskaWR4XVswXS4nXCcpOyI+Jy4kZWRidG4uJzwvYT4nLnNwIDogJyc7DQoJ CQkJJHJvd2RhdGEgPSAoaXNzZXQoJG91dFskaWR4XSkpID8gJzxzcGFuIG5hbWU9InNtZF9m ZWF0X25hbWUiIGNsYXNzPSJzbWRfaGlkZGVuIj4nLiRvdXRbJGlkeF1bMV0uJzwvc3Bhbj4n IDogJyc7DQoJCQkJJHJvd2RhdGEgLj0gJGlzZmVhdCA/ICc8c3BhbiBuYW1lPSJzbWRfZmVh dF9sYWJlbCIgY2xhc3M9ImV4dHJhIHNtZF9oaWRkZW4iPicuJG91dFskaWR4XVsyXS4nPC9z cGFuPicgOiAnJzsNCgkJCQkkdGJsb3V0W10gPSAoaXNzZXQoJG91dFskaWR4XSkpID8gJzxk aXYnLiRjZWxsY2xhc3MuJz4nLiRlZGxpbmsuJzxhIGhyZWY9IiMiIG9uY2xpY2s9InJldHVy biBzbWRfZmVhdHVyZWRfc2VsZWN0KHRoaXMsIFwnJy4kb3V0WyRpZHhdWzBdLidcJykiPicu JG91dFskaWR4XVsxXS4nPC9hPicuJHJvd2RhdGEuJzwvZGl2PicgOiAnPGRpdj48L2Rpdj4n Ow0KCQkJfQ0KCQkJZWNobyB0YWcoam9pbigiIiwkdGJsb3V0KSwgJ2RpdicsICRhdHRzKTsN CgkJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9jbGVhciI+PC9kaXY+JzsNCgkJfQ0KDQoJCSRx cyA9IGFycmF5KA0KCQkJImV2ZW50IiA9PiAkc21kX2ZlYXR1cmVkX2V2ZW50LA0KCQkpOw0K DQoJCSRxc1ZhcnMgPSAiaW5kZXgucGhwIi5qb2luX3FzKCRxcyk7DQoJCSR2ZXJpZnlUeHQg PSBzbWRfZmVhdHVyZWRfZ1R4dCgndW5mZWF0dXJlX2NvbmZpcm0nKTsNCg0KCQllY2hvIDw8 PEVPUw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gc21kX2Zl YXR1cmVkX3NlbGVjdChvYmosIGlkKSB7DQoJb2JqID0galF1ZXJ5KG9iaikucGFyZW50KCk7 DQoNCgkvLyBOLkIuIE5lZ2F0aXZlIGxvZ2ljIHVzZWQgaGVyZSBiZWNhdXNlIHdlJ3JlIGNo ZWNraW5nIHRoZSBjbGFzcyBfYmVmb3JlXyBpdCdzIGJlZW4gdG9nZ2xlZA0KCXZhciBhY3Rp b24gPSAoKG9iaikuaGFzQ2xhc3MoInNtZF9mZWF0dXJlZCIpKSA/ICdyZW1vdmUnIDogJ2Fk ZCc7DQoJaWYgKGFjdGlvbiA9PSAncmVtb3ZlJykgew0KCQl2YXIgcmV0ID0gY29uZmlybSgn eyR2ZXJpZnlUeHR9Jyk7DQoJCWlmIChyZXQgPT0gZmFsc2UpIHsNCgkJCXJldHVybiBmYWxz ZTsNCgkJfQ0KCX0NCglqUXVlcnkucG9zdCgneyRxc1ZhcnN9JywgeyBzdGVwOiAic21kX2Zl YXR1cmVkX3RhZ2l0Iiwgc21kX2ZlYXRfaWQ6IGlkLCBzbWRfZmVhdF9hY3Rpb246IGFjdGlv biB9LA0KCQlmdW5jdGlvbihkYXRhKSB7DQoJCQlvYmoudG9nZ2xlQ2xhc3MoJ3NtZF9mZWF0 dXJlZCcpOw0KCQkJaWYgKGFjdGlvbiA9PSAnYWRkJykgew0KCQkJCW9iai5wcmVwZW5kKCc8 YSBjbGFzcz0iZWRsaW5rIiBocmVmPSIjIiBvbmNsaWNrPSJyZXR1cm4gc21kX2ZlYXR1cmVk X2VkaXRrZWVwKFwnJytpZCsnXCcpIj57JGVkYnRufTwvYT4mbmJzcDsnKTsNCgkJCQlvYmou YXBwZW5kKCc8c3BhbiBuYW1lPSJzbWRfZmVhdF9sYWJlbCIgY2xhc3M9ImV4dHJhIHNtZF9o aWRkZW4iPjwvc3Bhbj4nKTsNCgkJCX0gZWxzZSB7DQoJCQkJb2JqLmZpbmQoJ2EuZWRsaW5r JykucmVtb3ZlKCk7DQoJCQkJb2JqLmZpbmQoJ3NwYW4uZXh0cmEnKS5yZW1vdmUoKTsNCgkJ CQlpZiAoalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikudmFsKCkgIT0gJycpIGpRdWVyeSgi I3NtZF9mZWF0X3NlYXJjaCIpLmtleXVwKCk7DQoJCQkJaWYgKGpRdWVyeSgiI3NtZF9mZWF0 X2ZpbHQiKS52YWwoKSAhPSAnJykgalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLmNoYW5nZSgp Ow0KCQkJfQ0KCQl9DQoJKTsNCglyZXR1cm4gZmFsc2U7DQp9DQoNCmZ1bmN0aW9uIHNtZF9m ZWF0dXJlZF9lZGl0a2VlcChpZCkgew0KCWpRdWVyeSgiI3NtZF9mZWF0X2VkaXRmb3JtIFtu YW1lPSdzbWRfZmVhdF9zZWFyY2hrZWVwJ10iKS52YWwoalF1ZXJ5KCIjc21kX2ZlYXRfc2Vh cmNoIikudmFsKCkpOw0KCWpRdWVyeSgiI3NtZF9mZWF0X2VkaXRmb3JtIFtuYW1lPSdzbWRf ZmVhdF9maWx0a2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0dXJlZF9ieWxhYmVsICNz bWRfZmVhdF9maWx0IG9wdGlvbjpzZWxlY3RlZCIpLnZhbCgpKTsNCglqUXVlcnkoIiNzbWRf ZmVhdF9lZGl0Zm9ybSBbbmFtZT0nc21kX2ZlYXRfaWQnXSIpLnZhbChpZCk7DQoJalF1ZXJ5 KCIjc21kX2ZlYXRfZWRpdGZvcm0iKS5zdWJtaXQoKTsNCn0NCg0KZnVuY3Rpb24gc21kX2Zl YXR1cmVkX3NhdmVrZWVwKCkgew0KCWpRdWVyeSgiI3NtZF9mZWF0X3NhdmVmb3JtIFtuYW1l PSdzbWRfZmVhdF9zZWFyY2hrZWVwJ10iKS52YWwoalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNo IikudmFsKCkpOw0KCWpRdWVyeSgiI3NtZF9mZWF0X3NhdmVmb3JtIFtuYW1lPSdzbWRfZmVh dF9maWx0a2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0dXJlZF9ieWxhYmVsICNzbWRf ZmVhdF9maWx0IG9wdGlvbjpzZWxlY3RlZCIpLnZhbCgpKTsNCn0NCg0KZnVuY3Rpb24gc21k X2ZlYXRfZmlsdGVyKHNlbGVjdG9yLCBxdWVyeSwgbmFtLCBjc2Vuc2UpIHsNCgl2YXIgcXVl cnkgPSBqUXVlcnkudHJpbShxdWVyeSk7DQoJY3NlbnNlID0gKGNzZW5zZSkgPyAiIiA6ICJp IjsNCglxdWVyeSA9IHF1ZXJ5LnJlcGxhY2UoLyAvZ2ksICd8Jyk7IC8vIGFkZCBPUiBmb3Ig cmVnZXggcXVlcnkNCgl2YXIgcmUgPSBuZXcgUmVnRXhwKHF1ZXJ5LCBjc2Vuc2UpOw0KCWpR dWVyeShzZWxlY3RvcikuZWFjaChmdW5jdGlvbigpIHsNCgkJc2VsID0gKHR5cGVvZiBuYW09 PSJ1bmRlZmluZWQiIHx8IG5hbT09JycpID8galF1ZXJ5KHRoaXMpIDogalF1ZXJ5KHRoaXMp LmZpbmQoInNwYW5bbmFtZT0nIituYW0rIiddIik7DQoJCWlmIChxdWVyeSA9PSAnJykgew0K CQkJaWYgKHNlbC5sZW5ndGggPT0gMSAmJiBzZWwudGV4dCgpID09ICcnKSB7DQoJCQkJalF1 ZXJ5KHRoaXMpLnNob3coKTsNCgkJCX0gZWxzZSB7DQoJCQkJalF1ZXJ5KHRoaXMpLmhpZGUo KTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmIChzZWwudGV4dCgpLnNlYXJjaChyZSkgPCAw KSB7DQoJCQkJalF1ZXJ5KHRoaXMpLmhpZGUoKTsNCgkJCX0gZWxzZSB7DQoJCQkJalF1ZXJ5 KHRoaXMpLnNob3coKTsNCgkJCX0NCgkJfQ0KCX0pOw0KfQ0KDQpqUXVlcnkoZnVuY3Rpb24o KSB7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikua2V5dXAoZnVuY3Rpb24oZXZlbnQp IHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLnZhbCgnMCcpOyAvLyBDbGVhciB0aGUg ZmlsdGVyIGRyb3Bkb3duDQoJCS8vIGlmIGVzYyBpcyBwcmVzc2VkIG9yIG5vdGhpbmcgaXMg ZW50ZXJlZA0KCQlpZiAoZXZlbnQua2V5Q29kZSA9PSAyNyB8fCBqUXVlcnkodGhpcykudmFs KCkgPT0gJycpIHsNCgkJCWpRdWVyeSh0aGlzKS52YWwoJycpOw0KCQkJalF1ZXJ5KCIuc21k X2ZlYXR1cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQpIikuc2hvdygpOw0KCQl9IGVsc2Ug ew0KCQkJc21kX2ZlYXRfZmlsdGVyKCcuc21kX2ZlYXR1cmVkX3RhYmxlIGRpdjpub3QoLnRi bGhlYWQpJywgalF1ZXJ5KHRoaXMpLnZhbCgpLCAnc21kX2ZlYXRfbmFtZScsIDApOw0KCQl9 DQoJfSk7DQoJaWYgKCd7JHNtZF9mZWF0X3NlYXJjaGtlZXB9JyAhPSAnJykgew0KCQlqUXVl cnkoIiNzbWRfZmVhdF9zZWFyY2giKS5rZXl1cCgpOw0KCX0NCglqUXVlcnkoIiNzbWRfZmVh dF9maWx0IikuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KSB7DQoJCWpRdWVyeSgiI3NtZF9mZWF0 X3NlYXJjaCIpLnZhbCgnJyk7IC8vIEVtcHR5IHRoZSBzZWFyY2ggYm94DQoJCWlmIChqUXVl cnkodGhpcykudmFsKCkgPT0gJycpIHsNCgkJCWpRdWVyeSgnLnNtZF9mZWF0dXJlZF90YWJs ZSBkaXY6bm90KC50YmxoZWFkKScpLnNob3coKTsNCgkJfSBlbHNlIGlmIChqUXVlcnkodGhp cykudmFsKCkgPT0gJ3NtZF91bmxhYmVsbGVkJykgew0KCQkJc21kX2ZlYXRfZmlsdGVyKCcu c21kX2ZlYXR1cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQpJywgJycsICdzbWRfZmVhdF9s YWJlbCcsIDApOw0KCQl9IGVsc2Ugew0KCQkJc21kX2ZlYXRfZmlsdGVyKCcuc21kX2ZlYXR1 cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQpJywgalF1ZXJ5KHRoaXMpLnZhbCgpLCAnc21k X2ZlYXRfbGFiZWwnLCAxKTsNCgkJfQ0KCX0pOw0KCWlmICgneyRzbWRfZmVhdF9maWx0a2Vl cH0nICE9ICcnKSB7DQoJCWpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQiKS5jaGFuZ2UoKTsNCgl9 DQoJaWYgKCd7JHNtZF9mZWF0X2lkfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRf bGFiZWwiKS5mb2N1cygpOw0KCX0NCn0pOw0KDQo8L3NjcmlwdD4NCjxzdHlsZSB0eXBlPSJ0 ZXh0L2NzcyI+DQouc21kX2hpZGRlbiB7DQoJZGlzcGxheTpub25lOw0KfQ0KLnNtZF9mZWF0 dXJlZCB7DQoJYmFja2dyb3VuZDojZmZjOw0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQp9DQojc21k X2ZlYXR1cmVkX2ZpbHQgew0KCWZvbnQtc2l6ZTo5MCU7DQoJZmxvYXQ6bGVmdDsNCgltYXJn aW46LTEwcHggMCAxMnB4IDEwcHg7DQoJcGFkZGluZzo3cHggM3B4Ow0KfQ0KLnNtZF9mZWF0 dXJlZF90YWJsZSB7DQoJd2lkdGg6ODAwcHg7DQoJbWFyZ2luOjAgYXV0byA4MHB4Ow0KfQ0K LnNtZF9jbGVhciB7DQoJY2xlYXI6Ym90aDsNCn0NCi5zbWRfZmVhdHVyZWRfdGFibGUgZGl2 IHsNCglmbG9hdDpsZWZ0Ow0KCXdpZHRoOnskc2l6ZXNbMF19cHg7DQoJaGVpZ2h0Onskc2l6 ZXNbMV19cHg7DQoJYm9yZGVyOjFweCBzb2xpZCAjZGRkOw0KCXBhZGRpbmc6NHB4Ow0KCW92 ZXJmbG93OmhpZGRlbjsNCn0NCjwvc3R5bGU+DQpFT1M7DQoJfSBlbHNlIHsNCgkJLy8gVGFi bGUgbm90IGluc3RhbGxlZA0KCQkkYnRuSW5zdGFsbCA9ICc8Zm9ybSBtZXRob2Q9InBvc3Qi IGFjdGlvbj0iP2V2ZW50PScuJHNtZF9mZWF0dXJlZF9ldmVudC5hLidzdGVwPXNtZF9mZWF0 dXJlZF90YWJsZV9pbnN0YWxsIiBzdHlsZT0iZGlzcGxheTppbmxpbmUiPicuZklucHV0KCdz dWJtaXQnLCAnc3VibWl0Jywgc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9pbnN0YWxsX2xibCcp LCAnc21hbGxlcmJveCcpLic8L2Zvcm0+JzsNCgkJJGJ0blN0eWxlID0gJyBzdHlsZT0iYm9y ZGVyOjA7aGVpZ2h0OjI1cHgiJzsNCgkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7DQoJCWVj aG8gdHIodGRhKCRidG5JbnN0YWxsLCAkYnRuU3R5bGUpKTsNCgkJZWNobyBlbmRUYWJsZSgp Ow0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBVcGRhdGUgdGhl IHBhc3NlZCByZWNvcmQgaW4gdGhlIGZlYXR1cmVkIHRhYmxlDQpmdW5jdGlvbiBzbWRfZmVh dHVyZWRfc2F2ZSgpIHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9ldmVudDsNCg0KCWV4dHJh Y3QoZ3BzYShhcnJheSgnc21kX2ZlYXRfaWQnLCAnc21kX2ZlYXRfbGFiZWwnLCAnc21kX2Zl YXRfZGVzYycpKSk7DQoJYXNzZXJ0X2ludCgkc21kX2ZlYXRfaWQpOw0KDQoJJHNtZF9mZWF0 X2Rlc2N0aWxlID0gJHNtZF9mZWF0X2Rlc2M7DQoJJHNtZF9mZWF0X2xhYmVsID0gZG9TbGFz aCgkc21kX2ZlYXRfbGFiZWwpOw0KDQoJaWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgp KSB7DQoJCUBpbmNsdWRlX29uY2UgdHhwYXRoLicvbGliL2NsYXNzVGV4dGlsZS5waHAnOw0K CQlAaW5jbHVkZV9vbmNlIHR4cGF0aC4nL3B1Ymxpc2gucGhwJzsNCgkJaWYgKGNsYXNzX2V4 aXN0cygnVGV4dGlsZScpKSB7DQoJCQkkdGV4dGlsZSA9IG5ldyBUZXh0aWxlKCk7DQoJCQkk c21kX2ZlYXRfZGVzY3RpbGUgPSBkb1NsYXNoKCR0ZXh0aWxlLT5UZXh0aWxlVGhpcyhwYXJz ZSgkc21kX2ZlYXRfZGVzYykpKTsNCgkJfQ0KDQoJCSRzbWRfZmVhdF9kZXNjID0gZG9TbGFz aCgkc21kX2ZlYXRfZGVzYyk7DQoJCSRyZXQgPSBzYWZlX3Vwc2VydChTTURfRkVBVCwgImxh YmVsPSckc21kX2ZlYXRfbGFiZWwnLCBkZXNjcmlwdGlvbj0nJHNtZF9mZWF0X2Rlc2MnLCBk ZXNjX2h0bWw9JyRzbWRfZmVhdF9kZXNjdGlsZSciLCAiaWQ9JyRzbWRfZmVhdF9pZCciKTsN CgkJdW5zZXQoJF9QT1NUWydzbWRfZmVhdF9pZCddKTsNCgl9DQoNCglzbWRfZmVhdHVyZWRf bGlzdChzbWRfZmVhdHVyZWRfZ1R4dCgnc2F2ZWQnKSk7DQp9DQoNCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KLy8gQ3JlYXRlIGFuIGVtcHR5IGVudHJ5IGluIHRoZSBmZWF0dXJl ZCB0YWJsZSBvciBkZXN0cm95IGl0DQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfdGFnaXQoKSB7 DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRfZXZlbnQ7DQoJZXh0cmFjdChkb1NsYXNoKGdwc2Eo YXJyYXkoJ3NtZF9mZWF0X2lkJywgJ3NtZF9mZWF0X2FjdGlvbicpKSkpOw0KDQoJYXNzZXJ0 X2ludCgkc21kX2ZlYXRfaWQpOw0KDQoJaWYgKCRzbWRfZmVhdF9hY3Rpb24gPT0gJ2FkZCcp IHsNCgkJJHJldCA9IHNhZmVfdXBzZXJ0KFNNRF9GRUFULCAibGFiZWw9JyciLCAiaWQ9JyRz bWRfZmVhdF9pZCciKTsNCgl9IGVsc2UgaWYgKCRzbWRfZmVhdF9hY3Rpb24gPT0gJ3JlbW92 ZScpIHsNCgkJJHJldCA9IHNhZmVfZGVsZXRlKFNNRF9GRUFULCAiaWQ9JyRzbWRfZmVhdF9p ZCciKTsNCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zYXZl X3BhbmVfc3RhdGUoKSB7DQoJJHBhbmVzID0gYXJyYXkoJ3NtZF9mZWF0dXJlZF9maWx0ZXJz Jyk7DQoJJHBhbmUgPSBncHMoJ3BhbmUnKTsNCglpZiAoaW5fYXJyYXkoJHBhbmUsICRwYW5l cykpDQoJew0KCQlzZXRfcHJlZigicGFuZV97JHBhbmV9X3Zpc2libGUiLCAoZ3BzKCd2aXNp YmxlJykgPT0gJ3RydWUnID8gJzEnIDogJzAnKSwgJ3NtZF9mZWF0dXJlZCcsIFBSRUZfSElE REVOLCAneWVzbm9yYWRpbycsIDAsIFBSRUZfUFJJVkFURSk7DQoJCXNlbmRfeG1sX3Jlc3Bv bnNlKCk7DQoJfSBlbHNlIHsNCgkJc2VuZF94bWxfcmVzcG9uc2UoYXJyYXkoJ2h0dHAtc3Rh dHVzJyA9PiAnNDAwIEJhZCBSZXF1ZXN0JykpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQovLyBBZGQgZmVhdHVyZWQgdGFibGUgaWYgbm90IGFscmVhZHkgaW5z dGFsbGVkDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfdGFibGVfaW5zdGFsbCgkc2hvd3BhbmU9 JzEnKSB7DQoJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSA9IDA7DQoJCSRyZXQgPSAnJzsN CgkJJHNxbCA9IGFycmF5KCk7DQoJCSRzcWxbXSA9ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVY SVNUUyBgIi5QRlguU01EX0ZFQVQuImAgKA0KCQkJYGlkYCBpbnQoOCkgTk9UIE5VTEwsDQoJ CQlgbGFiZWxgIHZhcmNoYXIoMzIpIE5VTEwgZGVmYXVsdCAnJywNCgkJCWBkZXNjcmlwdGlv bmAgdGV4dCBOVUxMIGRlZmF1bHQgJycsDQoJCQlgZGVzY19odG1sYCB0ZXh0IE5VTEwgZGVm YXVsdCAnJywNCgkJCVBSSU1BUlkgS0VZIChgaWRgKQ0KCQkpIEVOR0lORT1NeUlTQU0iOw0K DQoJCWlmKGdwcygnZGVidWcnKSkgew0KCQkJZG1wKCRzcWwpOw0KCQl9DQoJCWZvcmVhY2gg KCRzcWwgYXMgJHFyeSkgew0KCQkJJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7DQoJCQlpZiAo JHJldD09PWZhbHNlKSB7DQoJCQkJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSsrOw0KCQkJ CWVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXS4iLjwvYj4gIi5teXNxbF9l cnJvcigpLiI8YnIgLz5cbiI7DQoJCQkJZWNobyAiPCEtLVxuICRxcnkgXG4tLT5cbiI7DQoJ CQl9DQoJCX0NCg0KCWlmICgkR0xPQkFMU1sndHhwX2Vycl9jb3VudCddID09IDApIHsNCgkJ JG1lc3NhZ2UgPSBzbWRfZmVhdHVyZWRfZ1R4dCgndGJsX2luc3RhbGxlZCcpOw0KCX0gZWxz ZSB7DQoJCWlmICgkc2hvd3BhbmUpIHsNCgkJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dU eHQoJ3RibF9ub3RfaW5zdGFsbGVkJyk7DQoJCQlzbWRfZmVhdHVyZWRfbGlzdCgkbWVzc2Fn ZSk7DQoJCX0NCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gRHJv cCB0YWJsZSBpZiBpbiBkYXRhYmFzZQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3RhYmxlX3Jl bW92ZSgpIHsNCgkkcmV0ID0gJyc7DQoJJHNxbCA9IGFycmF5KCk7DQoJJEdMT0JBTFNbJ3R4 cF9lcnJfY291bnQnXSA9IDA7DQoJaWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgpKSB7 DQoJCSRzcWxbXSA9ICJEUk9QIFRBQkxFIElGIEVYSVNUUyAiIC5QRlguU01EX0ZFQVQuICI7 ICI7DQoJCWlmKGdwcygnZGVidWcnKSkgew0KCQkJZG1wKCRzcWwpOw0KCQl9DQoJCWZvcmVh Y2ggKCRzcWwgYXMgJHFyeSkgew0KCQkJJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7DQoJCQlp ZiAoJHJldD09PWZhbHNlKSB7DQoJCQkJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSsrOw0K CQkJCWVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXS4iLjwvYj4gIi5teXNx bF9lcnJvcigpLiI8YnIgLz5cbiI7DQoJCQkJZWNobyAiPCEtLVxuICRxcnkgXG4tLT5cbiI7 DQoJCQl9DQoJCX0NCgl9DQoJaWYgKCRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10gPT0gMCkg ew0KCQkkbWVzc2FnZSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd0YmxfcmVtb3ZlZCcpOw0KCX0g ZWxzZSB7DQoJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9ub3RfcmVtb3Zl ZCcpOw0KCQlzbWRfZmVhdHVyZWRfbGlzdCgkbWVzc2FnZSk7DQoJfQ0KfQ0KDQovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWJsZV9leGlz dCgkYWxsPScnKSB7DQoJaWYgKCRhbGwpIHsNCgkJJHRibHMgPSBhcnJheShTTURfRkVBVCA9 PiA0KTsNCgkJJG91dCA9IGNvdW50KCR0YmxzKTsNCgkJZm9yZWFjaCAoJHRibHMgYXMgJHRi bCA9PiAkY29scykgew0KCQkJaWYgKGdwcygnZGVidWcnKSkgew0KCQkJCWVjaG8gIisrIFRB QkxFICIuJHRibC4iIEhBUyAiLmNvdW50KEBzYWZlX3Nob3coJ2NvbHVtbnMnLCAkdGJsKSku IiBDT0xVTU5TOyBSRVFVSVJFUyAiLiRjb2xzLiIgKysiLmJyOw0KCQkJfQ0KCQkJaWYgKGNv dW50KEBzYWZlX3Nob3coJ2NvbHVtbnMnLCAkdGJsKSkgPT0gJGNvbHMpIHsNCgkJCQkkb3V0 LS07DQoJCQl9DQoJCX0NCgkJcmV0dXJuICgkb3V0PT09MCkgPyAxIDogMDsNCgl9IGVsc2Ug ew0KCQlpZiAoZ3BzKCdkZWJ1ZycpKSB7DQoJCQllY2hvICIrKyBUQUJMRSAiLlNNRF9GRUFU LiIgSEFTICIuY291bnQoQHNhZmVfc2hvdygnY29sdW1ucycsIFNNRF9GRUFUKSkuIiBDT0xV TU5TOyI7DQoJCX0NCgkJcmV0dXJuKEBzYWZlX3Nob3coJ2NvbHVtbnMnLCBTTURfRkVBVCkp Ow0KCX0NCn0NCg0KLy8gKioqKioqKioqKioqKioqKg0KLy8gUFVCTElDIFNJREUgVEFHUw0K Ly8gKioqKioqKioqKioqKioqKg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5j dGlvbiBzbWRfZmVhdHVyZWQoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX2ZlYXR1 cmVkX2luZm8sICRzbWRfcHJpb3JfZmVhdHVyZWQsICRwcmVmczsNCg0KCWV4dHJhY3QobEF0 dHMoYXJyYXkoDQoJCSdsYWJlbCcgICAgPT4gJycsDQoJCSd1bmxhYmVsJyAgPT4gJ0ZlYXR1 cmVkJywNCgkJJ2xhYmVsdGFnJyA9PiAnJywNCgkJJ3RpbWUnICAgICA9PiAncGFzdCcsDQoJ CSdzdGF0dXMnICAgPT4gJzQsNScsDQoJCSdzZWN0aW9uJyAgPT4gJycsDQoJCSdsaW1pdCcg ICAgPT4gJycsDQoJCSdzb3J0JyAgICAgPT4gJycsDQoJCSdmb3JtJyAgICAgPT4gJycsDQoJ CSd3cmFwdGFnJyAgPT4gJycsDQoJCSdicmVhaycgICAgPT4gJycsDQoJCSdjbGFzcycgICAg PT4gJycsDQoJCSdodG1sX2lkJyAgPT4gJycsDQoJKSwkYXR0cykpOw0KDQoJaWYgKGlzc2V0 KCRhdHRzWydsYWJlbCddKSkgew0KCQlpZiAoJGxhYmVsKSB7DQoJCQkkd2hlcmUgPSAiQklO QVJZIGxhYmVsIFJFR0VYUCAnIi4kYXR0c1snbGFiZWwnXS4iJyI7DQoJCX0gZWxzZSB7DQoJ CQkkd2hlcmUgPSAibGFiZWw9JyciOw0KCQl9DQoJCXVuc2V0KCRhdHRzWydsYWJlbCddKTsN Cgl9IGVsc2Ugew0KCQkkd2hlcmUgPSAiMT0xIjsNCgl9DQoNCgkvLyBFeGNsdWRlIHByZXZp b3VzbHkgc2VlbiBhcnRpY2xlcw0KCWlmICghZW1wdHkoJHNtZF9wcmlvcl9mZWF0dXJlZCkp IHsNCgkJJHdoZXJlIC49ICcgQU5EIHNtZGZlYXQuaWQgTk9UIElOKCcgLiBqb2luKCcsJywg JHNtZF9wcmlvcl9mZWF0dXJlZCkgLiAnKSc7DQoJfQ0KDQoJaWYgKCR0aW1lKSB7DQoJCXN3 aXRjaCAoJHRpbWUpIHsNCgkJCWNhc2UgJ2FueSc6DQoJCQkJYnJlYWs7DQoJCQljYXNlICdm dXR1cmUnOg0KCQkJCSR3aGVyZSAuPSAiIEFORCBQb3N0ZWQgPiBub3coKSI7DQoJCQkJYnJl YWs7DQoJCQlkZWZhdWx0Og0KCQkJCSR3aGVyZSAuPSAiIEFORCBQb3N0ZWQgPD0gbm93KCki Ow0KCQl9DQoJCWlmICghJHByZWZzWydwdWJsaXNoX2V4cGlyZWRfYXJ0aWNsZXMnXSkgew0K CQkJJHdoZXJlIC49ICIgQU5EIChub3coKSA8PSBFeHBpcmVzIE9SIEV4cGlyZXMgPSAiLk5V TExEQVRFVElNRS4iKSI7DQoJCX0NCgkJdW5zZXQoJGF0dHNbJ3RpbWUnXSk7DQoJfQ0KDQoJ aWYgKCRzdGF0dXMpIHsNCgkJJHdoZXJlIC49ICcgQU5EIFN0YXR1cyBpbiAoJy5qb2luKCcs JywgZG9fbGlzdCgkc3RhdHVzKSkuJyknOw0KCQl1bnNldCgkYXR0c1snc3RhdHVzJ10pOw0K CX0NCg0KCWlmICgkc2VjdGlvbikgew0KCQkkd2hlcmUgLj0gIiBBTkQgU2VjdGlvbiBpbiAo JyIuam9pbigiJywnIiwgZG9fbGlzdCgkc2VjdGlvbikpLiInKSI7DQoJCXVuc2V0KCRhdHRz WydzZWN0aW9uJ10pOw0KCX0NCg0KCWlmICgkc29ydCkgew0KCQkkd2hlcmUgLj0nIE9SREVS IEJZICcuJHNvcnQ7DQoJCXVuc2V0KCRhdHRzWydzb3J0J10pOw0KCX0NCg0KCWlmICgkbGlt aXQpIHsNCgkJJHdoZXJlIC49JyBMSU1JVCAnLiRsaW1pdDsNCgkJdW5zZXQoJGF0dHNbJ2xp bWl0J10pOw0KCX0NCg0KCS8vIERvbid0IHBhc3MgdGhlIHJlbWFpbmluZyBhdHRyaWJ1dGVz IHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCBvbnRvIHRoZSBhcnRpY2xlIHRhZw0KCXVuc2V0KA0K CQkkYXR0c1snbGFiZWwnXSwNCgkJJGF0dHNbJ3VubGFiZWwnXSwNCgkJJGF0dHNbJ2xhYmVs dGFnJ10sDQoJCSRhdHRzWyd3cmFwdGFnJ10sDQoJCSRhdHRzWydicmVhayddLA0KCQkkYXR0 c1snY2xhc3MnXSwNCgkJJGF0dHNbJ2h0bWxfaWQnXQ0KCSk7DQoNCgkkcnMgPSBnZXRSb3dz KCdTRUxFQ1QgKiwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9zdGVkLCB1bml4X3Rp bWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcywgdW5peF90aW1lc3RhbXAoTGFzdE1vZCkg YXMgdUxhc3RNb2QgRlJPTSAnLlBGWC4ndGV4dHBhdHRlcm4gQVMgdHhwIExFRlQgSk9JTiAn LlBGWC4nc21kX2ZlYXR1cmVkIEFTIHNtZGZlYXQgT04gdHhwLklEPXNtZGZlYXQuaWQgV0hF UkUgJy4kd2hlcmUpOw0KCSRvdXQgPSBhcnJheSgpOw0KCWlmICgkcnMpIHsNCgkJZm9yZWFj aCAoJHJzIGFzICRyb3cpIHsNCgkJCSRzbWRfZmVhdHVyZWRfaW5mb1snbGFiZWwnXSA9ICRy b3dbJ2xhYmVsJ107DQoJCQkkc21kX2ZlYXR1cmVkX2luZm9bJ2Rlc2NyaXB0aW9uJ10gPSAk cm93WydkZXNjX2h0bWwnXTsNCgkJCSRhdHRzWydpZCddID0gJHJvd1snSUQnXTsNCgkJCSRh cnRvdXQgPSBhcnRpY2xlKCRhdHRzLCAkdGhpbmcpOw0KDQoJCQlpZiAoJGFydG91dCkgew0K CQkJCSRzbWRfcHJpb3JfZmVhdHVyZWRbXSA9ICRyb3dbJ0lEJ107DQoJCQkJJG91dFtdID0g JGFydG91dDsNCgkJCX0NCgkJfQ0KCX0NCglpZiAoJG91dCkgew0KCQlyZXR1cm4gKCgkbGFi ZWx0YWcpID8gZG9MYWJlbCggKCAoJGxhYmVsID09ICcnKSA/ICR1bmxhYmVsIDogJGxhYmVs KSwgJGxhYmVsdGFnICkgOiAnJykNCgkJCS5kb1dyYXAoJG91dCwgJHdyYXB0YWcsICRicmVh aywgJGNsYXNzLCAnJywgJycsICcnLCAkaHRtbF9pZCk7DQoJfQ0KCXJldHVybiAnJzsNCn0N Cg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfdW5mZWF0dXJl ZCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRzbWRfcHJpb3JfZmVhdHVyZWQ7DQoNCgkk d2hlcmUgPSAiMT0xIjsNCg0KCS8vIEV4Y2x1ZGUgcHJldmlvdXNseSBzZWVuIGFydGljbGVz DQoJaWYgKCFlbXB0eSgkc21kX3ByaW9yX2ZlYXR1cmVkKSkgew0KCQkkd2hlcmUgLj0gJyBB TkQgaWQgTk9UIElOKCcgLiBqb2luKCcsJywgJHNtZF9wcmlvcl9mZWF0dXJlZCkgLiAnKSc7 DQoJfQ0KDQoJJHJzID0gc2FmZV9jb2x1bW4oJ0lEJywgJ3RleHRwYXR0ZXJuJywgJHdoZXJl KTsNCgkkYXR0c1snaWQnXSA9IGpvaW4oJywnLCAkcnMpOw0KCSRvdXQgPSBhcnRpY2xlKCRh dHRzLCAkdGhpbmcpOw0KDQoJcmV0dXJuICRvdXQ7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX2luZm8oJGF0dHMpIHsNCglnbG9i YWwgJHNtZF9mZWF0dXJlZF9pbmZvOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2l0 ZW0nID0+ICcnLA0KCSksJGF0dHMpKTsNCg0KCXJldHVybiAoaXNzZXQoJHNtZF9mZWF0dXJl ZF9pbmZvWyRpdGVtXSkgPyAkc21kX2ZlYXR1cmVkX2luZm9bJGl0ZW1dIDogJycpOw0KfQ0K DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIFBsdWdpbi1zcGVjaWZpYyByZXBs YWNlbWVudCBzdHJpbmdzIC0gbG9jYWxpc2UgYXMgcmVxdWlyZWQNCi8vIFRPRE86IG1ha2Ug dGhlc2UgaW50byBhIHRleHRwYWNrIHdoZW4gcGx1Z2luIGNvbXBvc2VyIHN1cHBvcnRzIHRo ZW0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9nVHh0KCR3aGF0LCAkYXR0cyA9IGFycmF5KCkp IHsNCgkkbGFuZyA9IGFycmF5KA0KCQknYnlfbGFiZWwnID0+ICdCeSBsYWJlbDogJywNCgkJ J2J5X25hbWUnID0+ICdCeSBuYW1lOiAnLA0KCQknbGl2ZV9zZWFyY2gnID0+ICdBcnRpY2xl IGxpdmUgc2VhcmNoJywNCgkJJ21hbmFnZV9sYmwnID0+ICdDbGljayB0byBzZWxlY3QgZmVh dHVyZWQgYXJ0aWNsZXMsIHdoaWNoIHdpbGwgYmUgc2hvd24gPHNwYW4gY2xhc3M9InNtZF9m ZWF0dXJlZCI+PGEgaHJlZj0iIyI+aGlnaGxpZ2h0ZWQ8L2E+PC9zcGFuPi4nLA0KCQknc2F2 ZWQnID0+ICdBcnRpY2xlIGluZm8gdXBkYXRlZCcsDQoJCSd0YWJfbmFtZScgPT4gJ0ZlYXR1 cmVkIGFydGljbGVzJywNCgkJJ3RibF9pbnN0YWxsX2xibCcgPT4gJ0luc3RhbGwgdGFibGUn LA0KCQkndGJsX2luc3RhbGxlZCcgPT4gJ1RhYmxlIGluc3RhbGxlZCcsDQoJCSd0Ymxfbm90 X2luc3RhbGxlZCcgPT4gJ1RhYmxlIG5vdCBpbnN0YWxsZWQnLA0KCQkndGJsX3JlbW92ZWQn ID0+ICdUYWJsZSByZW1vdmVkJywNCgkJJ3RibF9ub3RfcmVtb3ZlZCcgPT4gJ1RhYmxlIG5v dCByZW1vdmVkJywNCgkJJ3VuZmVhdHVyZV9jb25maXJtJyA9PiAnU3VyZSB0byB1bmZlYXR1 cmUgdGhpcyBhcnRpY2xlPycsDQoJCSd1bmxhYmVsbGVkJyA9PiAnW3VubGFiZWxsZWRdJywN CgkpOw0KCXJldHVybiBzdHJ0cigkbGFuZ1skd2hhdF0sICRhdHRzKTsNCn0iO3M6NDoidHlw ZSI7czoxOiIxIjtzOjU6ImZsYWdzIjtzOjE6IjIiO3M6NToib3JkZXIiO3M6MToiNSI7czoz OiJtZDUiO3M6MzI6IjU5NThhZTBiMDUyZTdlMWY4Y2MzM2MzOGM3MDhlYWM3Ijt9