# zem_contact_reborn v4.0.3.18 # Form mailer for Textpattern # # License: GNU GPLv2 or later # # TXP Community # http://forum.textpattern.com/viewtopic.php?id=19823 # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTg6InplbV9jb250YWN0X3JlYm9ybiI7czo3OiJ2ZXJzaW9u IjtzOjg6IjQuMC4zLjE4IjtzOjY6ImF1dGhvciI7czoxMzoiVFhQIENvbW11bml0eSI7czox MDoiYXV0aG9yX3VyaSI7czo1MToiaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTE5ODIzIjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6MjI1NjQ6 IjxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1z aXplOjI0cHg7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsiPlplbSBDb250YWN0IFJlYm9y bjwvZGl2PgoKPHA+SW5pdGlhbGx5IGJhc2VkIHVwb24gemVtX2NvbnRhY3QgMC42IGZyb20g emVtLiBDb2RlIGNvbXBsZXRlbHkgcmV2aXNlZCBieSBNYXJ5LiBUdXJuZWQgaW50byBhIHBs dWctaW4gd2l0aCB0aGUgYWRkaXRpb24gb2YgcmV2aXNlZCBIZWxwIHRleHQgYnkgU3R1YXJ0 LiBBZGRpdGlvbmFsIGNvZGUgZnJvbSBTdHVhcnQsIFRyYW5xdWlsbG8sIGFzbHN3NjYsIGpk eWthc3QsIHdldCBhbmQgUnV1ZC4gQ3VycmVudGx5IG1haW50YWluZWQgYnkgUnV1ZCB2YW4g TWVsaWNrIGFuZCB0ZXN0ZWQgdG8gZGVzdHJ1Y3Rpb24gYnkgdGhlIFRleHRwYXR0ZXJuIGNv bW11bml0eS4gSWYgeW91IGhhdmUgYW55IHByb2JsZW1zIHVzaW5nIHRoaXMgcGx1Zy1pbiBv ciBzZWUgYW55IGJ1Z3MgYXJvdW5kIHBsZWFzZSBnbyB0byB0aGUgPHN0cm9uZz48YSBocmVm PSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MTM0MTYi PmZvcnVtIHRocmVhZDwvYT48L3N0cm9uZz4gYW5kIHRlbGwgdXMgYWJvdXQgaXQuIElmIHlv dSBkb24mIzgyMTc7dCwgd2Ugd29uJiM4MjE3O3Qga25vdy48L3A+Cgo8cD48c3Ryb25nPlBs ZWFzZSBub3RlIHRoYXQgdGhpcyBwbHVnLWluIG5vdyB1c2VzIGEgc2VwYXJhdGUgbGFuZ3Vh Z2UgcGx1Zy1pbiAmIzgyMTE7IDxjb2RlPnplbV9jb250YWN0X2xhbmc8L2NvZGU+ICYjODIx MTsgYW5kIGJvdGggcGx1Zy1pbnMgYXJlIHJlcXVpcmVkIHRvIGJlIGluc3RhbGxlZCBhbmQg YWN0aXZhdGVkIHRvIHdvcmsgcHJvcGVybHkuPC9zdHJvbmc+PC9wPgoKPHA+PHN0cm9uZz5U byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgbmV3IDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3Nw YW4+IHRoYXQgaGFzIGJlZW4gYWRkZWQgdG8gWmVtIENvbnRhY3QgUmVib3JuIHlvdSBuZWVk IHRvIGhhdmUgYSAzcmQtcGFydHkgcGx1Zy1pbiB0aGF0IGhhcyBiZWVuIGRlc2lnbmVkIHRv ICYjODIyMDtjb25uZWN0JiM4MjIxOyB0byBaZW0gQ29udGFjdCBSZWJvcm4uPC9zdHJvbmc+ PC9wPgoKPHA+PHN0cm9uZz5Gb3IgdGhvc2Ugb2YgeW91IHJlcXVpcmluZyBzcGFtIHByZXZl bnRpb24ganVzdCBzdWNoIGEgcGx1Zy1pbiBleGlzdHMsIFRyYW5xdWlsbG8mIzgyMTc7cyA8 Y29kZT5wYXBfY29udGFjdF9jbGVhbmVyPC9jb2RlPi48L3N0cm9uZz48L3A+Cgo8cD48c3Ry b25nPkZvciBwbHVnLWluIGRldmVsb3BlcnMgd2hvIHdvdWxkIGxpa2UgdG8ga25vdyBtb3Jl IGFib3V0IHRoaXMgcGx1Zy1pbiYjODIxNztzIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3Nw YW4+IHBsZWFzZSBzZWUgPGEgaHJlZj0iI2FwaSI+JiM4MjIwO1plbSBDb250YWN0IFJlYm9y biYjODIxNztzIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+JiM4MjIxOzwvYT4gYmVs b3cuPC9zdHJvbmc+PC9wPgoKPHA+PGEgaHJlZj0iI2NvbnRhY3QiPjxzdHJvbmc+IDx0eHA6 emVtX2NvbnRhY3Q+IDwvc3Ryb25nPjwvYT4gcHJvZHVjZXMgYSBmbGV4aWJsZSwgY3VzdG9t aXNhYmxlIGVtYWlsIGNvbnRhY3QgZm9ybS4gSXQgaXMgaW50ZW5kZWQgZm9yIHVzZSBhcyBh biBlbnF1aXJ5IGZvcm0gZm9yIGNvbW1lcmNpYWwgYW5kIHByaXZhdGUgc2l0ZXMsIGFuZCBp bmNsdWRlcyBzZXZlcmFsIGZlYXR1cmVzIHRvIGhlbHAgcmVkdWNlIGNvbW1vbiBwcm9ibGVt cyB3aXRoIHN1Y2ggZm9ybXMgKGludmFsaWQgZW1haWwgYWRkcmVzc2VzLCBtaXNzaW5nIGlu Zm9ybWF0aW9uKS48L3A+Cgo8cD48YSBocmVmPSIjYXJ0aWNsZSI+PHN0cm9uZz4gPHR4cDp6 ZW1fY29udGFjdF9zZW5kX2FydGljbGU+IDwvc3Ryb25nPjwvYT4gY2FuIGJlIHVzZWQgdG8g Y3JlYXRlIGEgJiM4MjIwO3NlbmQgYXJ0aWNsZSYjODIyMTsgbGluayB3aXRoaW4gYW4gYXJ0 aWNsZSBmb3JtLCBjb25uZWN0aW5nIGl0IHRvIHRoZSBjb250YWN0IGZvcm0uPC9wPgoKPHAg c3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+PHN0cm9uZz48ZW0+RmVhdHVyZXM8L2VtPjwv c3Ryb25nPjwvcD4KCjx1bD4KCTxsaT5BcmJpdHJhcnkgdGV4dCBmaWVsZHMgY2FuIGJlIHNw ZWNpZmllZCwgd2l0aCBtaW4vbWF4L3JlcXVpcmVkIHNldHRpbmdzIGZvciB2YWxpZGF0aW9u LjwvbGk+Cgk8bGk+RW1haWwgYWRkcmVzcyB2YWxpZGF0aW9uLCBpbmNsdWRpbmcgYSBjaGVj ayBmb3IgYSB2YWxpZCBNWCByZWNvcmQgKFVuaXggb25seSkuPC9saT4KCTxsaT5TYWZlIGVz Y2FwaW5nIG9mIGlucHV0IGRhdGEuPC9saT4KCTxsaT5BY2Nlc3NpYmxlIGZvcm0gbGF5b3V0 LCBpbmNsdWRpbmcgPGNvZGU+Jmx0O2xhYmVsJmd0OzwvY29kZT4sIDxjb2RlPiZsdDtsZWdl bmQmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O2ZpZWxkc2V0Jmd0OzwvY29kZT4gdGFncy48 L2xpPgoJPGxpPkFsbCBsYWJlbHMsIGlucHV0cyBhbmQgdGhlIHRleHRhcmVhIGhhdmUgdGhl aXIgb3duICYjODIyMDtpZCYjODIyMTsgYW5kICYjODIyMDtjbGFzcyYjODIyMTsuPC9saT4K CTxsaT5TcGVjaWFsIGNsYXNzZXMgZm9yIGxhYmVscywgaW5wdXRzIGFuZCB0aGUgdGV4dGFy ZWEgZm9yIHdoZW4gPGNvZGU+ZXJyb3I8L2NvZGU+IG1lc3NhZ2VzIGFyZSBvdXRwdXQuPC9s aT4KCTxsaT5TcGVjaWFsIGNsYXNzZXMgZm9yIGxhYmVscywgaW5wdXRzIGFuZCB0aGUgdGV4 dGFyZWEgaWYgdGhlIGF0dHJpYnV0ZSA8Y29kZT5yZXF1aXJlZD0mcXVvdDt5ZXMmcXVvdDs8 L2NvZGU+IGlzIHVzZWQuPC9saT4KCTxsaT5BIHNwZWNpYWwgY2xhc3MgZm9yIHRoZSBlcnJv ciBtZXNzYWdlcyB0aGVtc2VsdmVzLjwvbGk+Cgk8bGk+QSBzZXBhcmF0ZSBsYW5ndWFnZSBw bHVnLWluIHRvIGVuYWJsZSBlYXN5IDxlbT5sb2NhbGlzYXRpb248L2VtPi48L2xpPgoJPGxp PlNwYW0gcHJldmVudGlvbi48L2xpPgo8L3VsPgoKPHA+Rm9yIGEgYnJpZWYgZXhwbGFuYXRp b24gb24gdGhlIHNwZWNpYWwgY2xhc3NlcyBzZWUgPHN0cm9uZz48YSBocmVmPSIjc3R5bGlu ZyI+U3R5bGluZzwvYT48L3N0cm9uZz4gYmVsb3cuPC9wPgoKPHAgc3R5bGU9InRleHQtYWxp Z246Y2VudGVyOyI+PHN0cm9uZz48ZW0+RXhhbXBsZXM8L2VtPjwvc3Ryb25nPjwvcD4KCjxw PlRoZSBzaW1wbGVzdCBmb3JtIGlzIHRoaXM6LTwvcD4KCjxwPjx0eHA6emVtX2NvbnRhY3Qg dG89ImRlc3RAZXhhbXBsZS5jb20iIC8+IHdoaWNoIHByb2R1Y2VzIGEgZGVmYXVsdCBmb3Jt IHdpdGggTmFtZSwgRW1haWwgYW5kIE1lc3NhZ2UgZmllbGRzLiBFbWFpbCB3aWxsIGJlIGRl bGl2ZXJlZCB0byBkZXN0QGV4YW1wbGUuY29tLCB3aXRoIHRoZSB1c2VyJiM4MjE3O3Mgc3Vw cGxpZWQgZW1haWwgYXMgdGhlICYjODIyMDtGcm9tOiYjODIyMTsgYWRkcmVzcy48L3A+Cgo8 cD5UbyBzcGVjaWZ5IGZpZWxkcyBleHBsaWNpdGx5LCB1c2Ugc29tZXRoaW5nIGxpa2UgdGhp czotPC9wPgoKPHA+PHR4cDp6ZW1fY29udGFjdCB0bz0iZGVzdEBleGFtcGxlLmNvbSI+PGJy IC8+Cjx0eHA6emVtX2NvbnRhY3RfZW1haWwgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF90 ZXh0IGxhYmVsPSJQaG9uZSIgbWluPTcgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF90ZXh0 YXJlYSBsYWJlbD0iRW5xdWlyeSIgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF9zdWJtaXQg bGFiZWw9IkVucXVpcmUiIC8+PGJyIC8+CjwvdHhwOnplbV9jb250YWN0PjwvcD4KCjxwPkFs dGVybmF0aXZlbHksIHBsYWNlIHRoZSBmaWVsZCBzcGVjaWZpY2F0aW9ucyBpbiBhIFRleHRw YXR0ZXJuIGZvcm0sIGFuZCBjYWxsIGl0IGxpa2UgdGhpczo8L3A+Cgo8cD48dHhwOnplbV9j b250YWN0IHRvPSJkZXN0QGV4YW1wbGUuY29tIiBmb3JtPSJteWNvbnRhY3Rmb3JtIiAvPjwv cD4KCjxwPm9yIGluY2x1ZGUgdGhlIGFib3ZlIHRhZyBpbiB5b3VyIGZvcm0gYXMgd2VsbCBh bmQgY2FsbCBpdCB3aXRoIHRoZSA8dHhwOm91dHB1dF9mb3JtPiB0YWcuPC9wPgoKIDxociAv PgoKPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+PHN0cm9uZz48ZW0+SW5kaXZpZHVh bCBUYWdzPC9lbT48L3N0cm9uZz48L3A+CgogPHAgaWQ9ImNvbnRhY3QiPjxzdHJvbmc+IDx0 eHA6emVtX2NvbnRhY3QgLz4gPC9zdHJvbmc+PC9wPgoKPHA+TWF5IGJlIHVzZWQgYXMgYSBz ZWxmLWNsb3Npbmcgb3IgY29udGFpbmVyIHRhZy4gUGxhY2UgdGhpcyB3aGVyZSB5b3Ugd2Fu dCB0aGUgaW5wdXQgZm9ybSB0byBnby4gU3RhdHVzIGFuZCBlcnJvciBtZXNzYWdlcywgaWYg YW55LCB3aWxsIGJlIGRpc3BsYXllZCBiZWZvcmUgdGhlIGZvcm0uPC9wPgoKPHA+QXR0cmli dXRlczotPC9wPgoKPHVsPgoJPGxpPjxzdHJvbmc+Y29weXNlbmRlcjwvc3Ryb25nPiAmIzgy MTE7IFVzaW5nIDxjb2RlPmNvcHlzZW5kZXI9JnF1b3Q7eWVzJnF1b3Q7PC9jb2RlPiB3aWxs IHNlbmQgYSBjb3B5IG9mIHRoZSBlbWFpbCB0byB0aGUgc2VuZGVyJiM4MjE3O3MgYWRkcmVz cyBhcyB3ZWxsIGFzIHRoZSAmIzgyMjA7dG8mIzgyMjE7IGFkZHJlc3MgdGhhdCB5b3UgaGF2 ZSBzZXQgaW4gdGhlIHRhZyBvciAmIzgyMjA7dG9fZm9ybSYjODIyMTsuIEluIG9yZGVyIHRv IG5vdCBzaG93IHRoZSB5b3VyICYjODIyMDt0byYjODIyMTsgYWRkcmVzcyBvbiB0aGUgc2Vu ZGVyJiM4MjE3O3MgY29weSBpdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgJiM4MjIwO0JjYyYj ODIyMTsgZmllbGQgYW5kIHRoZSBzZW5kZXImIzgyMTc7cyBhZGRyZXNzIGJlY29tZXMgdGhl ICYjODIyMDt0byYjODIyMTsgYWRkcmVzcy4gVGhpcyBtZWFucyB0aGF0IGFzIGJvdGggY29w aWVzIGFyZSBpZGVudGljYWwgeW91ciAmIzgyMjA7dG8mIzgyMjE7IGFkZHJlc3Mgd2lsbCBu b3QgYmUgc2hvd24gb24geW91ciBjb3B5IGVpdGhlci4gRGVmYXVsdCBpcyAmIzgyMjA7bm8m IzgyMjE7LiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJvbmc+Zm9ybTwvc3Ryb25nPiAmIzgy MTE7IFRoZSBuYW1lIG9mIHlvdXIgZm9ybSB0ZW1wbGF0ZSBjb250YWluaW5nIHRoZSBmaWVs ZCBsYXlvdXQuIE9wdGlvbmFsLjwvbGk+Cgk8bGk+PHN0cm9uZz5mcm9tPC9zdHJvbmc+ICYj ODIxMTsgdXNlcyB0aGUgYWRkcmVzcyBzcGVjaWZpZWQgaW4gdGhpcyBhdHRyaWJ1dGUgaW4g dGhlICYjODIyMDtGcm9tOiYjODIyMTsgZmllbGQgd2hlbiBzZW5kaW5nIGVtYWlsLiBJZiBu byA8Y29kZT5mcm9tPC9jb2RlPiBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCB0aGUgc2VuZGVy JiM4MjE3O3MgZW1haWwgYWRkcmVzcyB3aWxsIGJlIHVzZWQgZm9yIHRoZSAmIzgyMjA7RnJv bTomIzgyMjE7IGZpZWxkLiBXaGVuIDxjb2RlPmZyb208L2NvZGU+IGF0dHJpYnV0ZSBpcyBz cGVjaWZpZWQsIHRoZSBzZW5kZXImIzgyMTc7cyBlbWFpbCBhZGRyZXNzIHdpbGwgYmUgcGxh Y2VkIGluIHRoZSAmIzgyMjA7UmVwbHktVG86JiM4MjIxOyBmaWVsZCBpbnN0ZWFkLiBPcHRp b25hbC48L2xpPgoJPGxpPjxzdHJvbmc+ZnJvbV9mb3JtPC9zdHJvbmc+ICYjODIxMTsgVGhl IG5hbWUgb2YgeW91ciBmb3JtIHRlbXBsYXRlIGNvbnRhaW5pbmcgJiM4MjIwO3NlbnQgZnJv bSYjODIyMTsgYWRkcmVzcy4gT3B0aW9uYWwuPC9saT4KCTxsaT48c3Ryb25nPmxhYmVsPC9z dHJvbmc+ICYjODIxMTsgQ2FuIGJlIHVzZWQgdG8gZ2l2ZSB0aGUgZmllbGRzZXQgYSBsYWJl bCBhbmQgaXMgYWxzbyB1c2VkIGJ5IHRoZSA8Y29kZT4mbHQ7bGVnZW5kJmd0OzwvY29kZT4g dGFnLiBEZWZhdWx0IGlzICYjODIyMDtDb250YWN0JiM4MjIxOy4gU2V0dGluZyB0aGlzIHRv IDxjb2RlPmxhYmVsPSZxdW90OyZxdW90OzwvY29kZT4gaXMgb25lIHdheSBvZiBzdG9wcGlu ZyB0aGUgPGNvZGU+Jmx0O2xlZ2VuZCZndDs8L2NvZGU+IHRhZyBkaXNwbGF5aW5nIGFueXRo aW5nLiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJvbmc+cmVkaXJlY3Q8L3N0cm9uZz4gJiM4 MjExOyBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlcGxhY2UgdGhhbmtzKGEgYnVpbHQtaW4gZGVm YXVsdCkgb3IgdGhhbmtzX2Zvcm0gKG9wdGlvbmFsIGF0dHJpYnV0ZSkgYW5kIHdpbGwgc2Vu ZCBhIDMwMiAoJiM4MjIwO3NlZSBhbHNvJiM4MjIxOykgaGVhZGVyLCBhcyBvcHBvc2VkIHRv IGEgMzAxICgmIzgyMjA7bW92ZWQgcGVybWFuZW50bHkmIzgyMjE7KS4gVGhlIHJlZGlyZWN0 IGF0dHJpYnV0ZSB1c2VzIHlvdXIgVGV4dHBhdHRlcm4gc2l0ZSB1cmwgKGxpa2UgdGhlIHRh ZyA8dHhwOnNpdGVfdXJsIC8+KSBhcyBpdCYjODIxNztzIGJhc2UuIEV4YW1wbGU6IHJlZGly ZWN0PSYjODIyMDttb25rZXkmIzgyMjE7IHdvdWxkIHNlbmQgeW91IHRvIGh0dHA6Ly95b3Vy LWRvbWFpbi5jb20vbW9ua2V5LiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJvbmc+c2VuZF9h cnRpY2xlPC9zdHJvbmc+ICYjODIxMTsgVXNpbmcgPGNvZGU+c2VuZF9hcnRpY2xlPSZxdW90 O3llcyZxdW90OzwvY29kZT4gZW5hYmxlcyBleHRyYSBmdW5jdGlvbnMgZm9yIHVzZSB3aXRo IDxhIGhyZWY9IiNhcnRpY2xlIj48c3Ryb25nPiA8dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0 aWNsZT4gPC9zdHJvbmc+PC9hPiAoc2VlIGJlbG93KS4gRGVmYXVsdCBpcyAmIzgyMjA7bm8m IzgyMjE7LiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJvbmc+c3ViamVjdDwvc3Ryb25nPiAm IzgyMTE7IENhbiBiZSB1c2VkIHdoZW4geW91IHVzZSB0aGUgZm9ybSBpbiBhIHNwZWNpZmlj IGFyZWEgb2YgYSBzaXRlIHRoYXQgcmVsYXRlcyB0byBhIHNwZWNpZmljIHN1YmplY3QuIFRo ZSBzaXRlIG5hbWUgaXMgaW5jbHVkZWQgYnkgZGVmYXVsdC4gT3B0aW9uYWwuPC9saT4KCTxs aT48c3Ryb25nPnN1YmplY3RfZm9ybTwvc3Ryb25nPiAmIzgyMTE7IFRoZSBuYW1lIG9mIHlv dXIgZm9ybSB0ZW1wbGF0ZSwgaWYgeW91IHVzZSBvbmUsIGNvbnRhaW5pbmcgdGhlIHN1Ympl Y3QuIE9wdGlvbmFsLjwvbGk+Cgk8bGk+PHN0cm9uZz50aGFua3M8L3N0cm9uZz4gJiM4MjEx OyBZb3VyIHRoYW5rIHlvdSBtZXNzYWdlLiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJvbmc+ dGhhbmtzX2Zvcm08L3N0cm9uZz4gJiM4MjExOyBUaGUgbmFtZSBvZiB5b3VyIGZvcm0gdGVt cGxhdGUgY29udGFpbmluZyBhIHRoYW5rIHlvdSBtZXNzYWdlLiBPcHRpb25hbC48L2xpPgoJ PGxpPjxzdHJvbmc+dG88L3N0cm9uZz4gJiM4MjExOyBkZXN0aW5hdGlvbiBhZGRyZXNzLiA8 c3Ryb25nPlJlcXVpcmVkPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PHN0cm9uZz50b19mb3JtPC9z dHJvbmc+ICYjODIxMTsgVGhlIG5hbWUgb2YgeW91ciBmb3JtIHRlbXBsYXRlLCBpZiB5b3Ug dXNlIG9uZSwgY29udGFpbmluZyB0aGUgJiM4MjIwO3RvJiM4MjIxOyBlbWFpbCBhZGRyZXNz LiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJvbmc+c2hvd19pbnB1dDwvc3Ryb25nPiAmIzgy MTE7IFVzZSA8Y29kZT5zaG93X2lucHV0PSZxdW90O25vJnF1b3Q7PC9jb2RlPiB0byBkaXNh YmxlIGRpc3BsYXkgb2YgdGhlIGlucHV0IGZvcm0uIE9wdGlvbmFsLjwvbGk+Cgk8bGk+PHN0 cm9uZz5zaG93X2Vycm9yPC9zdHJvbmc+ICYjODIxMTsgVXNlIDxjb2RlPnNob3dfZXJyb3I9 JnF1b3Q7bm8mcXVvdDs8L2NvZGU+IHRvIGRpc2FibGUgZGlzcGxheSBvZiBlcnJvciBhbmQg c3RhdHVzIG1lc3NhZ2VzLiBPcHRpb25hbC48L2xpPgo8L3VsPgoKPHA+PGNvZGU+c2hvd19p bnB1dDwvY29kZT4gYW5kIDxjb2RlPnNob3dfZXJyb3I8L2NvZGU+IGNhbiBiZSB1c2VkIHRv IGRpc3BsYXkgdGhlIGZvcm0gYW5kIGVycm9yL3RoYW5rIHlvdSBtZXNzYWdlcyBvbiBkaWZm ZXJlbnQgcGFydHMgb2YgYSBwYWdlLiBGb3IgZXhhbXBsZTo8L3A+Cgo8cD48ZGl2IGlkPSJl cnJvciI+PHR4cDp6ZW1fY29udGFjdCBmb3JtPSJjb250YWN0X2Zvcm0iIHNob3dfaW5wdXQ9 Im5vIiAvPjwvZGl2PjxiciAvPgo8ZGl2IGlkPSJpbnB1dGZvcm0iPjx0eHA6emVtX2NvbnRh Y3QgZm9ybT0iY29udGFjdF9mb3JtIiBzaG93X2Vycm9yPSJubyIgLz48L2Rpdj48L3A+Cgog PGhyIC8+Cgo8cCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ij48c3Ryb25nPlRoZSByZW1h aW5pbmcgdGFncyBtYXkgb25seSBiZSB1c2VkIHdpdGhpbiBhIDx0eHA6emVtX2NvbnRhY3Q+ IGZvcm0gb3IgY29udGFpbmVyPC9zdHJvbmc+PC9wPgoKIDxociAvPgoKPHA+PHN0cm9uZz4g PHR4cDp6ZW1fY29udGFjdF90ZXh0IC8+IDwvc3Ryb25nPjwvcD4KCjxwPkNyZWF0ZXMgYSB0 ZXh0IGlucHV0IGZpZWxkIGFuZCBjb3JyZXNwb25kaW5nIDxjb2RlPiZsdDtsYWJlbCZndDs8 L2NvZGU+IHRhZy4gVGhlIGlucHV0IHZhbHVlIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGVt YWlsLCBwcmVjZWRlZCBieSB0aGUgbGFiZWwuPC9wPgoKPHA+QXR0cmlidXRlczotPC9wPgoK PHVsPgoJPGxpPjxzdHJvbmc+YnJlYWs8L3N0cm9uZz4gJiM4MjExOyBCcmVhayB0YWcgYmV0 d2VlbiB0aGUgbGFiZWwgYW5kIGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiZsdDticiAvJmd0 OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIHB1dCB0 aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuIE9wdGlvbmFsLjwv bGk+Cgk8bGk+PHN0cm9uZz5kZWZhdWx0PC9zdHJvbmc+ICYjODIxMTsgRGVmYXVsdCB2YWx1 ZSB3aGVuIG5vIGlucHV0IGlzIHByb3ZpZGVkLiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJv bmc+bGFiZWw8L3N0cm9uZz4gJiM4MjExOyBUZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0aGUg dXNlci4gRGVmYXVsdCBpcyAmIzgyMjA7dGV4dCYjODIyMTsuIE9wdGlvbmFsLjwvbGk+Cgk8 bGk+PHN0cm9uZz5taW48L3N0cm9uZz4gJiM4MjExOyBNaW5pbXVtIGlucHV0IGxlbmd0aCBp biBjaGFyYWN0ZXJzLiBBbiBlcnJvciBtZXNzYWdlIHdpbGwgYmUgZGlzcGxheWVkIGlmIHRo ZSBpbnB1dCBpcyBsZXNzIHRoYW4gbWluLiBEZWZhdWx0IGlzIDAuIE9wdGlvbmFsLjwvbGk+ Cgk8bGk+PHN0cm9uZz5tYXg8L3N0cm9uZz4gJiM4MjExOyBNYXhpbXVtIGlucHV0IGxlbmd0 aCBpbiBjaGFyYWN0ZXJzLiBVc2VkIGZvciB0aGUgbWF4bGVuZ3RoIHBhcmFtZXRlciBvZiB0 aGUgaW5wdXQgZmllbGQuIE5vIGVycm9yIHdpbGwgYmUgZGlzcGxheWVkIGlmIHRoZSBsZW5n dGggaXMgZXhjZWVkZWQsIGJ1dCB0aGUgdmFsdWUgd2lsbCBiZSB0cnVuY2F0ZWQgZm9yIHRo ZSBlbWFpbC4gRGVmYXVsdCBpcyAxMDAuIE9wdGlvbmFsLjwvbGk+Cgk8bGk+PHN0cm9uZz5u YW1lPC9zdHJvbmc+ICYjODIxMTsgRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlucHV0IHRhZy4gRGVmYXVsdHMgdG8gdGhlIGxh YmVsLiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJvbmc+c2l6ZTwvc3Ryb25nPiAmIzgyMTE7 IFNpemUgb2YgdGhlIGlucHV0IGZpZWxkIGFzIGRpc3BsYXllZCB0byB0aGUgdXNlci4gTGVh dmUgZW1wdHkgZm9yIHRoZSBicm93c2VyIGRlZmF1bHQuIE9wdGlvbmFsLjwvbGk+Cgk8bGk+ PHN0cm9uZz5yZXF1aXJlZDwvc3Ryb25nPiAmIzgyMTE7IDxjb2RlPnJlcXVpcmVkPSZxdW90 O3llcyZxdW90OzwvY29kZT4gbWFrZXMgdGhlIGZpZWxkIG1hbmRhdG9yeS4gVGhlIGZvcm0g d2lsbCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgaWYgbm8gaW5wdXQgaXMgcHJvdmlkZWQu IERlZmF1bHQgaXMgJiM4MjIwO3llcyYjODIyMTsuIE9wdGlvbmFsLjwvbGk+CjwvdWw+Cgog PGhyIC8+CgogPHAgaWQ9ImVtYWlsIj48c3Ryb25nPiA8dHhwOnplbV9jb250YWN0X2VtYWls IC8+IDwvc3Ryb25nPjwvcD4KCjxwPklucHV0IGZpZWxkIGZvciB1c2VyJiM4MjE3O3MgZW1h aWwgYWRkcmVzcy4gVGhlIGlucHV0IHZhbHVlIHdpbGwgYXV0b21hdGljYWxseSBiZSB2YWxp ZGF0ZWQgdG8gbWFrZSBzdXJlIGl0IGlzIG9mIHRoZSBmb3JtICYjODIyMDthYmNAeHh4Lnl5 eVsuenp6XSYjODIyMTsuIElmIHRoZSBVbml4LW9ubHkgZ2V0bXhycigpIGZ1bmN0aW9uIGlz IGF2YWlsYWJsZSwgdGhlIGZvcm0gd2lsbCB2ZXJpZnkgdGhhdCBhbiBBIG9yIE1YIHJlY29y ZCBleGlzdHMgZm9yIHRoZSBkb21haW4uPC9wPgoKPHA+QXR0cmlidXRlcyBhcmUgdGhlIHNh bWUgYXMgZm9yIDx0eHA6emVtX2NvbnRhY3RfdGV4dCAvPiwgZXhjZXB0IHRoYXQgdGhlIGRl ZmF1bHQgbGFiZWwgaXMgJiM4MjIwO0VtYWlsJiM4MjIxOy48L3A+CgogPGhyIC8+Cgo8cD48 c3Ryb25nPiA8dHhwOnplbV9jb250YWN0X3NlbGVjdCAvPiA8L3N0cm9uZz48L3A+Cgo8cD5D cmVhdGVzIGEgZHJvcC1kb3duIHNlbGVjdGlvbiBsaXN0LjwvcD4KCjxwPkF0dHJpYnV0ZXMg YXJlIHNpbWlsYXIgdG8gPHR4cDp6ZW1fY29udGFjdF90ZXh0IC8+LCB3aXRoIHRoZSBmb2xs b3dpbmcgYWRkaXRpb25zOi08L3A+Cgo8dWw+Cgk8bGk+PHN0cm9uZz5saXN0PC9zdHJvbmc+ ICYjODIxMTsgQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBpdGVtcyB0byBzaG93IGluIHRo ZSBkcm9wLWRvd24gYm94OyBlLmcuICYjODIyMDtTYWxlcyxTdXBwb3J0LEFjY291bnRzJiM4 MjIxOy48L2xpPgoJPGxpPjxzdHJvbmc+ZGVsaW1pdGVyPC9zdHJvbmc+ICYjODIxMTsgVGhl IHNlcGFyYXRvciB1c2VkIGluIHBhcnNpbmcgdGhlIGxpc3QgYXR0cmlidXRlLiBEZWZhdWx0 IGlzICYjODIyMDssJiM4MjIxOzwvbGk+Cgk8bGk+PHN0cm9uZz5zZWxlY3RlZDwvc3Ryb25n PiAmIzgyMTE7IFRoZSBsaXN0IGl0ZW0gdGhhdCBpcyBzZWxlY3RlZCBieSBkZWZhdWx0OyBl LmcuICYjODIyMDtTdXBwb3J0JiM4MjIxOy4gRGVmYXVsdCBpcyAmIzgyMjA7eWVzJiM4MjIx Oy48L2xpPgo8L3VsPgoKPHA+bWluIGFuZCBtYXggaGF2ZSBubyBlZmZlY3QuIElmIDxjb2Rl PnJlcXVpcmVkPSZxdW90O3llcyZxdW90OzwvY29kZT4gKGRlZmF1bHQpLCBhbiBlbXB0eSBp dGVtIHdpbGwgbm90IGJlIGFjY2VwdGVkLiBVc2UgPHR4cDp6ZW1fY29udGFjdF9zZWxlY3Qg bGlzdD0iLFNhbGVzLFN1cHBvcnQiIC8+IHRvIG1ha2UgdGhlIGZpcnN0IGl0ZW0gYmxhbmss IGZvcmNpbmcgdGhlIHVzZXIgdG8gbWFrZSBhIHNlbGVjdGlvbi48L3A+CgogPGhyIC8+Cgo8 cD48c3Ryb25nPiA8dHhwOnplbV9jb250YWN0X2NoZWNrYm94IC8+IDwvc3Ryb25nPjwvcD4K CjxwPkNyZWF0ZXMgYSBjaGVjayBib3guPC9wPgoKPHA+QXR0cmlidXRlcyBhcmUgc2ltaWxh ciB0byA8dHhwOnplbV9jb250YWN0X3RleHQgLz4sIGV4Y2VwdCB0aGF0IG1pbiBhbmQgbWF4 IGhhdmUgbm8gZWZmZWN0LiBBZGRpdGlvbmFsIGF0dHJpYnV0ZXM6LTwvcD4KCjx1bD4KCTxs aT48c3Ryb25nPmNoZWNrZWQ8L3N0cm9uZz4gJiM4MjExOyBVc2UgPGNvZGU+Y2hlY2tlZD0m cXVvdDt5ZXMmcXVvdDs8L2NvZGU+IHRvIG1ha2UgdGhlIGJveCBjaGVja2VkIHdoZW4gdGhl IGZvcm0gaXMgZmlyc3QgZGlzcGxheWVkLiBEZWZhdWx0IGlzICYjODIyMDtubyYjODIyMTsu IE9wdGlvbmFsLjwvbGk+CjwvdWw+Cgo8cD5JZiA8Y29kZT5yZXF1aXJlZD0mcXVvdDt5ZXMm cXVvdDs8L2NvZGU+IChkZWZhdWx0KSwgdGhlIGZvcm0gd29uJiM4MjE3O3QgYmUgYWNjZXB0 ZWQgdW5sZXNzIHRoZSBib3ggaXMgY2hlY2tlZC4gVXNlIDx0eHA6emVtX2NvbnRhY3RfY2hl Y2tib3ggbGFiZWw9IkkgYWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyIgLz4gdG8g bWFrZSBhIGNydWRlIHNocmluay13cmFwIGFncmVlbWVudCB3aGljaCBtdXN0IGJlIGNoZWNr ZWQgYnkgdGhlIHVzZXIgYmVmb3JlIHRoZSBlbWFpbCB3aWxsIGJlIHNlbnQuPC9wPgoKIDxo ciAvPgoKPHA+PHN0cm9uZz4gPHR4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSAvPiA8L3N0cm9u Zz48L3A+Cgo8cD5UZXh0YXJlYSBpbnB1dCBmaWVsZC48L3A+Cgo8cD5TdXBwb3J0cyB0aGUg c2FtZSBhdHRyaWJ1dGVzIGFzIDx0eHA6emVtX2NvbnRlbnRfdGV4dCAvPiwgd2l0aCB0aGUg ZXhjZXB0aW9uIG9mIHNpemUuIFRoZSBkZWZhdWx0IGxhYmVsIGlzICYjODIyMDtNZXNzYWdl JiM4MjIxOyBhbmQgdGhlIGRlZmF1bHQgbWF4IGlzIDEwMDAwLiBBZGRpdGlvbmFsIGF0dHJp YnV0ZXM6LTwvcD4KCjx1bD4KCTxsaT48c3Ryb25nPmNvbHM8L3N0cm9uZz4gJiM4MjExOyBj b2x1bW4gd2lkdGguIERlZmF1bHQgaXMgNTAuIE9wdGlvbmFsLjwvbGk+Cgk8bGk+PHN0cm9u Zz5yb3dzPC9zdHJvbmc+ICYjODIxMTsgcm93IGhlaWdodC4gRGVmYXVsdCBpcyA2LiBPcHRp b25hbC48L2xpPgo8L3VsPgoKIDxociAvPgoKPHA+PHN0cm9uZz4gPHR4cDp6ZW1fY29udGFj dF9yYWRpbyAvPiA8L3N0cm9uZz48L3A+Cgo8cD5DcmVhdGVzICYjODIyMDtyYWRpbyBidXR0 b25zJiM4MjIxOyBzbyB0aGF0IHlvdXIgdmlzaXRvcnMgY2FuIGNvbXBsZXRlIHN1cnZleXMv cXVlc3Rpb25haXJlcy4gQ29kZSBncmFjaW91c2x5IHByb3ZpZGVkIGJ5IFJvYmVydCBXZXR6 bG1heXIgKHdldCkuPC9wPgoKPHA+PHN0cm9uZz5Vc2FnZSBFeGFtcGxlPC9zdHJvbmc+PC9w PgoKPHA+PHR4cDp6ZW1fY29udGFjdF9yYWRpbyBuYW1lPSJzdGVhayIgbGFiZWw9IldlbGwg RG9uZSIgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF9yYWRpbyBuYW1lPSJzdGVhayIgbGFi ZWw9Ik1lZGl1bSIgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF9yYWRpbyBuYW1lPSJzdGVh ayIgbGFiZWw9IlJhcmUiIC8+PC9wPgoKPHA+PHR4cDp6ZW1fY29udGFjdF9yYWRpbyBuYW1l PSJkcmluayIgbGFiZWw9IldpbmUiIC8+PGJyIC8+Cjx0eHA6emVtX2NvbnRhY3RfcmFkaW8g bmFtZT0iZHJpbmsiIGxhYmVsPSJXYXRlciIgLz48L3A+Cgo8cD5Hcm91cCBtdXR1YWxseSBl eGNsdXNpdmUgcmFkaW8gYnV0dG9ucyBieSB1c2luZyBpZGVudGljYWwgJiM4MjIwO25hbWVz JiM4MjIxOy4gT25seSB0aGUgY2hvc2VuIHJhZGlvIGJ1dHRvbiBmcm9tIGVhY2ggZ3JvdXAg d2lsbCBiZSBwb3N0ZWQgdG8gdGhlIG1lc3NhZ2UuIFRoZSBtZXNzYWdlIHdpbGwgYmUgb3V0 cHV0IGluIHRoZSBmb3JtIDxjb2RlPiRuYW1lOiAkbGFiZWw8L2NvZGU+IGZvciBlYWNoIG9m IHRoZSBjaG9zZW4gcmFkaW8gYnV0dG9ucy48L3A+Cgo8cD5BdHRyaWJ1dGVzOi08L3A+Cgo8 dWw+Cgk8bGk+PHN0cm9uZz5icmVhazwvc3Ryb25nPiAmIzgyMTE7IEJyZWFrIHRhZyBiZXR3 ZWVuIHRoZSBsYWJlbCBhbmQgZmllbGQuIERlZmF1bHQgaXMgYSBzcGFjZS4gT3B0aW9uYWwu PC9saT4KCTxsaT48c3Ryb25nPmNoZWNrZWQ8L3N0cm9uZz4gJiM4MjExOyBVc2UgPGNvZGU+ Y2hlY2tlZD0mcXVvdDt5ZXMmcXVvdDs8L2NvZGU+IHRvIG1ha2UgYSByYWRpbyBidXR0b24g Y2hlY2tlZCB3aGVuIHRoZSBmb3JtIGlzIGZpcnN0IGRpc3BsYXllZC4gRGVmYXVsdCBpcyAm IzgyMjA7bm8mIzgyMjE7LiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJvbmc+bGFiZWw8L3N0 cm9uZz4gJiM4MjExOyBUZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0aGUgdXNlci4gRGVmYXVs dCBpcyAmIzgyMjA7cmFkaW8mIzgyMjE7LiBPcHRpb25hbC48L2xpPgoJPGxpPjxzdHJvbmc+ bmFtZTwvc3Ryb25nPiAmIzgyMTE7IEZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1dCB0YWcuIERlZmF1bHRzIHRvIHRoZSBs YWJlbCB0aG91Z2ggeW91IHNob3VsZCBiZSBzcGVjaWZ5aW5nIGJvdGggPGNvZGU+bmFtZTwv Y29kZT4gYW5kIDxjb2RlPmxhYmVsPC9jb2RlPiBhdHRyaWJ1dGVzIGluIHRoZSB0YWcuIE9w dGlvbmFsLjwvbGk+CjwvdWw+CgogPGhyIC8+Cgo8cD48c3Ryb25nPiA8dHhwOnplbV9jb250 YWN0X3N1Ym1pdCAvPiA8L3N0cm9uZz48L3A+Cgo8cD5TdWJtaXQgYnV0dG9uLjxiciAvPgpX aGVuIHVzZWQgYXMgYSBjb250YWluZXIgdGFnLCBhICYjODIyMDtidXR0b24mIzgyMjE7IGVs ZW1lbnQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgYW4gJiM4MjIwO2lucHV0JiM4MjIxOyBl bGVtZW50LjwvcD4KCjxwPkF0dHJpYnV0ZXM6LTwvcD4KCjx1bD4KCTxsaT48c3Ryb25nPmJ1 dHRvbjwvc3Ryb25nPiAmIzgyMTE7IEFkZGluZyB0aGUgPGNvZGU+YnV0dG9uPSZxdW90O3ll cyZxdW90OzwvY29kZT4gYXR0cmlidXRlIHRvIHRoZSB0YWcgd2lsbCBnaXZlIHlvdSBhICYj ODIyMDtidXR0b24mIzgyMjE7IGVsZW1lbnQgaW5zdGVhZCBvZiBhbiAmIzgyMjA7aW5wdXQm IzgyMjE7IGVsZW1lbnQuIERlZmF1bHQgaXMgJiM4MjIwO25vJiM4MjIxOy4gT3B0aW9uYWwu PC9saT4KCTxsaT48c3Ryb25nPmxhYmVsPC9zdHJvbmc+ICYjODIxMTsgTGFiZWwvQnV0dG9u IHRleHQuIERlZmF1bHQgaXMgJiM4MjIwO1NlbmQmIzgyMjE7LiBPcHRpb25hbC48L2xpPgo8 L3VsPgoKIDxociAvPgoKPHA+PHN0cm9uZz4gPHR4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZv IC8+IDwvc3Ryb25nPjwvcD4KCjxwPlRoaXMgdGFnIGhhcyBubyBlZmZlY3Qgb24gdGhlIGZv cm0gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG91dHB1dCwgYnV0IHdpbGwg aW5jbHVkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGluIHRoZSBlbWFpbCBiYXNlZCBvbiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gJF9TRVJWRVIgdmFyaWFibGUuIEZv ciBleGFtcGxlLCA8dHhwOnplbV9jb250YWN0X3NlcnZlcmluZm8gbmFtZT0iUkVNT1RFX0FE RFIiIGxhYmVsPSJJUCIgLz4gd2lsbCByZXBvcnQgdGhlIHVzZXImIzgyMTc7cyBJUCBhZGRy ZXNzLjwvcD4KCjxwPkF0dHJpYnV0ZXM6LTwvcD4KCjx1bD4KCTxsaT48c3Ryb25nPm5hbWU8 L3N0cm9uZz4gJiM4MjExOyBuYW1lIG9mIHRoZSBzZXJ2ZXIgdmFyaWFibGUsIGUuZy4gPHNw YW4gY2xhc3M9ImNhcHMiPlJFUVVFU1Q8L3NwYW4+X1VSSSwgPHNwYW4gY2xhc3M9ImNhcHMi PkhUVFA8L3NwYW4+X1VTRVJfQUdFTlQuIFNlZSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlBI UDwvc3Bhbj4gbWFudWFsIGZvciBhIGZ1bGwgbGlzdC4gPHN0cm9uZz5SZXF1aXJlZDwvc3Ry b25nPi48L2xpPgoJPGxpPjxzdHJvbmc+bGFiZWw8L3N0cm9uZz4gJiM4MjExOyBpZiBzdXBw bGllZCwgdGhpcyB3aWxsIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGZpZWxkIGluIHRoZSBl bWFpbC4gT3B0aW9uYWwuPC9saT4KPC91bD4KCiA8aHIgLz4KCjxkaXYgaWQ9ImFydGljbGUi IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToy NHB4O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij5aZW0gQ29udGFjdCBTZW5kIEFydGlj bGU8L2Rpdj4KCjxwPkRldmVsb3BlZCBieSB0cmFucXVpbGxvLCB0aGlzIGFsbG93cyB5b3Ug dG8gYWRkIGEgJiM4MjIwO1NlbmQgQXJ0aWNsZSYjODIyMTsgbGluayB0byBhbiBpbmRpdmlk dWFsIGFydGljbGUgZm9ybSB3aGljaCwgd2hlbiBjbGlja2VkIGJ5IGEgdmlzaXRvciwgd2ls bCBkaXNwbGF5IGEgZm9ybSBmb3IgdGhlbSB0byBlbnRlciB0aGVpciBuYW1lLCB0aGVpciBm cmllbmQmIzgyMTc7cyBlbWFpbCBhZGRyZXNzIGFuZCBhbiBvcHRpb25hbCBwZXJzb25hbCBt ZXNzYWdlLiBXaGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCB0aGUgYXJ0aWNsZSB0aXRsZSwg ZXhjZXJwdCBhbmQgYm9keSBhcmUgaW5jbHVkZWQgaW4gdGhlIGVtYWlsLjwvcD4KCjxwPjxz dHJvbmc+IDx0eHA6emVtX2NvbnRhY3Qgc2VuZF9hcnRpY2xlPSJ5ZXMiIC8+IDwvc3Ryb25n PjwvcD4KCjxwPlVzZSB0aGlzIHRhZyBpbiB5b3VyIGluZGl2aWR1YWwgYXJ0aWNsZSBmb3Jt LCB3aGVyZSB5b3Ugd2FudCB0aGUgY29udGFjdCBmb3JtIHRvIGJlIGRpc3BsYXllZC4gRW5z dXJlIHRoYXQgeW91IGluY2x1ZGUgdGhlIGF0dHJpYnV0ZSA8Y29kZT5zZW5kX2FydGljbGU9 JnF1b3Q7eWVzJnF1b3Q7PC9jb2RlPi4gSXQgb3BlcmF0ZXMgYXMgYSBwbGFjZS1ob2xkZXIu IFRoZSBmb3JtIHdpbGwgbm90IGFjdHVhbGx5IGFwcGVhciBvbi1zY3JlZW4gdW50aWwgdGhl IGxpbmsgY29udGFpbmVkIGluIG5leHQgdGFnIGhhcyBiZWVuIGFjdGl2YXRlZC4gV2hlbiB0 aGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50IHRoZSBmb3JtIHdpbGwgYmUgcmVwbGFjZWQgd2l0 aCB0aGUgJiM4MjIwO3RoYW5rIHlvdSYjODIyMTsgbWVzc2FnZSBvciBmb3JtLjwvcD4KCjxw PkF0dHJpYnV0ZXMgYXJlIGlkZW50aWNhbCB0byA8YSBocmVmPSIjY29udGFjdCI+PHN0cm9u Zz4gPHR4cDp6ZW1fY29udGFjdCAvPiA8L3N0cm9uZz48L2E+IGhvd2V2ZXIgJiM4MjIwO3N1 YmplY3QmIzgyMjE7IHdpbGwgdXNlIHRoZSBhcnRpY2xlJiM4MjE3O3MgdGl0bGUgZm9yIGl0 JiM4MjE3O3MgY29udGVudHMgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIHRoZSAmIzgy MjA7dG8mIzgyMjE7IGF0dHJpYnV0ZSB3aGVuIHVzaW5nIHRoZSB0YWcgdGhpcyB3YXkgKHNl ZSB0aGUgPHR4cDp6ZW1fY29udGFjdF9lbWFpbCBuYW1lPSJyZWNlaXZlciIgLz4gdGFnIGJl bG93KS48L3A+CgogPGhyIC8+Cgo8cD48c3Ryb25nPiA8dHhwOnplbV9jb250YWN0X3NlbmRf YXJ0aWNsZSAvPiA8L3N0cm9uZz48L3A+Cgo8cD5Vc2UgdGhpcyB0YWcgaW4geW91ciBpbmRp dmlkdWFsIGFydGljbGUgZm9ybSwgd2hlcmUgeW91IHdhbnQgdGhlICYjODIyMDtzZW5kIGFy dGljbGUmIzgyMjE7IGxpbmsgdG8gYmUgZGlzcGxheWVkLjwvcD4KCjxwPkF0dHJpYnV0ZXM6 LTwvcD4KCjx1bD4KCTxsaT48c3Ryb25nPmxpbmt0ZXh0PC9zdHJvbmc+ICYjODIxMTsgVGhl IHRleHQgZGlzcGxheWVkIGZvciB0aGUgbGluay4gRGVmYXVsdCBpcyAmIzgyMjA7c2VuZCBh cnRpY2xlJiM4MjIxOy4gT3B0aW9uYWwuPC9saT4KPC91bD4KCiA8aHIgLz4KCjxwPjxzdHJv bmc+IDx0eHA6emVtX2NvbnRhY3RfZW1haWwgbmFtZT0icmVjZWl2ZXIiIC8+IDwvc3Ryb25n PjwvcD4KCjxwPlVzZSB0aGlzIHRhZyBpbiB5b3VyIGNvbnRhY3QgZm9ybSB0ZW1wbGF0ZSB0 byBkaXNwbGF5IGFuIGlucHV0IGJveCBmb3IgdGhlIHJlY2VpdmVyJiM4MjE3O3MgZW1haWwg YWRkcmVzcyB0byBiZSBlbnRlcmVkLiBZb3UgbXVzdCBlbnN1cmUgdGhhdCB5b3UgaW5jbHVk ZSB0aGUgYXR0cmlidXRlIDxjb2RlPm5hbWU9JnF1b3Q7cmVjZWl2ZXImcXVvdDs8L2NvZGU+ IHNvIHRoYXQgdGhlIHBsdWctaW4gcmVjb2duaXNlcyB0aGlzIGFzIHRoZSAmIzgyMjA7dG8m IzgyMjE7IGFkZHJlc3MuIEZvciB0aGlzIHJlYXNvbiBpdCBpcyBhZHZpc2FibGUgdGhhdCB5 b3UgY3JlYXRlIGFuZCB1c2UgYSBzZXBhcmF0ZSBmb3JtIHRlbXBsYXRlIGZvciB0aGVzZSAm IzgyMjA7c2VuZF9hcnRpY2xlJiM4MjIxOyBmdW5jdGlvbnMuPC9wPgoKPHA+QXR0cmlidXRl cyBhcmUgdGhlIHNhbWUgYXMgZm9yIDxhIGhyZWY9IiNlbWFpbCI+PHN0cm9uZz4gPHR4cDp6 ZW1fY29udGFjdF9lbWFpbCAvPiA8L3N0cm9uZz48L2E+LjwvcD4KCiA8aHIgLz4KCjxkaXYg aWQ9InN0eWxpbmciIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xk O2ZvbnQtc2l6ZToyNHB4O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij5TdHlsaW5nPC9k aXY+Cgo8cD5XaGVuIGVycm9yIG1lc3NhZ2VzIHJlbGF0aW5nIHRvIGluZm9ybWF0aW9uIGVu dGVyZWQsIG9yIG5vdCBlbnRlcmVkLCBpbnRvIHRoZSBmb3JtIGFyZSBvdXRwdXQgdGhleSBh cmUgY29udGFpbmVkIHdpdGhpbiBhICYjODIyMDt1bCYjODIyMTsuIFRoYXQgJiM4MjIwO3Vs JiM4MjIxOyBoYXMgYmVlbiBhbGxvY2F0ZWQgPGNvZGU+Y2xhc3M9JnF1b3Q7emVtRXJyb3Im cXVvdDs8L2NvZGU+LjwvcD4KCjxwPkFsbCBsYWJlbHMsIGlucHV0cyBhbmQgdGhlIHRleHRh cmVhIGhhdmUgdGhlaXIgb3duIGluZGl2aWR1YWwgJiM4MjIwO2lkJiM4MjIxOyBvciAmIzgy MjA7Y2xhc3MmIzgyMjE7IHdoaWNoIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiA8Y29kZT4k bmFtZTwvY29kZT4uIFRoaXMgbWF5IGJlIGEgZGVmYXVsdCB2YWx1ZSBvciBvbmUgdGhhdCB5 b3UgaGF2ZSBlbnRlcmVkIHlvdXJzZWxmIHVzaW5nIHRoZSA8Y29kZT5uYW1lPSZxdW90O3do YXRldmVyJnF1b3Q7PC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKPHA+V2hlbiA8Y29kZT5yZXF1 aXJlZD0mcXVvdDt5ZXMmcXVvdDs8L2NvZGU+LCB0aGUgcmVsZXZhbnQgbGFiZWxzIGFuZCBp bnB1dHMsIG9yIGxhYmVsIGFuZCB0aGUgdGV4dGFyZWEgYXJlIGdpdmVuIGEgc2Vjb25kIGNs YXNzIG9mICYjODIyMDt6ZW1SZXF1aXJlZCYjODIyMTsgYWxvbmdzaWRlIHRoZWlyIGluZGl2 aWR1YWwgY2xhc3NlcyBpbiB0aGUgZm9ybWF0IDxjb2RlPmNsYXNzPSZxdW90O3plbVJlcXVp cmVkICRuYW1lJnF1b3Q7PC9jb2RlPi4gQm90aCBjbGFzc2VzIGNhbiBiZSB1c2VkIGluZGl2 aWR1YWxseSBzbyB0aGF0IHlvdSBjYW4gc2V0dXAgYSBnbG9iYWwgJiM4MjIwO3JlcXVpcmVk JiM4MjIxOyBzdHlsZSBhcyB3ZWxsIGFzIGluZGl2aWR1YWwgc3R5bGluZy48L3A+Cgo8cD5X aGVuIGFuIGVycm9yIHJlbGF0aW5nIHRvIGFuIGlucHV0IG9yIHRoZSB0ZXh0YXJlYSBpcyBv dXRwdXQsIHRoZSByZWxldmFudCBsYWJlbCBhbmQgaW5wdXQsIG9yIGxhYmVsIGFuZCB0aGUg dGV4dGFyZWEsIGhhdmUgdGhlIGNsYXNzICYjODIyMDtlcnJvckVsZW1lbnQmIzgyMjE7IGFw cGVuZGVkIHRvICYjODIyMDt6ZW1SZXF1aXJlZCYjODIyMTsgaW4gdGhlIGZvcm1hdCA8Y29k ZT5jbGFzcz0mcXVvdDt6ZW1SZXF1aXJlZGVycm9yRWxlbWVudCAkbmFtZSZxdW90OzwvY29k ZT4uIEFnYWluLCBib3RoIGNsYXNzZXMgY2FuIGJlIHVzZWQgaW5kaXZpZHVhbGx5IHNvIHRo YXQgeW91IGNhbiBzZXR1cCBhIGdsb2JhbCAmIzgyMjA7ZXJyb3ImIzgyMjE7IHN0eWxlIGFs b25nc2lkZSB5b3VyIGluZGl2aWR1YWwgc3R5bGluZy48L3A+CgogPGhyIC8+Cgo8ZGl2IGlk PSJhcGkiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2ZvbnQt c2l6ZToyNHB4O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij5aZW0gQ29udGFjdCBSZWJv cm4mIzgyMTc7cyA8c3BhbiBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPjwvZGl2PgoKPHA+VGhl IHBsdWdpbiA8c3BhbiBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPiBvZiB6ZW0gY29udGFjdCwg ZGV2ZWxvcGVkIGJ5IFRyYW5xdWlsbG8sIGlzIHNpbWlsYXIgdG8gdGhlIGNvbW1lbnRzIDxz cGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+IG9mIFRleHRwYXR0ZXJuLCB3aGljaCBpcyBl eHBsYWluZWQgaW4gdGhlIFRleHRib29rPGJyIC8+CjxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0 dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0bGU9UGx1Z2luX0RldmVsb3BtZW50X1RvcGlj cyI+UGx1Z2luIERldmVsb3BtZW50IFRvcGljczwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly90 ZXh0cGF0dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0bGU9Q29tYmF0X0NvbW1lbnRfU3Bh bSI+Q29tYmF0IENvbW1lbnQgU3BhbTwvYT4uPC9wPgoKPHA+VGhlIHR3byBldmVudHMgZm9y IHplbV9jb250YWN0IGFyZSAmIzgyMTY7PGNvZGU+emVtY29udGFjdC5zdWJtaXQ8L2NvZGU+ JiM4MjE2OyBhbmQgJiM4MjE2Ozxjb2RlPnplbWNvbnRhY3QuZm9ybTwvY29kZT4mIzgyMTY7 LjxiciAvPgomIzgyMTY7PGNvZGU+emVtY29udGFjdC5zdWJtaXQ8L2NvZGU+JiM4MjE2OyBp cyBjYWxsZWQgYWZ0ZXIgdGhlIGZvcm0gaXMgc3VibWl0dGVkIGFuZCB0aGUgdmFsdWVzIGFy ZSBjaGVja2VkIGlmIGVtcHR5IG9yIHZhbGlkIGVtYWlsYWRkcmVzc2VzLCBidXQgYmVmb3Jl IHRoZSBtYWlsIGlzIHNlbnQuPGJyIC8+CiYjODIxNjs8Y29kZT56ZW1jb250YWN0LmZvcm08 L2NvZGU+JiM4MjE2OyBsZXQmIzgyMTc7cyB5b3UgaW5zZXJ0IGNvbnRlbnQgaW4gdGhlIGNv bnRhY3QgZm9ybS48L3A+Cgo8cD5Gb3IgcmVmZXJlbmNlIGhlcmUgYXJlIHRoZSBjb21tYW5k cyB0aGF0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8gcGx1Z2luIGRldmVsb3BlcnM6PC9wPgoK PHA+Ly8gVGhpcyB3aWxsIGNhbGwgeW91ciBmdW5jdGlvbiBiZWZvcmUgdGhlIGZvcm0gaXMg c3VibWl0dGVkPGJyIC8+Ci8vIFNvIHlvdSBjYW4gYW5hbHlzZSB0aGUgc3VibWl0dGVkIGRh dGE8YnIgLz4KPGNvZGU+cmVnaXN0ZXJfY2FsbGJhY2soJiMzOTthYmNfbXlmdW5jdGlvbiYj Mzk7LCYjMzk7emVtY29udGFjdC5zdWJtaXQmIzM5Oyk7PC9jb2RlPjwvcD4KCjxwPi8vIFRo aXMgd2lsbCBjYWxsIHlvdXIgZnVuY3Rpb24gYW5kIGFkZCB0aGUgb3V0cHV0ICh1c2UgcmV0 dXJuICRteXN0dWZmKSB0byB0aGU8YnIgLz4KLy8gY29udGFjdC1mb3JtLCByaWdodCBhZnRl ciAmIzgyMzA7LiBUaGlzIGlzIG9wdGlvbmFsLjxiciAvPgo8Y29kZT5yZWdpc3Rlcl9jYWxs YmFjaygmIzM5O2FiY19teW90aGVyZnVuY3Rpb24yJiMzOTssJiMzOTt6ZW1jb250YWN0LmZv cm0mIzM5Oyk7PC9jb2RlPjwvcD4KCjxwPi8vIFRvIGdldCBob2xkIG9mIHRoZSBmb3JtLXZh cmlhYmxlcyB5b3UgY2FuIHVzZTxiciAvPgo8Y29kZT5nbG9iYWwgemVtX2NvbnRhY3RfZm9y bTwvY29kZT48YnIgLz4KLy8gb3IgdGhlIGNvcnJlc3BvbmRpbmcgJFBPU1Qgb3IgJFJFUVVF U1QuPC9wPgoKPHA+Ly8gV2l0aCB0aGUgZm9sbG93aW5nIHR3byBsaW5lcyB5b3UgY2FuIHRl bGwgemVtX2NvbnRhY3QgaWYgeW91cjxiciAvPgovLyBwbHVnaW4gZm91bmQgc3BhbTxiciAv Pgo8Y29kZT4kZXZhbHVhdG9yID0mYW1wOyBnZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKTsK JGV2YWx1YXRvciAtJmd0OyBhZGRfemVtY29udGFjdF9zdGF0dXMoMSk7IC8vIHRoZSBwYXNz ZWQgdmFsdWUgbXVzdCBiZSBhbnkgbnVtYmVyIGJ1dCB6ZXJvIHRvIG1hcmsgdGhlIGNvbnRl bnQgYXMgc3BhbTwvY29kZT4uPC9wPgoKCjxwPk11bHRpcGxlIHBsdWdpbnMgY2FuIGJlIGFj dGl2ZSBhdCB0aGUgc2FtZSB0aW1lIGFuZCBlYWNoIG9mIHRoZW0gY2FuIG1hcmsgdGhlIHN1 Ym1pdHRlZCBjb250ZW50IGFzIHNwYW0gYW5kIHByZXZlbnQgdGhlIGZvcm0gZnJvbSBiZWlu ZyBzdWJtaXR0ZWQuPC9wPgoKPHA+PHN0cm9uZz5BbiBleGFtcGxlIG9mIGEgcGx1Zy1pbiBj b25uZWN0aW5nIHRvIFplbSBDb250YWN0IFJlYm9ybiYjODIxNztzIDxzcGFuIGNsYXNzPSJj YXBzIj5BUEk8L3NwYW4+Oi08L3N0cm9uZz48L3A+Cgo8cD48Y29kZT5yZWdpc3Rlcl9jYWxs YmFjaygmIzM5O3BhcF96ZW1jb250YWN0X2Zvcm0mIzM5OywmIzM5O3plbWNvbnRhY3QuZm9y bSYjMzk7KTsKcmVnaXN0ZXJfY2FsbGJhY2soJiMzOTtwYXBfemVtY29udGFjdF9zdWJtaXQm IzM5OywmIzM5O3plbWNvbnRhY3Quc3VibWl0JiMzOTspOzwvY29kZT48YnIgLz4KPGJyIC8+ CjxiciAvPgo8Y29kZT5mdW5jdGlvbiBwYXBfemVtY29udGFjdF9mb3JtKCkgezwvY29kZT48 YnIgLz4KPGJyIC8+CjxiciAvPgo8Y29kZT4kZmllbGQgPSAmIzM5OyZsdDtkaXYgc3R5bGU9 JnF1b3Q7dmlzaWJpbGl0eTpoaWRkZW4mcXVvdDsmZ3Q7JiMzOTsuZmlucHV0KCYjMzk7dGV4 dCYjMzk7LCYjMzk7cGhvbmUmIzM5OyxwcygmIzM5O3Bob25lJiMzOTspLCYjMzk7JiMzOTss JiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5O3Bob25l JiMzOTspLiYjMzk7Jmx0O2JyIC8mZ3Q7JiMzOTsuZmlucHV0KCYjMzk7dGV4dCYjMzk7LCYj Mzk7bWFpbCYjMzk7LHBzKCYjMzk7bWFpbCYjMzk7KSwmIzM5OyYjMzk7LCYjMzk7JiMzOTss JiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTttYWlsJiMzOTspLiYjMzk7 Jmx0Oy9kaXYmZ3Q7JiMzOTs7CnJldHVybiAkZmllbGQ7PC9jb2RlPjxiciAvPgo8YnIgLz4K PGJyIC8+Cjxjb2RlPn08L2NvZGU+PGJyIC8+CjxiciAvPgo8YnIgLz4KPGNvZGU+ZnVuY3Rp b24gcGFwX3plbWNvbnRhY3Rfc3VibWl0KCkgezwvY29kZT48YnIgLz4KPGJyIC8+CjxiciAv Pgo8Y29kZT4kY2hlY2tpbmdfbWFpbF9maWVsZCA9IHRyaW0ocHMoJiMzOTttYWlsJiMzOTsp KTsKJGNoZWNraW5nX3Bob25lX2ZpZWxkID0gdHJpbShwcygmIzM5O3Bob25lJiMzOTspKTs8 L2NvZGU+PGJyIC8+CjxiciAvPgo8YnIgLz4KPGNvZGU+CSRldmFsdWF0aW9uID0mYW1wOyBn ZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKTs8L2NvZGU+PGJyIC8+CjxiciAvPgo8YnIgLz4K PGNvZGU+Ly8gSWYgdGhlIGhpZGRlbiBmaWVsZHMgYXJlIGZpbGxlZCBvdXQsIHRoZSBjb250 YWN0IGZvcm0gd29uJiMzOTt0IGJlIHN1Ym1pdHRlZCE8L2NvZGU+CjxiciAvPgo8Y29kZT5p ZiAoJGNoZWNraW5nX21haWxfZmllbGQgIT0gJiMzOTsmIzM5OyB8fCAkY2hlY2tpbmdfcGhv bmVfZmllbGQgIT0gJiMzOTsmIzM5Oyl7CiRldmFsdWF0aW9uIC0mZ3Q7IGFkZF96ZW1jb250 YWN0X3N0YXR1cygxKTs8L2NvZGU+PGJyIC8+Cn08YnIgLz4KcmV0dXJuOzwvY29kZT48YnIg Lz4KPGJyIC8+CjxiciAvPgo8Y29kZT59PC9jb2RlPjwvcD4KCiA8YnIgLz4KCgogPHAgc3R5 bGU9ImZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE2cHg7dGV4dC1hbGlnbjpjZW50ZXI7 Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRoZSBUb3A8L2E+PC9wPgoKIDxiciAvPgoiO3M6NDoi Y29kZSI7czoxODA0MToiCmZ1bmN0aW9uIHplbV9jb250YWN0KCRhdHRzLCAkdGhpbmcgPSAn JykKewoJZ2xvYmFsICRzaXRlbmFtZSwgJHByZWZzLCAkcHJvZHVjdGlvbl9zdGF0dXMsICR6 ZW1fY29udGFjdF9mb3JtLCAkemVtX2NvbnRhY3RfZnJvbSwgJHplbV9jb250YWN0X2Vycm9y LCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ2JjYycJ CT0+ICcnLAoJCSdjb3B5c2VuZGVyJwk9PiAnbm8nLAoJCSdmb3JtJwkJPT4gJycsCgkJJ2Zy b20nCQk9PiAnJywKCQknZnJvbV9mb3JtJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29u dGFjdF9nVHh0KCdjb250YWN0JyksCgkJJ3JlZGlyZWN0Jwk9PiAnJywKCQknc2hvd19lcnJv cicJPT4gJ3llcycsCgkJJ3Nob3dfaW5wdXQnCT0+ICd5ZXMnLAoJCSdzZW5kX2FydGljbGUn CT0+ICdubycsCgkJJ3N1YmplY3QnCT0+IHplbV9jb250YWN0X2dUeHQoJ2VtYWlsX3N1Ympl Y3QnLCBodG1sX2VudGl0eV9kZWNvZGUoJHNpdGVuYW1lLEVOVF9RVU9URVMpKSwKCQknc3Vi amVjdF9mb3JtJwk9PiAnJywKCQkndG8nCQk9PiAnJywKCQkndG9fZm9ybScJPT4gJycsCgkJ J3RoYW5rcycJPT4gZ3JhZih6ZW1fY29udGFjdF9nVHh0KCdlbWFpbF90aGFua3MnKSksCgkJ J3RoYW5rc19mb3JtJwk9PiAnJwoJKSwgJGF0dHMpKTsKCgl1bnNldCgkYXR0c1snc2hvd19l cnJvciddLCAkYXR0c1snc2hvd19pbnB1dCddKTsKCSR6ZW1fY29udGFjdF9mb3JtX2lkID0g bWQ1KHNlcmlhbGl6ZSgkYXR0cykucHJlZ19yZXBsYWNlKCcvW1x0XHNcclxuXS8nLCcnLCR0 aGluZykpOwoJJHplbV9jb250YWN0X3N1Ym1pdCA9IChwcygnemVtX2NvbnRhY3Rfc3VibWl0 JykgYW5kIHBzKCd6ZW1fY29udGFjdF9mb3JtX2lkJykgPT0gJHplbV9jb250YWN0X2Zvcm1f aWQpOwoKCWlmICghaXNfY2FsbGFibGUoJ21haWwnKSkKCXsKCQlyZXR1cm4gKCRwcm9kdWN0 aW9uX3N0YXR1cyA9PSAnbGl2ZScpID8KCQkJemVtX2NvbnRhY3RfZ1R4dCgnbWFpbF9zb3Jy eScpIDoKCQkJZ1R4dCgnd2Fybl9tYWlsX3VuYXZhaWxhYmxlJyk7Cgl9CgoJc3RhdGljICRo ZWFkZXJzX3NlbnQgPSBmYWxzZTsKCWlmICghJGhlYWRlcnNfc2VudCkgewoJCWhlYWRlcign TGFzdC1Nb2RpZmllZDogJy5nbWRhdGUoJ0QsIGQgTSBZIEg6aTpzJyx0aW1lKCktMzYwMCoy NCo3KS4nIEdNVCcpOwoJCWhlYWRlcignRXhwaXJlczogJy5nbWRhdGUoJ0QsIGQgTSBZIEg6 aTpzJyx0aW1lKCkrNjAwKS4nIEdNVCcpOwoJCWhlYWRlcignQ2FjaGUtQ29udHJvbDogbm8t Y2FjaGUsIG11c3QtcmV2YWxpZGF0ZScpOwoJCSRoZWFkZXJzX3NlbnQgPSB0cnVlOwoJfQoK CSRub25jZSAgID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKHBzKCd6ZW1fY29udGFjdF9u b25jZScpKTsKCSRyZW5vbmNlID0gZmFsc2U7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQp Cgl7CgkJc2FmZV9kZWxldGUoJ3R4cF9kaXNjdXNzX25vbmNlJywgJ2lzc3VlX3RpbWUgPCBk YXRlX3N1Yihub3coKSwgaW50ZXJ2YWwgMTAgbWludXRlKScpOwoJCWlmICgkcnMgPSBzYWZl X3JvdygndXNlZCcsICd0eHBfZGlzY3Vzc19ub25jZScsICJub25jZSA9ICckbm9uY2UnIikp CgkJewoJCQlpZiAoJHJzWyd1c2VkJ10pCgkJCXsKCQkJCXVuc2V0KCR6ZW1fY29udGFjdF9l cnJvcik7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2Zv cm1fdXNlZCcpOwoJCQkJJHJlbm9uY2UgPSB0cnVlOwoJCQkJJF9QT1NUID0gYXJyYXkoKTsK CQkJCSRfUE9TVFsnemVtX2NvbnRhY3Rfc3VibWl0J10gPSAxOwoJCQkJJF9QT1NUWyd6ZW1f Y29udGFjdF9mb3JtX2lkJ10gPSAkemVtX2NvbnRhY3RfZm9ybV9pZDsKCQkJCSRfUE9TVFsn emVtX2NvbnRhY3Rfbm9uY2UnXSA9ICRub25jZTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkk emVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2Zvcm1fZXhwaXJlZCcp OwoJCQkkcmVub25jZSA9IHRydWU7CgkJfQoJfQoKCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0 IGFuZCAkbm9uY2UgYW5kICEkcmVub25jZSkKCXsKCQkkemVtX2NvbnRhY3Rfbm9uY2UgPSAk bm9uY2U7Cgl9CgoJZWxzZWlmICgkc2hvd19lcnJvciA9PSAnbm8nIG9yICRzaG93X2lucHV0 ID09ICd5ZXMnKQoJewoJCSR6ZW1fY29udGFjdF9ub25jZSA9IG1kNSh1bmlxaWQocmFuZCgp LCB0cnVlKSk7CgkJc2FmZV9pbnNlcnQoJ3R4cF9kaXNjdXNzX25vbmNlJywgImlzc3VlX3Rp bWUgPSBub3coKSwgbm9uY2UgPSAnJHplbV9jb250YWN0X25vbmNlJyIpOwoJfQoKCSRmb3Jt ID0gKCRmb3JtKSA/IGZldGNoX2Zvcm0oJGZvcm0pIDogJHRoaW5nOwoKCWlmIChlbXB0eSgk Zm9ybSkpCgl7CgkJJGZvcm0gPSAnCjx0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0iJy56 ZW1fY29udGFjdF9nVHh0KCduYW1lJykuJyIgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF9l bWFpbCAvPjxiciAvPgo8dHhwOnplbV9jb250YWN0X3RleHRhcmVhIC8+PGJyIC8+Cjx0eHA6 emVtX2NvbnRhY3Rfc3VibWl0IC8+Cic7Cgl9CgoJJGZvcm0gPSBwYXJzZSgkZm9ybSk7CgoJ aWYgKCR0b19mb3JtKQoJewoJCSR0byA9IHBhcnNlKGZldGNoX2Zvcm0oJHRvX2Zvcm0pKTsK CX0KCglpZiAoISR0byBhbmQgJHNlbmRfYXJ0aWNsZSA9PSAnbm8nKQoJewoJCXJldHVybiB6 ZW1fY29udGFjdF9nVHh0KCd0b19taXNzaW5nJyk7Cgl9CgoJJG91dCA9ICcnOwoKCWlmICgh JHplbV9jb250YWN0X3N1Ym1pdCkgewoJICAjIGRvbid0IHNob3cgZXJyb3JzIG9yIHNlbmQg bWFpbAoJfQoKCWVsc2VpZiAoIWVtcHR5KCR6ZW1fY29udGFjdF9lcnJvcikpCgl7CgkJaWYg KCRzaG93X2Vycm9yID09ICd5ZXMnIG9yICRzaG93X2lucHV0ID09ICdubycpCgkJewoJCQkk b3V0IC49IG4uJzx1bCBjbGFzcz0iemVtRXJyb3IiPic7CgoJCQlmb3JlYWNoIChhcnJheV91 bmlxdWUoJHplbV9jb250YWN0X2Vycm9yKSBhcyAkZXJyb3IpCgkJCXsKCQkJCSRvdXQgLj0g bi50Lic8bGk+Jy4kZXJyb3IuJzwvbGk+JzsKCQkJfQoKCQkJJG91dCAuPSBuLic8L3VsPic7 CgoJCQlpZiAoJHNob3dfaW5wdXQgPT0gJ25vJykgcmV0dXJuICRvdXQ7CgkJfQoJfQoKCWVs c2VpZiAoJHNob3dfaW5wdXQgPT0gJ3llcycgYW5kIGlzX2FycmF5KCR6ZW1fY29udGFjdF9m b3JtKSkKCXsKCQkvLy8gbG9hZCBhbmQgY2hlY2sgc3BhbSBwbHVnaW5zLwoJCWNhbGxiYWNr X2V2ZW50KCd6ZW1jb250YWN0LnN1Ym1pdCcpOwoJCSRldmFsdWF0aW9uID0mIGdldF96ZW1j b250YWN0X2V2YWx1YXRvcigpOwoJCSRjbGVhbiA9ICRldmFsdWF0aW9uLT5nZXRfemVtY29u dGFjdF9zdGF0dXMoKTsKCQlpZiAoJGNsZWFuICE9IDApIHsKCQkJcmV0dXJuIHplbV9jb250 YWN0X2dUeHQoJ3NwYW0nKTsKCQl9CgoJCWlmICgkZnJvbV9mb3JtKQoJCXsKCQkJJGZyb20g PSBwYXJzZSgkZnJvbV9mb3JtKTsKCQl9CgoJCWlmICgkc3ViamVjdF9mb3JtKQoJCXsKCQkJ JHN1YmplY3QgPSBwYXJzZSgkc3ViamVjdF9mb3JtKTsKCQl9CgoJCSRzZXAgPSAhaXNfd2lu ZG93cygpID8gIlxuIiA6ICJcclxuIjsKCgkJJG1zZyA9IGFycmF5KCk7CgoJCWZvcmVhY2gg KCR6ZW1fY29udGFjdF9mb3JtIGFzICRrID0+ICR2KQoJCXsKCQkJJG1zZ1tdID0gJGsuJzog Jy4kdjsKCQl9CgoJCWlmICgkc2VuZF9hcnRpY2xlID09ICd5ZXMnKSB7CgkJCWdsb2JhbCAk dGhpc2FydGljbGU7CgkJCSRzdWJqZWN0ID0gJHRoaXNhcnRpY2xlWyd0aXRsZSddOwoJCQkk bXNnW10gPSAkdGhpc2FydGljbGVbJ3RpdGxlJ10uJyAoJy5wZXJtbGlua3VybCgkdGhpc2Fy dGljbGUpLicpJzsKCQkJJG1zZ1tdID0gdHJpbShzdHJfcmVwbGFjZSgiXHQiLCcnLHN0cmlw X3RhZ3MoJHRoaXNhcnRpY2xlWydleGNlcnB0J10gPyAkdGhpc2FydGljbGVbJ2V4Y2VycHQn XSA6ICR0aGlzYXJ0aWNsZVsnYm9keSddKSkpOwoJCQlpZiAoIXBzKCdyZWNlaXZlcicpKSB7 CgkJCQlyZXR1cm4gemVtX2NvbnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsIGh0bWxzcGVj aWFsY2hhcnMoemVtX2NvbnRhY3RfZ1R4dCgncmVjZWl2ZXInKSkpOwoJCQl9CgkJCSR0byA9 IHBzKCdyZWNlaXZlcicpOwoJCX0KCgkJJG1zZyA9IGpvaW4oIlxuXG4iLCAkbXNnKTsKCQkk bXNnID0gc3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4iLCAkbXNnKTsKCQkkbXNnID0gc3RyX3Jl cGxhY2UoIlxyIiwgIlxuIiwgJG1zZyk7CgkJJG1zZyA9IHN0cl9yZXBsYWNlKCJcbiIsICRz ZXAsICRtc2cpOwoKCQlpZiAoJGZyb20pCgkJewoJCQkkcmVwbHkgPSAkemVtX2NvbnRhY3Rf ZnJvbTsKCQl9CgoJCWVsc2UKCQl7CgkJCSRmcm9tID0gJHplbV9jb250YWN0X2Zyb207CgkJ CSRyZXBseSA9ICcnOwoJCX0KCgkJaWYgKCRjb3B5c2VuZGVyID09ICd5ZXMnKQoJCXsKCQkJ JGJjYyA9ICR0bzsKCQkJJHRvID0gJHplbV9jb250YWN0X2Zyb207CgkJfQoKCQkkdG8gICAg ICA9IHN0cmlwX3JuKCR0byk7CgkJJGJjYyAgICAgPSBzdHJpcF9ybigkYmNjKTsKCQkkc3Vi amVjdCA9IHN0cmlwX3JuKCRzdWJqZWN0KTsKCQkkZnJvbSAgICA9IHN0cmlwX3JuKCRmcm9t KTsKCQkkcmVwbHkgICA9IHN0cmlwX3JuKCRyZXBseSk7CgoJCWlmICgkcHJlZnNbJ292ZXJy aWRlX2VtYWlsY2hhcnNldCddIGFuZCBpc19jYWxsYWJsZSgndXRmOF9kZWNvZGUnKSkKCQl7 CgkJCSRjaGFyc2V0ID0gJ0lTTy04NTk5LTEnOwoJCQkkdG8gICAgICA9IHV0ZjhfZGVjb2Rl KCR0byk7CgkJCSRiY2MgICAgID0gdXRmOF9kZWNvZGUoJGJjYyk7CgkJCSRzdWJqZWN0ID0g dXRmOF9kZWNvZGUoJHN1YmplY3QpOwoJCQkkbXNnICAgICA9IHV0ZjhfZGVjb2RlKCRtc2cp OwoJCQkkZnJvbSAgICA9IHV0ZjhfZGVjb2RlKCRmcm9tKTsKCQkJJHJlcGx5ICAgPSB1dGY4 X2RlY29kZSgkcmVwbHkpOwoJCX0KCgkJZWxzZQoJCXsKCQkJJGNoYXJzZXQgPSAnVVRGLTgn OwoJCX0KCgkJJHN1YmplY3QgPSB6ZW1fY29udGFjdF9tYWlsaGVhZGVyKCRzdWJqZWN0LCAn dGV4dCcpOwoKCQkkaGVhZGVycyA9ICdGcm9tOiAnLiRmcm9tLgoJCQkoJHJlcGx5ID8gKCRz ZXAuJ1JlcGx5LVRvOiAnLiRyZXBseSkgOiAnJykuCgkJCSgkYmNjID8gKCRzZXAuJ0JjYzog Jy4kYmNjKSA6ICcnKS4KCQkJJHNlcC4nWC1NYWlsZXI6IFRleHRwYXR0ZXJuICh6ZW1fY29u dGFjdF9yZWJvcm4pJy4KCQkJJHNlcC4nQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp dCcuCgkJCSRzZXAuJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iJy4kY2hh cnNldC4nIic7CgoJCXNhZmVfdXBkYXRlKCd0eHBfZGlzY3Vzc19ub25jZScsICJ1c2VkID0g JzEnLCBpc3N1ZV90aW1lID0gbm93KCkiLCAibm9uY2UgPSAnJG5vbmNlJyIpOwoKCQlpZiAo bWFpbCgkdG8sICRzdWJqZWN0LCAkbXNnLCAkaGVhZGVycykpCgkJewoJCQkkX1BPU1QgPSBh cnJheSgpOwoJCQlpZiAoJHJlZGlyZWN0KQoJCQl7CgkJCQl3aGlsZSAoQG9iX2VuZF9jbGVh bigpKTsKCQkJCSR1cmkgPSBodS5sdHJpbSgkcmVkaXJlY3QsJy8nKTsKCQkJCWlmIChlbXB0 eSgkX1NFUlZFUlsnRkNHSV9ST0xFJ10pIGFuZCBlbXB0eSgkX0VOVlsnRkNHSV9ST0xFJ10p KQoJCQkJewoJCQkJCXR4cF9zdGF0dXNfaGVhZGVyKCczMDMgU2VlIE90aGVyJyk7CgkJCQkJ aGVhZGVyKCdMb2NhdGlvbjogJy4kdXJpKTsKCQkJCQloZWFkZXIoJ0Nvbm5lY3Rpb246IGNs b3NlJyk7CgkJCQkJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogMCcpOwoJCQkJfQoJCQkJZWxz ZQoJCQkJewoJCQkJCSR1cmkgPSBodG1sc3BlY2lhbGNoYXJzKCR1cmkpOwoJCQkJCSRyZWZy ZXNoID0gemVtX2NvbnRhY3RfZ1R4dCgncmVmcmVzaCcpOwoJCQkJCWVjaG8gPDw8RU5ECjwh RE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25h bC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0 aW9uYWwuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi IHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iPgo8aGVhZD4KCTx0aXRsZT4kc2l0ZW5hbWU8L3Rp dGxlPgoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0 bWw7IGNoYXJzZXQ9dXRmLTgiIC8+Cgk8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250 ZW50PSIwO3VybD0kdXJpIiAvPgo8L2hlYWQ+Cjxib2R5Pgo8YSBocmVmPSIkdXJpIj4kcmVm cmVzaDwvYT4KPC9ib2R5Pgo8L2h0bWw+CkVORDsKCQkJCX0KCQkJCWV4aXQ7CgkJCX0KCgkJ CWVsc2UKCQkJewoJCQkJcmV0dXJuICgkdGhhbmtzX2Zvcm0pID8gZmV0Y2hfZm9ybSgkdGhh bmtzX2Zvcm0pIDogJHRoYW5rczsKCQkJfQoJCX0KCgkJZWxzZQoJCXsKCQkJJG91dCAuPSBn cmFmKHplbV9jb250YWN0X2dUeHQoJ21haWxfc29ycnknKSk7CgkJfQoJfQoKCWlmICgkc2hv d19pbnB1dCA9PSAneWVzJyBhbmQgJHNlbmRfYXJ0aWNsZSA9PSAnbm8nIG9yIGdwcygnemVt X2NvbnRhY3Rfc2VuZF9hcnRpY2xlJykpCgl7CgkJcmV0dXJuICc8Zm9ybSBtZXRob2Q9InBv c3QiIGNsYXNzPSJ6ZW1Db250YWN0Rm9ybSIgYWN0aW9uPSInLnNlcnZlclNldCgnUkVRVUVT VF9VUkknKS4nIj4nLgoJCQkoICRsYWJlbCA/IG4uJzxmaWVsZHNldD4nIDogbi4nPGRpdj4n ICkuCgkJCSggJGxhYmVsID8gbi4nPGxlZ2VuZD4nLiRsYWJlbC4nPC9sZWdlbmQ+JyA6ICcn ICkuCgkJCSRvdXQuCgkJCW4uJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InplbV9jb250 YWN0X25vbmNlIiB2YWx1ZT0iJy4kemVtX2NvbnRhY3Rfbm9uY2UuJyIgLz4nLgoJCQluLic8 aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ6ZW1fY29udGFjdF9mb3JtX2lkIiB2YWx1ZT0i Jy4kemVtX2NvbnRhY3RfZm9ybV9pZC4nIiAvPicuCgkJCSRmb3JtLgoJCQljYWxsYmFja19l dmVudCgnemVtY29udGFjdC5mb3JtJykuCgkJCSggJGxhYmVsID8gKG4uJzwvZmllbGRzZXQ+ JykgOiAobi4nPC9kaXY+JykgKS4KCQkJbi4nPC9mb3JtPic7Cgl9CgoJcmV0dXJuICcnOwp9 CgpmdW5jdGlvbiB6ZW1fY29udGFjdF90ZXh0KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250 YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdDsKCgll eHRyYWN0KGxBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+IGJyLAoJCSdkZWZhdWx0Jwk9PiAn JywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgn dGV4dCcpLAoJCSdtYXgnCQk9PiAxMDAsCgkJJ21pbicJCT0+IDAsCgkJJ25hbWUnCQk9PiAn JywKCQkncmVxdWlyZWQnCT0+ICd5ZXMnLAoJCSdzaXplJwkJPT4gJycKCSksICRhdHRzKSk7 CgoJJG1pbiA9IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwoJG1heCk7Cgkkc2l6ZSA9 IGludHZhbCgkc2l6ZSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFj dF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJ JHZhbHVlID0gcHMoJG5hbWUpOwoJCSR1dGY4bGVuID0gcHJlZ19tYXRjaF9hbGwoIi8uL3N1 IiwgJHZhbHVlLCAkdXRmOGFyKTsKCQkkaGxhYmVsID0gaHRtbHNwZWNpYWxjaGFycygkbGFi ZWwpOwoKCQlpZiAoc3RybGVuKCR2YWx1ZSkpCgkJewoJCQlpZiAoISR1dGY4bGVuKQoJCQl7 CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRf dXRmOCcsICRobGFiZWwpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoK CQkJZWxzZWlmICgkbWluIGFuZCAkdXRmOGxlbiA8ICRtaW4pCgkJCXsKCQkJCSR6ZW1fY29u dGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnbWluX3dhcm5pbmcnLCAkaGxhYmVs LCAkbWluKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2Vp ZiAoJG1heCBhbmQgJHV0ZjhsZW4gPiAkbWF4KQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJy b3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ21heF93YXJuaW5nJywgJGhsYWJlbCwgJG1heCk7 CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQkJIyR2YWx1ZSA9IGpvaW4oJycs YXJyYXlfc2xpY2UoJGFyWzBdLDAsJG1heCkpOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCSR6 ZW1fY29udGFjdF9mb3JtWyRsYWJlbF0gPSAkdmFsdWU7CgkJCX0KCQl9CgkJZWxzZWlmICgk cmVxdWlyZWQgPT0gJ3llcycpCgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9j b250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCAkaGxhYmVsKTsKCQkJJGlzRXJyb3IgPSAi ZXJyb3JFbGVtZW50IjsKCQl9Cgl9CgoJZWxzZQoJewoJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJ fQoKCSRzaXplID0gKCRzaXplKSA/ICcgc2l6ZT0iJy4kc2l6ZS4nIicgOiAnJzsKCSRtYXhs ZW5ndGggPSAoJG1heCkgPyAnIG1heGxlbmd0aD0iJy4kbWF4LiciJyA6ICcnOwoKCSR6ZW1S ZXF1aXJlZCA9ICgkcmVxdWlyZWQgPT0gJ3llcycpID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoK ICAgICAgICByZXR1cm4gJzxsYWJlbCBmb3I9IicuJG5hbWUuJyIgY2xhc3M9IicuJHplbVJl cXVpcmVkLiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLiRsYWJlbC4nPC9sYWJlbD4nLiRicmVh ay4KCQknPGlucHV0IHR5cGU9InRleHQiIGlkPSInLiRuYW1lLiciIGNsYXNzPSInLiR6ZW1S ZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciIHZhbHVlPSInLmh0bWxzcGVj aWFsY2hhcnMoJHZhbHVlKS4nIicuJHNpemUuJG1heGxlbmd0aC4nIC8+JzsKfQoKZnVuY3Rp b24gemVtX2NvbnRhY3RfdGV4dGFyZWEoJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3Rf Zm9ybSwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJh Y3QobEF0dHMoYXJyYXkoCgkJJ2JyZWFrJwkJPT4gYnIsCgkJJ2NvbHMnCQk9PiA1OCwKCQkn ZGVmYXVsdCcJPT4gJycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+IHplbV9j b250YWN0X2dUeHQoJ21lc3NhZ2UnKSwKCQknbWF4JwkJPT4gMTAwMDAsCgkJJ21pbicJCT0+ IDAsCgkJJ25hbWUnCQk9PiAnJywKCQkncmVxdWlyZWQnCT0+ICd5ZXMnLAoJCSdyb3dzJwkJ PT4gOAoJKSwgJGF0dHMpKTsKCgkkbWluID0gaW50dmFsKCRtaW4pOwoJJG1heCA9IGludHZh bCgkbWF4KTsKCSRjb2xzID0gaW50dmFsKCRjb2xzKTsKCSRyb3dzID0gaW50dmFsKCRyb3dz KTsKCglpZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUo JGxhYmVsKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkdmFsdWUgPSBwcygk bmFtZSk7CgkJJHV0ZjhsZW4gPSBwcmVnX21hdGNoX2FsbCgiLy4vc3UiLCAkdmFsdWUsICR1 dGY4YXIpOwoJCSRobGFiZWwgPSBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7CgoJCWlmIChz dHJsZW4oJHZhbHVlKSkKCQl7CgkJCWlmICghJHV0ZjhsZW4pCgkJCXsKCQkJCSR6ZW1fY29u dGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnaW52YWxpZF91dGY4JywgJGhsYWJl bCk7CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRt aW4gYW5kICR1dGY4bGVuIDwgJG1pbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10g PSB6ZW1fY29udGFjdF9nVHh0KCdtaW5fd2FybmluZycsICRobGFiZWwsICRtaW4pOwoJCQkJ JGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoKCQkJZWxzZWlmICgkbWF4IGFuZCAk dXRmOGxlbiA+ICRtYXgpCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2Nv bnRhY3RfZ1R4dCgnbWF4X3dhcm5pbmcnLCAkaGxhYmVsLCAkbWF4KTsKCQkJCSRpc0Vycm9y ID0gImVycm9yRWxlbWVudCI7CgkJCQkjJHZhbHVlID0gam9pbignJyxhcnJheV9zbGljZSgk dXRmOGFyWzBdLDAsJG1heCkpOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCSR6ZW1fY29udGFj dF9mb3JtWyRsYWJlbF0gPSAkdmFsdWU7CgkJCX0KCQl9CgoJCWVsc2VpZiAoJHJlcXVpcmVk ID09ICd5ZXMnKQoJCXsKCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9n VHh0KCdmaWVsZF9taXNzaW5nJywgJGhsYWJlbCk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxl bWVudCI7CgkJfQoJfQoKCWVsc2UKCXsKCQkkdmFsdWUgPSAkZGVmYXVsdDsKCX0KCgkkemVt UmVxdWlyZWQgPSAoJHJlcXVpcmVkID09ICd5ZXMnKSA/ICd6ZW1SZXF1aXJlZCcgOiAnJzsK CglyZXR1cm4gJzxsYWJlbCBmb3I9IicuJG5hbWUuJyIgY2xhc3M9IicuJHplbVJlcXVpcmVk LiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLiRsYWJlbC4nPC9sYWJlbD4nLiRicmVhay4KCQkn PHRleHRhcmVhIGlkPSInLiRuYW1lLiciIGNsYXNzPSInLiR6ZW1SZXF1aXJlZC4kaXNFcnJv ci4nIiBuYW1lPSInLiRuYW1lLiciIGNvbHM9IicuJGNvbHMuJyIgcm93cz0iJy4kcm93cy4n Ij4nLmh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKS4nPC90ZXh0YXJlYT4nOwp9CgpmdW5jdGlv biB6ZW1fY29udGFjdF9lbWFpbCgkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJv ciwgJHplbV9jb250YWN0X3N1Ym1pdCwgJHplbV9jb250YWN0X2Zyb207CgoJZXh0cmFjdChs QXR0cyhhcnJheSgKCQknZGVmYXVsdCcJPT4gJycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSds YWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2VtYWlsJyksCgkJJ21heCcJCT0+IDEwMCwK CQknbWluJwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gJ3llcycs CgkJJ2JyZWFrJwkJPT4gYnIsCgkJJ3NpemUnCQk9PiAnJwoJKSwgJGF0dHMpKTsKCglpZiAo ZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsK CgkkZW1haWwgPSAkemVtX2NvbnRhY3Rfc3VibWl0ID8gcHMoJG5hbWUpIDogJGRlZmF1bHQ7 CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQgYW5kIHN0cmxlbigkZW1haWwpKQoJewoJCWlm ICghcHJlZ19tYXRjaCgnL15bXHcuXy1dK0AoW1x3LV0rXC4pK1tcdy1dKyQvJywgJGVtYWls KSkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnaW52 YWxpZF9lbWFpbCcsIGh0bWxzcGVjaWFsY2hhcnMoJGVtYWlsKSk7CgkJCSRpc0Vycm9yID0g ImVycm9yRWxlbWVudCI7CgkJfQoKCQllbHNlCgkJewoJCQlwcmVnX21hdGNoKCIvQCguKykk LyIsICRlbWFpbCwgJG1hdGNoKTsKCQkJJGRvbWFpbiA9ICRtYXRjaFsxXTsKCgkJCWlmIChp c19jYWxsYWJsZSgnY2hlY2tkbnNycicpIGFuZCAhY2hlY2tkbnNycigkZG9tYWluLCdNWCcp IGFuZCAhY2hlY2tkbnNycigkZG9tYWluLCdBJykpCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9l cnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnaW52YWxpZF9ob3N0JywgaHRtbHNwZWNpYWxj aGFycygkZG9tYWluKSk7CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJ CQllbHNlCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9mcm9tID0gJGVtYWlsOwoJCQl9CgkJfQoJ fQoKCXJldHVybiB6ZW1fY29udGFjdF90ZXh0KGFycmF5KAoJCSdkZWZhdWx0Jwk9PiAkZW1h aWwsCgkJJ2lzRXJyb3InCT0+ICRpc0Vycm9yLAoJCSdsYWJlbCcJCT0+ICRsYWJlbCwKCQkn bWF4JwkJPT4gJG1heCwKCQknbWluJwkJPT4gJG1pbiwKCQknbmFtZScJCT0+ICRuYW1lLAoJ CSdyZXF1aXJlZCcJPT4gJHJlcXVpcmVkLAoJCSdicmVhaycJCT0+ICRicmVhaywKCQknc2l6 ZScJCT0+ICRzaXplCgkpKTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc2VsZWN0KCRhdHRz KQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9lcnJvciwgJHpl bV9jb250YWN0X3N1Ym1pdDsKCglleHRyYWN0KGxBdHRzKGFycmF5KAoJCSduYW1lJwkJPT4g JycsCgkJJ2JyZWFrJwkJPT4gJyAnLAoJCSdkZWxpbWl0ZXInCT0+ICcsJywKCQknaXNFcnJv cicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnb3B0aW9uJyksCgkJ J2xpc3QnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdnZW5lcmFsX2lucXVpcnknKSwKCQkncmVx dWlyZWQnCT0+ICd5ZXMnLAoJCSdzZWxlY3RlZCcJPT4gJycKCSksICRhdHRzKSk7CgoJaWYg KGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7 CgoJJGxpc3QgPSBhcnJheV9tYXAoJ3RyaW0nLCBzcGxpdCgkZGVsaW1pdGVyLCBwcmVnX3Jl cGxhY2UoJy9bXHJcblx0XHNdKy8nLCAnICcsJGxpc3QpKSk7CgoJaWYgKCR6ZW1fY29udGFj dF9zdWJtaXQpCgl7CgkJJHZhbHVlID0gcHMoJG5hbWUpOwoKCQlpZiAoc3RybGVuKCR2YWx1 ZSkpCgkJewoJCQlpZiAoaW5fYXJyYXkoJHZhbHVlLCAkbGlzdCkpCgkJCXsKCQkJCSR6ZW1f Y29udGFjdF9mb3JtWyRsYWJlbF0gPSAkdmFsdWU7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJ JHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX3ZhbHVl JywgaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLCBodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSkp OwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoJCX0KCgkJZWxzZWlmICgk cmVxdWlyZWQgPT0gJ3llcycpCgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9j b250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkp OwoJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCX0KCX0KCWVsc2UKCXsKCQkkdmFs dWUgPSAkc2VsZWN0ZWQ7Cgl9CgoJJG91dCA9ICcnOwoKCWZvcmVhY2ggKCRsaXN0IGFzICRp dGVtKQoJewoJCSRvdXQgLj0gbi50Lic8b3B0aW9uJy4oJGl0ZW0gPT0gJHZhbHVlID8gJyBz ZWxlY3RlZD0ic2VsZWN0ZWQiPicgOiAnPicpLmh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0pLic8 L29wdGlvbj4nOwoJfQoKCSR6ZW1SZXF1aXJlZCA9ICgkcmVxdWlyZWQgPT0gJ3llcycpID8g J3plbVJlcXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBj bGFzcz0iJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuJGxhYmVsLic8 L2xhYmVsPicuJGJyZWFrLgoJCW4uJzxzZWxlY3QgaWQ9IicuJG5hbWUuJyIgbmFtZT0iJy4k bmFtZS4nIiBjbGFzcz0iJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyI+Jy4KCQkJJG91dC4K CQluLic8L3NlbGVjdD4nOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9jaGVja2JveCgkYXR0 cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtLCAkemVtX2NvbnRhY3RfZXJyb3IsICR6 ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdChsQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9 PiAnICcsCgkJJ2NoZWNrZWQnCT0+ICdubycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJl bCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2NoZWNrYm94JyksCgkJJ25hbWUnCQk9PiAnJywK CQkncmVxdWlyZWQnCT0+ICd5ZXMnCgkpLCAkYXR0cykpOwoKCWlmIChlbXB0eSgkbmFtZSkp ICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICgkemVtX2Nv bnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IChib29sKSBwcygkbmFtZSk7CgoJCWlmICgk cmVxdWlyZWQgPT0gJ3llcycgYW5kICEkdmFsdWUpCgkJewoJCQkkemVtX2NvbnRhY3RfZXJy b3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCBodG1sc3BlY2lhbGNo YXJzKCRsYWJlbCkpOwoJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCX0KCgkJZWxz ZQoJCXsKCQkJJHplbV9jb250YWN0X2Zvcm1bJGxhYmVsXSA9ICgkdmFsdWUpID8gZ1R4dCgn eWVzJykgOiBnVHh0KCdubycpOwoJCX0KCX0KCgllbHNlIHsKCQkkdmFsdWUgPSAoJGNoZWNr ZWQgPT0gJ3llcycpOwoJfQoKCSR6ZW1SZXF1aXJlZCA9ICgkcmVxdWlyZWQgPT0gJ3llcycp ID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGlucHV0IHR5cGU9ImNoZWNrYm94 IiBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyIgbmFt ZT0iJy4kbmFtZS4nIicuCgkJKCR2YWx1ZSA/ICcgY2hlY2tlZD0iY2hlY2tlZCInIDogJycp LicgLz4nLiRicmVhay4KCQknPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iJy4kemVt UmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuJGxhYmVsLic8L2xhYmVsPic7Cn0K CmZ1bmN0aW9uIHplbV9jb250YWN0X3NlcnZlcmluZm8oJGF0dHMpCnsKCWdsb2JhbCAkemVt X2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0X3N1Ym1pdDsKCglleHRyYWN0KGxBdHRzKGFy cmF5KAoJCSdsYWJlbCcJCT0+ICcnLAoJCSduYW1lJwkJPT4gJycKCSksICRhdHRzKSk7CgoJ aWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJl bCk7CgoJaWYgKHN0cmxlbigkbmFtZSkgYW5kICR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJ JHplbV9jb250YWN0X2Zvcm1bJGxhYmVsXSA9IHNlcnZlclNldCgkbmFtZSk7Cgl9Cn0KCmZ1 bmN0aW9uIHplbV9jb250YWN0X3NlY3JldCgkYXR0cywgJHRoaW5nID0gJycpCnsKCWdsb2Jh bCAkemVtX2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0X3N1Ym1pdDsKCglleHRyYWN0KGxB dHRzKGFycmF5KAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ3NlY3JldCcpLAoJ CSd2YWx1ZScJCT0+ICcnCgkpLCAkYXR0cykpOwoKCWlmICgkdGhpbmcpICR2YWx1ZSA9IHRy aW0ocGFyc2UoJHRoaW5nKSk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJJHpl bV9jb250YWN0X2Zvcm1bJGxhYmVsXSA9ICR2YWx1ZTsKCX0KCglyZXR1cm4gJyc7Cn0KCmZ1 bmN0aW9uIHplbV9jb250YWN0X3JhZGlvKCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0 X2Zvcm0sICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdDsKCglleHRy YWN0KGxBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+ICcgJywKCQknY2hlY2tlZCcJPT4gJ25v JywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdyYWRpbycpLAoJCSduYW1lJwkJ PT4gemVtX2NvbnRhY3RfZ1R4dCgncmFkaW8nKQoJKSwgJGF0dHMpKTsKCgkkZm5hbWUgPSB6 ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRuYW1lID8gJG5hbWUgOiAkbGFiZWwpOwoJJGlkICAg ID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICgkemVtX2NvbnRhY3Rf c3VibWl0KQoJewoJCSRpc19jaGVja2VkID0gKHBzKCRmbmFtZSkgPT0gJGlkKTsKCgkJaWYg KCRpc19jaGVja2VkIG9yICRjaGVja2VkID09ICd5ZXMnIGFuZCAhaXNzZXQoJHplbV9jb250 YWN0X2Zvcm1bJG5hbWVdKSkKCQl7CgkJCSR6ZW1fY29udGFjdF9mb3JtWyRuYW1lXSA9ICRs YWJlbDsKCQl9Cgl9CgoJZWxzZQoJewoJCSRpc19jaGVja2VkID0gKCRjaGVja2VkID09ICd5 ZXMnKTsKCX0KCglyZXR1cm4gJzxpbnB1dCB2YWx1ZT0iJy4kaWQuJyIgdHlwZT0icmFkaW8i IGlkPSInLiRpZC4nIiBjbGFzcz0iJy4kZm5hbWUuJyIgbmFtZT0iJy4kZm5hbWUuJyInLgoJ CSggJGlzX2NoZWNrZWQgPyAnIGNoZWNrZWQ9ImNoZWNrZWQiIC8+JyA6ICcgLz4nKS4kYnJl YWsuCgkJJzxsYWJlbCBmb3I9IicuJGlkLiciIGNsYXNzPSInLiRmbmFtZS4nIj4nLiRsYWJl bC4nPC9sYWJlbD4nOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zZW5kX2FydGljbGUoJGF0 dHMpCnsKCWlmICghaXNzZXQoJF9SRVFVRVNUWyd6ZW1fY29udGFjdF9zZW5kX2FydGljbGUn XSkpIHsKCQkkbGlua3RleHQgPSAoZW1wdHkoJGF0dHNbJ2xpbmt0ZXh0J10pKSA/ICdzZW5k IGFydGljbGUnIDogJGF0dHNbJ2xpbmt0ZXh0J107CgkJJGpvaW4gPSAoZW1wdHkoJF9TRVJW RVJbJ1FVRVJZX1NUUklORyddKSkgPyAnPycgOiAnJmFtcDsnOwoJCSRocmVmID0gJF9TRVJW RVJbJ1JFUVVFU1RfVVJJJ10uJGpvaW4uJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZT15ZXMn OwoJCXJldHVybiAnPGEgaHJlZj0iJy4kaHJlZi4nIj4nLiRsaW5rdGV4dC4nPC9hPic7Cgl9 CglyZXR1cm47Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3N1Ym1pdCgkYXR0cywgJHRoaW5n KQp7CglleHRyYWN0KGxBdHRzKGFycmF5KAoJCSdidXR0b24nCT0+ICdubycsCgkJJ2xhYmVs JwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnc2VuZCcpCgkpLCAkYXR0cykpOwoKCWlmICgkYnV0 dG9uID09ICd5ZXMnIG9yIHN0cmxlbigkdGhpbmcpKQoJewoJCXJldHVybiAnPGJ1dHRvbiB0 eXBlPSJzdWJtaXQiIGNsYXNzPSJ6ZW1TdWJtaXQiIG5hbWU9InplbV9jb250YWN0X3N1Ym1p dCIgdmFsdWU9IicuJGxhYmVsLiciPicuKCR0aGluZyA/IHRyaW0ocGFyc2UoJHRoaW5nKSkg OiAkbGFiZWwpLic8L2J1dHRvbj4nOwoJfQoJZWxzZQoJewoJCXJldHVybiAnPGlucHV0IHR5 cGU9InN1Ym1pdCIgY2xhc3M9InplbVN1Ym1pdCIgbmFtZT0iemVtX2NvbnRhY3Rfc3VibWl0 IiB2YWx1ZT0iJy4kbGFiZWwuJyIgLz4nOwoJfQp9CgpjbGFzcyB6ZW1jb250YWN0X2V2YWx1 YXRpb24KewoJdmFyICRzdGF0dXM7CgoJZnVuY3Rpb24gemVtY29udGFjdF9ldmFsdWF0aW9u KCkgewoJCSR0aGlzLT5zdGF0dXMgPSAwOwoJfQoKCWZ1bmN0aW9uIGFkZF96ZW1jb250YWN0 X3N0YXR1cygkY2hlY2spIHsKCQkkdGhpcy0+c3RhdHVzID0gJGNoZWNrOwoJfQoKCWZ1bmN0 aW9uIGdldF96ZW1jb250YWN0X3N0YXR1cygpIHsKCQlyZXR1cm4gJHRoaXMtPnN0YXR1czsK CX0KfQoKZnVuY3Rpb24gJmdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpCnsKCXN0YXRpYyAk aW5zdGFuY2U7CgoJaWYoIWlzc2V0KCRpbnN0YW5jZSkpIHsKCQkkaW5zdGFuY2UgPSBuZXcg emVtY29udGFjdF9ldmFsdWF0aW9uKCk7Cgl9CglyZXR1cm4gJGluc3RhbmNlOwp9CgpmdW5j dGlvbiB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCkKewoJJGxhYmVsID0gdHJpbSgk bGFiZWwpOwoJaWYgKHN0cmxlbigkbGFiZWwpID09IDApIHJldHVybiAnaW52YWxpZCc7Cglp ZiAoc3RybGVuKCRsYWJlbCkgPD0gMzIgYW5kIHByZWdfbWF0Y2goJy9eW2EtekEtWl1bQS1a YS16MC05Ol8uLV0qJC8nLCAkbGFiZWwpKSByZXR1cm4gJGxhYmVsOwoJZWxzZSByZXR1cm4g J3EnLm1kNSgkbGFiZWwpOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9tYWlsaGVhZGVyKCRz dHJpbmcsICR0eXBlKQp7CglnbG9iYWwgJHByZWZzOwoJaWYgKCFzdHJzdHIoJHN0cmluZywn PT8nKSBhbmQgIXByZWdfbWF0Y2goJy9bXHgwMC1ceDFGXHg3Ri1ceEZGXS8nLCAkc3RyaW5n KSkgewoJCWlmICgicGhyYXNlIiA9PSAkdHlwZSkgewoJCQlpZiAocHJlZ19tYXRjaCgnL1td WygpPD5ALDs6Ii5ceDVDXS8nLCAkc3RyaW5nKSkgewoJCQkJJHN0cmluZyA9ICciJy4gc3Ry dHIoJHN0cmluZywgYXJyYXkoIlxcIiA9PiAiXFxcXCIsICciJyA9PiAnXCInKSkgLiAnIic7 CgkJCX0KCQl9CgkJZWxzZWlmICgidGV4dCIgIT0gJHR5cGUpIHsKCQkJdHJpZ2dlcl9lcnJv cignVW5rbm93biBlbmNvZGVfbWFpbGhlYWRlciB0eXBlJywgRV9VU0VSX1dBUk5JTkcpOwoJ CX0KCQlyZXR1cm4gJHN0cmluZzsKCX0KCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWlsY2hh cnNldCddKSB7CgkJJHN0YXJ0ID0gJz0/SVNPLTg4NTktMT9CPyc7CgkJJHBjcmUgID0gJy8u ezEsNDJ9L3MnOwoJfQoJZWxzZSB7CgkJJHN0YXJ0ID0gJz0/VVRGLTg/Qj8nOwoJCSRwY3Jl ICA9ICcvLnsxLDQ1fSg/PVtceDAwLVx4N0ZceEMwLVx4RkZdfCQpL3MnOwoJfQoJJGVuZCA9 ICc/PSc7Cgkkc2VwID0gaXNfd2luZG93cygpID8gIlxyXG4iIDogIlxuIjsKCXByZWdfbWF0 Y2hfYWxsKCRwY3JlLCAkc3RyaW5nLCAkbWF0Y2hlcyk7CglyZXR1cm4gJHN0YXJ0IC4gam9p bigkZW5kLiRzZXAuJyAnLiRzdGFydCwgYXJyYXlfbWFwKCdiYXNlNjRfZW5jb2RlJywkbWF0 Y2hlc1swXSkpIC4gJGVuZDsKfQoiO3M6MzoibWQ1IjtzOjMyOiJhM2ExYTExODkzMjY2MjFm OTE5ZjY5NWFkOTUxOTFjZCI7fQ==