<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>ModuleGenerator</name>
	<version>1.9.2</version>
  <mincmsversion>1.9.4</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5Nb2R1bGUgZ2VuZXJhdG9yIGxldHMgeW91IGNyZWF0ZSBhIGxpc3QgdGhlIG1vZHVsZXMgYXMgTmV3cywgUHJvZHVjdHMgYXRjLiBJbmRpdmlkdWFsIG1vZHVsZXMsIHlvdSBjYW4gbGluayBiZXR3ZWVuIHRoZW0uICBZb3UgY2FuIGNyZWF0ZSBhIG1vZHVsZSBQZW9wbGUsIEdlbmRlciBhbmQgVHlwZSBvZiBlbXBsb3ltZW50IGFuZCBsaW5rIGJldHdlbiB0aGVtLjwvcD4NCjxwPkVhY2ggbW9kdWxlIGluY2x1ZGVzIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZWQgY2F0ZWdvcmllcywgY3VzdG9tIGZpZWxkcyAgYW5kIGVkaXRlZCBhIG51bWJlciBvZiBzZXR0aW5ncy48L3A+DQo8cD5Zb3UgY2FuIHVzZSB0aGUgbGlzdCB0ZW1wbGF0ZXMgLCBjYXRlZ29yaWVzIHRlbXBsYXRlcyAsIGZpbHRlciB0ZW1wbGF0ZXMsIG9yIGRldGFpbCB0ZW1wbGF0ZXMgYXMgaXQgYWxyZWFkeSBrbm93biBtb2R1bGVzIGZyb20gTmV3cywgUHJvZHVjdHMgZXRjLjwvcD48aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPkNHRXh0ZW5zaW9ucyA9Jmd0OyAxLjIzPC9saT48bGk+RXh0ZW5kZWRUb29scyA9Jmd0OyAxLjEuMTwvbGk+PGxpPkNHU21hcnRJbWFnZSA9Jmd0OyAxLjU8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBAa3V6bWFueSAmbHQ7emRlbm9Aa3V6bWFueS5iaXomZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS45LjI8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+DQo8bGk+VmVyc2lvbiAxLjkgSmFudWFyLCAyMDEyIA0KPGJyIC8+YWRkIGNhdGVnb3J5IGN1c3RvbSBmaWVsZHMsIG1vdmVkIHRvIHRoZWlyIG93biBzZWN0aW9uLg0KPGJyIC8+IHVwZ3JhZGUgc2NyaXB0IGNvbXBhdGlibGUgd2l0aCAxLjguMSB2ZXJzaW9uDQo8YnIgLz4gZml4IHNvbWUgaXNzdWVzDQo8L2xpPg0KPGxpPlZlcnNpb24gMS44LjEgSmFudWFyLCAyMDEyIA0KPGJyIC8+YWRkIG9wdGlvbiBmb3IgcHJldmlldyBpbiBhZG1pbg0KPGJyIC8+YWRkIHByZXZpZXcgaWNvbiBpbiBhZG1pbg0KPGJyIC8+YWRkIG9wdGlvbiBmb3IgY29weSBpdGVtDQo8YnIgLz5maXggYXV0bG9hZCBjbGFzcyBnZW5lcmF0b3Jfb3B0cyBpbiBhZG1pbg0KPC9saT4NCjxsaT5WZXJzaW9uIDEuOCBKYW51YXIsIDIwMTEgLSAgaXRlbSBwcmV2aWV3LCBidWcgZml4ZXM8L2xpPg0KPGxpPlZlcnNpb24gMS43IE5vdmVtYmVyLCAyMDExIC0gIGluaXQgcmVsZWFzZTwvbGk+DQo8L3VsPjxiciAvPg==]]></about>
	<description><![CDATA[This module add multilanguage solutions to you CMS Made Simple]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.23</requiredversion>
	</requires>
	<requires>
	  <requiredname>ExtendedTools</requiredname>
	  <requiredversion>1.1.1</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGSmartImage</requiredname>
	  <requiredversion>1.5</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_deletemodule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIyBNb2R1bGU6IE11bHRpbGFuZ3VhZ2UgQ01TDQojIFpkZW5vIEt1em1hbnkgKHpkZW5vQGt1em1hbnkuYml6KSBrdXptYW55LmJpeg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA5IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc3NldCgkZ0NtcykpDQogICAgZXhpdDsNCg0KJG5hbWUgPSAnJzsNCmlmIChpc1NldCgkcGFyYW1zWyJuYW1lIl0pKSB7DQogICAgJG5hbWUgPSAkcGFyYW1zWyJuYW1lIl07DQp9DQoNCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoNCg0KaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgew0KICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsNCiAgICByZXR1cm47DQp9DQoNCmlmIChlbXB0eSgkbmFtZSkpDQogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQppZiAoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRuYW1lKSkgew0KICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfdW5paW5zdGFsX21vZHVsZScpKTsNCiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICJnZW5lcmF0b3IiKTsNCn0NCg0KZ2VuZXJhdG9yX29wdHM6OmRlbGV0ZSgkbmFtZSk7DQpjZ2VfZGlyOjpyZWN1cnNpdmVfcm1kaXIoY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwgJ21vZHVsZXMnLCAkbmFtZSkpOw0KDQokdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnaW5mb19zdWNjZXNzJykpOw0KJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQo/Pg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_editmodule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIyBNb2R1bGU6IE11bHRpbGFuZ3VhZ2UgQ01TDQojIFpkZW5vIEt1em1hbnkgKHpkZW5vQGt1em1hbnkuYml6KSBrdXptYW55LmJpeg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA5IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc3NldCgkZ0NtcykpDQogICAgZXhpdDsNCg0KJG5hbWUgPSAnJzsNCiRhdHRhY2ggPSAnJzsNCg0KaWYgKGlzU2V0KCRwYXJhbXNbIm5hbWUiXSkpIHsNCiAgICAkbmFtZSA9ICRwYXJhbXNbIm5hbWUiXTsNCn0NCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0KDQppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7DQogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KICAgIHJldHVybjsNCn0NCg0KDQoNCmlmIChlbXB0eSgkbmFtZSkpIHsNCiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICJnZW5lcmF0b3IiKTsNCn0NCg0KJG1vZHVsZSA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlKCRuYW1lKTsNCmlmICghJG1vZHVsZSkgew0KICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgImdlbmVyYXRvciIpOw0KfQ0KDQppZiAoaXNTZXQoJHBhcmFtc1sic3VibWl0Il0pKSB7DQoNCiAgICBpZiAoaXNTZXQoJHBhcmFtc1siYXR0YWNoIl0pICYmIGlzX2FycmF5KCRwYXJhbXNbImF0dGFjaCJdKSkgew0KICAgICAgICAkYXR0YWNoID0gaW1wbG9kZSgnLCcsICRwYXJhbXNbImF0dGFjaCJdKTsNCiAgICB9DQogICAgDQogICAgJHVwZGF0ZSA9IGdlbmVyYXRvcl9vcHRzOjp1cGRhdGVhdHRhY2goJG5hbWUsICRhdHRhY2gpOw0KDQogICAgaWYgKCR1cGRhdGUpIHsNCiAgICAgICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ2luZm9fc3VjY2VzcycpKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2luZm9fZXJyb3InKSk7DQogICAgfQ0KICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgImdlbmVyYXRvciIpOw0KfQ0KDQoNCg0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRtaW5fZWRpdG1vZHVsZScsICRyZXR1cm5pZCwgJ3Bvc3QnLCAxLCAnJywgJycsYXJyYXkoJ25hbWUnID0+ICRtb2R1bGVbIm1vZHVsZV9uYW1lIl0pKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZW5hbWUnLCAkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdHRhY2gnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJ2F0dGFjaFtdJywgZ2VuZXJhdG9yX29wdHM6OmdldF9tb2R1bGVzX2xpc3QoKSwgKGVtcHR5KCRtb2R1bGVbImF0dGFjaCJdKSA/IGFycmF5KCkgOiBleHBsb2RlKCcsJywgJG1vZHVsZVsiYXR0YWNoIl0pKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsIGxhbmcoJ2NhbmNlbCcpKSk7DQoNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdG1vZHVsZS50cGwnKTsNCj8+DQoNCg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgTW9kdWxlOiBNb2R1bGUgR2VuZXJhdG9yCiMgWmRlbm8gS3V6bWFueSAoemRlbm9Aa3V6bWFueS5iaXopIGt1em1hbnkuYml6CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDkgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoKaWYgKCFpc3NldCgkZ0NtcykpCiAgICBleGl0OwoKJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwoKCmlmKGlzX2RpcmVjdG9yeV93cml0YWJsZSggJGNvbmZpZ1sncm9vdF9wYXRoJ10uRElSRUNUT1JZX1NFUEFSQVRPUi4nbW9kdWxlcycpKXsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ21vZHVsZV9kaXJfcGVybWlzc2lvbicpKTsKfQoKIyMgVEFCIEhFQURFUlMgZnJvbSBDR0UKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmlmICgkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgewogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdnZW5lcmF0b3InLCAkdGhpcy0+TGFuZygnZ2VuZXJhdG9yJykpOwp9CgplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgojCiNUaGUgY29udGVudCBvZiB0aGUgdGFicwojCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoKaWYgKCR0aGlzLT5DaGVja0FjY2VzcygpKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYignZ2VuZXJhdG9yJyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pIC4gJy9mdW5jdGlvbi5hZG1pbl9nZW5lcmF0b3IucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_admin_generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIyBNb2R1bGU6IE11bHRpbGFuZ3VhZ2UgQ01TDQojIFpkZW5vIEt1em1hbnkgKHpkZW5vQGt1em1hbnkuYml6KSBrdXptYW55LmJpeg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA5IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc3NldCgkZ0NtcykpDQogICAgZXhpdDsNCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0KDQppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7DQogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KICAgIHJldHVybjsNCn0NCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkgew0KICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgImdlbmVyYXRvciIpOw0KfQ0KDQokbmFtZSA9ICcnOw0KaWYgKGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkpIHsNCiAgICAkbmFtZSA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snbmFtZSddKTsNCn0NCg0KJGF0dGFjaCA9ICcnOw0KaWYgKGlzc2V0KCRwYXJhbXNbJ2F0dGFjaCddKSAmJiBpc19hcnJheSgkcGFyYW1zWydhdHRhY2gnXSkpIHsNCiAgICAkYXR0YWNoID0gaW1wbG9kZSgnLCcsICRwYXJhbXNbJ2F0dGFjaCddKTsNCn0NCg0KaWYgKGVtcHR5KCRuYW1lKSA9PSB0cnVlKSB7DQogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdtaXNzaW5ncmVxdWlyZWQnKSk7DQogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQp9DQoNCi8vY3JlYXRlIGNvcHkgZGlyDQppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKSB7DQogICAgLyoqDQogICAgICogVXNhZ2Ugb2YgdGhlIGNvcHkgZGlyZWN0b3J5IGNsYXNzDQogICAgICovDQogICAgJHNvdXJjZV9kaXIgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICR0aGlzLT5HZXROYW1lKCksICdNb2R1bGVMaWInLCAnc291cmNlJywgJ01vZHVsZUV4YW1wbGUnKTsNCiAgICAkZGVzdF9kaXIgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICRuYW1lKTsNCg0KICAgIGlmICghaXNTZXQoJHBhcmFtc1sib3dlcndyaXRlIl0pICYmIGlzX2RpcigkZGVzdF9kaXIpKSB7DQogICAgICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbW9kdWxlX2V4aXN0cycpKTsNCiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQogICAgfQ0KDQogICAgJGNwID0gbmV3IGNvcHlfZGlyKCk7DQoNCi8vIHNldCB0aGUgZGlyZWN0b3J5IHRvIGNvcHkNCiAgICBpZiAoISRjcC0+c2V0Q29weUZyb21EaXIoJHNvdXJjZV9kaXIpKSB7DQogICAgICAgIGRpZSgkY3AtPnZpZXdFcnJvcigpKTsNCiAgICB9DQoNCi8vIHNldCB0aGUgZGlyZWN0b3J5IHRvIGNvcHkgdG8NCg0KICAgIGlmICghJGNwLT5zZXRDb3B5VG9EaXIoJGRlc3RfZGlyKSkgew0KICAgICAgICBkaWUoJGNwLT52aWV3RXJyb3IoKSk7DQogICAgfQ0KDQogICAgJGNwLT5jb3B5U3ViRm9sZGVycyh0cnVlKTsgLy8gaW5jbHVkZSBzdWIgZm9sZGVycyB3aGVuIGNvcHlpbmcNCiAgICAkY3AtPm92ZXJXcml0ZUZpbGVzKHRydWUpOyAvLyBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMNCg0KICAgICRjcC0+c2V0Q29weUNhbGxiYWNrKCd1cGRhdGVDb3B5UHJvZ3Jlc3MnKTsNCg0KICAgIGlmICghJGNwLT5jcmVhdGVDb3B5KHRydWUpKSB7IC8vIGNyZWF0ZSBhIGNvcHkgYW5kIHJlY3Vyc2UgdGhyb3VnaCBzdWIgZm9sZGVycw0KICAgICAgICBkaWUoJGNwLT52aWV3RXJyb3IoKSk7DQogICAgfQ0KDQogICAgLy9yZW5tYWUgZmlsZSBjbGFzcw0KICAgICRmaW5hbF9jbGFzcyA9IGNtc19qb2luX3BhdGgoJGRlc3RfZGlyLCAkbmFtZSAuICcubW9kdWxlLnBocCcpOw0KICAgIGlmIChpc19maWxlKCRmaW5hbF9jbGFzcykpDQogICAgICAgIHVubGluaygkZmluYWxfY2xhc3MpOw0KICAgICRyZW5hbWUgPSByZW5hbWUoY21zX2pvaW5fcGF0aCgkZGVzdF9kaXIsICdNb2R1bGVFeGFtcGxlLm1vZHVsZS5waHAnKSwgJGZpbmFsX2NsYXNzKTsNCg0KICAgIGlmICghJHJlbmFtZSkgew0KICAgICAgICBkaWUoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlbmFtZV9kaXInKSk7DQogICAgfQ0KDQogICAgLy8gIHJld3JpdGUgbW9kdWxlIGNvbnRlbnQNCiAgICAkZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkZmluYWxfY2xhc3MpOw0KICAgIGlmICgkZGF0YSkgew0KICAgICAgICAkZGF0YSA9IHN0cl9yZXBsYWNlKCdNb2R1bGVFeGFtcGxlJywgJG5hbWUsICRkYXRhKTsNCiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGZpbmFsX2NsYXNzLCAkZGF0YSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgZGllKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXBsYWNlX3N0cmluZycpKTsNCiAgICB9DQogICAgDQogICAgLy8gY3JlYXRlIGRpcg0KICAgIGNnZV9kaXI6Om1rZGlycihjbXNfam9pbl9wYXRoKCRjb25maWdbInVwbG9hZHNfcGF0aCJdLCBzdHJ0b2xvd2VyKCRuYW1lKSkpOw0KICAgIGlmICghaXNTZXQoJHBhcmFtc1sib3dlcndyaXRlIl0pKQ0KICAgICAgICBnZW5lcmF0b3Jfb3B0czo6aW5zZXJ0KCRuYW1lLCAkYXR0YWNoKTsNCiAgICBlbHNlDQogICAgICAgIGdlbmVyYXRvcl9vcHRzOjp1cGRhdGVkYXRlKCRuYW1lKTsNCg0KICAgIC8vQCR0aGlzLT5TZW5kRXZlbnQoJ0xhbmdFZGl0ZWQnLCBhcnJheSgnY29tcGlkJyA9PiAkY2lkKSk7DQogICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ2luZm9fc3VjY2VzcycpKTsNCiAgICAvL3JlZGlyZWN0DQogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQp9DQo/Pg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgTW9kdWxlOiBNdWx0aWxhbmd1YWdlIENNUwojIFpkZW5vIEt1em1hbnkgKHpkZW5vQGt1em1hbnkuYml6KSBrdXptYW55LmJpegojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA5IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzc2V0KCRnQ21zKSkKICAgIGV4aXQ7CgokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOwoKJGVudHJ5YXJyYXkgPSBhcnJheSgpOwokbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOwpmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7CiAgICAkb25lcm93ID0gY2dlX2FycmF5Ojp0b19vYmplY3QoJG1vZHVsZSk7CiAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRtb2R1bGVbIm1vZHVsZV9uYW1lIl0pOwogICAgaWYgKCRtb2QpIHsKICAgICAgICAkb25lcm93LT5tb2R1bGVsaW5rID0gJG1vZC0+Q3JlYXRlSW1hZ2VMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJG1vZC0+R2V0TmFtZSgpLCAnaWNvbnMvdG9wZmlsZXMvc2hvcnRjdXQuZ2lmJywgYXJyYXkoKSwgJycsICcnLCBmYWxzZSk7CiAgICB9CiAgICAkb25lcm93LT5hdHRhY2htb2R1bGVzID0gZ2VuZXJhdG9yX29wdHM6OmdldF9hdHRhY2hfbW9kdWxlcygkbW9kdWxlWyJhdHRhY2giXSk7CiAgICAkb25lcm93LT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXRtb2R1bGUnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnbmFtZScgPT4gJG1vZHVsZVsnbW9kdWxlX25hbWUnXSkpOwogICAgJG9uZXJvdy0+cmVnZW5lcmF0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkb19hZG1pbl9nZW5lcmF0b3InLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9leHBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JlZ2VuZXJhdGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnbmFtZScgPT4gJG1vZHVsZVsnbW9kdWxlX25hbWUnXSwgJ293ZXJ3cml0ZScgPT4gMSwgJ3N1Ym1pdCcgPT4gMSkpOwogICAgJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2RlbGV0ZW1vZHVsZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBsYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnbmFtZScgPT4gJG1vZHVsZVsnbW9kdWxlX25hbWUnXSksICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykpOwogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJGVudHJ5YXJyYXkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7CgoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RvX2FkbWluX2dlbmVyYXRvcicsICRyZXR1cm5pZCwgJ3Bvc3QnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCiR0aGlzLT5zbWFydHktPmFzc2lnbignbmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbmFtZScsICcnLCA1MCwgMjU1KSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignYXR0YWNoJywgJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICdhdHRhY2hbXScsIGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlc19saXN0KCkpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZ2VuZXJhdG9yLnRwbCcpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jquery.tablednd_0_5.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFRhYmxlRG5EIHBsdWctaW4gZm9yIEpRdWVyeSwgYWxsb3dzIHlvdSB0byBkcmFnIGFuZCBkcm9wIHRhYmxlIHJvd3MKICogWW91IGNhbiBzZXQgdXAgdmFyaW91cyBvcHRpb25zIHRvIGNvbnRyb2wgaG93IHRoZSBzeXN0ZW0gd2lsbCB3b3JrCiAqIENvcHlyaWdodCAoYykgRGVuaXMgSG93bGV0dCA8ZGVuaXNoQGlzb2NyYS5jb20+CiAqIExpY2Vuc2VkIGxpa2UgalF1ZXJ5LCBzZWUgaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9MaWNlbnNlLgogKgogKiBDb25maWd1cmF0aW9uIG9wdGlvbnM6CiAqIAogKiBvbkRyYWdTdHlsZQogKiAgICAgVGhpcyBpcyB0aGUgc3R5bGUgdGhhdCBpcyBhc3NpZ25lZCB0byB0aGUgcm93IGR1cmluZyBkcmFnLiBUaGVyZSBhcmUgbGltaXRhdGlvbnMgdG8gdGhlIHN0eWxlcyB0aGF0IGNhbiBiZQogKiAgICAgYXNzb2NpYXRlZCB3aXRoIGEgcm93IChzdWNoIGFzIHlvdSBjYW4ndCBhc3NpZ24gYSBib3JkZXItLXdlbGwgeW91IGNhbiwgYnV0IGl0IHdvbid0IGJlCiAqICAgICBkaXNwbGF5ZWQpLiAoU28gaW5zdGVhZCBjb25zaWRlciB1c2luZyBvbkRyYWdDbGFzcy4pIFRoZSBDU1Mgc3R5bGUgdG8gYXBwbHkgaXMgc3BlY2lmaWVkIGFzCiAqICAgICBhIG1hcCAoYXMgdXNlZCBpbiB0aGUgalF1ZXJ5IGNzcyguLi4pIGZ1bmN0aW9uKS4KICogb25Ecm9wU3R5bGUKICogICAgIFRoaXMgaXMgdGhlIHN0eWxlIHRoYXQgaXMgYXNzaWduZWQgdG8gdGhlIHJvdyB3aGVuIGl0IGlzIGRyb3BwZWQuIEFzIGZvciBvbkRyYWdTdHlsZSwgdGhlcmUgYXJlIGxpbWl0YXRpb25zCiAqICAgICB0byB3aGF0IHlvdSBjYW4gZG8uIEFsc28gdGhpcyByZXBsYWNlcyB0aGUgb3JpZ2luYWwgc3R5bGUsIHNvIGFnYWluIGNvbnNpZGVyIHVzaW5nIG9uRHJhZ0NsYXNzIHdoaWNoCiAqICAgICBpcyBzaW1wbHkgYWRkZWQgYW5kIHRoZW4gcmVtb3ZlZCBvbiBkcm9wLgogKiBvbkRyYWdDbGFzcwogKiAgICAgVGhpcyBjbGFzcyBpcyBhZGRlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBkcmFnIGFuZCB0aGVuIHJlbW92ZWQgd2hlbiB0aGUgcm93IGlzIGRyb3BwZWQuIEl0IGlzIG1vcmUKICogICAgIGZsZXhpYmxlIHRoYW4gdXNpbmcgb25EcmFnU3R5bGUgc2luY2UgaXQgY2FuIGJlIGluaGVyaXRlZCBieSB0aGUgcm93IGNlbGxzIGFuZCBvdGhlciBjb250ZW50LiBUaGUgZGVmYXVsdAogKiAgICAgaXMgY2xhc3MgaXMgdERuRF93aGlsZURyYWcuIFNvIHRvIHVzZSB0aGUgZGVmYXVsdCwgc2ltcGx5IGN1c3RvbWlzZSB0aGlzIENTUyBjbGFzcyBpbiB5b3VyCiAqICAgICBzdHlsZXNoZWV0LgogKiBvbkRyb3AKICogICAgIFBhc3MgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHJvdyBpcyBkcm9wcGVkLiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUgdGFibGUKICogICAgIGFuZCB0aGUgcm93IHRoYXQgd2FzIGRyb3BwZWQuIFlvdSBjYW4gd29yayBvdXQgdGhlIG5ldyBvcmRlciBvZiB0aGUgcm93cyBieSB1c2luZwogKiAgICAgdGFibGUucm93cy4KICogb25EcmFnU3RhcnQKICogICAgIFBhc3MgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHVzZXIgc3RhcnRzIGRyYWdnaW5nLiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUKICogICAgIHRhYmxlIGFuZCB0aGUgcm93IHdoaWNoIHRoZSB1c2VyIGhhcyBzdGFydGVkIHRvIGRyYWcuCiAqIG9uQWxsb3dEcm9wCiAqICAgICBQYXNzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBhcyBhIHJvdyBpcyBvdmVyIGFub3RoZXIgcm93LiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCBhbGxvdyAKICogICAgIGRyb3BwaW5nIG9uIHRoYXQgcm93LCBvdGhlcndpc2Ugbm90LiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUgZHJhZ2dlZCByb3cgYW5kIHRoZSByb3cgdW5kZXIKICogICAgIHRoZSBjdXJzb3IuIEl0IHJldHVybnMgYSBib29sZWFuOiB0cnVlIGFsbG93cyB0aGUgZHJvcCwgZmFsc2UgZG9lc24ndCBhbGxvdyBpdC4KICogc2Nyb2xsQW1vdW50CiAqICAgICBUaGlzIGlzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIHNjcm9sbCBpZiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2UgY3Vyc29yIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZQogKiAgICAgd2luZG93LiBUaGUgcGFnZSBzaG91bGQgYXV0b21hdGljYWxseSBzY3JvbGwgdXAgb3IgZG93biBhcyBhcHByb3ByaWF0ZSAodGVzdGVkIGluIElFNiwgSUU3LCBTYWZhcmksIEZGMiwKICogICAgIEZGMyBiZXRhCiAqIGRyYWdIYW5kbGUKICogICAgIFRoaXMgaXMgdGhlIG5hbWUgb2YgYSBjbGFzcyB0aGF0IHlvdSBhc3NpZ24gdG8gb25lIG9yIG1vcmUgY2VsbHMgaW4gZWFjaCByb3cgdGhhdCBpcyBkcmFnZ2FibGUuIElmIHlvdQogKiAgICAgc3BlY2lmeSB0aGlzIGNsYXNzLCB0aGVuIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgY3Vyc29yOiBtb3ZlIGluIHRoZSBDU1MgYW5kIG9ubHkgdGhlc2UgY2VsbHMKICogICAgIHdpbGwgaGF2ZSB0aGUgZHJhZyBiZWhhdmlvdXIuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIGRyYWdIYW5kbGUsIHRoZW4geW91IGdldCB0aGUgb2xkIGJlaGF2aW91ciB3aGVyZQogKiAgICAgdGhlIHdob2xlIHJvdyBpcyBkcmFnZ2FibGUuCiAqIAogKiBPdGhlciB3YXlzIHRvIGNvbnRyb2wgYmVoYXZpb3VyOgogKgogKiBBZGQgY2xhc3M9Im5vZHJvcCIgdG8gYW55IHJvd3MgZm9yIHdoaWNoIHlvdSBkb24ndCB3YW50IHRvIGFsbG93IGRyb3BwaW5nLCBhbmQgY2xhc3M9Im5vZHJhZyIgdG8gYW55IHJvd3MKICogdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBiZSBkcmFnZ2FibGUuCiAqCiAqIEluc2lkZSB0aGUgb25Ecm9wIG1ldGhvZCB5b3UgY2FuIGFsc28gY2FsbCAkLnRhYmxlRG5ELnNlcmlhbGl6ZSgpIHRoaXMgcmV0dXJucyBhIHN0cmluZyBvZiB0aGUgZm9ybQogKiA8dGFibGVJRD5bXT08cm93SUQxPiY8dGFibGVJRD5bXT08cm93SUQyPiBzbyB0aGF0IHlvdSBjYW4gc2VuZCB0aGlzIGJhY2sgdG8gdGhlIHNlcnZlci4gVGhlIHRhYmxlIG11c3QgaGF2ZQogKiBhbiBJRCBhcyBtdXN0IGFsbCB0aGUgcm93cy4KICoKICogT3RoZXIgbWV0aG9kczoKICoKICogJCgiLi4uIikudGFibGVEbkRVcGRhdGUoKSAKICogV2lsbCB1cGRhdGUgYWxsIHRoZSBtYXRjaGluZyB0YWJsZXMsIHRoYXQgaXMgaXQgd2lsbCByZWFwcGx5IHRoZSBtb3VzZWRvd24gbWV0aG9kIHRvIHRoZSByb3dzIChvciBoYW5kbGUgY2VsbHMpLgogKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSB1cGRhdGVkIHRoZSB0YWJsZSByb3dzIHVzaW5nIEFqYXggYW5kIHlvdSB3YW50IHRvIG1ha2UgdGhlIHRhYmxlIGRyYWdnYWJsZSBhZ2Fpbi4KICogVGhlIHRhYmxlIG1haW50YWlucyB0aGUgb3JpZ2luYWwgY29uZmlndXJhdGlvbiAoc28geW91IGRvbid0IGhhdmUgdG8gc3BlY2lmeSBpdCBhZ2FpbikuCiAqCiAqICQoIi4uLiIpLnRhYmxlRG5EU2VyaWFsaXplKCkKICogV2lsbCBzZXJpYWxpemUgYW5kIHJldHVybiB0aGUgc2VyaWFsaXplZCBzdHJpbmcgYXMgYWJvdmUsIGJ1dCBmb3IgZWFjaCBvZiB0aGUgbWF0Y2hpbmcgdGFibGVzLS1zbyBpdCBjYW4gYmUKICogY2FsbGVkIGZyb20gYW55d2hlcmUgYW5kIGlzbid0IGRlcGVuZGVudCBvbiB0aGUgY3VycmVudFRhYmxlIGJlaW5nIHNldCB1cCBjb3JyZWN0bHkgYmVmb3JlIGNhbGxpbmcKICoKICogS25vd24gcHJvYmxlbXM6CiAqIC0gQXV0by1zY29sbCBoYXMgc29tZSBwcm9ibGVtcyB3aXRoIElFNyAgKGl0IHNjcm9sbHMgZXZlbiB3aGVuIGl0IHNob3VsZG4ndCksIHdvcmstYXJvdW5kOiBzZXQgc2Nyb2xsQW1vdW50IHRvIDAKICogCiAqIFZlcnNpb24gMC4yOiAyMDA4LTAyLTIwIEZpcnN0IHB1YmxpYyB2ZXJzaW9uCiAqIFZlcnNpb24gMC4zOiAyMDA4LTAyLTA3IEFkZGVkIG9uRHJhZ1N0YXJ0IG9wdGlvbgogKiAgICAgICAgICAgICAgICAgICAgICAgICBNYWRlIHRoZSBzY3JvbGwgYW1vdW50IGNvbmZpZ3VyYWJsZSAoZGVmYXVsdCBpcyA1IGFzIGJlZm9yZSkKICogVmVyc2lvbiAwLjQ6IDIwMDgtMDMtMTUgQ2hhbmdlZCB0aGUgbm9EcmFnL25vRHJvcCBhdHRyaWJ1dGVzIHRvIG5vZHJhZy9ub2Ryb3AgY2xhc3NlcwogKiAgICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBvbkFsbG93RHJvcCB0byBjb250cm9sIGRyb3BwaW5nCiAqICAgICAgICAgICAgICAgICAgICAgICAgIEZpeGVkIGEgYnVnIHdoaWNoIG1lYW50IHRoYXQgeW91IGNvdWxkbid0IHNldCB0aGUgc2Nyb2xsIGFtb3VudCBpbiBib3RoIGRpcmVjdGlvbnMKICogICAgICAgICAgICAgICAgICAgICAgICAgQWRkZWQgc2VyaWFsaXplIG1ldGhvZAogKiBWZXJzaW9uIDAuNTogMjAwOC0wNS0xNiBDaGFuZ2VkIHNvIHRoYXQgaWYgeW91IHNwZWNpZnkgYSBkcmFnSGFuZGxlIGNsYXNzIGl0IGRvZXNuJ3QgbWFrZSB0aGUgd2hvbGUgcm93CiAqICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZQogKiAgICAgICAgICAgICAgICAgICAgICAgICBJbXByb3ZlZCB0aGUgc2VyaWFsaXplIG1ldGhvZCB0byB1c2UgYSBkZWZhdWx0IChhbmQgc2V0dGFibGUpIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICogICAgICAgICAgICAgICAgICAgICAgICAgQWRkZWQgdGFibGVEbkR1cGF0ZSgpIGFuZCB0YWJsZURuRFNlcmlhbGl6ZSgpIHRvIGJlIGNhbGxlZCB3aGVuIHlvdSBhcmUgb3V0c2lkZSB0aGUgdGFibGUKICovCmpRdWVyeS50YWJsZURuRCA9IHsKICAgIC8qKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnQgdGFibGUgYmVpbmcgZHJhZ2dlZCAqLwogICAgY3VycmVudFRhYmxlIDogbnVsbCwKICAgIC8qKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnQgZHJhZyBvYmplY3QgaWYgYW55ICovCiAgICBkcmFnT2JqZWN0OiBudWxsLAogICAgLyoqIFRoZSBjdXJyZW50IG1vdXNlIG9mZnNldCAqLwogICAgbW91c2VPZmZzZXQ6IG51bGwsCiAgICAvKiogUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZSBvZiBZIHNvIHRoYXQgd2UgZG9uJ3QgZG8gdG9vIG11Y2ggcHJvY2Vzc2luZyAqLwogICAgb2xkWTogMCwKCiAgICAvKiogQWN0dWFsbHkgYnVpbGQgdGhlIHN0cnVjdHVyZSAqLwogICAgYnVpbGQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBTZXQgdXAgdGhlIGRlZmF1bHRzIGlmIGFueQoKICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIFRoaXMgaXMgYm91bmQgdG8gZWFjaCBtYXRjaGluZyB0YWJsZSwgc2V0IHVwIHRoZSBkZWZhdWx0cyBhbmQgb3ZlcnJpZGUgd2l0aCB1c2VyIG9wdGlvbnMKICAgICAgICAgICAgdGhpcy50YWJsZURuRENvbmZpZyA9IGpRdWVyeS5leHRlbmQoewogICAgICAgICAgICAgICAgb25EcmFnU3R5bGU6IG51bGwsCiAgICAgICAgICAgICAgICBvbkRyb3BTdHlsZTogbnVsbCwKCQkJCS8vIEFkZCBpbiB0aGUgZGVmYXVsdCBjbGFzcyBmb3Igd2hpbGVEcmFnZ2luZwoJCQkJb25EcmFnQ2xhc3M6ICJ0RG5EX3doaWxlRHJhZyIsCiAgICAgICAgICAgICAgICBvbkRyb3A6IG51bGwsCiAgICAgICAgICAgICAgICBvbkRyYWdTdGFydDogbnVsbCwKICAgICAgICAgICAgICAgIHNjcm9sbEFtb3VudDogNSwKCQkJCXNlcmlhbGl6ZVJlZ2V4cDogL1teXC1dKiQvLCAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIHVzZSB0byB0cmltIHJvdyBJRHMKCQkJCXNlcmlhbGl6ZVBhcmFtTmFtZTogbnVsbCwgLy8gSWYgeW91IHdhbnQgdG8gc3BlY2lmeSBhbm90aGVyIHBhcmFtZXRlciBuYW1lIGluc3RlYWQgb2YgdGhlIHRhYmxlIElECiAgICAgICAgICAgICAgICBkcmFnSGFuZGxlOiBudWxsIC8vIElmIHlvdSBnaXZlIHRoZSBuYW1lIG9mIGEgY2xhc3MgaGVyZSwgdGhlbiBvbmx5IENlbGxzIHdpdGggdGhpcyBjbGFzcyB3aWxsIGJlIGRyYWdnYWJsZQogICAgICAgICAgICB9LCBvcHRpb25zIHx8IHt9KTsKICAgICAgICAgICAgLy8gTm93IG1ha2UgdGhlIHJvd3MgZHJhZ2dhYmxlCiAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBjYXB0dXJlIHRoZSBtb3VzZSB1cCBhbmQgbW91c2UgbW92ZSBldmVudAogICAgICAgIC8vIFdlIGNhbiB1c2UgYmluZCBzbyB0aGF0IHdlIGRvbid0IGludGVyZmVyZSB3aXRoIG90aGVyIGV2ZW50IGhhbmRsZXJzCiAgICAgICAgalF1ZXJ5KGRvY3VtZW50KQogICAgICAgICAgICAuYmluZCgnbW91c2Vtb3ZlJywgalF1ZXJ5LnRhYmxlRG5ELm1vdXNlbW92ZSkKICAgICAgICAgICAgLmJpbmQoJ21vdXNldXAnLCBqUXVlcnkudGFibGVEbkQubW91c2V1cCk7CgogICAgICAgIC8vIERvbid0IGJyZWFrIHRoZSBjaGFpbgogICAgICAgIHJldHVybiB0aGlzOwogICAgfSwKCiAgICAvKiogVGhpcyBmdW5jdGlvbiBtYWtlcyBhbGwgdGhlIHJvd3Mgb24gdGhlIHRhYmxlIGRyYWdnYWJsZSBhcGFydCBmcm9tIHRob3NlIG1hcmtlZCBhcyAiTm9EcmFnIiAqLwogICAgbWFrZURyYWdnYWJsZTogZnVuY3Rpb24odGFibGUpIHsKICAgICAgICB2YXIgY29uZmlnID0gdGFibGUudGFibGVEbkRDb25maWc7CgkJaWYgKHRhYmxlLnRhYmxlRG5EQ29uZmlnLmRyYWdIYW5kbGUpIHsKCQkJLy8gV2Ugb25seSBuZWVkIHRvIGFkZCB0aGUgZXZlbnQgdG8gdGhlIHNwZWNpZmllZCBjZWxscwoJCQl2YXIgY2VsbHMgPSBqUXVlcnkoInRkLiIrdGFibGUudGFibGVEbkRDb25maWcuZHJhZ0hhbmRsZSwgdGFibGUpOwoJCQljZWxscy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJLy8gVGhlIGNlbGwgaXMgYm91bmQgdG8gInRoaXMiCiAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykubW91c2Vkb3duKGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgPSB0aGlzLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSA9IHRhYmxlOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tb3VzZU9mZnNldCA9IGpRdWVyeS50YWJsZURuRC5nZXRNb3VzZU9mZnNldCh0aGlzLCBldik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5vbkRyYWdTdGFydCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIHRoZSBvbkRyb3AgbWV0aG9kIGlmIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub25EcmFnU3RhcnQodGFibGUsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9KTsKCQkJfSkKCQl9IGVsc2UgewoJCQkvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGFkZCB0aGUgZXZlbnQgdG8gdGhlIHdob2xlIHJvdwoJICAgICAgICB2YXIgcm93cyA9IGpRdWVyeSgidHIiLCB0YWJsZSk7IC8vIGdldCBhbGwgdGhlIHJvd3MgYXMgYSB3cmFwcGVkIHNldAoJICAgICAgICByb3dzLmVhY2goZnVuY3Rpb24oKSB7CgkJCQkvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCByb3csIHRoZSByb3cgaXMgYm91bmQgdG8gInRoaXMiCgkJCQl2YXIgcm93ID0galF1ZXJ5KHRoaXMpOwoJCQkJaWYgKCEgcm93Lmhhc0NsYXNzKCJub2RyYWciKSkgewoJICAgICAgICAgICAgICAgIHJvdy5tb3VzZWRvd24oZnVuY3Rpb24oZXYpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGV2LnRhcmdldC50YWdOYW1lID09ICJURCIpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0ID0gdGhpczsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUgPSB0YWJsZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tb3VzZU9mZnNldCA9IGpRdWVyeS50YWJsZURuRC5nZXRNb3VzZU9mZnNldCh0aGlzLCBldik7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm9uRHJhZ1N0YXJ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgb25Ecm9wIG1ldGhvZCBpZiB0aGVyZSBpcyBvbmUKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub25EcmFnU3RhcnQodGFibGUsIHRoaXMpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfSkuY3NzKCJjdXJzb3IiLCAibW92ZSIpOyAvLyBTdG9yZSB0aGUgdGFibGVEbkQgb2JqZWN0CgkJCQl9CgkJCX0pOwoJCX0KCX0sCgoJdXBkYXRlVGFibGVzOiBmdW5jdGlvbigpIHsKCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCS8vIHRoaXMgaXMgbm93IGJvdW5kIHRvIGVhY2ggbWF0Y2hpbmcgdGFibGUKCQkJaWYgKHRoaXMudGFibGVEbkRDb25maWcpIHsKCQkJCWpRdWVyeS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpOwoJCQl9CgkJfSkKCX0sCgogICAgLyoqIEdldCB0aGUgbW91c2UgY29vcmRpbmF0ZXMgZnJvbSB0aGUgZXZlbnQgKGFsbG93aW5nIGZvciBicm93c2VyIGRpZmZlcmVuY2VzKSAqLwogICAgbW91c2VDb29yZHM6IGZ1bmN0aW9uKGV2KXsKICAgICAgICBpZihldi5wYWdlWCB8fCBldi5wYWdlWSl7CiAgICAgICAgICAgIHJldHVybiB7eDpldi5wYWdlWCwgeTpldi5wYWdlWX07CiAgICAgICAgfQogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHg6ZXYuY2xpZW50WCArIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCAtIGRvY3VtZW50LmJvZHkuY2xpZW50TGVmdCwKICAgICAgICAgICAgeTpldi5jbGllbnRZICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgIC0gZG9jdW1lbnQuYm9keS5jbGllbnRUb3AKICAgICAgICB9OwogICAgfSwKCiAgICAvKiogR2l2ZW4gYSB0YXJnZXQgZWxlbWVudCBhbmQgYSBtb3VzZSBldmVudCwgZ2V0IHRoZSBtb3VzZSBvZmZzZXQgZnJvbSB0aGF0IGVsZW1lbnQuCiAgICAgICAgVG8gZG8gdGhpcyB3ZSBuZWVkIHRoZSBlbGVtZW50J3MgcG9zaXRpb24gYW5kIHRoZSBtb3VzZSBwb3NpdGlvbiAqLwogICAgZ2V0TW91c2VPZmZzZXQ6IGZ1bmN0aW9uKHRhcmdldCwgZXYpIHsKICAgICAgICBldiA9IGV2IHx8IHdpbmRvdy5ldmVudDsKCiAgICAgICAgdmFyIGRvY1BvcyAgICA9IHRoaXMuZ2V0UG9zaXRpb24odGFyZ2V0KTsKICAgICAgICB2YXIgbW91c2VQb3MgID0gdGhpcy5tb3VzZUNvb3Jkcyhldik7CiAgICAgICAgcmV0dXJuIHt4Om1vdXNlUG9zLnggLSBkb2NQb3MueCwgeTptb3VzZVBvcy55IC0gZG9jUG9zLnl9OwogICAgfSwKCiAgICAvKiogR2V0IHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IGJ5IGdvaW5nIHVwIHRoZSBET00gdHJlZSBhbmQgYWRkaW5nIHVwIGFsbCB0aGUgb2Zmc2V0cyAqLwogICAgZ2V0UG9zaXRpb246IGZ1bmN0aW9uKGUpewogICAgICAgIHZhciBsZWZ0ID0gMDsKICAgICAgICB2YXIgdG9wICA9IDA7CiAgICAgICAgLyoqIFNhZmFyaSBmaXggLS0gdGhhbmtzIHRvIEx1aXMgQ2hhdG8gZm9yIHRoaXMhICovCiAgICAgICAgaWYgKGUub2Zmc2V0SGVpZ2h0ID09IDApIHsKICAgICAgICAgICAgLyoqIFNhZmFyaSAyIGRvZXNuJ3QgY29ycmVjdGx5IGdyYWIgdGhlIG9mZnNldFRvcCBvZiBhIHRhYmxlIHJvdwogICAgICAgICAgICB0aGlzIGlzIGRldGFpbGVkIGhlcmU6CiAgICAgICAgICAgIGh0dHA6Ly9qYWNvYi5wZWFyZ3JvdmUuY29tL2Jsb2cvMjAwNi90ZWNobmljYWwvdGFibGUtcm93LW9mZnNldHRvcC1idWctaW4tc2FmYXJpLwogICAgICAgICAgICB0aGUgc29sdXRpb24gaXMgbGlrZXdpc2Ugbm90ZWQgdGhlcmUsIGdyYWIgdGhlIG9mZnNldCBvZiBhIHRhYmxlIGNlbGwgaW4gdGhlIHJvdyAtIHRoZSBmaXJzdENoaWxkLgogICAgICAgICAgICBub3RlIHRoYXQgZmlyZWZveCB3aWxsIHJldHVybiBhIHRleHQgbm9kZSBhcyBhIGZpcnN0IGNoaWxkLCBzbyBkZXNpZ25pbmcgYSBtb3JlIHRob3JvdWdoCiAgICAgICAgICAgIHNvbHV0aW9uIG1heSBuZWVkIHRvIHRha2UgdGhhdCBpbnRvIGFjY291bnQsIGZvciBub3cgdGhpcyBzZWVtcyB0byB3b3JrIGluIGZpcmVmb3gsIHNhZmFyaSwgaWUgKi8KICAgICAgICAgICAgZSA9IGUuZmlyc3RDaGlsZDsgLy8gYSB0YWJsZSBjZWxsCiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoZS5vZmZzZXRQYXJlbnQpewogICAgICAgICAgICBsZWZ0ICs9IGUub2Zmc2V0TGVmdDsKICAgICAgICAgICAgdG9wICArPSBlLm9mZnNldFRvcDsKICAgICAgICAgICAgZSAgICAgPSBlLm9mZnNldFBhcmVudDsKICAgICAgICB9CgogICAgICAgIGxlZnQgKz0gZS5vZmZzZXRMZWZ0OwogICAgICAgIHRvcCAgKz0gZS5vZmZzZXRUb3A7CgogICAgICAgIHJldHVybiB7eDpsZWZ0LCB5OnRvcH07CiAgICB9LAoKICAgIG1vdXNlbW92ZTogZnVuY3Rpb24oZXYpIHsKICAgICAgICBpZiAoalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgZHJhZ09iaiA9IGpRdWVyeShqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCk7CiAgICAgICAgdmFyIGNvbmZpZyA9IGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7CiAgICAgICAgdmFyIG1vdXNlUG9zID0galF1ZXJ5LnRhYmxlRG5ELm1vdXNlQ29vcmRzKGV2KTsKICAgICAgICB2YXIgeSA9IG1vdXNlUG9zLnkgLSBqUXVlcnkudGFibGVEbkQubW91c2VPZmZzZXQueTsKICAgICAgICAvL2F1dG8gc2Nyb2xsIHRoZSB3aW5kb3cKCSAgICB2YXIgeU9mZnNldCA9IHdpbmRvdy5wYWdlWU9mZnNldDsKCSAJaWYgKGRvY3VtZW50LmFsbCkgewoJICAgICAgICAvLyBXaW5kb3dzIHZlcnNpb24KCSAgICAgICAgLy95T2Zmc2V0PWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOwoJICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50LmNvbXBhdE1vZGUgIT0gJ3VuZGVmaW5lZCcgJiYKCSAgICAgICAgICAgICBkb2N1bWVudC5jb21wYXRNb2RlICE9ICdCYWNrQ29tcGF0JykgewoJICAgICAgICAgICB5T2Zmc2V0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQuYm9keSAhPSAndW5kZWZpbmVkJykgewoJICAgICAgICAgICB5T2Zmc2V0PWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOwoJICAgICAgICB9CgoJICAgIH0KCQkgICAgCgkJaWYgKG1vdXNlUG9zLnkteU9mZnNldCA8IGNvbmZpZy5zY3JvbGxBbW91bnQpIHsKCSAgICAJd2luZG93LnNjcm9sbEJ5KDAsIC1jb25maWcuc2Nyb2xsQW1vdW50KTsKCSAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0ID8gd2luZG93LmlubmVySGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCA6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OwogICAgICAgICAgICBpZiAod2luZG93SGVpZ2h0LShtb3VzZVBvcy55LXlPZmZzZXQpIDwgY29uZmlnLnNjcm9sbEFtb3VudCkgewogICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbEJ5KDAsIGNvbmZpZy5zY3JvbGxBbW91bnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgaWYgKHkgIT0galF1ZXJ5LnRhYmxlRG5ELm9sZFkpIHsKICAgICAgICAgICAgLy8gd29yayBvdXQgaWYgd2UncmUgZ29pbmcgdXAgb3IgZG93bi4uLgogICAgICAgICAgICB2YXIgbW92aW5nRG93biA9IHkgPiBqUXVlcnkudGFibGVEbkQub2xkWTsKICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELm9sZFkgPSB5OwogICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHN0eWxlIHRvIHNob3cgd2UncmUgZHJhZ2dpbmcKCQkJaWYgKGNvbmZpZy5vbkRyYWdDbGFzcykgewoJCQkJZHJhZ09iai5hZGRDbGFzcyhjb25maWcub25EcmFnQ2xhc3MpOwoJCQl9IGVsc2UgewoJICAgICAgICAgICAgZHJhZ09iai5jc3MoY29uZmlnLm9uRHJhZ1N0eWxlKTsKCQkJfQogICAgICAgICAgICAvLyBJZiB3ZSdyZSBvdmVyIGEgcm93IHRoZW4gbW92ZSB0aGUgZHJhZ2dlZCByb3cgdG8gdGhlcmUgc28gdGhhdCB0aGUgdXNlciBzZWVzIHRoZQogICAgICAgICAgICAvLyBlZmZlY3QgZHluYW1pY2FsbHkKICAgICAgICAgICAgdmFyIGN1cnJlbnRSb3cgPSBqUXVlcnkudGFibGVEbkQuZmluZERyb3BUYXJnZXRSb3coZHJhZ09iaiwgeSk7CiAgICAgICAgICAgIGlmIChjdXJyZW50Um93KSB7CiAgICAgICAgICAgICAgICAvLyBUT0RPIHdvcnJ5IGFib3V0IHdoYXQgaGFwcGVucyB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBUQk9ESUVTCiAgICAgICAgICAgICAgICBpZiAobW92aW5nRG93biAmJiBqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCAhPSBjdXJyZW50Um93KSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QsIGN1cnJlbnRSb3cubmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICghIG1vdmluZ0Rvd24gJiYgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgIT0gY3VycmVudFJvdykgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0LCBjdXJyZW50Um93KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCiAgICAvKiogV2UncmUgb25seSB3b3JyaWVkIGFib3V0IHRoZSB5IHBvc2l0aW9uIHJlYWxseSwgYmVjYXVzZSB3ZSBjYW4gb25seSBtb3ZlIHJvd3MgdXAgYW5kIGRvd24gKi8KICAgIGZpbmREcm9wVGFyZ2V0Um93OiBmdW5jdGlvbihkcmFnZ2VkUm93LCB5KSB7CiAgICAgICAgdmFyIHJvd3MgPSBqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlLnJvd3M7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHJvd3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbaV07CiAgICAgICAgICAgIHZhciByb3dZICAgID0gdGhpcy5nZXRQb3NpdGlvbihyb3cpLnk7CiAgICAgICAgICAgIHZhciByb3dIZWlnaHQgPSBwYXJzZUludChyb3cub2Zmc2V0SGVpZ2h0KS8yOwogICAgICAgICAgICBpZiAocm93Lm9mZnNldEhlaWdodCA9PSAwKSB7CiAgICAgICAgICAgICAgICByb3dZID0gdGhpcy5nZXRQb3NpdGlvbihyb3cuZmlyc3RDaGlsZCkueTsKICAgICAgICAgICAgICAgIHJvd0hlaWdodCA9IHBhcnNlSW50KHJvdy5maXJzdENoaWxkLm9mZnNldEhlaWdodCkvMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBCZWNhdXNlIHdlIGFsd2F5cyBoYXZlIHRvIGluc2VydCBiZWZvcmUsIHdlIG5lZWQgdG8gb2Zmc2V0IHRoZSBoZWlnaHQgYSBiaXQKICAgICAgICAgICAgaWYgKCh5ID4gcm93WSAtIHJvd0hlaWdodCkgJiYgKHkgPCAocm93WSArIHJvd0hlaWdodCkpKSB7CiAgICAgICAgICAgICAgICAvLyB0aGF0J3MgdGhlIHJvdyB3ZSdyZSBvdmVyCgkJCQkvLyBJZiBpdCdzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHJvdywgaWdub3JlIGl0CgkJCQlpZiAocm93ID09IGRyYWdnZWRSb3cpIHtyZXR1cm4gbnVsbDt9CiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0galF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZS50YWJsZURuRENvbmZpZzsKICAgICAgICAgICAgICAgIGlmIChjb25maWcub25BbGxvd0Ryb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm9uQWxsb3dEcm9wKGRyYWdnZWRSb3csIHJvdykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewoJCQkJCS8vIElmIGEgcm93IGhhcyBub2Ryb3AgY2xhc3MsIHRoZW4gZG9uJ3QgYWxsb3cgZHJvcHBpbmcgKGluc3BpcmVkIGJ5IEpvaG4gVGFyciBhbmQgRmFtaWMpCiAgICAgICAgICAgICAgICAgICAgdmFyIG5vZHJvcCA9IGpRdWVyeShyb3cpLmhhc0NsYXNzKCJub2Ryb3AiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoISBub2Ryb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcm93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfSwKCiAgICBtb3VzZXVwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUgJiYgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QpIHsKICAgICAgICAgICAgdmFyIGRyb3BwZWRSb3cgPSBqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdDsKICAgICAgICAgICAgdmFyIGNvbmZpZyA9IGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7CiAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBkcmFnT2JqZWN0LCB0aGVuIHdlIG5lZWQgdG8gcmVsZWFzZSBpdCwKICAgICAgICAgICAgLy8gVGhlIHJvdyB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuIG1vdmVkIHRvIHRoZSByaWdodCBwbGFjZSBzbyB3ZSBqdXN0IHJlc2V0IHN0dWZmCgkJCWlmIChjb25maWcub25EcmFnQ2xhc3MpIHsKCSAgICAgICAgICAgIGpRdWVyeShkcm9wcGVkUm93KS5yZW1vdmVDbGFzcyhjb25maWcub25EcmFnQ2xhc3MpOwoJCQl9IGVsc2UgewoJICAgICAgICAgICAgalF1ZXJ5KGRyb3BwZWRSb3cpLmNzcyhjb25maWcub25Ecm9wU3R5bGUpOwoJCQl9CiAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0ICAgPSBudWxsOwogICAgICAgICAgICBpZiAoY29uZmlnLm9uRHJvcCkgewogICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgb25Ecm9wIG1ldGhvZCBpZiB0aGVyZSBpcyBvbmUKICAgICAgICAgICAgICAgIGNvbmZpZy5vbkRyb3AoalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSwgZHJvcHBlZFJvdyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSA9IG51bGw7IC8vIGxldCBnbyBvZiB0aGUgdGFibGUgdG9vCiAgICAgICAgfQogICAgfSwKCiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlKSB7CiAgICAgICAgICAgIHJldHVybiBqUXVlcnkudGFibGVEbkQuc2VyaWFsaXplVGFibGUoalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICJFcnJvcjogTm8gVGFibGUgaWQgc2V0LCB5b3UgbmVlZCB0byBzZXQgYW4gaWQgb24geW91ciB0YWJsZSBhbmQgZXZlcnkgcm93IjsKICAgICAgICB9CiAgICB9LAoKCXNlcmlhbGl6ZVRhYmxlOiBmdW5jdGlvbih0YWJsZSkgewogICAgICAgIHZhciByZXN1bHQgPSAiIjsKICAgICAgICB2YXIgdGFibGVJZCA9IHRhYmxlLmlkOwogICAgICAgIHZhciByb3dzID0gdGFibGUucm93czsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cm93cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHJlc3VsdCArPSAiJiI7CiAgICAgICAgICAgIHZhciByb3dJZCA9IHJvd3NbaV0uaWQ7CiAgICAgICAgICAgIGlmIChyb3dJZCAmJiByb3dJZCAmJiB0YWJsZS50YWJsZURuRENvbmZpZyAmJiB0YWJsZS50YWJsZURuRENvbmZpZy5zZXJpYWxpemVSZWdleHApIHsKICAgICAgICAgICAgICAgIHJvd0lkID0gcm93SWQubWF0Y2godGFibGUudGFibGVEbkRDb25maWcuc2VyaWFsaXplUmVnZXhwKVswXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmVzdWx0ICs9IHRhYmxlSWQgKyAnW109JyArIHJvd0lkOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0OwoJfSwKCglzZXJpYWxpemVUYWJsZXM6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciByZXN1bHQgPSAiIjsKICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCS8vIHRoaXMgaXMgbm93IGJvdW5kIHRvIGVhY2ggbWF0Y2hpbmcgdGFibGUKCQkJcmVzdWx0ICs9IGpRdWVyeS50YWJsZURuRC5zZXJpYWxpemVUYWJsZSh0aGlzKTsKCQl9KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKfQoKalF1ZXJ5LmZuLmV4dGVuZCgKCXsKCQl0YWJsZURuRCA6IGpRdWVyeS50YWJsZURuRC5idWlsZCwKCQl0YWJsZURuRFVwZGF0ZSA6IGpRdWVyeS50YWJsZURuRC51cGRhdGVUYWJsZXMsCgkJdGFibGVEbkRTZXJpYWxpemU6IGpRdWVyeS50YWJsZURuRC5zZXJpYWxpemVUYWJsZXMKCX0KKTs=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ01vZHVsZSBHZW5lcmF0b3InOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWxlIEdlbmVyYXRvciB3YXMgc3VjY2Vzc2Z1bCBpbnN0YWxsZWQnOw0KJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNb2R1bGUgR2VuZXJhdG9yIHdhcyBzdWNjZXNzZnVsIHVuaW5zdGFsbGVkJzsNCiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnUmVhbGx5PyBBcmUgeW91IHN1cmUNCnlvdSB3YW50IHRvIHVuc2luc3RhbGwgdGhpcyBmaW5lIG1vZHVsZT8nOw0KJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7DQokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7DQokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOw0KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgYWRkIG11bHRpbGFuZ3VhZ2Ugc29sdXRpb25zIHRvIHlvdSBDTVMgTWFkZSBTaW1wbGUnOw0KJGxhbmdbJ2luZm9fc3VjY2VzcyddID0gJ1N1Y2Nlcyc7DQokbGFuZ1snaW5mb19lcnJvciddID0gJ0Vycm9yJzsNCiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ09wdGlvbnMgdXBkYXRlZCc7DQokbGFuZ1snbW9kdWxlX21pc3NpbmcnXSA9ICdQbGVhc2UsIGluc3RhbCBtb2R1bGUgJXMnOw0KJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmU/JzsNCiRsYW5nWydtb2R1bGVfZGlyX3Blcm1pc3Npb24nXSA9ICdNb2R1bGUgZGlyZWNvdHJ5IG5lZWQgd3JpdGVhYmxlIHBlcm1pc3Npb24uIFBsZWFzZSBjaGFuZ2UgcGVybWlzc2lvbiBmb3IgbW9kdWxlIGRpcmVjdG9yeS4nOw0KJGxhbmdbJ3BsZWFzZV9pbnN0YWxsX2l0J10gPSAnTm90ZTogaW5zdGFsbCB0aGlzIG1vZHVsZSB0aHJvdWdoICJFeHRlbnNpb25zIMK7IE1vZHVsZXMiJzsNCiRsYW5nWydjcmVhdGVfbW9kdWxlJ10gPSAnQ3JlYXRlIG5ldyBtb2R1bGUnOw0KDQokbGFuZ1snZGV0YWlsX3BhZ2UnXSA9ICdEZXRhaWwgUGFnZSc7DQokbGFuZ1snZGV0YWlsX3RlbXBsYXRlJ10gPSAnRGV0YWlsIFRlbXBsYXRlJzsNCiRsYW5nWyd3YXJuaW5nX3ByZXZpZXcnXSA9ICdXYXJuaW5nOiBUaGlzIHByZXZpZXcgcGFuZWwgYmVoYXZlcyBtdWNoIGxpa2UgYSBicm93c2VyIHdpbmRvdyBhbGxvd2luZyB5b3UgdG8gbmF2aWdhdGUgYXdheSBmcm9tIHRoZSBpbml0aWFsbHkgcHJldmlld2VkIHBhZ2UuIEhvd2V2ZXIsIGlmIHlvdSBkbyB0aGF0LCB5b3UgbWF5IGV4cGVyaWVuY2UgdW5leHBlY3RlZCBiZWhhdmlvdXIuICBOYXZpZ2F0aW5nIGF3YXkgZnJvbSB0aGUgaW5pdGlhbCBwYWdlIGFuZCByZXR1cm5pbmcgd2lsbCBub3QgZ2l2ZSB0aGUgZXhwZWN0ZWQgcmVzdWx0cy48YnIvPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIHByZXZpZXcgZG9lcyBub3QgdXBsb2FkIGZpbGVzIHlvdSBtYXkgaGF2ZSBzZWxlY3RlZCBmb3IgdXBsb2FkLic7DQokbGFuZ1snYXJ0aWNsZSddID0gJ0FydGljbGUnOw0KJGxhbmdbJ3ByZXZpZXcnXSA9ICdQcmV2aWV3JzsNCiRsYW5nWydpbmZvX2RldGFpbF9yZXR1cm5pZCddID0gJ1RoaXMgcHJlZmVyZW5jZSBpcyB1c2VkIHRvIGRldGVybWluZSBhIHBhZ2UgKGFuZCB0aGVyZWZvcmUgYSB0ZW1wbGF0ZSkgdG8gdXNlIHRvIHZpZXcgZGV0YWlsIHBhZ2VzLiAgSW5kaXZpZHVhbGl6ZWQgTmV3cyBEZXRhaWwgVVJMUyB3aWxsIG5vdCB3b3JrIGlmIHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzZXQgdG8gYSB2YWxpZCBwYWdlLiAgQWRkaXRpb25hbGx5LCBpZiB0aGlzIHByZWZlcmVuY2UgaXMgc2V0LCBhbmQgbm8gZGV0YWlscGFnZSBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQgb24gdGhlIG5ld3MgdGFnLCB0aGVuIHRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIGZvciBkZXRhaWwgbGlua3MnOw0KJGxhbmdbJ3RpdGxlX2RldGFpbF9yZXR1cm5pZCddID0gJ0RlZmF1bHQgcGFnZSB0byB1c2UgZm9yIGRldGFpbCB2aWV3cyc7DQoNCiRsYW5nWydnZW5lcmF0b3InXSA9ICdHZW5lcmF0b3InOw0KJGxhbmdbJ3JlZ2VuZXJhdGUnXSA9ICdSZS1nZW5lcmF0ZSc7DQokbGFuZ1snbmFtZSddID0gJ05hbWUnOw0KJGxhbmdbJ2F0dGFjaCddID0gJ0F0dGFjaCc7DQokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOw0KJGxhbmdbJ2NyZWF0ZWRhdGUnXSA9ICdDcmVhdGUgZGF0ZSc7DQokbGFuZ1snbW9kaWZpZWRkYXRlJ10gPSAnTW9kaWZpZWQgZGF0ZSc7DQokbGFuZFsnYWRtaW5fdGl0bGUnXSA9ICdBZG1pbiBQYW5lbCc7DQokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJyc7DQokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1Bvc3QgSW5zdGFsbCBNZXNzYWdlLCAoZS5nLiwgQmUgc3VyZSB0byBzZXQgIm1hbmFnZSBtbGVfY21zIiBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhKSc7DQokbGFuZ1snZXJyb3JfcmVuYW1lX2RpciddID0gJ1JlbmFtZSBkaXIgd2l0aG91dCBzdWNjZXNzIChwZXJtaXNzaW9uPyknOw0KJGxhbmdbJ2Vycm9yX3JlcGxhY2VfZmlsZXMnXSA9ICdNb2R1bGUgY2Fubm90IGJ5IGVkaXRlZC4gUGxlYXNlIGVkaXQgaXQgbWFudWFsbHkuJzsNCiRsYW5nWydlcnJvcl9tb2R1bGVfZXhpc3RzJ10gPSAnVGhpcyBtb2R1bGUgZXhpc3RzLiBEZWxldGUgZGlyIG9yIHJlLWdlbmVyYXRlLic7DQokbGFuZ1snZXJyb3JfdW5paW5zdGFsX21vZHVsZSddID0gJ1RoaXMgbW9kdWxlIGV4aXN0cy4gVW5paW5zdGFsIGl0Lic7DQoNCi8vIHRhYnMNCiRsYW5nWydpdGVtJ10gPSAnSXRlbSc7DQokbGFuZ1snaXRlbXMnXSA9ICdJdGVtcyc7DQokbGFuZ1snZmllbGRkZWYnXSA9ICdGaWVsZCBEZWZpbml0aW9uJzsNCiRsYW5nWydmaWVsZGRlZnMnXSA9ICdGaWVsZCBEZWZpbml0aW9ucyc7DQokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7DQokbGFuZ1sndGVtcGxhdGVzJ10gPSAnVGVtcGxhdGVzJzsNCiRsYW5nWydjYXRlZ29yeSddID0gJ0NhdGVnb3J5JzsNCiRsYW5nWydjYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcmllcyc7DQokbGFuZ1snb3B0aW9uJ10gPSAnT3B0aW9uJzsNCiRsYW5nWydvcHRpb25zJ10gPSAnT3B0aW9ucyc7DQokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsNCiRsYW5nWydwcmV2cGFnZSddID0gJyZsdDsnOw0KDQovLyBpdGVtcw0KJGxhbmdbJ2l0ZW1fdGl0bGUnXSA9ICdUaXRsZSc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fdGl0bGUnXSA9ICdJdGVtIHRpdGxlJzsNCiRsYW5nWydhbGlhcyddID0gJ0FsaWFzJzsNCiRsYW5nWyd1cmwnXSA9ICdVcmwnOw0KJGxhbmdbJ2FjdGl2ZSddID0gJ0FjdGl2ZSc7DQokbGFuZ1snaXRlbV90aXRsZV9lbXB0eSddID0gJ0l0ZW0gdGl0bGUgaXMgZW1wdHknOw0KJGxhbmdbJ3JlcXVpcmVkX2ZpZWxkX2VtcHR5J10gPSAnUmVxdWlyZWQgZmllbGQgaXMgZW1wdHknOw0KJGxhbmdbJ3Rvb19sb25nJ10gPSAnRmllbGQgdmFsdWUgZXhjZWVkcyBtYXggbGVuZ3RoJzsNCiRsYW5nWydhcHByb3ZlJ10gPSAnU2V0IFN0YXR1cyB0byBcJ0FjdGl2ZVwnJzsNCiRsYW5nWydyZXZlcnQnXSA9ICdTZXQgU3RhdHVzIHRvIFwnSW5hY3RpdmVcJyc7DQokbGFuZ1snbGFzdHBhZ2UnXSA9ICcmZ3Q7Jmd0Oyc7DQokbGFuZ1snbGFzdF9tb2RpZmllZCddID0gJ0xhc3QgTW9kaWZpZWQnOw0KJGxhbmdbJ3BhZ2UnXSA9ICdQYWdlJzsNCiRsYW5nWydwYWdlX29mJ10gPSAnUGFnZSAlcyBvZiAlcyc7DQokbGFuZ1sncGFnZV9saW1pdCddID0gJ1BhZ2UgTGltaXQnOw0KJGxhbmdbJ2ZpcnN0cGFnZSddID0gJyZsdDsmbHQ7JzsNCiRsYW5nWyduZXh0cGFnZSddID0gJyZndDsnOw0KJGxhbmdbJ2lkJ10gPSAnSWQnOw0KJGxhbmdbJ3RpdGxlJ10gPSAnVGl0bGUnOw0KJGxhbmdbJ2luY2x1ZGVfY2hpbGRyZW4nXSA9ICdJbmNsdWRlIENoaWxkcmVuPyc7DQokbGFuZ1snaGllcmFyY2h5J10gID0gJ0hpZXJhcmNoeSc7DQokbGFuZ1snc29ydF9ieSddID0gJ1NvcnQgQnknOw0KJGxhbmdbJ3NvcnRfb3JkZXInXSA9ICdTb3J0IE9yZGVyJzsNCiRsYW5nWydkYXRlJ10gPSAnRGF0ZSc7DQokbGFuZ1snZGF0ZV9lbmQnXSA9ICdFbmQgZGF0ZSc7DQokbGFuZ1snZmlsdGVycyddID0gJ0ZpbHRlcnMnOw0KJGxhbmdbJ2FzY2VuZGluZyddID0gJ0FzY2VuZGluZyc7DQokbGFuZ1snZGVzY2VuZGluZyddID0gJ0Rlc2NlbmRpbmcnOw0KJGxhbmdbJ2FsbGNhdGVnb3JpZXMnXSA9ICdBbGwgY2F0ZWdvcmllcyc7DQokbGFuZ1snZnJvbSddID0gJ0Zyb20nOw0KJGxhbmdbJ3RvJ10gPSAnVG8nOw0KJGxhbmdbJ3Bvc2l0aW9uJ10gPSAnUG9zaXRpb24nOw0KJGxhbmdbJ2NyZWF0ZWRkYXRlJ10gPSAnQ3JlYXRlZCBkYXRlJzsNCiRsYW5nWydtb2RpZmllZGRhdGUnXSA9ICdNb2RpZmllZCBkYXRlJzsNCiRsYW5nWydzYXZlX29yZGVyJ10gPSAnU2F2ZSBvcmRlcic7DQoNCi8vIGZpZWxkIGRlZmluaXRpb25zDQokbGFuZ1snZWRpdGZpZWxkZGVmJ10gPSAnRWRpdCBGaWVsZCBEZWZpbml0aW9uJzsNCiRsYW5nWydhZGRmaWVsZGRlZiddID0gJ0FkZCBGaWVsZCBEZWZpbml0aW9uJzsNCiRsYW5nWydmaWVsZGRlZl9uYW1lJ10gPSAnTmFtZSc7DQokbGFuZ1snZmllbGRkZWZfaGVscCddID0gJ0hlbHBmdWwgdGlwJzsNCiRsYW5nWydmaWVsZGRlZl90eXBlJ10gPSAnVHlwZSc7DQokbGFuZ1snZmllbGRkZWZfbWF4X2xlbmd0aCddID0gJ01heGltdW0gbGVuZ3RoJzsNCiRsYW5nWydmaWVsZGRlZl9yZXF1aXJlZCddID0gJ1JlcXVpcmVkJzsNCiRsYW5nWydmaWVsZGRlZl9mcm9udGVuZCddID0gJ0Zyb250IEVuZCc7DQokbGFuZ1snZmllbGRkZWZfZWRpdHZpZXcnXSA9ICdWaWV3IG9ubHkgaW4gZWRpdCc7DQokbGFuZ1snZmllbGRkZWZfZmlsdGVyX2Zyb250ZW5kJ10gPSAnQWRkIHRvIGZpbHRlciBpbiBmcm9udGVuZCc7DQokbGFuZ1snZmllbGRkZWZfZmlsdGVyX2FkbWluJ10gPSAnQWRkIHRvIGZpbHRlciBpbiBhZG1pbic7DQokbGFuZ1snZmllbGRkZWZfc2VhcmNoYWJsZSddID0gJ1NlYXJjaGFibGUnOw0KJGxhbmdbJ2V4dHJhJ10gPSAnRXh0cmEnOw0KJGxhbmdbJ3NlY3Rpb24nXSA9ICdTZWN0aW9uJzsNCiRsYW5nWyd0ZXh0Ym94J10gPSAnVGV4dCBJbnB1dCc7DQokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7DQokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0IEFyZWEnOw0KJGxhbmdbJ3NlbGVjdF9kYXRlJ10gPSAnU2VsZWN0IERhdGUnOw0KJGxhbmdbJ3VwbG9hZF9maWxlJ10gPSAnVXBsb2FkIEZpbGUnOw0KJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOw0KJGxhbmdbJ21vZHVsZSddID0gJ01vZHVsZSc7DQokbGFuZ1snc2VsZWN0X2RlZmF1bHQnXSA9ICctLSBTZWxlY3QgLS0nOw0KJGxhbmdbJ3NlbGVjdF9maWxlJ10gPSAnU2VsZWN0IEZpbGUnOw0KJGxhbmdbJ2NvbG9yX3BpY2tlciddID0gJ0NvbG9yIHBpY2tlcic7DQokbGFuZ1snbW9kdWxlX2xpbmsnXSA9ICdMaW5rIHRvIG1vZHVsZSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9lbXB0eSddID0gJ0ZpZWxkIGRlZmluaXRpb24gbmFtZSBpcyBlbXB0eSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9leGlzdHMnXSA9ICdGaWVsZCBkZWZpbml0aW9uIG5hbWUgYWxyZWFkeSBleGlzdHMnOw0KJGxhbmdbJ2ludmFsaWQnXSA9ICdGaWVsZCB2YWx1ZSBpcyBpbnZhbGlkJzsNCiRsYW5nWyd0YWInXSA9ICdUYWInOw0KDQoNCi8vIGZpZWxkIGRlZmluaXRpb25zDQokbGFuZ1snZWRpdGZpZWxkZGVmJ10gPSAnRWRpdCBGaWVsZCBEZWZpbml0aW9uJzsNCiRsYW5nWydhZGRmaWVsZGRlZiddID0gJ0FkZCBGaWVsZCBEZWZpbml0aW9uJzsNCiRsYW5nWydmaWVsZGRlZl9uYW1lJ10gPSAnTmFtZSc7DQokbGFuZ1snZmllbGRkZWZfaGVscCddID0gJ0hlbHBmdWwgdGlwJzsNCiRsYW5nWydmaWVsZGRlZl90eXBlJ10gPSAnVHlwZSc7DQokbGFuZ1snZmllbGRkZWZfbWF4X2xlbmd0aCddID0gJ01heGltdW0gbGVuZ3RoJzsNCiRsYW5nWydmaWVsZGRlZl9yZXF1aXJlZCddID0gJ1JlcXVpcmVkJzsNCiRsYW5nWydmaWVsZGRlZl9mcm9udGVuZCddID0gJ0Zyb250IEVuZCc7DQokbGFuZ1snZmllbGRkZWZfZWRpdHZpZXcnXSA9ICdWaWV3IG9ubHkgaW4gZWRpdCc7DQokbGFuZ1snZmllbGRkZWZfZmlsdGVyX2Zyb250ZW5kJ10gPSAnQWRkIHRvIGZpbHRlciBpbiBmcm9udGVuZCc7DQokbGFuZ1snZmllbGRkZWZfZmlsdGVyX2FkbWluJ10gPSAnQWRkIHRvIGZpbHRlciBpbiBhZG1pbiBhcmVhJzsNCiRsYW5nWydmaWVsZGRlZl9zZWFyY2hhYmxlJ10gPSAnU2VhcmNoYWJsZSc7DQokbGFuZ1snZXh0cmEnXSA9ICdFeHRyYSc7DQokbGFuZ1sndGV4dGJveCddID0gJ1RleHQgSW5wdXQnOw0KJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2hlY2tib3gnOw0KJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dCBBcmVhJzsNCiRsYW5nWydzZWxlY3RfZGF0ZSddID0gJ1NlbGVjdCBEYXRlJzsNCiRsYW5nWyd1cGxvYWRfZmlsZSddID0gJ1VwbG9hZCBGaWxlJzsNCiRsYW5nWydkcm9wZG93biddID0gJ0Ryb3Bkb3duJzsNCiRsYW5nWydkcm9wZG93bmZyb21tb2R1bGUnXSA9ICdEcm9wZG93biBmcm9tIG1vZHVsZSc7DQokbGFuZ1snc3RhdGljJ10gPSAnU3RhdGljJzsNCiRsYW5nWydtb2R1bGUnXSA9ICdNb2R1bGUnOw0KJGxhbmdbJ3NlbGVjdF9kZWZhdWx0J10gPSAnLS0gU2VsZWN0IC0tJzsNCiRsYW5nWydzZWxlY3RfZmlsZSddID0gJ1NlbGVjdCBGaWxlJzsNCiRsYW5nWydmaWVsZGRlZl9uYW1lX2VtcHR5J10gPSAnRmllbGQgZGVmaW5pdGlvbiBuYW1lIGlzIGVtcHR5JzsNCiRsYW5nWydmaWVsZGRlZl9uYW1lX2V4aXN0cyddID0gJ0ZpZWxkIGRlZmluaXRpb24gbmFtZSBhbHJlYWR5IGV4aXN0cyc7DQokbGFuZ1snaW52YWxpZCddID0gJ0ZpZWxkIHZhbHVlIGlzIGludmFsaWQnOw0KDQovLyBmaWxlIGhhbmRsaW5nDQokbGFuZ1snZXJyb3JfdXBsb2FkJ10gPSAnUHJvYmxlbSBvY2N1cnJlZCB1cGxvYWRpbmcgYSBmaWxlJzsNCiRsYW5nWydlcnJvcl9ta2RpciddID0gJ0NvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5OiAlcyc7DQokbGFuZ1snZXJyb3JfZmlsZXNpemUnXSA9ICdBbiB1cGxvYWRlZCBmaWxlIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSc7DQokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGV0eXBlJ10gPSAnQ2Fubm90IHVwbG9hZCB0aGlzIHR5cGUgb2YgZmlsZSc7DQokbGFuZ1snZXJyb3JfbW92ZWZpbGUnXSA9ICdDb3VsZCBub3QgY3JlYXRlIGZpbGU6ICVzJzsNCiRsYW5nWydpbnZhbGlkdXJsJ10gPSAnVXJsIGlzIGludmFsaWQuJzsNCg0KLy8gY2F0ZWdvcnkNCiRsYW5nWydub25lJ10gPSAnTm9uZSc7DQokbGFuZ1snbmFtZSddID0gJ05hbWUnOw0KJGxhbmdbJ2VkaXRfY2F0ZWdvcnknXSA9ICdFZGl0IENhdGVnb3J5JzsNCiRsYW5nWydhZGRjYXRlZ29yeSddID0gJ0FkZCBDYXRlZ29yeSc7DQokbGFuZ1snY2F0ZWdvcnlfbmFtZSddID0gJ0NhdGVnb3J5IG5hbWUnOw0KJGxhbmdbJ2NhdGVnb3J5X25hbWVfZW1wdHknXSA9ICdDYXRlZ29yeSBuYW1lIGlzIGVtcHR5JzsNCiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdDYXRlZ29yeSB1cGRhdGVkLic7DQokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0NhdGVnb3J5IGFkZGVkLic7DQoNCi8vIHRlbXBsYXRlcw0KJGxhbmdbJ2NhdGVnb3J5X3RlbXBsYXRlJ10gPSAnQ2F0ZWdvcnkgVGVtcGxhdGVzJzsNCiRsYW5nWydzdW1tYXJ5X3RlbXBsYXRlJ10gPSAnU3VtbWFyeSBUZW1wbGF0ZXMnOw0KJGxhbmdbJ2RldGFpbF90ZW1wbGF0ZSddID0gJ0RldGFpbCBUZW1wbGF0ZXMnOw0KJGxhbmdbJ2ZpbHRlcl90ZW1wbGF0ZSddID0gJ0ZpbHRlciBUZW1wbGF0ZXMnOw0KJGxhbmdbJ2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnRGVmYXVsdCBUZW1wbGF0ZXMnOw0KJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXQgVGVtcGxhdGUnOw0KJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnQWRkICVzIFRlbXBsYXRlJzsNCiRsYW5nWyd0ZW1wbGF0ZV9uYW1lJ10gPSAnVGVtcGxhdGUgbmFtZSc7DQokbGFuZ1sndGVtcGxhdGVfbmFtZV9lbXB0eSddID0gJ1RlbXBsYXRlIG5hbWUgaXMgZW1wdHknOw0KDQovLyBnbG9iYWwNCiRsYW5nWydnbG9iYWwnXSA9ICdHbG9iYWwnOw0KJGxhbmdbJ2NoYW5nZXNzYXZlZCddID0gJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHNhdmVkJzsNCiRsYW5nWydiYWNrJ10gPSAnQmFjayc7DQokbGFuZ1sndXAnXSA9ICdVcCc7DQokbGFuZ1snZG93biddID0gJ0Rvd24nOw0KJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsNCiRsYW5nWydkZWxldGUnXSA9ICdEZWxldGUnOw0KJGxhbmdbJ25vc3VjaGlkJ10gPSAnTm8gc3VjaCBJRCc7DQokbGFuZ1snZGVsZXRlZCddID0gJ1RoZSBlbnRyeSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZCc7DQokbGFuZ1snYWRkJ10gPSAnQWRkJzsNCiRsYW5nWydhbGlhcyddID0gJ0FsaWFzJzsNCiRsYW5nWydhbGlhc19pbnZhbGlkJ10gPSAnQWxpYXMgaXMgaW52YWxpZC4gSXQgbXVzdCBiZSBhIHZhbGlkIFBIUCB2YXJpYWJsZSBuYW1lJzsNCiRsYW5nWydlbXB0eV9wYXJhbSddID0gJ1RoZSBwYXJhbWV0ZXIgd2FzIGVtcHR5LiBUcnkgYWdhaW4uJzsNCiRsYW5nWydvcGVyYXRpb25fY2FuY2VsbGVkJ10gPSAnT3BlcmF0aW9uIENhbmNlbGxlZCc7DQokbGFuZ1snb3BlcmF0aW9uX2NvbXBsZXRlJ10gPSAnT3BlcmF0aW9uIENvbXBsZXRlJzsNCg0KIyMgZ2VuZXJhdG9yDQokbGFuZ1sndGV4dGJveCddID0gJ1RleHQgSW5wdXQnOw0KJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2hlY2tib3gnOw0KJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dCBBcmVhJzsNCiRsYW5nWydzZWxlY3RfZGF0ZSddID0gJ1NlbGVjdCBEYXRlJzsNCiRsYW5nWyd1cGxvYWRfZmlsZSddID0gJ1VwbG9hZCBGaWxlJzsNCiRsYW5nWydkcm9wZG93biddID0gJ0Ryb3Bkb3duJzsNCiRsYW5nWydtb2R1bGUnXSA9ICdNb2R1bGUnOw0KJGxhbmdbJ3NlbGVjdF9kZWZhdWx0J10gPSAnLS0gU2VsZWN0IC0tJzsNCiRsYW5nWydzZWxlY3RfZmlsZSddID0gJ1NlbGVjdCBGaWxlJzsNCg0KI2l0ZW1zDQokbGFuZ1snaXRlbV90aXRsZSddID0gJ1RpdGxlJzsNCiRsYW5nWydwcm9tcHRfaXRlbV90aXRsZSddID0gJ0l0ZW0gdGl0bGUnOw0KJGxhbmdbJ2FsaWFzJ10gPSAnQWxpYXMnOw0KJGxhbmdbJ3VybCddID0gJ1VybCc7DQokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aXZlJzsNCiRsYW5nWydpdGVtX3RpdGxlX2VtcHR5J10gPSAnSXRlbSB0aXRsZSBpcyBlbXB0eSc7DQokbGFuZ1sncmVxdWlyZWRfZmllbGRfZW1wdHknXSA9ICdSZXF1aXJlZCBmaWVsZCBpcyBlbXB0eSc7DQokbGFuZ1sndG9vX2xvbmcnXSA9ICdGaWVsZCB2YWx1ZSBleGNlZWRzIG1heCBsZW5ndGgnOw0KJGxhbmdbJ2FwcHJvdmUnXSA9ICdTZXQgU3RhdHVzIHRvIFwnQWN0aXZlXCcnOw0KJGxhbmdbJ3JldmVydCddID0gJ1NldCBTdGF0dXMgdG8gXCdJbmFjdGl2ZVwnJzsNCiRsYW5nWydsYXN0cGFnZSddID0gJyZndDsmZ3Q7JzsNCiRsYW5nWydsYXN0X21vZGlmaWVkJ10gPSAnTGFzdCBNb2RpZmllZCc7DQokbGFuZ1sncGFnZSddID0gJ1BhZ2UnOw0KJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdlICVzIG9mICVzJzsNCiRsYW5nWydwYWdlX2xpbWl0J10gPSAnUGFnZSBMaW1pdCc7DQokbGFuZ1snZmlyc3RwYWdlJ10gPSAnJmx0OyZsdDsnOw0KJGxhbmdbJ25leHRwYWdlJ10gPSAnJmd0Oyc7DQokbGFuZ1snb2YnXSA9ICdvZic7DQokbGFuZ1snaWQnXSA9ICdJZCc7DQokbGFuZ1sndGl0bGUnXSA9ICdUaXRsZSc7DQokbGFuZ1snaW5jbHVkZV9jaGlsZHJlbiddID0gJ0luY2x1ZGUgQ2hpbGRyZW4/JzsNCiRsYW5nWydoaWVyYXJjaHknXSAgPSAnSGllcmFyY2h5JzsNCiRsYW5nWydkYXRlJ10gPSAnRGF0ZSc7DQokbGFuZ1snZmlsdGVycyddID0gJ0ZpbHRlcnMnOw0KJGxhbmdbJ2FzY2VuZGluZyddID0gJ0FzY2VuZGluZyc7DQokbGFuZ1snZGVzY2VuZGluZyddID0gJ0Rlc2NlbmRpbmcnOw0KJGxhbmdbJ2FsbGNhdGVnb3JpZXMnXSA9ICdBbGwgY2F0ZWdvcmllcyc7DQokbGFuZ1snZnJvbSddID0gJ0Zyb20nOw0KJGxhbmdbJ3NlbGVjdF9hbGwnXSA9ICdTZWxlY3QgQWxsJzsNCiRsYW5nWydzZWxlY3Rfb25lJ10gPSAnU2VsZWN0IE9uZSc7DQokbGFuZ1snc2V0ZHJhZnQnXSA9ICdTZXQgQXMgSW5hY3RpdmUnOw0KJGxhbmdbJ3NldHB1Ymxpc2hlZCddID0gJ1NldCBBcyBBY3RpdmUnOw0KJGxhbmdbJ3dpdGhfc2VsZWN0ZWQnXSA9ICdXaXRoIFNlbGVjdGVkJzsNCiRsYW5nWydnbyddID0gJ0dvJzsNCiRsYW5nWydub3RoaW5nX3NlbGVjdGQnXSA9ICdOb3RoaW5nIHNlbGVjdGVkJzsNCg0KDQojb3B0aW9ucw0KJGxhbmdbJ2ltYWdlc19zaXplX2FkbWluJ10gPSAnSW1hZ2Ugc2l6ZSc7DQokbGFuZ1snaW1hZ2Vfc2l6ZV9hZG1pbl9pbmZvJ10gPSAnRXhhbXBsZXM6IDIwMHggLSB3aWR0aCwgeDIwMCAtIGhlaWdodCwgMjAweDIwMCAtIHdpZHRoL2hlaWdodCc7DQokbGFuZ1snYWRtaW5fYXJlYSddID0gJ0FkbWluIGFyZWEnOw0KJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7DQokbGFuZ1snbW9kZSddID0gJ01vZGUnOw0KJGxhbmdbJ3NpbXBsZSddID0gJ1NpbXBsZSc7DQokbGFuZ1snYWR2YW5jZWQnXSA9ICdBZHZhbmNlZCc7DQokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ01vZHVsZSBmcmllbmRseSBuYW1lJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9zaW5ndWxhciddID0gJ0l0ZW0gc2luZ3VsYXInOw0KJGxhbmdbJ3Byb21wdF9pdGVtX3BsdXJhbCddID0gJ0l0ZW0gcGx1cmFsJzsNCiRsYW5nWydwcm9tcHRfdXJsX3ByZWZpeCddID0gJ1VSTCBQcmVmaXgnOw0KJGxhbmdbJ3Byb21wdF9kZWZhdWx0X2FjdGlvbl9wYXJhbXMnXSA9ICdEZWZhdWx0IHBhcmFtcyBmb3IgZGVmYXVsdCBhY3Rpb24nOw0KJGxhbmdbJ3Byb21wdF9kZXRhaWxfYWN0aW9uX3BhcmFtcyddID0gJ0RlZmF1bHQgcGFyYW1zIGZvciBkZXRhaWwgYWN0aW9uJzsNCiRsYW5nWydwcm9tcHRfdGl0bGVfcGFyYW1fZm9yX2NhY2hlJ10gPSAnVGl0bGUgcGFyYW0gZm9yIGNhY2hlIHJlc3VsdHMnOw0KJGxhbmdbJ3Byb21wdF9kaXNwbGF5X2lubGluZSddID0gJ0Rpc3BsYXkgZGV0YWlscyBpbmxpbmUnOw0KJGxhbmdbJ3Byb21wdF9sYXp5bG9hZGluZyddID0gJ0xhenkgbG9hZGluZyAoSWYgd2UgZG9uXCd0IG5lZWQgdXNlIG1vZHVsZSB3aXRoIGRldGFpbCBsaW5rIG9uIGZyb250ZW5kLiknOw0KJGxhbmdbJ3Byb21wdF9oYXNfYWRtaW4nXSA9ICdIYXMgYWRtaW4/JzsNCiRsYW5nWydwcmV2aWV3X2FkbWluJ10gPSAnUHJldmlldyBpbiBhZG1pbiBhcmVhPyc7DQokbGFuZ1snY29weV9hZG1pbiddID0gJ0FsbG93IGNvcHkgaXRlbT8nOw0KJGxhbmdbJ3Byb21wdF91c2VyZ3JvdXBfZGVwZW5kZW5jZSddID0gJ1VzZXIgZ3JvdXAgZGVwZW5kZW5jZSc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fZGV0YWlsX3JldHVybmlkJ10gPSAnRGV0YWlsIHJldHVybiBJRCc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnXSA9ICdDYXRlZ29yeSByZXR1cm4gSUQnOw0KJGxhbmdbJ3Byb21wdF9jdXN0b21fZmllbGRzX2RlZmF1bHRfYWRtaW4nXSA9ICdEZWZhdWx0IGN1c3RvbSBmaWVsZHMgZm9yIGFkbWluIGl0ZW1zJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9jYXRlZ29yeV9lZGl0J10gPSAnRWRpdCBjYXRlZ29yeSc7DQokbGFuZ1sncHJvbXB0X3JlY3Vyc2l2ZSddID0gJ0VkaXQgcmVjdXJzaXZlJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9kYXRlX2VkaXQnXSA9ICdFZGl0IGRhdGUnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX2RhdGVfZW5kX2VkaXQnXSA9ICdFZGl0IGRhdGUgZW5kJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9hbGlhc19lZGl0J10gPSAnRWRpdCBhbGlhcyc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fdGl0bGVfZWRpdCddID0gJ0VkaXQgdGl0bGUnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX3VybF9lZGl0J10gPSAnRWRpdCB1cmwnOw0KJGxhbmdbJ3Byb21wdF9maWx0ZXJfZGF0ZSddID0gJ0ZpbHRlciBkYXRlJzsNCiRsYW5nWydwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInXSA9ICdTb3J0IG9yZGVyJzsNCiRsYW5nWydwcm9tcHRfc3VtbWFyeV9zb3J0aW5nJ10gPSAnU29ydGluZyc7DQokbGFuZ1sncHJvbXB0X3N1bW1hcnlfcGFnZWxpbWl0J10gPSAnUGFnZWxpbWl0JzsNCiRsYW5nWydwcm9tcHRfY2F0ZWdvcnlfZXh0cmFfbGFiZWwnXSA9ICdDYXRlZ29yeSBleHRyYSBsYWJlbCc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fdGl0bGVfZWRpdCddID0gJ0VkaXQgdGl0bGUnOw0KJGxhbmdbJ3ZpZXdhYmxlX2ZpZWxkcyddID0gJ1ZpZXdhYmxlIGZpZWxkcyc7DQokbGFuZ1sndmlldyddID0gJ1ZpZXcnOw0KJGxhbmdbJ3Jlb3JkZXInXSA9ICdSZW9yZGVyJzsNCiRsYW5nWyd0byddID0gJ1RvJzsNCiRsYW5nWydwb3NpdGlvbiddID0gJ1Bvc2l0aW9uJzsNCiRsYW5nWydjcmVhdGVkZGF0ZSddID0gJ0NyZWF0ZWQgZGF0ZSc7DQokbGFuZ1snbW9kaWZpZWRkYXRlJ10gPSAnTW9kaWZpZWQgZGF0ZSc7DQoNCiMjc2VhcmNoDQokbGFuZ1snc2VhcmNoJ10gPSAnU2VhcmNoJzsNCiRsYW5nWydyZWluZGV4J10gPSAnUmVpbmRleCc7DQokbGFuZ1sncHJvbXB0X3NlYXJjaGFibGUnXSA9ICdTZWFyY2hhYmxlJzsNCiRsYW5nWydwcm9tcHRfc2VhcmNoX2RhdGVfZW5kJ10gPSAnRGF0ZSBlbmQgZm9yIHNlYXJjaCc7DQoNCiRsYW5nWydleHRyYSddID0gJ0V4dHJhJzsNCg0KJGxhbmdbJ3N1bmRheSddID0gJ1N1bmRheSc7DQokbGFuZ1snbW9uZGF5J10gPSAnTW9uZGF5JzsNCiRsYW5nWyd0dWVzZGF5J10gPSAnVHVlc2RheSc7DQokbGFuZ1snd2VkbmVzZGF5J10gPSAnV2VkbmVzZGF5JzsNCiRsYW5nWyd0aHVyc2RheSddID0gJ1RodXJzZGF5JzsNCiRsYW5nWydmcmlkYXknXSA9ICdGcmlkYXknOw0KJGxhbmdbJ3NhdHVyZGF5J10gPSAnU2F0dXJkYXknOw0KDQokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUmVjdXIgcGVyaW9kJzsNCiRsYW5nWyd3ZWVrZGF5cyddID0gJ1dlZWtkYXlzJzsNCiRsYW5nWydubyddID0gJ05vbmUnOw0KJGxhbmdbJ2RhaWx5J10gPSAnRGFpbHknOw0KJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RheXMnOw0KDQoNCi8vIGdsb2JhbA0KJGxhbmdbJ2NoYW5nZXNzYXZlZCddID0gJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHNhdmVkJzsNCiRsYW5nWydiYWNrJ10gPSAnQmFjayc7DQokbGFuZ1sndXAnXSA9ICdVcCc7DQokbGFuZ1snZG93biddID0gJ0Rvd24nOw0KJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsNCiRsYW5nWydkZWxldGUnXSA9ICdEZWxldGUnOw0KJGxhbmdbJ25vc3VjaGlkJ10gPSAnTm8gc3VjaCBJRCc7DQokbGFuZ1snZGVsZXRlZCddID0gJ1RoZSBlbnRyeSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZCc7DQokbGFuZ1snYWRkJ10gPSAnQWRkJzsNCiRsYW5nWydhbGlhcyddID0gJ0FsaWFzJzsNCiRsYW5nWydhbGlhc19pbnZhbGlkJ10gPSAnQWxpYXMgaXMgaW52YWxpZC4gSXQgbXVzdCBiZSBhIHZhbGlkIFBIUCB2YXJpYWJsZSBuYW1lJzsNCg0KDQokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPlZlcnNpb24gMS45IEphbnVhciwgMjAxMiANCjxiciAvPmFkZCBjYXRlZ29yeSBjdXN0b20gZmllbGRzLCBtb3ZlZCB0byB0aGVpciBvd24gc2VjdGlvbi4NCjxiciAvPiB1cGdyYWRlIHNjcmlwdCBjb21wYXRpYmxlIHdpdGggMS44LjEgdmVyc2lvbg0KPGJyIC8+IGZpeCBzb21lIGlzc3Vlcw0KPC9saT4NCjxsaT5WZXJzaW9uIDEuOC4xIEphbnVhciwgMjAxMiANCjxiciAvPmFkZCBvcHRpb24gZm9yIHByZXZpZXcgaW4gYWRtaW4NCjxiciAvPmFkZCBwcmV2aWV3IGljb24gaW4gYWRtaW4NCjxiciAvPmFkZCBvcHRpb24gZm9yIGNvcHkgaXRlbQ0KPGJyIC8+Zml4IGF1dGxvYWQgY2xhc3MgZ2VuZXJhdG9yX29wdHMgaW4gYWRtaW4NCjwvbGk+DQo8bGk+VmVyc2lvbiAxLjggSmFudWFyLCAyMDExIC0gIGl0ZW0gcHJldmlldywgYnVnIGZpeGVzPC9saT4NCjxsaT5WZXJzaW9uIDEuNyBOb3ZlbWJlciwgMjAxMSAtICBpbml0IHJlbGVhc2U8L2xpPg0KPC91bD4nOw0KDQovLyBtb2R1bGUgaGVscA0KJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPk1vZHVsZSBnZW5lcmF0b3IgbGV0cyB5b3UgY3JlYXRlIGEgbGlzdCB0aGUgbW9kdWxlcyBhcyBOZXdzLCBQcm9kdWN0cyBhdGMuIEluZGl2aWR1YWwgbW9kdWxlcywgeW91IGNhbiBsaW5rIGJldHdlZW4gdGhlbS4gIFlvdSBjYW4gY3JlYXRlIGEgbW9kdWxlIFBlb3BsZSwgR2VuZGVyIGFuZCBUeXBlIG9mIGVtcGxveW1lbnQgYW5kIGxpbmsgYmV0d2VuIHRoZW0uPC9wPg0KPHA+RWFjaCBtb2R1bGUgaW5jbHVkZXMgdGhlIGFiaWxpdHkgdG8gY3JlYXRlZCBjYXRlZ29yaWVzLCBjdXN0b20gZmllbGRzICBhbmQgZWRpdGVkIGEgbnVtYmVyIG9mIHNldHRpbmdzLjwvcD4NCjxwPllvdSBjYW4gdXNlIHRoZSBsaXN0IHRlbXBsYXRlcyAsIGNhdGVnb3JpZXMgdGVtcGxhdGVzICwgZmlsdGVyIHRlbXBsYXRlcywgb3IgZGV0YWlsIHRlbXBsYXRlcyBhcyBpdCBhbHJlYWR5IGtub3duIG1vZHVsZXMgZnJvbSBOZXdzLCBQcm9kdWN0cyBldGMuPC9wPic7DQoNCiRsYW5nWydldmVudGRlc2MtSXRlbUFkZGVkJ10gPSAnU2VudCB3aGVuIGFuIGl0ZW0gaXMgYWRkZWQuJzsNCiRsYW5nWydldmVudGhlbHAtSXRlbUFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGFuIGl0ZW0gaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwiaXRlbV9pZFwiIC0gSWQgb2YgdGhlIGl0ZW0gaXRlbTwvbGk+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gSWQgb2YgdGhlIGNhdGVnb3J5IGZvciB0aGlzIGl0ZW08L2xpPg0KPGxpPlwidGl0bGVcIiAtIFRpdGxlIG9mIHRoZSBpdGVtPC9saT4NCjxsaT5cImFjdGl2ZSIgLSBTdGF0dXMgb2YgdGhlIGl0ZW0gKCIwIiBvciAiMSIpPC9saT4NCjxsaT5cIml0ZW1fZGF0ZSIgLSBEYXRlIHRoZSBpdGVtIHNob3VsZCBzdGFydCBiZWluZyBkaXNwbGF5ZWQ8L2xpPg0KPGxpPlwiaXRlbV9kYXRlX2VuZFwiIC0gRGF0ZSB0aGUgaXRlbSBzaG91bGQgc3RvcCBiZWluZyBkaXNwbGF5ZWQ8L2xpPg0KPC91bD4NCic7DQokbGFuZ1snZXZlbnRkZXNjLUl0ZW1FZGl0ZWQnXSA9ICdTZW50IHdoZW4gYW4gaXRlbSBpcyBlZGl0ZWQuJzsNCiRsYW5nWydldmVudGhlbHAtSXRlbUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhbiBpdGVtIGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJpdGVtX2lkXCIgLSBJZCBvZiB0aGUgaXRlbSBpdGVtPC9saT4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBJZCBvZiB0aGUgY2F0ZWdvcnkgZm9yIHRoaXMgaXRlbTwvbGk+DQo8bGk+XCJ0aXRsZVwiIC0gVGl0bGUgb2YgdGhlIGl0ZW08L2xpPg0KPGxpPlwiYWN0aXZlIiAtIFN0YXR1cyBvZiB0aGUgaXRlbSAoIjAiIG9yICIxIik8L2xpPg0KPGxpPlwiaXRlbV9kYXRlIiAtIERhdGUgdGhlIGl0ZW0gc2hvdWxkIHN0YXJ0IGJlaW5nIGRpc3BsYXllZDwvbGk+DQo8bGk+XCJpdGVtX2RhdGVfZW5kXCIgLSBEYXRlIHRoZSBpdGVtIHNob3VsZCBzdG9wIGJlaW5nIGRpc3BsYXllZDwvbGk+DQo8L3VsPg0KJzsNCiRsYW5nWydldmVudGRlc2MtSXRlbURlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYW4gaXRlbSBpcyBkZWxldGVkLic7DQokbGFuZ1snZXZlbnRoZWxwLUl0ZW1EZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGFuIGl0ZW0gaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJpdGVtX2lkXCIgLSBJZCBvZiB0aGUgaXRlbSBpdGVtPC9saT4NCjwvdWw+DQonOw0KJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnU2VudCB3aGVuIGEgY2F0ZWdvcnkgaXMgYWRkZWQuJzsNCiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhdGVnb3J5IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBJZCBvZiB0aGUgaXRlbSBjYXRlZ29yeTwvbGk+DQo8bGk+XCJuYW1lXCIgLSBOYW1lIG9mIHRoZSBpdGVtIGNhdGVnb3J5PC9saT4NCjwvdWw+DQonOw0KJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ1NlbnQgd2hlbiBhIGNhdGVnb3J5IGlzIGVkaXRlZC4nOw0KJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhdGVnb3J5IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gSWQgb2YgdGhlIGl0ZW0gY2F0ZWdvcnk8L2xpPg0KPGxpPlwibmFtZVwiIC0gTmFtZSBvZiB0aGUgaXRlbSBjYXRlZ29yeTwvbGk+DQo8bGk+XCJvcmlnbmFtZVwiIC0gVGhlIG9yaWdpbmFsIG5hbWUgb2YgdGhlIGl0ZW0gY2F0ZWdvcnk8L2xpPg0KPC91bD4NCic7DQokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RGVsZXRlZCddID0gJ1NlbnQgd2hlbiBhIGNhdGVnb3J5IGlzIGRlbGV0ZWQuJzsNCiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2F0ZWdvcnkgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gSWQgb2YgdGhlIGRlbGV0ZWQgY2F0ZWdvcnkgPC9saT4NCjxsaT5cIm5hbWVcIiAtIE5hbWUgb2YgdGhlIGRlbGV0ZWQgY2F0ZWdvcnk8L2xpPg0KPC91bD4NCic7DQokbGFuZ1snZXZlbnRkZXNjLUl0ZW1zUmVvcmRlcmVkJ10gPSAnU2VudCB3aGVuIGl0ZW1zIGFyZSByZW9yZGVyZWQuJzsNCiRsYW5nWydldmVudGhlbHAtSXRlbXNSZW9yZGVyZWQnXSA9ICc8cD5TZW50IHdoZW4gaXRlbXMgaXMgcmVvcmRlcmVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBJZCBvZiB0aGUgZGVsZXRlZCBjYXRlZ29yeSA8L2xpPg0KPGxpPlwibmFtZVwiIC0gTmFtZSBvZiB0aGUgZGVsZXRlZCBjYXRlZ29yeTwvbGk+DQo8L3VsPg0KJzsNCiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcmllc1Jlb3JkZXJlZCddID0gJ1NlbnQgd2hlbiBjYXRlZ29yaWVzIGFyZSByZW9yZGVyZWQuJzsNCiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcmllc1Jlb3JkZXJlZCddID0gJzxwPlNlbnQgd2hlbiBjYXRlZ29yaWVzIGFyZSByZW9yZGVyZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIElkIG9mIHRoZSBkZWxldGVkIGNhdGVnb3J5IDwvbGk+DQo8bGk+XCJuYW1lXCIgLSBOYW1lIG9mIHRoZSBkZWxldGVkIGNhdGVnb3J5PC9saT4NCjwvdWw+DQonOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.generator_fields.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl9maWVsZHMgewoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9maWVsZHNfZm9yX2ZpbHRlcnMoJG1vZCwgJGJsb2NrdHlwZXMgPSBhcnJheSgpLCAkc2VjdGlvbiA9ICdpdGVtcycpIHsKICAgICAgICAkZmllbGRzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRfZGVmcygkbW9kLCBudWxsLCBudWxsLCBudWxsLCAkc2VjdGlvbik7CiAgICAgICAgaWYgKCEkZmllbGRzKQogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAkY3VzdG9tX2ZsZHMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRmaWVsZHMgYXMgJHJvdykgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHJvd1sidHlwZSJdLCAkYmxvY2t0eXBlcykpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRyb3dbJ2ZpZWxkZGVmX2lkJ11dID0gJHJvdzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjdXN0b21fZmxkczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9maWVsZHNfdmFscygkbW9kLCAkaXRlbV9pZCA9IG51bGwsICRwYXJhbXMgPSBhcnJheSgpKSB7CgogICAgICAgIC8vIHJldHVybiBlbXB0eSBhcnJheQogICAgICAgIGlmICgkaXRlbV9pZCA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKCiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0REIoKTsKICAgICAgICAkZmllbGR2YWxzID0gYXJyYXkoKTsKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIFdIRVJFIGl0ZW1faWQgPSA/JzsKICAgICAgICAkcmVzdWx0ID0gJGRiLT5HZXRBcnJheSgkcXVlcnksIGFycmF5KCRpdGVtX2lkKSk7CiAgICAgICAgaWYgKGlzX2FycmF5KCRyZXN1bHQpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRyZXN1bHQgYXMgJHJvdykgewogICAgICAgICAgICAgICAgJGZpZWxkdmFsc1skcm93WydmaWVsZGRlZl9pZCddXSA9ICRyb3dbJ3ZhbHVlJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIHByb2NjZXMgdmFsdWVzIGZyb20gcGFyYW1zCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10gYXMgJGZsZGlkID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgJGZpZWxkdmFsc1skZmxkaWRdID0gaXNfYXJyYXkoJHZhbHVlKSA/IGVtcHR5KCR2YWx1ZSkgPyAnJyA6IGltcGxvZGUoJywnLCAkdmFsdWUpICA6ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmaWVsZHZhbHM7CiAgICB9Cgp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.generator_filters.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl9maWx0ZXJzIHsKCiAgICBwcml2YXRlICRfdHlwZTsKICAgIHByaXZhdGUgJF9tb2Q7CiAgICBwcml2YXRlICRfaWQ7CiAgICBwcml2YXRlICRfaW5zdGFuY2UgPSBudWxsOwogICAgcHVibGljICRjdXN0b21fZmllbGRzID0gYXJyYXkoKTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlkID0gbnVsbCwgJG1vZCwgJHR5cGUgPSAnYWRtaW4nKSB7CgogICAgICAgIGlmICgkdGhpcy0+X2luc3RhbmNlICE9IG51bGwgJiYgaXNfb2JqZWN0KCR0aGlzLT5faW5zdGFuY2UpKQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9pbnN0YW5jZTsKCiAgICAgICAgJHRoaXMtPl9pZCA9ICRpZDsKICAgICAgICAkdGhpcy0+X3R5cGUgPSAkdHlwZTsKICAgICAgICAkdGhpcy0+X21vZCA9ICRtb2Q7CiAgICAgICAgJHRoaXMtPl9pbnN0YW5jZSA9ICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzX2N1c3RvbV9maWVsZHMoJGJsb2NrdHlwZXMgPSBhcnJheSgpLCAkY3VzdG9tX2ZsZHMgPSBhcnJheSgpKSB7CgogICAgICAgIGlmIChpc19hcnJheSgkY3VzdG9tX2ZsZHMpICYmIGVtcHR5KCRjdXN0b21fZmxkcykpCiAgICAgICAgICAgICRjdXN0b21fZmxkcyA9IGdlbmVyYXRvcl9maWVsZHM6OmdldF9maWVsZHNfZm9yX2ZpbHRlcnMoJHRoaXMtPl9tb2QsICRibG9ja3R5cGVzKTsKCgogICAgICAgIGlmICgkY3VzdG9tX2ZsZHMpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGN1c3RvbV9mbGRzIGFzICRjdXN0b21fZmxkID0+ICRzZXR0aW5nKSB7CiAgICAgICAgICAgICAgICAvLyBnZXQgZXh0cmEgY29tbWFuZHMKICAgICAgICAgICAgICAgICRpbnN0cnVjdGlvbnMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYSgkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydleHRyYSddLCAkdGhpcy0+X21vZCk7CgogICAgICAgICAgICAgICAgc3dpdGNoICgkc2V0dGluZ1sndHlwZSddKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGV4dGJveCc6CiAgICAgICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ3NpemUnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX3NpemUoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ21heF9sZW5ndGgnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX21heF9sZW5ndGgoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdkcm9wZG93bic6CiAgICAgICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ29wdGlvbnMnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX29wdGlvbnMoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdkcm9wZG93bmZyb21tb2R1bGUnOgogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydvcHRpb25zJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tb2R1bGVvcHRpb25zKCRpbnN0cnVjdGlvbnMsICRtb2QpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnc2VsZWN0X2RlZmF1bHQnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX3NlbGVjdGRlZmF1bHQoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ211bHRpcGxlJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tdWx0aXBsZSgkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsncGFyYW1zJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tb2R1bGVwYXJhbXMoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2R1bGVfbGluayc6CiAgICAgICAgICAgICAgICAgICAgICAgIC8vJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnbGluayddID0gJGluc3RydWN0aW9uc1swXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbG9yX3BpY2tlcic6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdwYWdlJzoKICAgICAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnb3B0aW9ucyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfcGFnZSgkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXRpYyc6CgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGFiJzoKCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6CgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGV4dGFyZWEnOgogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydjb2xzJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9jb2xzKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydyb3dzJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9yb3dzKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydtYXhfbGVuZ3RoJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tYXhfbGVuZ3RoKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWyd3eXNpd3lnJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV93eXNpd3lnKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0X2RhdGUnOgogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydzaXplJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9zaXplKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydtYXhfbGVuZ3RoJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tYXhfbGVuZ3RoKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydkYXRlZm9ybWF0J10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9kYXRlX2Zvcm1hdCgkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VwbG9hZF9maWxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnYWxsb3cnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX2FsbG93KCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0X2ZpbGUnOgogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydhbGxvdyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfYWxsb3coJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ2RpciddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfZGlyKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydleGNsdWRlX3ByZWZpeCddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfZXhjbHVkZV9wcmVmaXgoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR0aGlzLT5jdXN0b21fZmllbGRzID0gJGN1c3RvbV9mbGRzOwogICAgICAgIHJldHVybiAkdGhpcy0+Y3VzdG9tX2ZpZWxkczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuZXJhdGUoJGl0ZW1faWQgPSBudWxsLCAkcGFyYW1zID0gYXJyYXkoKSwgJGZpZWxkdmFscyA9IGFycmF5KCksICRmcm9udGVuZCA9IG51bGwpIHsKCiAgICAgICAgaWYgKCEkdGhpcy0+Y3VzdG9tX2ZpZWxkcykKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAkY3VzdG9tX2ZsZHNfb2JqID0gYXJyYXkoKTsKCiAgICAgICAgJGlkID0gJHRoaXMtPl9pZDsKICAgICAgICAkbW9kID0gJHRoaXMtPl9tb2Q7CgogICAgICAgIGlmIChlbXB0eSgkZmllbGR2YWxzKSkKICAgICAgICAgICAgJGZpZWxkdmFscyA9IGdlbmVyYXRvcl9maWVsZHM6OmdldF9maWVsZHNfdmFscygkbW9kLCAkaXRlbV9pZCwgJHBhcmFtcyk7CgoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y3VzdG9tX2ZpZWxkcyBhcyAkY3VzdG9tX2ZsZCkgewogICAgICAgICAgICBpZiAoISRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICRvYmogPSBuZXcgU3RkQ2xhc3MoKTsKICAgICAgICAgICAgJG5hbWUgPSAnY3VzdG9tZmllbGRbJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddIC4gJ10nOwogICAgICAgICAgICAkb2JqLT5maWVsZGRlZl9pZCA9ICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddOwogICAgICAgICAgICAkb2JqLT5wcm9tcHQgPSAoJGN1c3RvbV9mbGRbJ3JlcXVpcmVkJ10gPyAnKicgOiAnJykgLiAkY3VzdG9tX2ZsZFsnbmFtZSddOwogICAgICAgICAgICAkb2JqLT5sYWJlbCA9ICRjdXN0b21fZmxkWyduYW1lJ107CiAgICAgICAgICAgICRvYmotPmFsaWFzID0gJGN1c3RvbV9mbGRbJ2FsaWFzJ107CiAgICAgICAgICAgICRvYmotPmVkaXR2aWV3ID0gJGN1c3RvbV9mbGRbJ2VkaXR2aWV3J107CiAgICAgICAgICAgICRvYmotPm5hbWUgPSAkaWQgLiAkY3VzdG9tX2ZsZFsnYWxpYXMnXTsKICAgICAgICAgICAgJG9iai0+dHlwZSA9ICRjdXN0b21fZmxkWyd0eXBlJ107CiAgICAgICAgICAgICR2YWx1ZSA9IChpc3NldCgkZmllbGR2YWxzWyRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddXSkgPyAkZmllbGR2YWxzWyRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddXSA6ICcnKTsKICAgICAgICAgICAgJG9iai0+aXRlbV9pZCA9ICRpdGVtX2lkOwogICAgICAgICAgICAkb2JqLT52YWx1ZSA9ICR2YWx1ZTsKICAgICAgICAgICAgJG9iai0+aGVscCA9ICRjdXN0b21fZmxkWydoZWxwJ107CiAgICAgICAgICAgICRvYmotPmV4dHJhID0gJGN1c3RvbV9mbGRbJ2V4dHJhJ107CiAgICAgICAgICAgICRvYmotPmZpbHRlciA9ICRpZCAuICdmaWx0ZXJfJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddIC4gJ19lcXVhbCc7CiAgICAgICAgICAgIHN3aXRjaCAoJGN1c3RvbV9mbGRbJ3R5cGUnXSkgewogICAgICAgICAgICAgICAgY2FzZSAndGV4dGJveCc6CiAgICAgICAgICAgICAgICAgICAgJHNpemUgPSAhZW1wdHkoJGN1c3RvbV9mbGRbJ3NpemUnXSkgPyAkY3VzdG9tX2ZsZFsnc2l6ZSddIDogNTA7CiAgICAgICAgICAgICAgICAgICAgJGZyb250X2VuZF90eXBlID0gJ2VxdWFsJzsKICAgICAgICAgICAgICAgICAgICBpZiAoJGZyb250ZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9IChpc1NldCgkcGFyYW1zWydmaWx0ZXJfJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddIC4gJ18nIC4gJGZyb250X2VuZF90eXBlXSkgPyAkcGFyYW1zWydmaWx0ZXJfJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddIC4gJ18nIC4gJGZyb250X2VuZF90eXBlXSA6ICcnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJGN1c3RvbV9mbGRbJ21heF9sZW5ndGgnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAkbmFtZSwgJHZhbHVlLCAkc2l6ZSwgJGN1c3RvbV9mbGRbJ21heF9sZW5ndGgnXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAkbmFtZSwgJHZhbHVlLCAkc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdtb2R1bGUnOgoKICAgICAgICAgICAgICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgJGl0ZW1zID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGN1c3RvbV9mbGRbJ3BhcmFtcyddKSAmJiAhZW1wdHkoJGN1c3RvbV9mbGRbJ3BhcmFtcyddKSAmJiAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRjdXN0b21fZmxkWydwYXJhbXMnXVsibW9kdWxlIl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRjdXN0b21fZmxkWydwYXJhbXMnXVsibW9kdWxlIl0pOwogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZFsncGFyYW1zJ11bIml0ZW1zIl0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAkbW9kdWxlLT5Eb0FjdGlvbignZGVmYXVsdCcsICRpZCwgJGN1c3RvbV9mbGRbJ3BhcmFtcyddLCAkcmV0dXJuaWQpOwogICAgICAgICAgICAgICAgICAgICAgICAkaXRlbXMgPSBnZW5lcmF0b3JfdG9vbHM6OiRpdGVtczsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnMgPSBleHRlbmRlZF90b29sc19vcHRzOjpvYmplY3RfdG9faGFzaCgkaXRlbXMsICd0aXRsZScsICdpdGVtX2lkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcl90b29sczo6JGl0ZW1zID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChpc1NldCgkY3VzdG9tX2ZsZFsnbXVsdGlwbGUnXSkgJiYgaXNfaW50KCRjdXN0b21fZmxkWydtdWx0aXBsZSddKSAmJiAhJGZyb250ZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NldCgkY3VzdG9tX2ZsZFsnc2VsZWN0X2RlZmF1bHQnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoJGN1c3RvbV9mbGRbJ3NlbGVjdF9kZWZhdWx0J10gPT4gJycpICsgJG9wdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lIC4gIltdIiwgJG9wdGlvbnMsICghZW1wdHkoJHZhbHVlKSA/IGV4cGxvZGUoJywnLCAkdmFsdWUpIDogYXJyYXkoMCA9PiAnJykpLCAkY3VzdG9tX2ZsZFsnbXVsdGlwbGUnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJG5hbWUgLiAiW10iLCAnJykgLiAkbW9kLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSAuICJbXSIsICRvcHRpb25zLCAoIWVtcHR5KCR2YWx1ZSkgPyBleHBsb2RlKCcsJywgJHZhbHVlKSA6IGFycmF5KDAgPT4gJycpKSwgJGN1c3RvbV9mbGRbJ211bHRpcGxlJ10pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnMgPSBhcnJheShnZW5lcmF0b3IoKS0+TGFuZygnc2VsZWN0X2RlZmF1bHQnKSA9PiAnJykgKyAkb3B0aW9uczsKCiAgICAgICAgICAgICAgICAgICAgICAgICRmcm9udF9lbmRfdHlwZSA9ICdlcXVhbCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NldCgkY3VzdG9tX2ZsZFsnbXVsdGlwbGUnXSkgJiYgaXNfaW50KCRjdXN0b21fZmxkWydtdWx0aXBsZSddKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmcm9udF9lbmRfdHlwZSA9ICdpbnNldCc7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZyb250ZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICdmaWx0ZXJfJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddIC4gJ18nIC4gJGZyb250X2VuZF90eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gKGlzU2V0KCRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdKSA/ICRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdIDogJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmlsdGVyID0gJGlkIC4gJG5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPml0ZW1zID0gJGl0ZW1zOwogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5vcHRpb25zID0gJG9wdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICRuYW1lLCAkb3B0aW9ucywgLTEsICR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnZHJvcGRvd24nOgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1tnZW5lcmF0b3IoKS0+TGFuZygnc2VsZWN0X2RlZmF1bHQnKV0gPSAnJzsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGN1c3RvbV9mbGRbJ29wdGlvbnMnXSkgJiYgIWVtcHR5KCRjdXN0b21fZmxkWydvcHRpb25zJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXlfbWVyZ2UoJG9wdGlvbnMsIGFycmF5X2ZsaXAoJGN1c3RvbV9mbGRbJ29wdGlvbnMnXSkpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGZyb250X2VuZF90eXBlID0gJ2VxdWFsJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRmcm9udGVuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICdmaWx0ZXJfJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddIC4gJ18nIC4gJGZyb250X2VuZF90eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAoaXNTZXQoJHBhcmFtc1snZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZV0pID8gJHBhcmFtc1snZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZV0gOiAnJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkb2JqLT5vcHRpb25zID0gJG9wdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJG5hbWUsICRvcHRpb25zLCAtMSwgJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdkcm9wZG93bmZyb21tb2R1bGUnOgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1tnZW5lcmF0b3IoKS0+TGFuZygnc2VsZWN0X2RlZmF1bHQnKV0gPSAnc2VsZWN0X2RlZmF1bHQnOwogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkY3VzdG9tX2ZsZFsnb3B0aW9ucyddKSAmJiAhZW1wdHkoJGN1c3RvbV9mbGRbJ29wdGlvbnMnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnMgPSBhcnJheV9tZXJnZSgkb3B0aW9ucywgYXJyYXlfZmxpcCgkY3VzdG9tX2ZsZFsnb3B0aW9ucyddKSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAkbmFtZSwgJG9wdGlvbnMsIC0xLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3BhZ2UnOgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1tnZW5lcmF0b3IoKS0+TGFuZygnc2VsZWN0X2RlZmF1bHQnKV0gPSAnc2VsZWN0X2RlZmF1bHQnOwogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkY3VzdG9tX2ZsZFsnb3B0aW9ucyddKSAmJiAhZW1wdHkoJGN1c3RvbV9mbGRbJ29wdGlvbnMnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnMgPSBhcnJheV9tZXJnZSgkb3B0aW9ucywgYXJyYXlfZmxpcCgkY3VzdG9tX2ZsZFsnb3B0aW9ucyddKSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAkbmFtZSwgJG9wdGlvbnMsIC0xLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ2NvbG9yX3BpY2tlcic6CiAgICAgICAgICAgICAgICAgICAgJHR4dCA9ICcnOwogICAgICAgICAgICAgICAgICAgICR0bXAgPSAnPGlucHV0IHR5cGU9ImNvbG9yIiBkYXRhLWhleD0idHJ1ZSIgbmFtZT0iJXMiIHZhbHVlPSIlcyIvPic7CiAgICAgICAgICAgICAgICAgICAgJHR4dCAuPSBzcHJpbnRmKCR0bXAsICRpZCAuICRuYW1lLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJHR4dDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdtb2R1bGVfbGluayc6CiAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkY3VzdG9tX2ZsZFsnbGluayddOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzoKICAgICAgICAgICAgICAgICAgICAkZnJvbnRfZW5kX3R5cGUgPSAnZXF1YWwnOwogICAgICAgICAgICAgICAgICAgIGlmICgkZnJvbnRlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAnZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gKGlzU2V0KCRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdKSA/ICRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdIDogJycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJG5hbWUsICcwJykgLiAkbW9kLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJG5hbWUsICcxJywgJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0YXJlYSc6CiAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkbW9kLT5DcmVhdGVUZXh0QXJlYSgkY3VzdG9tX2ZsZFsnd3lzaXd5ZyddLCAkaWQsICR2YWx1ZSwgJG5hbWUsICcnLCAnJywgJycsICcnLCAkY3VzdG9tX2ZsZFsnY29scyddLCAkY3VzdG9tX2ZsZFsncm93cyddKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWMnOgogICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAndGFiJzoKICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9kYXRlJzoKCiAgICAgICAgICAgICAgICAgICAgJHNpemUgPSAhZW1wdHkoJGN1c3RvbV9mbGRbJ3NpemUnXSkgPyAkY3VzdG9tX2ZsZFsnc2l6ZSddIDogMjA7CgogICAgICAgICAgICAgICAgICAgICRzZWxlY3RvciA9ICcjJyAuICRpZCAuIHN0cl9yZXBsYWNlKGFycmF5KCdbJywgJ10nKSwgYXJyYXkoJ1xcXFsnLCAnXFxcXScpLCAkbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgJGRhdGVwaWNrZXIgPSAnCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKXsKICAgICQoIicgLiAkc2VsZWN0b3IgLiAnIikuZGF0ZXBpY2tlcih7JyAuICghZW1wdHkoJGN1c3RvbV9mbGRbJ2RhdGVmb3JtYXQnXSkgPyAnZGF0ZUZvcm1hdDogXCcnIC4gaHRtbGVudGl0aWVzKCRjdXN0b21fZmxkWydkYXRlZm9ybWF0J10pIC4gJ1wnJyA6ICcnKSAuICd9KTsKfSk7Cjwvc2NyaXB0Pic7CgogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJGN1c3RvbV9mbGRbJ21heF9sZW5ndGgnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkZGF0ZXBpY2tlciAuICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRuYW1lLCAkdmFsdWUsICRzaXplLCAkY3VzdG9tX2ZsZFsnbWF4X2xlbmd0aCddKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRkYXRlcGlja2VyIC4gJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJG5hbWUsICR2YWx1ZSwgJHNpemUpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAndXBsb2FkX2ZpbGUnOgogICAgICAgICAgICAgICAgICAgICRuYW1lID0gJ2N1c3RvbWZpZWxkXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZSAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5kZWxldGVfZmlsZSA9ICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnZGVsZXRlX2N1c3RvbWZpZWxkWycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICddJywgJ2RlbGV0ZScpIC4gJyAnIC4gZ2VuZXJhdG9yKCktPkxhbmcoJ2RlbGV0ZScpOwogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWxlX2xvY2F0aW9uID0gZ2VuZXJhdG9yX3Rvb2xzOjpmaWxlX2xvY2F0aW9uKCRtb2QsIGFycmF5KCdpdGVtX2lkJyA9PiAkaXRlbV9pZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWxlcGF0aF9sb2NhdGlvbiA9IGdlbmVyYXRvcl90b29sczo6ZmlsZXBhdGhfbG9jYXRpb24oJG1vZCwgYXJyYXkoJ2l0ZW1faWQnID0+ICRpdGVtX2lkKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPmlzX2ltYWdlID0gZ2V0SW1hZ2VTaXplKGNtc19qb2luX3BhdGgoZ2VuZXJhdG9yX3Rvb2xzOjpmaWxlcGF0aF9sb2NhdGlvbigkbW9kLCBhcnJheSgnaXRlbV9pZCcgPT4gJGl0ZW1faWQpKSwgJHZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPmZpbGVuYW1lID0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkbW9kLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCAkbmFtZSk7CgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9maWxlJzoKICAgICAgICAgICAgICAgICAgICAkcCA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sICRjdXN0b21fZmxkWydkaXInXSk7CgogICAgICAgICAgICAgICAgICAgIGlmICghaXNfZGlyKCRwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzID0gQG1rZGlyKCRwKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRpbWFnZXMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgICRpbWFnZXNbZ2VuZXJhdG9yKCktPkxhbmcoJ3NlbGVjdF9kZWZhdWx0JyldID0gJ3NlbGVjdF9kZWZhdWx0JzsKCiAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWQgPSAoIWVtcHR5KCRjdXN0b21fZmxkWydhbGxvdyddKSA/ICRjdXN0b21fZmxkWydhbGxvdyddIDogYXJyYXkoJ2pwZycsICdnaWYnLCAncG5nJykpOwoKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRoYW5kbGUgPSBvcGVuZGlyKCRwKSkgewogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZmFsc2UgIT09ICgkZmlsZSA9IHJlYWRkaXIoJGhhbmRsZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGUgIT0gJy4nICYmICRmaWxlICE9ICcuLicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWdlbmVyYXRvcl90b29sczo6aGFzX3ByZWZpeCgkZmlsZSwgJGN1c3RvbV9mbGRbJ2V4Y2x1ZGVfcHJlZml4J10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXh0ID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZSwgJy4nKSwgMSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJGV4dCwgJGFsbG93ZWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbWFnZXNbJGZpbGVdID0gJGZpbGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWRpcigkaGFuZGxlKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICRuYW1lLCAkaW1hZ2VzLCAtMSwgJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGN1c3RvbV9mbGRzX29ialskb2JqLT5hbGlhc10gPSAkb2JqOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjdXN0b21fZmxkc19vYmo7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoYXJyYXkgJiRjb3VudGpvaW5zLCBhcnJheSAmJGpvaW5zLCBhcnJheSAmJHdoZXJlLCBhcnJheSAmJHBhcmFtYXJyYXkpIHsKICAgICAgICAKICAgIH0KCn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.generator_opts.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl9vcHRzIHsKCiAgICBwdWJsaWMgc3RhdGljICRmaWVsZGRlZnM7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewogICAgICAgIAogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5pdF9hZG1pbigkbW9kKSB7CgogICAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICAgICAkaW1hZ2VzX3NpemVfYWRtaW4gPSB0cmltKCRtb2QtPkdldFByZWZlcmVuY2UoJ2ltYWdlc19zaXplX2FkbWluJykpOwoKICAgICAgICBpZiAoc3RycG9zKCRpbWFnZXNfc2l6ZV9hZG1pbiwgJ3gnKSAhPT0gRkFMU0UpIHsKICAgICAgICAgICAgJGltYWdlc19zaXplX2FkbWluX2FycmF5ID0gZXhwbG9kZSgneCcsICRpbWFnZXNfc2l6ZV9hZG1pbik7CiAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignaW1hZ2Vfc2l6ZV9hZG1pbl93aWR0aCcsICRpbWFnZXNfc2l6ZV9hZG1pbl9hcnJheVswXSk7CiAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignaW1hZ2Vfc2l6ZV9hZG1pbl9oZWlnaHQnLCAkaW1hZ2VzX3NpemVfYWRtaW5fYXJyYXlbMV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignaW1hZ2Vfc2l6ZV9hZG1pbl93aWR0aCcsIDIwMCk7CiAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignaW1hZ2Vfc2l6ZV9hZG1pbl9oZWlnaHQnLCAwKTsKICAgICAgICB9CiAgICAgICAgLy8gcGFyYW1ldGVycyB0aGF0IGNhbiBiZSBjYWxsZWQgaW4gdGhlIG1vZHVsZSB0YWcKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0JywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9hY3Rpb24nKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdjYXRlZ29yeV9pZCcsIDAsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fY2F0ZWdvcnlfaWQnKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdjYXRlZ29yeScsIDAsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fY2F0ZWdvcnknKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdvcmRlcmJ5JywgJ2NyZWF0ZV9kYXRlJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9vcmRlcmJ5JykpOwogICAgICAgICRtb2QtPkNyZWF0ZVBhcmFtZXRlcignZGV0YWlsdGVtcGxhdGUnLCAnJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9kZXRhaWx0ZW1wbGF0ZScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ3N1bW1hcnl0ZW1wbGF0ZScsICcnLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX3N1bW1hcnl0ZW1wbGF0ZScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5dGVtcGxhdGUnLCAnJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9jYXRlZ29yeXRlbXBsYXRlJykpOwogICAgICAgICRtb2QtPkNyZWF0ZVBhcmFtZXRlcignZmlsdGVydGVtcGxhdGUnLCAnJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9maWx0ZXJ0ZW1wbGF0ZScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2RldGFpbHBhZ2UnLCAnJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9kZXRhaWxwYWdlJykpOwogICAgICAgICRtb2QtPkNyZWF0ZVBhcmFtZXRlcignaXRlbV9pZCcsIDAsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1faXRlbScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5X2lkJywgMCwgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9jYXRlZ29yeV9pZCcpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5JywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fY2F0ZWdvcnlfaWQnKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdwYWdlbGltaXQnLCAwLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX3BhZ2VsaW1pdCcpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ3NvcnRvcmRlcicsICdkZXNjJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9zb3J0b3JkZXInKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdpbmxpbmUnLCAwLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX2lubGluZScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ29uZXJvdycsICcnLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX29uZXJvdycpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2FsbHJvdycsICcnLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX2FsbHJvdycpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ29uZWNvdW50JywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fb25lY291bnQnKSk7CiAgICAgICAgLy8kbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2l0ZW1fZGF0ZV9mcm9tX3RvJywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1faXRlbV9kYXRlX2Zyb21fdG8nKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdkYXRlX3N0YXJ0JywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fZGF0ZV9zdGFydCcpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2RhdGVfZW5kJywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fZGF0ZV9lbmQnKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdmaWx0ZXJfJywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fZmlsdGVyJykpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5pdCgkbW9kKSB7CgogICAgICAgICRtb2QtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAgICAgJG1vZC0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3VybF9lZGl0JykpIHsKICAgICAgICAgICAgLy8gY3VzdG9tIHVybCBzdXBwb3J0CiAgICAgICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgaXRlbV9pZCx1cmwgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgYWN0aXZlID0gMSBBTkQgdXJsICE9IFwnXCcnOwogICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHRtcCkpIHsKICAgICAgICAgICAgICAgICRkZXRhaWxwYWdlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAtMSk7CiAgICAgICAgICAgICAgICBpZiAoJGRldGFpbHBhZ2UgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiAgICAgICAgICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkY29udGVudG9wcy0+R2V0RGVmYXVsdENvbnRlbnQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0bXAgYXMgJG9uZSkgewogICAgICAgICAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCdhY3Rpb24nID0+ICdkZXRhaWwnLCAncmV0dXJuaWQnID0+ICRkZXRhaWxwYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAnaXRlbV9pZCcgPT4gJG9uZVsnaXRlbV9pZCddKTsKICAgICAgICAgICAgICAgICAgICAkcm91dGUgPSBuZXcgQ21zUm91dGUoJG9uZVsndXJsJ10sICRtb2QtPkdldE5hbWUoKSwgJHBhcm1zLCBUUlVFKTsKICAgICAgICAgICAgICAgICAgICBjbXNfcm91dGVfbWFuYWdlcjo6cmVnaXN0ZXIoJHJvdXRlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgncGFnZScsIENMRUFOX0lOVCk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgncGFnZWxpbWl0JywgQ0xFQU5fSU5UKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYXRlZ29yeV9pZCcsIENMRUFOX0lOVCk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnY2F0ZWdvcnknLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ29yZGVyYnknLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ3NvcnRvcmRlcicsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnc29ydGJ5JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYXRlZ29yeXRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdzdW1tYXJ5dGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ2RldGFpbHRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdkZXRhaWxwYWdlJywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdpdGVtX2lkJywgQ0xFQU5fSU5UKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdpbmxpbmUnLCBDTEVBTl9JTlQpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ3N1Ym1pdCcsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnanVuaycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnb25lcm93JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdhbGxyb3cnLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ29uZWNvdW50JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdpdGVtcycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnaXRlbV9kYXRlX2Zyb21fdG8nLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ2l0ZW1saXN0JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdkYXRlX3N0YXJ0JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdkYXRlX2VuZCcsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnY2Rfb3JpZ3BhZ2UnLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ25vY2FjaGUnLCBDTEVBTl9JTlQpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ2NhY2hlX2tleScsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgncHJldmlldycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAgLiAnL2ZpbHRlcl8qLycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAgLiAnL2RhdGVmcm9tKi8nLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQIC4gJy9kYXRldG8qLycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAgLiAnLycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfKi8nLCBDTEVBTl9TVFJJTkcpOwoKCiAgICAgICAgJGRlZmF1bHRfZGV0YWlscGFnZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnKTsKCiAgICAgICAgJG1vZC0+UmVnaXN0ZXJSb3V0ZSgnLycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4JywgbXVuZ2Vfc3RyaW5nX3RvX3VybCgkbW9kLT5HZXROYW1lKCksIHRydWUpKSAuICdcL1tjQ11cLyg/UDxjYXRlZ29yeV9pZD5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKVwvKD9QPGp1bms+Lio/KVwvKD9QPGNhdGVnb3J5dGVtcGxhdGU+WzAtOV0rPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JykpOwogICAgICAgICRtb2QtPlJlZ2lzdGVyUm91dGUoJy8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSkgLiAnXC9bY0NdXC8oP1A8Y2F0ZWdvcnlfaWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxqdW5rPi4qPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JykpOwogICAgICAgICRtb2QtPlJlZ2lzdGVyUm91dGUoJy8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSkgLiAnXC9bY0NdXC8oP1A8Y2F0ZWdvcnlfaWQ+WzAtOV0rKVwvKD9QPGp1bms+Lio/KSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2RlZmF1bHQnLCAncmV0dXJuaWQnID0+ICRkZWZhdWx0X2RldGFpbHBhZ2UpKTsKICAgICAgICAkbW9kLT5SZWdpc3RlclJvdXRlKCcvJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCRtb2QtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvW2NDXVwvKD9QPGNhdGVnb3J5X2lkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JywgJ3JldHVybmlkJyA9PiAkZGVmYXVsdF9kZXRhaWxwYWdlKSk7CgogICAgICAgICRkZWZhdWx0X2RldGFpbHBhZ2UgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RldGFpbF9yZXR1cm5pZCcpOwoKICAgICAgICAkbW9kLT5SZWdpc3RlclJvdXRlKCcvJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCRtb2QtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvKD9QPGl0ZW1faWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxqdW5rPi4qPylcLyg/UDxkZXRhaWx0ZW1wbGF0ZT5bMC05XSs/KSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2RldGFpbCcpKTsKICAgICAgICAkbW9kLT5SZWdpc3RlclJvdXRlKCcvJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCRtb2QtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvKD9QPGl0ZW1faWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxqdW5rPi4qPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZXRhaWwnKSk7CiAgICAgICAgJG1vZC0+UmVnaXN0ZXJSb3V0ZSgnLycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4JywgbXVuZ2Vfc3RyaW5nX3RvX3VybCgkbW9kLT5HZXROYW1lKCksIHRydWUpKSAuICdcLyg/UDxpdGVtX2lkPlswLTldKylcLyg/UDxqdW5rPi4qPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZXRhaWwnLCAncmV0dXJuaWQnID0+ICRkZWZhdWx0X2RldGFpbHBhZ2UpKTsKICAgICAgICAkbW9kLT5SZWdpc3RlclJvdXRlKCcvJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCRtb2QtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvKD9QPGl0ZW1faWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2RldGFpbCcsICdyZXR1cm5pZCcgPT4gJGRlZmF1bHRfZGV0YWlscGFnZSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X21vZHVsZSgkbmFtZSkgewogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01vZHVsZUdlbmVyYXRvcicpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgcmV0dXJuICRkYi0+R2V0Um93KCdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2dlbmVyYXRvciBXSEVSRSBtb2R1bGVfbmFtZSA9ID8nLCBhcnJheSgkbmFtZSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlKCRuYW1lKSB7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICByZXR1cm4gJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9nZW5lcmF0b3IgV0hFUkUgbW9kdWxlX25hbWUgPSA/JywgYXJyYXkoJG5hbWUpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVwZGF0ZWF0dGFjaCgkbmFtZSwgJGF0dGFjaCkgewogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01vZHVsZUdlbmVyYXRvcicpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgcmV0dXJuICRkYi0+RXhlY3V0ZSgnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2dlbmVyYXRvciBTRVQgYXR0YWNoID0gPywgbW9kaWZpZWRfZGF0ZSA9IE5PVygpIFdIRVJFIG1vZHVsZV9uYW1lID0gPycsIGFycmF5KCRhdHRhY2gsICRuYW1lKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1cGRhdGVkYXRlKCRuYW1lKSB7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICByZXR1cm4gJGRiLT5FeGVjdXRlKCdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yIFNFVCBtb2RpZmllZF9kYXRlID0gTk9XKCkgV0hFUkUgbW9kdWxlX25hbWUgPSA/JywgYXJyYXkoJG5hbWUpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluc2VydCgkbmFtZSwgJGF0dGFjaCA9ICcnKSB7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICByZXR1cm4gJGRiLT5FeGVjdXRlKCdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9nZW5lcmF0b3IgKG1vZHVsZV9uYW1lLGF0dGFjaCwgY3JlYXRlX2RhdGUsIG1vZGlmaWVkX2RhdGUpIFZBTFVFUyAoPyw/LE5PVygpLE5PVygpKScsIGFycmF5KCRuYW1lLCAkYXR0YWNoKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbW9kdWxlc19saXN0KCkgewogICAgICAgIHJldHVybiBleHRlbmRlZF90b29sc19vcHRzOjp0b19oYXNoKHNlbGY6OmdldF9tb2R1bGVzKCksICdtb2R1bGVfbmFtZScsICdpZCcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X21vZHVsZXMoKSB7CiAgICAgICAgJGl0ZW1zID0gYXJyYXkoKTsKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRpdGVtcyA9ICRkYi0+R2V0QXJyYXkoJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yJyk7CiAgICAgICAgcmV0dXJuICRpdGVtczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9hdHRhY2hfbW9kdWxlcygkYXR0YWNobW9kdWxlcykgewogICAgICAgICRpdGVtcyA9IGFycmF5KCk7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkaXRlbXMgPSAkZGItPkdldEFycmF5KCdTRUxFQ1QgaWQsbW9kdWxlX25hbWUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9nZW5lcmF0b3IgV0hFUkUgRklORF9JTl9TRVQoaWQsPykgPiAwJywgYXJyYXkoJGF0dGFjaG1vZHVsZXMpKTsKICAgICAgICBpZiAoISRpdGVtcykKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAkaXRlbXMgPSBleHRlbmRlZF90b29sc19vcHRzOjp0b19oYXNoKCRpdGVtcywgJ21vZHVsZV9uYW1lJywgJ2lkJyk7CiAgICAgICAgJG1vZHVsZXMgPSBhcnJheV9rZXlzKCRpdGVtcyk7CgogICAgICAgIHJldHVybiBpbXBsb2RlKCcsICcsICRtb2R1bGVzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZpbGxfaXRlbV9mcm9tX2Zvcm1wYXJhbXMoJG1vZCwgYXJyYXkgJiRyb3csICRwYXJhbXMpIHsKICAgICAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIHN3aXRjaCAoJGtleSkgewogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkcm93WyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAKICAgICAgICAvLyBnZXQgY2F0ZWdvcnkgcGFyYW1zCiAgICAgICAgJGNhdGVnb3J5ID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY2F0ZWdvcnkoJG1vZCwgJHJvd1siY2F0ZWdvcnkiXSk7CiAgICAgICAgJHJvd1siY2F0ZWdvcnlfbmFtZSJdID0gJGNhdGVnb3J5WyJjYXRlZ29yeV9uYW1lIl07CiAgICAgICAgJHJvd1siY2F0ZWdvcnlfYWxpYXMiXSA9ICRjYXRlZ29yeVsiY2F0ZWdvcnlfYWxpYXMiXTsKICAgICAgICAKICAgICAgICAvLyBnZXQgY3VzdG9tIGZpZWxkcwogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSAmJiBpc19hcnJheSgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgewogICAgICAgICAgICBzZWxmOjokZmllbGRkZWZzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY29zdHVtX2ZpZWxkX2RlZigkbW9kLCAkcm93WyJpdGVtX2lkIl0sIGZhbHNlKTsKICAgICAgICAgICAgZm9yZWFjaCAoc2VsZjo6JGZpZWxkZGVmcyBhcyAkZmllbGQpIHsKICAgICAgICAgICAgICAgIHNlbGY6OiRmaWVsZGRlZnNbJGZpZWxkWyJmaWVsZGRlZl9pZCJdXSA9ICRmaWVsZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydjdXN0b21maWVsZCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KHNlbGY6OiRmaWVsZGRlZnNbJGtleV0pKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICBzZWxmOjokZmllbGRkZWZzW3NlbGY6OiRmaWVsZGRlZnNbJGtleV1bImFsaWFzIl1dWyJ2YWx1ZSJdID0gaW1wbG9kZSgnLCcsICR2YWx1ZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHNlbGY6OiRmaWVsZGRlZnNbc2VsZjo6JGZpZWxkZGVmc1ska2V5XVsiYWxpYXMiXV1bInZhbHVlIl0gPSAkdmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bnNldChzZWxmOjokZmllbGRkZWZzWyRrZXldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.generator_tools.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl90b29scyB7CgogICAgcHJpdmF0ZSBzdGF0aWMgJHNlYXJjaF9kYXRlX2VuZCA9IG51bGw7CiAgICBwdWJsaWMgc3RhdGljICRpdGVtcyA9IG51bGw7CiAgICBwdWJsaWMgc3RhdGljICRmaWVsZHNfYmxvY2tsaXN0ID0gYXJyYXkoJ2l0ZW1faWQnLCAnY2F0ZWdvcnlfaWQnLCAndGl0bGUnLCAnYWxpYXMnLCAndXJsJywgJ3Bvc2l0aW9uJywgJ2FjdGl2ZScsICdpdGVtX2RhdGUnLCAnY3JlYXRlX2RhdGUnLCAnbW9kaWZpZWRfZGF0ZScpOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9maWVsZF9kZWZzKCRtb2QsICR0eXBlID0gbnVsbCwgJGZpbHRlcl9mcm9udGVuZCA9IG51bGwsICRmaWx0ZXJfYWRtaW4gPSBudWxsLCAkc2VjdGlvbiA9ICdpdGVtcycpIHsKICAgICAgICAkcGFybXMgPSBhcnJheSgpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZmllbGRkZWZfaWQsIG5hbWUsIGFsaWFzLCBoZWxwLCB0eXBlLCBwb3NpdGlvbiwgcmVxdWlyZWQsIHNlYXJjaGFibGUsIGV4dHJhLCBmcm9udGVuZCxlZGl0dmlldywgZmlsdGVyX2Zyb250ZW5kLCBmaWx0ZXJfYWRtaW4gRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmJzsKICAgICAgICAkcXVlcnkgLj0gIiBXSEVSRSBzZWN0aW9uID0gPyAiOwogICAgICAgICRwYXJtc1tdID0gJHNlY3Rpb247CgogICAgICAgIGlmICgkdHlwZSkgewogICAgICAgICAgICAkcXVlcnkgLj0gIiBBTkQgdHlwZSAgPSA/ICAiOwogICAgICAgICAgICAkcGFybXNbXSA9ICR0eXBlOwogICAgICAgIH0KICAgICAgICBpZiAoJGZpbHRlcl9mcm9udGVuZCkgewogICAgICAgICAgICAkcXVlcnkgLj0gIiBBTkQgZmlsdGVyX2Zyb250ZW5kICA9ID8gICI7CiAgICAgICAgICAgICRwYXJtc1tdID0gJGZpbHRlcl9mcm9udGVuZDsKICAgICAgICB9CiAgICAgICAgaWYgKCRmaWx0ZXJfYWRtaW4pIHsKICAgICAgICAgICAgJHF1ZXJ5IC49ICIgQU5EIGZpbHRlcl9hZG1pbiAgPSA/ICAiOwogICAgICAgICAgICAkcGFybXNbXSA9ICRmaWx0ZXJfYWRtaW47CiAgICAgICAgfQogICAgICAgICRxdWVyeSAuPSAiICBPUkRFUiBCWSBwb3NpdGlvbiI7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5HZXRBbGwoJHF1ZXJ5LCAkcGFybXMpOwogICAgICAgIHJldHVybiAkZGJyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZmllbGRfdmFsKCRtb2QsICRpdGVtX2lkLCAkZmllbGRfYWxpYXMpIHsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgdmFsdWUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCAnOwogICAgICAgICRxdWVyeSAuPSAiIFdIRVJFICBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/IjsKICAgICAgICAkdmFsdWUgPSAkZGItPkdldE9uZSgkcXVlcnksICRwYXJtcyk7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhCiAgICAgKiBAcmV0dXJuIHRpbWVzdGFtcCAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm9jZXNzX2ZpbHRlcl9kYXRlKCRkYXRlKSB7CiAgICAgICAgJGRhdGVfZnJvbSA9ICcnOwogICAgICAgIHN3aXRjaCAoc3RydG9sb3dlcigkZGF0ZSkpIHsKICAgICAgICAgICAgY2FzZSAibm93IjoKICAgICAgICAgICAgICAgICRkYXRlX2Zyb20gPSB0aW1lKCk7CiAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRkYXRlX2FycmF5ID0gZXhwbG9kZSgnOicsICRkYXRlKTsKICAgICAgICAgICAgICAgIGlmIChjb3VudCgkZGF0ZV9hcnJheSkgPT0gMikgewogICAgICAgICAgICAgICAgICAgICRkYXRlX3RpbWUgPSBzdHJ0b3RpbWUoIisiIC4gJGRhdGVfYXJyYXlbMF0gLiAiIGRheSIpOwogICAgICAgICAgICAgICAgICAgICRkYXRlX2Zyb20gPSBta3RpbWUoJGRhdGVfYXJyYXlbMV0sIDAsIDAsIGRhdGUoIm0iLCAkZGF0ZV90aW1lKSwgZGF0ZSgiZCIsICRkYXRlX3RpbWUpLCBkYXRlKCJZIiwgJGRhdGVfdGltZSkpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKGNvdW50KCRkYXRlX2FycmF5KSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgJGRhdGVfZnJvbSA9IHN0cnRvdGltZSgiKyIgLiAkZGF0ZV9hcnJheVswXSAuICIgaG91cnMiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRhdGVfZnJvbTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhCiAgICAgKiBAcmV0dXJuIHRpbWVzdGFtcCAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm9jZXNzX2ZpbHRlcl9kYXRlX3JlY3Vyc2l2ZSgkZGF0ZSkgewogICAgICAgICRkYXRlX2Zyb20gPSAnJzsKICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJGRhdGUpKSB7CiAgICAgICAgICAgIGNhc2UgIm5vdyI6CiAgICAgICAgICAgICAgICAkZGF0ZV9mcm9tID0gImUudmFsdWUgPSA/IEFORCBkYXRlX2Zvcm1hdChjLml0ZW1fZGF0ZSwnJUg6JWk6JXMnKSA+ID8iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAkZGF0ZV9hcnJheSA9IGV4cGxvZGUoJzonLCAkZGF0ZSk7CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJGRhdGVfYXJyYXkpID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAkZGF0ZV90aW1lID0gc3RydG90aW1lKCIrIiAuICRkYXRlX2FycmF5WzBdIC4gIiBkYXkiKTsKICAgICAgICAgICAgICAgICAgICAkZGF0ZV9mcm9tID0gbWt0aW1lKCRkYXRlX2FycmF5WzFdLCAwLCAwLCBkYXRlKCJtIiwgJGRhdGVfdGltZSksIGRhdGUoImQiLCAkZGF0ZV90aW1lKSwgZGF0ZSgiWSIsICRkYXRlX3RpbWUpKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChjb3VudCgkZGF0ZV9hcnJheSkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICRkYXRlX2Zyb20gPSBzdHJ0b3RpbWUoIisiIC4gJGRhdGVfYXJyYXlbMF0gLiAiIGhvdXJzIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRkYXRlX2Zyb207CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgJF9jYXRlZ29yaWVzID0gYXJyYXkoKTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9jYXRlZ29yeSgkbW9kLCAkY2F0ZWdvcnlfaWQpIHsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgIGlmICghaXNTZXQoc2VsZjo6JF9jYXRlZ29yaWVzWyRjYXRlZ29yeV9pZF0pKSB7CiAgICAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfY2F0ZWdvcmllcyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8iOwogICAgICAgICAgICAkY2F0ZWdvcnkgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRjYXRlZ29yeV9pZCkpOwogICAgICAgICAgICBzZWxmOjokX2NhdGVnb3JpZXNbJGNhdGVnb3J5WyJjYXRlZ29yeV9pZCJdXSA9ICRjYXRlZ29yeTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjokX2NhdGVnb3JpZXNbJGNhdGVnb3J5X2lkXTsKICAgIH0KCiAgICAvKioKICAgICAqIGdldCBjYXRlZ29yeSBsaXN0CiAgICAgKiBAcGFyYW0gb2JqZWN0ICRtb2QKICAgICAqIEByZXR1cm4gYXJyYXkgCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3J5X2xpc3QoJG1vZCwgJHdoZXJlID0gYXJyYXkoKSwgJHBhcmFtYXJyYXkgPSBhcnJheSgpLCAkZmllbGQgPSAnbG9uZ19uYW1lJykgewogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJGNhdGVnb3J5bGlzdCA9IGFycmF5KCk7CgogICAgICAgICRjYXRlZ29yeWxpc3RbZ2VuZXJhdG9yKCktPkxhbmcoJ2FsbGNhdGVnb3JpZXMnKV0gPSAnJzsKCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzICI7CgogICAgICAgIGlmIChlbXB0eSgkd2hlcmUpID09IGZhbHNlKSB7CiAgICAgICAgICAgICRxdWVyeSA9ICRxdWVyeSAuICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJHdoZXJlKTsKICAgICAgICB9CgogICAgICAgICRxdWVyeSAuPSIgT1JERVIgQlkgaGllcmFyY2h5X3Bvc2l0aW9uIjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcGFyYW1hcnJheSk7CiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgIGlmICgkZmllbGQgPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRjYXRlZ29yeWxpc3RbXSA9ICRyb3c7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcnlsaXN0WyRyb3dbJGZpZWxkXV0gPSAkcm93WyRmaWVsZF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjYXRlZ29yeWxpc3Q7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfY2F0ZWdvcmllcygkbW9kLCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgPSAtMSkgewoKICAgICAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkZGVwdGggPSAxOwoKLy8gc29ydCBvcmRlcgogICAgICAgICRzb3J0b3JkZXIgPSAnQVNDJzsKICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snc29ydG9yZGVyJ10pKSB7CiAgICAgICAgICAgIHN3aXRjaCAoc3RydG9sb3dlcigkcGFyYW1zWydzb3J0b3JkZXInXSkpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ2FzYyc6CiAgICAgICAgICAgICAgICBjYXNlICdkZXNjJzoKICAgICAgICAgICAgICAgICAgICAkc29ydG9yZGVyID0gJHBhcmFtc1snc29ydG9yZGVyJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRpbmxpbmUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdkaXNwbGF5X2lubGluZScsIGZhbHNlKTsKCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2lubGluZSddKSkgewogICAgICAgICAgICAkaW5saW5lID0gJHBhcmFtc1snaW5saW5lJ107CiAgICAgICAgfQoKICAgICAgICAkZGVmYXVsdF9kZXRhaWxwYWdlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9jYXRlZ29yeV9yZXR1cm5pZCcsICcnKTsKICAgICAgICAkZGV0YWlscGFnZSA9ICRkZWZhdWx0X2RldGFpbHBhZ2U7CiAgICAgICAgJGRldGFpbHBhZ2UgPSBleHRlbmRlZF90b29sc19vcHRzOjpkZXRhaWxwYWdlKCRwYXJhbXMsICRkZXRhaWxwYWdlKTsKCiAgICAgICAgJHF1ZXJ5ID0gJwoJCVNFTEVDVCBjYXRlZ29yeV9pZCwgY2F0ZWdvcnlfbmFtZSwgaGllcmFyY2h5LCBoaWVyYXJjaHlfcG9zaXRpb24sIGxvbmdfbmFtZQoJCUZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzIAoJCVdIRVJFIDEgCgknOwogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjYXRlZ29yeSddKSAmJiAkcGFyYW1zWydjYXRlZ29yeSddICE9ICcnKSB7CiAgICAgICAgICAgICRjYXRlZ29yaWVzID0gZXhwbG9kZSgnLCcsICRwYXJhbXNbJ2NhdGVnb3J5J10pOwogICAgICAgICAgICAkcXVlcnkgLj0gJyBBTkQgKCc7CiAgICAgICAgICAgICRjb3VudCA9IDA7CiAgICAgICAgICAgIGZvcmVhY2ggKCRjYXRlZ29yaWVzIGFzICRvbmVjYXQpIHsKICAgICAgICAgICAgICAgIGlmICgkY291bnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5IC49ICcgT1IgJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJG9uZWNhdCwgJ3wnKSAhPT0gRkFMU0UgfHwgc3RycG9zKCRvbmVjYXQsICcqJykgIT09IEZBTFNFKQogICAgICAgICAgICAgICAgICAgICRxdWVyeSAuPSAidXBwZXIobG9uZ19uYW1lKSBsaWtlIHVwcGVyKCciIC4gdHJpbShzdHJfcmVwbGFjZSgnKicsICclJywgJG9uZWNhdCkpIC4gIicpIjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgLj0gImNhdGVnb3J5X25hbWUgPSAnIiAuIHRyaW0oJG9uZWNhdCkgLiAiJyI7CiAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcXVlcnkgLj0gJykgJzsKICAgICAgICB9CiAgICAgICAgJHF1ZXJ5IC49ICcgT1JERVIgYnkgaGllcmFyY2h5X3Bvc2l0aW9uICcgLiAkc29ydG9yZGVyOwogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAgICRyb3djb3VudGVyID0gMDsKCiAgICAgICAgJGZpZWxkZWZzID0gJyc7IHsKICAgICAgICAgICAgJHRtcCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2ZpZWxkcygkbW9kLCBmYWxzZSwgJ2NhdGVnb3JpZXMnKTsKCiAgICAgICAgICAgIGlmIChpc19hcnJheSgkdG1wKSkgewogICAgICAgICAgICAgICAgJGZpZWxkZGVmcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkdG1wKTsgJGkrKykgewogICAgICAgICAgICAgICAgICAgICRvYmogPSAkdG1wWyRpXTsKICAgICAgICAgICAgICAgICAgICAkZmllbGRkZWZzWyRvYmotPmFsaWFzXSA9ICRvYmo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICAkcTIgPSAiU0VMRUNUIENPVU5UKGl0ZW1faWQpIGFzIGNudCBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfaXRlbSBXSEVSRSBjYXRlZ29yeV9pZD0/IjsKICAgICAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3Nob3dhcmNoaXZlJ10pICYmICRwYXJhbXNbJ3Nob3dhcmNoaXZlJ10gPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJHEyIC49ICIgQU5EIChpdGVtX2RhdGUgPCAiIC4gJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpIC4gIikgIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcTIgLj0gJyBBTkQgYWN0aXZlID0gXCcxXCcnOwoKICAgICAgICAgICAgJGRicmVzMiA9ICRkYi0+RXhlY3V0ZSgkcTIsIGFycmF5KCRyb3dbJ2NhdGVnb3J5X2lkJ10pKTsKICAgICAgICAgICAgJGNvdW50ID0gJGRicmVzMi0+RmV0Y2hSb3coKTsKICAgICAgICAgICAgJHJvd1snaW5kZXgnXSA9ICRyb3djb3VudGVyKys7CiAgICAgICAgICAgICRyb3dbJ2NvdW50J10gPSAkY291bnRbJ2NudCddOwogICAgICAgICAgICAkcm93WydwcmV2ZGVwdGgnXSA9ICRkZXB0aDsKICAgICAgICAgICAgJGRlcHRoID0gY291bnQoZXhwbG9kZSgnXC4nLCAkcm93WydoaWVyYXJjaHlfcG9zaXRpb24nXSkpOwogICAgICAgICAgICAkcm93WydkZXB0aCddID0gJGRlcHRoOwoKICAgICAgICAgICAgJHByZXR0eXVybCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZXR0eV91cmwoJHRoaXMsIGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZWZpeCgkbW9kKSAuICcvYycsICRyb3dbJ2NhdGVnb3J5X2lkJ10sICRyb3dbJ2NhdGVnb3J5X2FsaWFzJ10sICgkZGVmYXVsdF9kZXRhaWxwYWdlID09IC0xICYmICFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAnJyksICRjYXRlZ29yeXRlbXBsYXRlKTsKICAgICAgICAgICAgJHJvd1sndXJsJ10gPSAkbW9kLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkcmV0dXJuaWQsICdkZWZhdWx0JywgJycsIGFycmF5KCdjYXRlZ29yeV9pZCcgPT4gJHJvd1snY2F0ZWdvcnlfaWQnXSwgJ2NhdGVnb3J5dGVtcGxhdGUnID0+ICRjYXRlZ29yeXRlbXBsYXRlKSwgJycsIHRydWUsIGlzU2V0KCRwYXJhbXNbImlubGluZSJdKSA/IDEgOiAwLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpOwoKICAgICAgICAgICAgLy8gYWRkIGN1c3RvbSBmaWVsZHMKICAgICAgICAgICAgJGZpZWxkZGVmcyA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2Nvc3R1bV9maWVsZF9kZWYoJG1vZCwgJHJvd1snY2F0ZWdvcnlfaWQnXSwgdHJ1ZSwgJ2FsaWFzJywgJ2NhdGVnb3JpZXMnKTsKICAgICAgICAgICAgJGZpZWxkcyA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRmaWVsZGRlZnMgYXMgJG9uZWRlZikgewogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRvbmVkZWZbImFsaWFzIl0pID09IGZhbHNlICYmIGluX2FycmF5KCRvbmVkZWZbImFsaWFzIl0sIGdlbmVyYXRvcl90b29sczo6JGZpZWxkc19ibG9ja2xpc3QpID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHJvd1skb25lZGVmWyJhbGlhcyJdXSA9ICRvbmVkZWZbInZhbHVlIl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJvd1snZmllbGRzJ10gPSAkZmllbGRkZWZzOwoKCiAgICAgICAgICAgICRpdGVtc1tdID0gJHJvdzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRpdGVtczsKICAgIH0KCiAgICAvKioKICAgICAqIGdldCBpdGVtCiAgICAgKiBAcGFyYW0gb2JqZWN0ICRtb2QKICAgICAqIEBwYXJhbSBpbnQgJGl0ZW1faWQKICAgICAqIEByZXR1cm4gYXJyYXkgCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2l0ZW1zKCRtb2QpIHsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRzb3J0b3JkZXIgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ21vZGUnKSwgJ2Rlc2MnKTsKICAgICAgICAkc29ydGJ5ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydGJ5XycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtb2RlJyksICdwb3NpdGlvbicpOwogICAgICAgICRpdGVtcyA9ICRkYi0+R2V0QWxsKCdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBPUkRFUiBCWSAnIC4gJHNvcnRvcmRlciAuICcgJyAuICRzb3J0YnksIGFycmF5KCRpdGVtX2lkKSk7CiAgICAgICAgcmV0dXJuICRpdGVtczsKICAgIH0KCiAgICAvKioKICAgICAqIGdldCBpdGVtCiAgICAgKiBAcGFyYW0gb2JqZWN0ICRtb2QKICAgICAqIEBwYXJhbSBpbnQgJGl0ZW1faWQKICAgICAqIEByZXR1cm4gYXJyYXkgCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2l0ZW0oJG1vZCwgJGl0ZW1faWQpIHsKICAgICAgICAkZGF0YSA9IGNtc191dGlsczo6Z2V0X2FwcF9kYXRhKCRtb2QtPkdldE5hbWUoKSAuIF9fRlVOQ1RJT05fXyAuICRpdGVtX2lkKTsKICAgICAgICBpZiAoJGRhdGEpCiAgICAgICAgICAgIHJldHVybiAkZGF0YTsKCiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkdmFsdWUgPSAkZGItPkdldFJvdygnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0gV0hFUkUgaXRlbV9pZCA9ID8nLCBhcnJheSgkaXRlbV9pZCkpOwogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCRtb2QtPkdldE5hbWUoKSAuIF9fRlVOQ1RJT05fXyAuICRpdGVtX2lkLCAkdmFsdWUpOwoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3NlYXJjaGFibGVfZGF0ZV9lbmQoKSB7CiAgICAgICAgcmV0dXJuIHNlbGY6OiRzZWFyY2hfZGF0ZV9lbmQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfc2VhcmNoYWJsZV90ZXh0KCRtb2QsICRpdGVtX2lkKSB7CgogICAgICAgICRyZXN1bHRzID0gYXJyYXkoKTsKCiAgICAgICAgJGl0ZW0gPSBzZWxmOjpnZXRfaXRlbSgkbW9kLCAkaXRlbV9pZCk7CgogICAgICAgIGlmICgkaXRlbVsnYWN0aXZlJ10gIT0gMSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CgogICAgICAgICRyZXN1bHRzW10gPSAkaXRlbVsndGl0bGUnXTsKICAgICAgICAkcmVzdWx0c1tdID0gJGl0ZW1bJ2FsaWFzJ107CgovLyBkYXRlIGVuZCBmb3Igc2VhcmNoIHJlc3VsdHMKICAgICAgICBzZWxmOjokc2VhcmNoX2RhdGVfZW5kID0gbnVsbDsKICAgICAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnc2VhcmNoX2RhdGVfZW5kJykpIHsKICAgICAgICAgICAgJGl0ZW0gPSBzZWxmOjpnZXRfaXRlbSgkbW9kLCAkaXRlbV9pZCk7CiAgICAgICAgICAgIHNlbGY6OiRzZWFyY2hfZGF0ZV9lbmQgPSBzdHJ0b3RpbWUoJGl0ZW1bIml0ZW1fZGF0ZV9lbmQiXSk7CiAgICAgICAgfQoKICAgICAgICAkZGVmcyA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2Nvc3R1bV9maWVsZF9kZWYoJG1vZCwgJGl0ZW1faWQpOwoKCiAgICAgICAgZm9yZWFjaCAoJGRlZnMgYXMgJG9uZWRlZikgewoKLy8gc2tpcAogICAgICAgICAgICBpZiAoISRvbmVkZWZbInNlYXJjaGFibGUiXSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKLy9zZXJhY2hhYmxlIC0gdGV4dGJveCwgdGV4dGFyZWEsIGRyb3Bkb3duCiAgICAgICAgICAgIHN3aXRjaCAoJG9uZWRlZlsidHlwZSJdKSB7CiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0Ym94JzoKICAgICAgICAgICAgICAgIGNhc2UgJ3RleHRhcmVhJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2Ryb3Bkb3duJzoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG9uZWRlZlsidmFsdWUiXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHNbXSA9ICRvbmVkZWZbInZhbHVlIl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBpbXBsb2RlKCcgJywgJHJlc3VsdHMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2VhcmNoX3JlaW5kZXgoJG1vZCwgJG1vZHVsZSkgewogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgaXRlbV9pZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSB3aGVyZSBhY3RpdmUgPSAxJzsKICAgICAgICAkaXRlbXMgPSAkZGItPkdldEFycmF5KCRxdWVyeSwgYXJyYXkoKSk7CgogICAgICAgIGlmICghJGl0ZW1zKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkgewogICAgICAgICAgICAkbW9kdWxlLT5BZGRXb3JkcygkbW9kLT5HZXROYW1lKCksICRpdGVtWyJpdGVtX2lkIl0sICdpdGVtJywgc2VsZjo6Z2V0X3NlYXJjaGFibGVfdGV4dCgkbW9kLCAkaXRlbVsiaXRlbV9pZCJdKSwgc2VsZjo6Z2V0X3NlYXJjaGFibGVfZGF0ZV9lbmQoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3NlYXJjaF9yZXN1bHQoJG1vZCwgJHJldHVybmlkLCAkaXRlbV9pZCwgJGF0dHIgPSAnJykgewogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOwoKICAgICAgICBpZiAoJGF0dHIgIT0gJ2l0ZW0nKQogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKCiAgICAgICAgJGRldGFpbHRlbXBsYXRlID0gJyc7CiAgICAgICAgaWYgKGlzU2V0KCRwYXJhbXNbImRldGFpbHRlbXBsYXRlIl0pKQogICAgICAgICAgICAkZGV0YWlsdGVtcGFsdGUgPSAkcGFyYW1zWyJkZXRhaWx0ZW1wbGF0ZSJdOwoKICAgICAgICAkaW5saW5lID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGlzcGxheV9pbmxpbmUnLCAwKTsKICAgICAgICBpZiAoaXNTZXQoJHBhcmFtc1siaW5saW5lIl0pKQogICAgICAgICAgICAkZGV0YWlsdGVtcGFsdGUgPSAkcGFyYW1zWyJpbmxpbmUiXTsKCiAgICAgICAgLyogaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGV0YWlsX3JldHVybmlkJywgMCkpIHsKICAgICAgICAgICRyZXR1cm5pZCA9ICcnOwogICAgICAgICAgfSAqLwoKCiAgICAgICAgJHJvdyA9IHNlbGY6OmdldF9pdGVtKCRtb2QsICRpdGVtX2lkKTsKICAgICAgICBpZiAoJHJvdykgewoKLy8wIHBvc2l0aW9uIGlzIHRoZSBwcmVmaXggZGlzcGxheWVkIGluIHRoZSBsaXN0IHJlc3VsdHMuCiAgICAgICAgICAgICRyZXN1bHRbMF0gPSAkbW9kLT5HZXRGcmllbmRseU5hbWUoKTsKCi8vMSBwb3NpdGlvbiBpcyB0aGUgdGl0bGUKICAgICAgICAgICAgJHJlc3VsdFsxXSA9ICRyb3dbJ3RpdGxlJ107CgovLzIgcG9zaXRpb24gaXMgdGhlIFVSTCB0byB0aGUgdGl0bGUuCgogICAgICAgICAgICBpZiAoZW1wdHkoJHJvd1sidXJsIl0pID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkcHJldHR5dXJsID0gJHJvd1sidXJsIl07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcHJldHR5dXJsID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJldHR5X3VybCgkbW9kLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9wcmVmaXgoJG1vZCksICRyb3dbJ2l0ZW1faWQnXSwgJHJvd1snYWxpYXMnXSwgaXNTZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSA/ICRkZXRhaWxwYWdlIDogJHJldHVybmlkLCAkZGV0YWlsdGVtcGxhdGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmVzdWx0WzJdID0gJG1vZC0+Q3JlYXRlRnJvbnRlbmRMaW5rKCdjbnRudDAxJywgJHJldHVybmlkLCAnZGV0YWlsJywgJycsIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10sICdkZXRhaWx0ZW1wbGF0ZScgPT4gJGRldGFpbHRlbXBsYXRlKSwgJycsIHRydWUsICRpbmxpbmUsICcnLCBmYWxzZSwgJHByZXR0eXVybCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJvdXRlKCRtb2QsICRmaWxlbmFtZSkgewogICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAgICAgJHBhdGhpbmZvID0gcGF0aGluZm8oJGZpbGVuYW1lKTsKICAgICAgICAkZmlsYW5lYW0gPSAkcGF0aGluZm9bImJhc2VuYW1lIl07CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdnZW5lcmF0b3JfdGVtcGxhdGVzJywgY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwgJ21vZHVsZXMnLCAnTW9kdWxlR2VuZXJhdG9yJywgJ01vZHVsZUxpYicsICd0ZW1wbGF0ZXMnKSk7CiAgICAgICAgcmV0dXJuIGNtc19qb2luX3BhdGgoJGNvbmZpZ1sicm9vdF9wYXRoIl0sICdtb2R1bGVzJywgJ01vZHVsZUdlbmVyYXRvcicsICdNb2R1bGVMaWInLCAkcGF0aGluZm9bImJhc2VuYW1lIl0pOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGV0YWlscGFnZSgmJHBhcmFtcywgJGRldGFpbHBhZ2UpIHsKCiAgICAgICAgJGdjbXMgPSBjbXNtcygpOwogICAgICAgIHJldHVybiAkZGV0YWlscGFnZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZV9wYXJlbnRfZHJvcGRvd24oJG1vZCwgJGlkLCAkY2F0aWQgPSAtMSwgJHNlbGVjdGVkdmFsdWUgPSAtMSkgewogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgICAgICRsb25nbmFtZSA9ICcnOwoKICAgICAgICAkaXRlbXNbJygnIC4gZ2VuZXJhdG9yKCktPkxhbmcoJ25vbmUnKSAuICcpJ10gPSAnLTEnOwoKICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGhpZXJhcmNoeSwgbG9uZ19uYW1lIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIFdIRVJFIGNhdGVnb3J5X2lkID0gPyI7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNhdGlkKSk7CgogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICAkbG9uZ25hbWUgPSAkcm93WydoaWVyYXJjaHknXSAuICclJzsKICAgICAgICB9CiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCBjYXRlZ29yeV9pZCwgY2F0ZWdvcnlfbmFtZSwgaGllcmFyY2h5LCBsb25nX25hbWUgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgV0hFUkUgaGllcmFyY2h5IG5vdCBsaWtlID8gT1JERVIgYnkgaGllcmFyY2h5IjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbG9uZ25hbWUpKTsKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgJGl0ZW1zWyRyb3dbJ2xvbmdfbmFtZSddXSA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3BhcmVudCcsICRpdGVtcywgLTEsICRzZWxlY3RlZHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqICAKICAgICAqIEBwYXJhbSBvYmplY3QgJG1vZCAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1cGRhdGVfaGllcmFyY2h5X3Bvc2l0aW9ucygkbW9kKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCBjYXRlZ29yeV9pZCwgY2F0ZWdvcnlfbmFtZSxwYXJlbnRfaWQgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgT1JERVIgQlkgcG9zaXRpb24sIGNhdGVnb3J5X2lkIjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAkY291bnRlciA9IGFycmF5KCk7CiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbiA9ICIiOwogICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24yID0gIiI7CiAgICAgICAgICAgICRwb3NpdGlvbiA9ICIiOwogICAgICAgICAgICAkY3VycmVudF9sb25nX25hbWUgPSAiIjsKICAgICAgICAgICAgJGNvbnRlbnRfaWQgPSAkcm93WydjYXRlZ29yeV9pZCddOwogICAgICAgICAgICAkY3VycmVudF9wYXJlbnRfaWQgPSAkcm93WydjYXRlZ29yeV9pZCddOwogICAgICAgICAgICAkY291bnQgPSAwOwogICAgICAgICAgICAkY291bnRlclskcm93WydwYXJlbnRfaWQnXV0rKzsKICAgICAgICAgICAgJHBvc2l0aW9uID0gJGNvdW50ZXJbJHJvd1sncGFyZW50X2lkJ11dOwoKICAgICAgICAgICAgd2hpbGUgKCRjdXJyZW50X3BhcmVudF9pZCA+IC0xKSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGNhdGVnb3J5X2lkLCBjYXRlZ29yeV9uYW1lLCBwYXJlbnRfaWQsIHBvc2l0aW9uIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIFdIRVJFIGNhdGVnb3J5X2lkID0gPyI7CiAgICAgICAgICAgICAgICAkcm93MiA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGN1cnJlbnRfcGFyZW50X2lkKSk7CiAgICAgICAgICAgICAgICBpZiAoJHJvdzIpIHsKICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSBzdHJfcGFkKCRyb3cyWydjYXRlZ29yeV9pZCddLCA1LCAnMCcsIFNUUl9QQURfTEVGVCkgLiAiLiIgLiAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uMiA9IHN0cl9wYWQoJHJvdzJbJ3Bvc2l0aW9uJ10sIDUsICcwJywgU1RSX1BBRF9MRUZUKSAuICIuIiAuICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjI7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbG9uZ19uYW1lID0gJHJvdzJbJ2NhdGVnb3J5X25hbWUnXSAuICcgfCAnIC4gJGN1cnJlbnRfbG9uZ19uYW1lOwogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3BhcmVudF9pZCA9ICRyb3cyWydwYXJlbnRfaWQnXTsKICAgICAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfcGFyZW50X2lkID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAgaWYgKHN0cmxlbigkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24pID4gMCkgewogICAgICAgICAgICAgICAgJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uID0gc3Vic3RyKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbiwgMCwgc3RybGVuKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbikgLSAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHN0cmxlbigkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24yKSA+IDApIHsKICAgICAgICAgICAgICAgICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjIgPSBzdWJzdHIoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uMiwgMCwgc3RybGVuKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjIpIC0gMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzdHJsZW4oJGN1cnJlbnRfbG9uZ19uYW1lKSA+IDApIHsKICAgICAgICAgICAgICAgICRjdXJyZW50X2xvbmdfbmFtZSA9IHN1YnN0cigkY3VycmVudF9sb25nX25hbWUsIDAsIHN0cmxlbigkY3VycmVudF9sb25nX25hbWUpIC0gMyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRxdWVyeSA9ICJVUERBVEUgIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIFNFVCBoaWVyYXJjaHkgPSA/LCBwb3NpdGlvbiA9ID8sIGhpZXJhcmNoeV9wb3NpdGlvbiA9ID8sIGxvbmdfbmFtZSA9ID8gV0hFUkUgY2F0ZWdvcnlfaWQgPSA/IjsKCiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbiwgJHBvc2l0aW9uLCAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24yLCAkY3VycmVudF9sb25nX25hbWUsICRjb250ZW50X2lkKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogSGFuZGxlIHVwbG9hZAogICAgICogQHBhcmFtIG1peGVkICRpdGVtaWQgVGhlIGl0ZW0gSUQsIHVzZWQgdG8gZm9ybSB0aGUgdXBsb2FkIGRpcmVjdG9yeSBuYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWVsZG5hbWUgVGhlIHVwbG9hZCBmaWVsZCBuYW1lLCBmb3IgZXhhbXBsZSwgbTFfY3VzdG9tZmllbGRfMQogICAgICogQHBhcmFtIHN0cmluZyAmJGVycm9yIEhvbGRzIGFueSBlcnJvcnMgdGhhdCBtYXkgb2NjdXIKICAgICAqIEBwYXJhbSBhcnJheSAkYWxsb3cgQWxsb3dlZCBmaWxlIGV4dGVuc2lvbnMKICAgICAqIEByZXR1cm4gYm9vbHxzdHJpbmcgUmV0dXJucyBmaWxlbmFtZSBvbiBzdWNjZXNzZnVsIHVwbG9hZCBvciBmYWxzZSBvbiBmYWlsdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFuZGxlX3VwbG9hZCgkbW9kLCAkaXRlbWlkLCAkZmllbGRuYW1lLCAmJGVycm9yLCAkYWxsb3cgPSBhcnJheSgpLCAkcm93ID0gYXJyYXkoKSkgewoKCiAgICAgICAgJGFsbG93ID0gKCFlbXB0eSgkYWxsb3cpID8gJGFsbG93IDogYXJyYXkoJ2pwZycsICdnaWYnLCAncG5nJykpOwoKICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAgICAgJHAgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSk7CgogICAgICAgIGlmICghaXNfZGlyKCRwKSkgewogICAgICAgICAgICAkcmVzID0gQG1rZGlyKCRwKTsKCiAgICAgICAgICAgIGlmICgkcmVzID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJGVycm9yID0gJG1vZC0+TGFuZygnZXJyb3JfbWtkaXInLCAkcCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRwID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCksICdpZCcgLiAkaXRlbWlkKTsKCiAgICAgICAgaWYgKCFpc19kaXIoJHApKSB7CiAgICAgICAgICAgIGlmIChAbWtkaXIoJHApID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJGVycm9yID0gJG1vZC0+TGFuZygnZXJyb3JfbWtkaXInLCAkcCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkX0ZJTEVTWyRmaWVsZG5hbWVdWydzaXplJ10gPiAkY29uZmlnWydtYXhfdXBsb2FkX3NpemUnXSkgewogICAgICAgICAgICAkZXJyb3IgPSAkbW9kLT5MYW5nKCdlcnJvcl9maWxlc2l6ZScpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkZmlsZW5hbWUgPSBiYXNlbmFtZSgkX0ZJTEVTWyRmaWVsZG5hbWVdWyduYW1lJ10pOwogICAgICAgICRkZXN0ID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCksICdpZCcgLiAkaXRlbWlkLCAkZmlsZW5hbWUpOwogICAgICAgICRleHQgPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlbmFtZSwgJy4nKSwgMSkpOwoKICAgICAgICBpZiAoIWluX2FycmF5KCRleHQsICRhbGxvdykpIHsKICAgICAgICAgICAgJGVycm9yID0gJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZGZpbGV0eXBlJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChAY21zX21vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyRmaWVsZG5hbWVdWyd0bXBfbmFtZSddLCAkZGVzdCkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRlcnJvciA9ICRtb2QtPkxhbmcoJ2Vycm9yX21vdmVmaWxlJywgJGRlc3QpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGZpbGVuYW1lOwogICAgfQoKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSB0eXBlICRpdGVtX2lkCiAgICAgKiBAcmV0dXJuIHN0cmluZyAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfY29zdHVtX2ZpZWxkX2RlZigkbW9kLCAkaXRlbV9pZCwgJGZyb250ZW5kID0gZmFsc2UsICRrZXkgPSAnYWxpYXMnLCAkc2VjdGlvbiA9ICdpdGVtcycpIHsKCgoKICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBCLmZpZWxkZGVmX2lkLEIubmFtZSwgQi5hbGlhcywgQS52YWx1ZSwgQi50eXBlLCBCLmV4dHJhLCBCLnNlYXJjaGFibGUsIEIuZnJvbnRlbmQKCQlGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgQSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBCCgkJV0hFUkUgQS5maWVsZGRlZl9pZCA9IEIuZmllbGRkZWZfaWQgQU5EIEEuaXRlbV9pZCA9ID8gJzsKICAgICAgICBpZiAoJGZyb250ZW5kID09IHRydWUpIHsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgQU5EIEIuZnJvbnRlbmQgPSAxICc7CiAgICAgICAgfQoKICAgICAgICAkcGFybXMgPSBhcnJheSgpOwogICAgICAgICRwYXJtc1tdID0gJGl0ZW1faWQ7CgogICAgICAgICRxdWVyeSAuPSAnIEFORCBCLnNlY3Rpb24gPSA/ICc7CiAgICAgICAgJHBhcm1zW10gPSAkc2VjdGlvbjsKCiAgICAgICAgJHF1ZXJ5IC49ICdPUkRFUiBCWSBCLnBvc2l0aW9uICc7CgogICAgICAgIC8vY2FjaGUKICAgICAgICAkcm93cyA9IGNtc191dGlsczo6Z2V0X2FwcF9kYXRhKCRtb2QtPkdldE5hbWUoKSAuIF9fRlVOQ1RJT05fXyAuICRpdGVtX2lkIC4gJGZyb250ZW5kIC4gJGtleSAuICRzZWN0aW9uKTsKICAgICAgICBpZiAoISRyb3dzKQogICAgICAgICAgICAkcm93cyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCAkcGFybXMpOwogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCRtb2QtPkdldE5hbWUoKSAuIF9fRlVOQ1RJT05fXyAuICRpdGVtX2lkIC4gJGZyb250ZW5kIC4gJGtleSAuICRzZWN0aW9uLCAkcm93cyk7CiAgICAgICAgLy8gZW5kIGNhY2hlCgogICAgICAgICRmaWVsZGRlZnMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRyb3dzIGFzICRyb3cpIHsKICAgICAgICAgICAgJGZpZWxkZGVmc1skcm93WyRrZXldXSA9IGFycmF5KAogICAgICAgICAgICAgICAgJ2ZpZWxkZGVmX2lkJyA9PiAkcm93WydmaWVsZGRlZl9pZCddLAogICAgICAgICAgICAgICAgJ25hbWUnID0+ICRyb3dbJ25hbWUnXSwKICAgICAgICAgICAgICAgICdhbGlhcycgPT4gJHJvd1snYWxpYXMnXSwKICAgICAgICAgICAgICAgICd2YWx1ZScgPT4gJHJvd1sndmFsdWUnXSwKICAgICAgICAgICAgICAgICdzZWFyY2hhYmxlJyA9PiAkcm93WydzZWFyY2hhYmxlJ10sCiAgICAgICAgICAgICAgICAnZnJvbnRlbmQnID0+ICRyb3dbJ2Zyb250ZW5kJ10sCiAgICAgICAgICAgICAgICAndHlwZScgPT4gJHJvd1sndHlwZSddCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJHJvd1sndHlwZSddID09ICdzZWxlY3RfZmlsZScpIHsKICAgICAgICAgICAgICAgICRleHRyYV9jb21tYW5kcyA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhKCRyb3dbJ2V4dHJhJ10pOwogICAgICAgICAgICAgICAgJGRpciA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX2RpcigkZXh0cmFfY29tbWFuZHMpOwogICAgICAgICAgICAgICAgJGZpZWxkZGVmc1skcm93WyRrZXldXVsnZGlyJ10gPSAkY29uZmlnWyd1cGxvYWRzX3VybCddIC4gKCFlbXB0eSgkZGlyKSA/ICcvJyAuICRkaXIgOiAnJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcm93Wyd0eXBlJ10gPT0gJ3VwbG9hZF9maWxlJykgewogICAgICAgICAgICAgICAgJGZpZWxkZGVmc1skcm93WyRrZXldXVsnZGlyJ10gPSAkY29uZmlnWyd1cGxvYWRzX3VybCddIC4gJy8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnL2lkJyAuICRpdGVtX2lkOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgcmV0dXJuICRmaWVsZGRlZnM7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQHBhcmFtIG9iamVjdCAkbW9kdWxlCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkZnJvbnRlbmQKICAgICAqIEByZXR1cm4gdHlwZSAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZmllbGRzKCRtb2R1bGUsICRmcm9udGVuZCA9IHRydWUsICRzZWN0aW9uID0gJ2l0ZW1zJykgewoKICAgICAgICAkcXVlcnlhcnJheSA9IGFycmF5KCk7CiAgICAgICAgJHBhcm1zYXJyYXkgPSBhcnJheSgpOwoKICAgICAgICAkdmFsdWUgPSBjbXNfdXRpbHM6OmdldF9hcHBfZGF0YSgkbW9kdWxlLT5HZXROYW1lKCkgLiBfX0ZVTkNUSU9OX18pOwogICAgICAgIGlmICgkdmFsdWUpCiAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2R1bGUtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZic7CgogICAgICAgICRxdWVyeWFycmF5W10gPSAnIHNlY3Rpb24gPSA/JzsKICAgICAgICAkcGFybXNhcnJheVtdID0gJHNlY3Rpb247CgogICAgICAgIGlmICgkZnJvbnRlbmQgPT0gdHJ1ZSkgewogICAgICAgICAgICAkcXVlcnlhcnJheVtdID0gJyBmcm9udGVuZCA9ID8nOwogICAgICAgICAgICAkcGFybXNhcnJheVtdID0gMTsKICAgICAgICB9Ci8vIFdIRVJFCiAgICAgICAgJHF1ZXJ5IC49ICggZW1wdHkoJHF1ZXJ5YXJyYXkpID09IGZhbHNlID8gJ1dIRVJFICcgLiBpbXBsb2RlKCcgQU5EICcsICRxdWVyeWFycmF5KSA6ICcnICk7CgogICAgICAgICR2YWx1ZSA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCAkcGFybXNhcnJheSk7CiAgICAgICAgY21zX3V0aWxzOjpzZXRfYXBwX2RhdGEoJG1vZHVsZS0+R2V0TmFtZSgpIC4gX19GVU5DVElPTl9fLCAkdmFsdWUpOwoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmlsZV9sb2NhdGlvbigkbW9kdWxlLCAkcm93KSB7CgogICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICAgICAkcmVsX3BhdGggPSAkbW9kdWxlLT5fR2V0TW9kdWxlQWxpYXMoKSAuICcvaWQnIC4gJHJvd1snaXRlbV9pZCddOwogICAgICAgIGNnZV9kaXI6Om1rZGlycihjbXNfam9pbl9wYXRoKCRjb25maWdbInVwbG9hZHNfcGF0aCJdLCAkcmVsX3BhdGgpKTsKICAgICAgICAkdmFsdWUgPSAkY29uZmlnWyd1cGxvYWRzX3VybCddIC4gJy8nIC4gJHJlbF9wYXRoOwogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmaWxlcGF0aF9sb2NhdGlvbigkbW9kdWxlLCAkcm93KSB7CgogICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICAgICAkcmVsX3BhdGggPSBjbXNfam9pbl9wYXRoKCRtb2R1bGUtPl9HZXRNb2R1bGVBbGlhcygpLCAnaWQnIC4gJHJvd1snaXRlbV9pZCddKTsKICAgICAgICBjZ2VfZGlyOjpta2RpcnIoY21zX2pvaW5fcGF0aCgkY29uZmlnWyJ1cGxvYWRzX3BhdGgiXSwgJHJlbF9wYXRoKSk7CiAgICAgICAgJHZhbHVlID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwgJHJlbF9wYXRoKTsKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tfcm93KCRtb2QsICRmaWVsZGlkLCAkZmllbGR2YWx1ZSkgewoKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBBLml0ZW1faWQgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0gQSc7CiAgICAgICAgJHF1ZXJ5IC49ICcgTEVGVCBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBIE9OIEEuaXRlbV9pZCA9IEZWQS5pdGVtX2lkIEFORCBGVkEuZmllbGRkZWZfaWQgPSA/ICc7CiAgICAgICAgJHF1ZXJ5IC49ICcgV0hFUkUgQS5hY3RpdmUgPSAxIEFORCBGVkEudmFsdWUgPSA/ICc7CiAgICAgICAgcmV0dXJuICRkYi0+R2V0T25lKCRxdWVyeSwgYXJyYXkoJGZpZWxkaWQsICRmaWVsZHZhbHVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBIYXMgUHJlZml4CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgVGhlIHN0cmluZyBpbiBxdWVzdGlvbgogICAgICogQHBhcmFtIGFycmF5ICRwcmVmaXggQXJyYXkgb2YgcHJlZml4ZXMgdG8gbWF0Y2ggYWdhaW5zdAogICAgICogQHJldHVybiBib29sIFJldHVybnMgdHJ1ZSBpZiBwcmVmaXggaXMgZm91bmQsIG9yIGZhbHNlIG90aGVyd2lzZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhhc19wcmVmaXgoJHN0cmluZywgJHByZWZpeGVzKSB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJHN0cmluZykpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBpZiAoIWlzX2FycmF5KCRwcmVmaXhlcykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJHByZWZpeGVzIGFzICRwcmVmaXgpIHsKICAgICAgICAgICAgaWYgKHN0cnBvcygkc3RyaW5nLCAkcHJlZml4KSA9PT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogRXhjbHVkZSBQcmVmaXgKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFycmF5IG9mIHByZWZpeGVzIHRvIGV4Y2x1ZGUgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX2V4Y2x1ZGVfcHJlZml4KCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIGRpclt0aHVtYl9dCi8vIGRpclt0aHVtYl8sbm90bWVdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXmV4Y2x1ZGVfcHJlZml4XFsoW14sXSsoLFteLF0rKSopXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGV4cGxvZGUoJywnLCAkbWF0Y2hlc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IERpcmVjdG9yeQogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIHRoZSBkaXJlY3RvcnkgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX2RpcigkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBkaXJbcGF0aC90by9kaXJdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXmRpclxbKC4rKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogQWxsb3dlZCBGaWxlIEV4dGVuc2lvbnMKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFsbG93ZWQgZmlsZSBleHRlbnNpb25zIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9hbGxvdygkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIGFsbG93W3BkZixnaWYscG5nLGpwZWcsanBnXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15hbGxvd1xbKFthLXpdKygsW2Etel0rKSopXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGV4cGxvZGUoJywnLCAkbWF0Y2hlc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBhcnJheSgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBEYXRlIEZvcm1hdAogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIGRhdGUgZm9ybWF0IHRvIGJlIHVzZWQgd2l0aCB0aGUganF1ZXJ5CiAgICAgKiBkYXRlcGlja2VyIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9kYXRlX2Zvcm1hdCgkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBkYXRlZm9ybWF0W2RkL21tL3l5XQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15kYXRlZm9ybWF0XFsoLispXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRtYXRjaGVzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBSb3cKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBpbnQgUmV0dXJucyBtYXhpbXVtIGxlbmd0aCBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfcm93cygkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKLy8gbWF4X2xlbmd0aFsyMF0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9ecm93c1xbKFswLTldKylcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGludCkgJG1hdGNoZXNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IFJvdwogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGludCBSZXR1cm5zIG1heGltdW0gbGVuZ3RoIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9jb2xzKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIG1heF9sZW5ndGhbMjBdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXmNvbHNcWyhbMC05XSspXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIChpbnQpICRtYXRjaGVzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBNYXggTGVuZ3RoCiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgbWF4aW11bSBsZW5ndGggaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX21heF9sZW5ndGgoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKLy8gbWF4X2xlbmd0aFsyMF0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9ebWF4X2xlbmd0aFxbKFswLTldKylcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGludCkgJG1hdGNoZXNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IFNpemUKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBpbnQgUmV0dXJucyBzaXplIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9zaXplKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIHNpemVbMjBdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXnNpemVcWyhbMC05XSspXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIChpbnQpICRtYXRjaGVzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBNdWx0aXBsZQogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGludCBSZXR1cm5zIHNpemUgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX211bHRpcGxlKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIHNpemVbMjBdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXm11bHRpcGxlXFsoWzAtOV0rKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoaW50KSAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogU2VsZWN0IGRlZmF1bHQKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBpbnQgUmV0dXJucyBzaXplIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9zZWxlY3RkZWZhdWx0KCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIHNpemVbMjBdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXnNlbGVjdF9kZWZhdWx0XFsoLispXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRtYXRjaGVzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBXWVNJV1lHCiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gYm9vbCBSZXR1cm5zIHRydWUgaWYgV1lTSVdZRyBpcyB0byBiZSBlbmFibGVkLCBvciBmYWxzZSBvdGhlcndpc2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfd3lzaXd5ZygkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyB3eXNpd3lnWzFdCi8vIHd5c2l3eWdbMF0KLy8gd3lzaXd5Z1t0cnVlXQovLyB3eXNpd3lnW2ZhbHNlXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL153eXNpd3lnXFsoLispXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgaWYgKCRtYXRjaGVzWzFdID09ICd0cnVlJyB8fCAkbWF0Y2hlc1sxXSA9PSAnMScpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBNb2R1bGUgcGFyYW1zCiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhcnJheSBvZiBvcHRpb25zIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9tb2R1bGVwYXJhbXMoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIG9wdGlvbnNbYXBwbGU9QXBwbGVdCi8vIG9wdGlvbnNbYXBwbGU9QXBwbGUsYmFuYW5hPUJhbmFuYV0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eKC4rKVxbKFteLF0rPVteLF0rKCxbXixdKz1bXixdKykqKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKCiAgICAgICAgICAgICAgICAkcGFyYW1zWyJtb2R1bGUiXSA9ICRtYXRjaGVzWzFdOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKGV4cGxvZGUoJywnLCAkbWF0Y2hlc1syXSkgYXMgJHBhaXIpIHsKICAgICAgICAgICAgICAgICAgICAka2V5X3ZhbCA9IGV4cGxvZGUoJz0nLCAkcGFpcik7CiAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1ska2V5X3ZhbFswXV0gPSAka2V5X3ZhbFsxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIHJldHVybiAkcGFyYW1zOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBNb2R1bGUgT3B0aW9ucwogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYW4gYXJyYXkgb2Ygb3B0aW9ucyBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfbW9kdWxlb3B0aW9ucygkaW5zdHJ1Y3Rpb25zLCAkbW9kKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKLy8ge2Ntc19tb2R1bGV9CiAgICAgICAgICAgICRtb2R1bGVjb250ZW50ID0gJGluc3RydWN0aW9uOwogICAgICAgICAgICBmb3JlYWNoIChleHBsb2RlKCcsJywgJG1vZHVsZWNvbnRlbnQpIGFzICRwYWlyKSB7CiAgICAgICAgICAgICAgICBpZiAoISRwYWlyKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgJGtleV92YWwgPSBleHBsb2RlKCc9JywgJHBhaXIpOwogICAgICAgICAgICAgICAgJG9wdGlvbnNbJGtleV92YWxbMF1dID0gJGtleV92YWxbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9ucykpCiAgICAgICAgICAgIHJldHVybiAkb3B0aW9uczsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogUGFnZQogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYW4gYXJyYXkgb2Ygb3B0aW9ucyBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfcGFnZSgkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICAgICAgJHNldHRpbmdzID0gYXJyYXkoKTsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKLy8ge2Ntc19tb2R1bGV9CiAgICAgICAgICAgIGZvcmVhY2ggKGV4cGxvZGUoJywnLCAkbW9kdWxlY29udGVudCkgYXMgJHBhaXIpIHsKICAgICAgICAgICAgICAgICRrZXlfdmFsID0gZXhwbG9kZSgnPScsICRwYWlyKTsKICAgICAgICAgICAgICAgIHN3aXRjaCAoJGtleV92YWxbMF0pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJjaGlsZHJlbm9mIjoKICAgICAgICAgICAgICAgICAgICAgICAgJHNldHRpbmdzWyJjaGlsZHJlbm9mIl0gPSAka2V5X3ZhbFsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAic3RhcnRfcGFnZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICRzZXR0aW5nc1sic3RhcnRfcGFnZSJdID0gJGtleV92YWxbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgJHBhZ2VzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKS0+R2V0QWxsQ29udGVudCgpOwogICAgICAgICRhcnJheSA9IGFycmF5KCk7CgogICAgICAgIGlmIChpc3NldCgkc2V0dGluZ3NbJ2NoaWxkcmVub2YnXSkpIHsKICAgICAgICAgICAgJGNoaWxkcmVub2YgPSBleHRlbmRlZF90b29sc19vcHRzOjpnZXRfcGFnZV9pZF9mcm9tX2FsaWFzKCRzZXR0aW5nc1snY2hpbGRyZW5vZiddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkc2V0dGluZ3NbJ3N0YXJ0X3BhZ2UnXSkpIHsKICAgICAgICAgICAgJHN0YXJ0X3BhZ2UgPSBleHRlbmRlZF90b29sc19vcHRzOjpnZXRfcGFnZV9pZF9mcm9tX2FsaWFzKCRzZXR0aW5nc1snc3RhcnRfcGFnZSddKTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRwYWdlcyBhcyAkcGFnZSkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgKCFpc3NldCgkc3RhcnRfcGFnZSkgJiYgIWlzc2V0KCRjaGlsZHJlbm9mKSkKICAgICAgICAgICAgICAgICAgICB8fAogICAgICAgICAgICAgICAgICAgIChpc3NldCgkY2hpbGRyZW5vZikgJiYgKCRwYWdlLT5QYXJlbnRJZCgpID09ICRjaGlsZHJlbm9mKSkgLy8gTGlzdCBvZiBhbGwgY2hpbGRyZW5zCiAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAgICAgICAgICAgICAoaXNzZXQoJHN0YXJ0X3BhZ2UpICYmIChzdHJwb3MoJHBhZ2UtPklkSGllcmFyY2h5KCksICRzdGFydF9wYWdlIC4gJy4nKSA9PT0gMCkpIC8vIExpc3Qgb2YgYWxsIGRlc2NlbmRhbnRzCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJG9wdGlvbnNbJHBhZ2UtPklkKCldID0gJHBhZ2UtPkhpZXJhcmNoeSgpIC4gJy4gLSAnIC4gJHBhZ2UtPk5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnMpKQogICAgICAgICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IE9wdGlvbnMKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IG9mIG9wdGlvbnMgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX29wdGlvbnMoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgJG9wdGlvbnMgPSBhcnJheSgpOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBvcHRpb25zW2FwcGxlPUFwcGxlXQovLyBvcHRpb25zW2FwcGxlPUFwcGxlLGJhbmFuYT1CYW5hbmFdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXm9wdGlvbnNcWyhbXixdKz1bXixdKygsW14sXSs9W14sXSspKilcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoIChleHBsb2RlKCcsJywgJG1hdGNoZXNbMV0pIGFzICRwYWlyKSB7CiAgICAgICAgICAgICAgICAgICAgJGtleV92YWwgPSBleHBsb2RlKCc9JywgJHBhaXIpOwogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWyRrZXlfdmFsWzBdXSA9ICRrZXlfdmFsWzFdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zKSkKICAgICAgICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRleHRyYQogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IG9mIGluc3RydWN0aW9ucyBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgZnVuY3Rpb24gZ2V0X2V4dHJhKCRleHRyYSwgJG1vZCA9IG51bGwpIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkZXh0cmEpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICRleHRyYSA9IHRyaW0oJGV4dHJhKTsKCiAgICAgICAgaWYgKCRtb2QgIT0gbnVsbCAmJiBpc19vYmplY3QoJG1vZCkpCiAgICAgICAgICAgICRleHRyYSA9ICRtb2QtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRleHRyYSk7CgoKICAgICAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAgICAgJGluc3RydWN0aW9ucyA9IGV4cGxvZGUoJzsnLCB0cmltKCRleHRyYSwgJzsnKSk7CiAgICAgICAgaWYgKCFlbXB0eSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuICRpbnN0cnVjdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBJcyB2YWxpZCBhbGlhcwogICAgICogQHBhcmFtIHN0cmluZyAkYWxpYXMKICAgICAqIEByZXR1cm4gYm9vbCBSZXR1cm5zIHRydWUgaWYgc3RyaW5nIGluIHF1ZXN0aW9uIGlzIGEgdmFsaWQgYWxpYXMsIG9yCiAgICAgKiBmYWxzZSBvdGhlcndpc2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc192YWxpZF9hbGlhcygkYWxpYXMpIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkYWxpYXMpKQogICAgICAgICAgICByZXR1cm47CgovLyBjaGVjayBhbGlhcwovLyBodHRwOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLnZhcmlhYmxlcy5iYXNpY3MucGhwCiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWjAtOV9ceDdmLVx4ZmZdKiQvJywgJGFsaWFzKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2VuZXJhdGUgYWxpYXMKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIHN0cmluZyB0aGF0IHRoZSBhbGlhcyB3aWxsIGJlIGdlbmVyYXRlZCBmcm9tCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIHRoZSBhbGlhcwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlX2FsaWFzKCRuYW1lKSB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJG5hbWUpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICRhbGlhcyA9ICRuYW1lOwoKLy8gcmVwbGFjZSBtdWx0aXBsZSBzcGFjZXMgd2l0aCBzaW5nbGUgdW5kZXJzY29yZQogICAgICAgICRhbGlhcyA9IHByZWdfcmVwbGFjZSgnLyArLycsICdfJywgJGFsaWFzKTsKCi8vIGxlYXZlIGFscGhhYmV0aWMgY2hhcmFjdGVycyBhbmQgdW5zY29yZXMsCi8vIHJlcGxhY2UgZXZlcnl0aGluZyBlbHNlIHdpdGggYW4gdW5kZXJzY29yZQogICAgICAgICRhbGlhcyA9IHByZWdfcmVwbGFjZSgnL1teYS16QS1aX10vJywgJ18nLCAkYWxpYXMpOwoKLy8gcmVwbGFjZSBtdWx0aXBsZSB1bmRlcnNjb3JlcyB3aXRoIHNpbmdsZSB1bmRlcnNjb3JlCiAgICAgICAgJGFsaWFzID0gcHJlZ19yZXBsYWNlKCcvXysvJywgJ18nLCAkYWxpYXMpOwoKLy8gY29udmVydCB0byBsb3dlcmNhc2UKICAgICAgICAkYWxpYXMgPSBzdHJ0b2xvd2VyKCRhbGlhcyk7CgovLyByZW1vdmUgdW5kZXJzY29yZSBmcm9tIHN0YXJ0IGFuZCBlbmQKICAgICAgICAkYWxpYXMgPSB0cmltKCRhbGlhcywgJ18nKTsKCiAgICAgICAgcmV0dXJuICRhbGlhczsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBmaWVsZCB0eXBlcwogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IG9mIGZpZWxkIHR5cGVzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2ZpZWxkX3R5cGVzKCkgewoKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsKCiAgICAgICAgJHR5cGVzID0gYXJyYXkoCiAgICAgICAgICAgICd0ZXh0Ym94JyA9PiAkbW9kdWxlLT5MYW5nKCd0ZXh0Ym94JyksCiAgICAgICAgICAgICdjaGVja2JveCcgPT4gJG1vZHVsZS0+TGFuZygnY2hlY2tib3gnKSwKICAgICAgICAgICAgJ3RleHRhcmVhJyA9PiAkbW9kdWxlLT5MYW5nKCd0ZXh0YXJlYScpLAogICAgICAgICAgICAnc2VsZWN0X2RhdGUnID0+ICRtb2R1bGUtPkxhbmcoJ3NlbGVjdF9kYXRlJyksCiAgICAgICAgICAgICd1cGxvYWRfZmlsZScgPT4gJG1vZHVsZS0+TGFuZygndXBsb2FkX2ZpbGUnKSwKICAgICAgICAgICAgJ3NlbGVjdF9maWxlJyA9PiAkbW9kdWxlLT5MYW5nKCdzZWxlY3RfZmlsZScpLAogICAgICAgICAgICAnZHJvcGRvd24nID0+ICRtb2R1bGUtPkxhbmcoJ2Ryb3Bkb3duJyksCiAgICAgICAgICAgICdkcm9wZG93bmZyb21tb2R1bGUnID0+ICRtb2R1bGUtPkxhbmcoJ2Ryb3Bkb3duZnJvbW1vZHVsZScpLAogICAgICAgICAgICAnbW9kdWxlJyA9PiAkbW9kdWxlLT5MYW5nKCdtb2R1bGUnKSwKICAgICAgICAgICAgJ21vZHVsZV9saW5rJyA9PiAkbW9kdWxlLT5MYW5nKCdtb2R1bGVfbGluaycpLAogICAgICAgICAgICAncGFnZScgPT4gJG1vZHVsZS0+TGFuZygncGFnZScpLAogICAgICAgICAgICAnY29sb3JfcGlja2VyJyA9PiAkbW9kdWxlLT5MYW5nKCdjb2xvcl9waWNrZXInKSwKICAgICAgICAgICAgJ3N0YXRpYycgPT4gJG1vZHVsZS0+TGFuZygnc3RhdGljJyksCiAgICAgICAgICAgICd0YWInID0+ICRtb2R1bGUtPkxhbmcoJ3RhYicpCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICR0eXBlczsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBmaWVsZCBzZWN0aW9ucwogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IG9mIGZpZWxkIHNlY3Rpb25zCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2ZpZWxkX3NlY3Rpb25zKCkgewoKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsKCiAgICAgICAgJHNlY3Rpb25zID0gYXJyYXkoCiAgICAgICAgICAgICdpdGVtcycgPT4gJG1vZHVsZS0+TGFuZygnaXRlbXMnKSwKICAgICAgICAgICAgJ2NhdGVnb3JpZXMnID0+ICRtb2R1bGUtPkxhbmcoJ2NhdGVnb3JpZXMnKQogICAgICAgICk7CgogICAgICAgIHJldHVybiAkc2VjdGlvbnM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfcHJlZml4KCRtb2QpIHsKICAgICAgICByZXR1cm4gJG1vZC0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfcHJldHR5X3VybCgkbW9kLCAkcHJlZml4LCAkaXRlbV9pZCwgJGFsaWFzLCAkcmV0dXJuaWQgPSBudWxsLCAkZGV0YWlsdGVtcGxhdGUgPSBudWxsKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKCiAgICAgICAgJHBhcm1zW10gPSAkcHJlZml4OwogICAgICAgICRwYXJtc1tdID0gJGl0ZW1faWQ7CiAgICAgICAgaWYgKCRyZXR1cm5pZCkKICAgICAgICAgICAgJHBhcm1zW10gPSAkcmV0dXJuaWQ7CiAgICAgICAgaWYgKCRhbGlhcykKICAgICAgICAgICAgJHBhcm1zW10gPSAkYWxpYXM7CiAgICAgICAgaWYgKCRkZXRhaWx0ZW1wbGF0ZSAhPSBudWxsKQogICAgICAgICAgICAkcGFybXNbXSA9ICRkZXRhaWx0ZW1wbGF0ZTsKCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJy8nLCAkcGFybXMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3ByaXZhdGVfY2F0ZWdvcmllcygkbW9kKSB7CgogICAgICAgICRjYXRlZ29yeWxvbmduYW1lbGlzdCA9IGFycmF5KCk7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERCKCk7CiAgICAgICAgJHVzZXJvcHMgPSBjbXNtcygpLT5HZXRVc2VyT3BlcmF0aW9ucygpOwoKICAgICAgICAkdXNlcmlkID0gZ2V0X3VzZXJpZCgpOwogICAgICAgICR1c2VyX2lkID0gJHVzZXJpZDsKICAgICAgICAkYWRtaW51c2VyID0gKCR1c2Vyb3BzLT5Vc2VySW5Hcm91cCgkdXNlcmlkLCAxKSB8fCAkdXNlcmlkID09IDEpOwovL21sZSBzdXBwb3J0CiAgICAgICAgaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ3VzZXJncm91cF9kZXBlbmRlbmNlJykgJiYgISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfYWxsX2NhdGVnb3J5X3Zpc2JpbGUnKSkgewoKICAgICAgICAgICAgaWYgKCRhZG1pbnVzZXIgIT0gMSkgewoKCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGdyb3VwX2lkIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJ1c2VyX2dyb3VwcyB3aGVyZSB1c2VyX2lkPT8iOwogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR1c2VyX2lkKSk7CiAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICRncm91cHMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgICR3aGVyZXN0YXRlbWVudCA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcmVzdWx0ICYmICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZXN0YXRlbWVudCBbXSA9ICIgdXNlcmdyb3VwID0gPyAiOwogICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zYXJyYXlbXSA9ICRyb3dbImdyb3VwX2lkIl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyggJyAuIGltcGxvZGUoJyBPUiAnLCAkd2hlcmVzdGF0ZW1lbnQpIC4gJyknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjYXRlZ29yeWxpc3QgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9jYXRlZ29yeV9saXN0KCRtb2QsICR3aGVyZSwgJHBhcmFtc2FycmF5KTsKICAgICAgICAgICAgICAgICRjYXRlZ29yeWxvbmduYW1lbGlzdCA9IGFycmF5X3NsaWNlKCRjYXRlZ29yeWxpc3QsIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY2F0ZWdvcnlsb25nbmFtZWxpc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWxldGUgaXRlbQogICAgICogQHBhcmFtIG9iamVjdCAkbW9kCiAgICAgKiBAcGFyYW0gaW50ICRpdGVtX2lkIAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRldGVsZV9pdGVtKCRtb2QsICRpdGVtX2lkKSB7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgovLyBnZXQgZGV0YWlscwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBXSEVSRSBpdGVtX2lkID0gPyc7CiAgICAgICAgJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsKCi8vIGRlbGV0ZSBpdGVtCiAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBXSEVSRSBpdGVtX2lkID0gPyc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsKCi8vIGRlbGV0ZSBmaWVsZCB2YWx1ZXMKICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsKCi8vIGRlbGV0ZSBmaWVsZCB2YWx1ZXMKICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtX2V4dHJhIFdIRVJFIGl0ZW1faWQgPSA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCkpOwoKLy9VcGRhdGUgc2VhcmNoIGluZGV4CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnU2VhcmNoJyk7CiAgICAgICAgaWYgKCRtb2R1bGUgIT0gRkFMU0UpIHsKICAgICAgICAgICAgJG1vZHVsZS0+RGVsZXRlV29yZHMoJG1vZC0+R2V0TmFtZSgpLCAkaXRlbV9pZCwgJ2l0ZW0nKTsKICAgICAgICB9CiAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnSXRlbURlbGV0ZWQnLCBhcnJheSgnaXRlbV9pZCcgPT4gJGl0ZW1faWQpKTsKICAgIH0KCn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBFeHRlbmRlZCB0b29scyBmb3IgQ01TIE1hZGUgU2ltcGxlIChAa3V6bWFueSkKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvbWVkaWFjZW50ZXIvCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc3NldCgkZ0NtcykpCiAgICBleGl0OwoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoKLy8gY3JlYXRlIGl0ZW0gdGFibGUKCiRmaWVsZHMgPSAnCiAgICBpZCBJIEtFWSBBVVRPLAogICAgbW9kdWxlX25hbWUgQygyNTUpLAoJYXR0YWNoIEMoMjU1KSwKICAgIGNyZWF0ZV9kYXRlICcgLiBDTVNfQURPREJfRFQgLiAnLAoJbW9kaWZpZWRfZGF0ZSAnIC4gQ01TX0FET0RCX0RUIC4gJwonOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yJywgJGZpZWxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCiMgcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBFeHRlbmRlZCB0b29scyBmb3IgQ01TIE1hZGUgU2ltcGxlIChAa3V6bWFueSkNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9tZWRpYWNlbnRlci8NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokZGIgPSBjbXNtcygpLT5HZXREYigpOw0KDQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7DQoNCi8vIGRyb3AgdGFibGVzDQokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yJyk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcpKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/PD9waHANCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOw0KJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOw0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KDQpzd2l0Y2ggKCRvbGR2ZXJzaW9uKSB7DQogICAgY2FzZSAnMS4wJzoNCiAgICAgICAgJG1vZHVsZXMgPSBnZW5lcmF0b3Jfb3B0czo6Z2V0X21vZHVsZXMoKTsNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbScsICdyZWN1cnNpdmUgQygyNTUpJyk7DQogICAgICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQogICAgICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0nLCAnaXRlbV9kYXRlX2VuZCAnIC4gQ01TX0FET0RCX0RUKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCiAgICAgICAgICAgICAgICAkZmllbGRzID0gJw0KICAgIGl0ZW1faWQgSSBLRVkgTk9UIG51bGwsDQogICAgdmFsdWUgSSBLRVkgTk9UIG51bGwNCic7DQogICAgICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbV9leHRyYScsICRmaWVsZHMsICR0YWJvcHRhcnJheSk7DQogICAgICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgY2FzZSAnMS4xJzoNCiAgICAgICAgJG1vZHVsZXMgPSBnZW5lcmF0b3Jfb3B0czo6Z2V0X21vZHVsZXMoKTsNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcycsICd1c2VyZ3JvdXAgSScpOw0KICAgICAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiAgICAgICAgICAgICAgICAkbW9iamVjdC0+Q3JlYXRlUGVybWlzc2lvbigkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2FsbF9jYXRlZ29yeV92aXNiaWxlJywgJG1vYmplY3QtPkxhbmcoJ2FsbF9jYXRlZ29yeV92aXNiaWxlJykpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgY2FzZSAnMS4yJzoNCiAgICAgICAgJG1vZHVsZXMgPSBnZW5lcmF0b3Jfb3B0czo6Z2V0X21vZHVsZXMoKTsNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCg0KICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3VybCcsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbScsICd1cmwnKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjMnOg0KICAgICAgICAkbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOw0KICAgICAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7DQogICAgICAgICAgICAkbW9iamVjdCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCiAgICAgICAgICAgIGlmICgkbW9iamVjdCkgew0KICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzJywgJ2V4dHJhMiBYJyk7DQogICAgICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5TZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9leHRyYTJfbGFiZWwnLCAkbW9iamVjdC0+TGFuZygnZXh0cmEnKSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjQnOg0KICAgICAgICAkbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOw0KICAgICAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7DQogICAgICAgICAgICAkbW9iamVjdCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCiAgICAgICAgICAgIGlmICgkbW9iamVjdCkgew0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnSXRlbUFkZGVkJyk7DQogICAgICAgICAgICAgICAgJG1vYmplY3QtPkNyZWF0ZUV2ZW50KCdJdGVtRWRpdGVkJyk7DQogICAgICAgICAgICAgICAgJG1vYmplY3QtPkNyZWF0ZUV2ZW50KCdJdGVtRGVsZXRlZCcpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlBZGRlZCcpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlFZGl0ZWQnKTsNCiAgICAgICAgICAgICAgICAkbW9iamVjdC0+Q3JlYXRlRXZlbnQoJ0NhdGVnb3J5RGVsZXRlZCcpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnSXRlbXNSZW9yZGVyZWQnKTsNCiAgICAgICAgICAgICAgICAkbW9iamVjdC0+Q3JlYXRlRXZlbnQoJ0NhdGVnb3JpZXNSZW9yZGVyZWQnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIGNhc2UgJzEuNSc6DQogICAgICAgICRtb2R1bGVzID0gZ2VuZXJhdG9yX29wdHM6OmdldF9tb2R1bGVzKCk7DQogICAgICAgIGZvcmVhY2ggKCRtb2R1bGVzIGFzICRtb2R1bGUpIHsNCiAgICAgICAgICAgICRtb2JqZWN0ID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRtb2R1bGVbIm1vZHVsZV9uYW1lIl0pOw0KICAgICAgICAgICAgaWYgKCRtb2JqZWN0KSB7DQogICAgICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmJywgJ2VkaXR2aWV3IEkoMSknKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjYnOg0KICAgICAgICAkbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOw0KICAgICAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7DQogICAgICAgICAgICAkbW9iamVjdCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCiAgICAgICAgICAgIGlmICgkbW9iamVjdCkgew0KICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZicsICdmaWx0ZXJfZnJvbnRlbmQgSSgxKScpOw0KICAgICAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnLCAnZmlsdGVyX2FkbWluIEkoMSknKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjguMSc6DQogICAgICAgICRtb2R1bGVzID0gZ2VuZXJhdG9yX29wdHM6OmdldF9tb2R1bGVzKCk7DQoNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCiAgICAgICAgICAgICAgICAkcG9zaXRpb24gPSAwOw0KDQogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCdBTFRFUiBUQUJMRSBgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllc2AgIENIQU5HRSBDT0xVTU4gYGNhdGVnb3J5X2lkYCBgY2F0ZWdvcnlfaWRgIElOVCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgRklSU1QnKTsNCg0KDQogICAgICAgICAgICAgICAgLy8gY29weSBuZXcgZmlsZXMNCiAgICAgICAgICAgICAgICAkZmlsZSA9ICdhY3Rpb24uYWRtaW5fZmllbGRzLnBocCc7DQogICAgICAgICAgICAgICAgJGZyb20gPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICdNb2R1bGVHZW5lcmF0b3InLCAnTW9kdWxlTGliJywgJ3NvdXJjZScsICdNb2R1bGVFeGFtcGxlJywgJGZpbGUpOw0KICAgICAgICAgICAgICAgICR0byA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sicm9vdF9wYXRoIl0sICdtb2R1bGVzJywgJG1vYmplY3QtPkdldE5hbWUoKSwgJGZpbGUpOw0KICAgICAgICAgICAgICAgIGNvcHkoJGZyb20sICR0byk7DQogICAgICAgICAgICAgICAgJGZpbGUgPSAnZnVuY3Rpb24uYWRtaW5fZmllbGRkZWZ0YWJfY2F0ZWdvcmllcy5waHAnOw0KICAgICAgICAgICAgICAgICRmcm9tID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwgJ21vZHVsZXMnLCAnTW9kdWxlR2VuZXJhdG9yJywgJ01vZHVsZUxpYicsICdzb3VyY2UnLCAnTW9kdWxlRXhhbXBsZScsICRmaWxlKTsNCiAgICAgICAgICAgICAgICAkdG8gPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICRtb2JqZWN0LT5HZXROYW1lKCksICRmaWxlKTsNCiAgICAgICAgICAgICAgICBjb3B5KCRmcm9tLCAkdG8pOw0KICAgICAgICAgICAgICAgICRmaWxlID0gJ2FjdGlvbi5hZG1pbl9vcmRlcmNhdGVnb3J5LnBocCc7DQogICAgICAgICAgICAgICAgJGZyb20gPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICdNb2R1bGVHZW5lcmF0b3InLCAnTW9kdWxlTGliJywgJ3NvdXJjZScsICdNb2R1bGVFeGFtcGxlJywgJGZpbGUpOw0KICAgICAgICAgICAgICAgICR0byA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sicm9vdF9wYXRoIl0sICdtb2R1bGVzJywgJG1vYmplY3QtPkdldE5hbWUoKSwgJGZpbGUpOw0KICAgICAgICAgICAgICAgIGNvcHkoJGZyb20sICR0byk7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJGZpbGUgPSAnTW9kdWxlRXhhbXBsZS5tb2R1bGUucGhwJzsNCiAgICAgICAgICAgICAgICAkZnJvbSA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sicm9vdF9wYXRoIl0sICdtb2R1bGVzJywgJ01vZHVsZUdlbmVyYXRvcicsICdNb2R1bGVMaWInLCAnc291cmNlJywgJ01vZHVsZUV4YW1wbGUnLCAkZmlsZSk7DQogICAgICAgICAgICAgICAgJHRvID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwgJ21vZHVsZXMnLCAkbW9iamVjdC0+R2V0TmFtZSgpLCAkbW9iamVjdC0+R2V0TmFtZSgpIC4gJy5tb2R1bGUucGhwJyk7DQogICAgICAgICAgICAgICAgY29weSgkZnJvbSwgJHRvKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAvLyAgcmV3cml0ZSBtb2R1bGUgY29udGVudA0KICAgICAgICAgICAgICAgICRkYXRhID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR0byk7DQogICAgICAgICAgICAgICAgaWYgKCRkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICRkYXRhID0gc3RyX3JlcGxhY2UoJ01vZHVsZUV4YW1wbGUnLCAkbW9iamVjdC0+R2V0TmFtZSgpLCAkZGF0YSk7DQogICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCR0bywgJGRhdGEpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGRpZSgkdGhpcy0+TGFuZygnZXJyb3JfcmVwbGFjZV9zdHJpbmcnKSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgDQoNCiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgZGF0YWJhc2UNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnLCAnc2VjdGlvbiAgQygxMCknKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIFNFVCBzZWN0aW9uID0gIml0ZW1zIiAnOw0KICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgpKTsNCg0KDQogICAgICAgICAgICAgICAgJGNhdGVnb3JpZXMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9jYXRlZ29yeV9saXN0KCRtb2JqZWN0LCBhcnJheSgpLCBhcnJheSgpLCBmYWxzZSk7DQoNCiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJGNhdGVnb3JpZXMpID09IGZhbHNlKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJGhlbHAgPSAnJzsNCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAndGV4dGJveCc7DQogICAgICAgICAgICAgICAgICAgICRyZXF1aXJlZCA9IDA7DQogICAgICAgICAgICAgICAgICAgICRlZGl0dmlldyA9IDA7DQogICAgICAgICAgICAgICAgICAgICRmcm9udGVuZCA9IDE7DQogICAgICAgICAgICAgICAgICAgICRmaWx0ZXJfZnJvbnRlbmQgPSAwOw0KICAgICAgICAgICAgICAgICAgICAkYWRtaW5fYWRtaW4gPSAwOw0KICAgICAgICAgICAgICAgICAgICAkc2VhcmNoYWJsZSA9IDA7DQogICAgICAgICAgICAgICAgICAgICRleHRyYSA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAkc2VjdGlvbiA9ICdjYXRlZ29yaWVzJzsNCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgJGV4dHJhMSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAkZXh0cmEyID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjYXRlZ29yaWVzIGFzICRjYXRlZ29yeSkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNhdGVnb3J5WyJleHRyYSJdKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGV4dHJhMSA9PSBmYWxzZSkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJG1vYmplY3QtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2V4dHJhX2xhYmVsJywgJG1vYmplY3QtPkxhbmcoJ2V4dHJhJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxpYXMgPSAnZXh0cmEnOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiAobmFtZSwgYWxpYXMsIGhlbHAsIHR5cGUsIHBvc2l0aW9uLCByZXF1aXJlZCwgZnJvbnRlbmQsIGVkaXR2aWV3LCBmaWx0ZXJfZnJvbnRlbmQsIGZpbHRlcl9hZG1pbiwgc2VhcmNoYWJsZSwgZXh0cmEsIHNlY3Rpb24pIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5hbWUsICRhbGlhcywgJGhlbHAsICR0eXBlLCAkcG9zaXRpb24rKywgJHJlcXVpcmVkLCAkZnJvbnRlbmQsICRlZGl0dmlldywgJGZpbHRlcl9mcm9udGVuZCwgJGFkbWluX2FkbWluLCAkc2VhcmNoYWJsZSwgJGV4dHJhLCAkc2VjdGlvbikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXh0cmExaWQgPSAkZGItPkluc2VydF9JRCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXh0cmExID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCAoaXRlbV9pZCwgZmllbGRkZWZfaWQsIHZhbHVlKSBWQUxVRVMgKD8sID8sID8pJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNhdGVnb3J5WyJjYXRlZ29yeV9pZCJdLCAkZXh0cmExaWQsICRjYXRlZ29yeVsiZXh0cmEiXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjYXRlZ29yeVsiZXh0cmEyIl0pIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXh0cmEyID09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJG1vYmplY3QtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2V4dHJhMl9sYWJlbCcsICRtb2JqZWN0LT5MYW5nKCdleHRyYScpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsaWFzID0gJ2V4dHJhMic7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIChuYW1lLCBhbGlhcywgaGVscCwgdHlwZSwgcG9zaXRpb24sIHJlcXVpcmVkLCBmcm9udGVuZCwgZWRpdHZpZXcsIGZpbHRlcl9mcm9udGVuZCwgZmlsdGVyX2FkbWluLCBzZWFyY2hhYmxlLCBleHRyYSwgc2VjdGlvbikgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbmFtZSwgJGFsaWFzLCAkaGVscCwgJHR5cGUsICRwb3NpdGlvbisrLCAkcmVxdWlyZWQsICRmcm9udGVuZCwgJGVkaXR2aWV3LCAkZmlsdGVyX2Zyb250ZW5kLCAkYWRtaW5fYWRtaW4sICRzZWFyY2hhYmxlLCAkZXh0cmEsICRzZWN0aW9uKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRleHRyYTJpZCA9ICRkYi0+SW5zZXJ0X0lEKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRleHRyYTIgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCAoaXRlbV9pZCwgZmllbGRkZWZfaWQsIHZhbHVlKSBWQUxVRVMgKD8sID8sID8pJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNhdGVnb3J5WyJjYXRlZ29yeV9pZCJdLCAkZXh0cmEyaWQsICRjYXRlZ29yeVsiZXh0cmEyIl0pKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkY3VycmVudF92ZXJzaW9uID0gIjEuOSI7DQp9DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleGenerator.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBFeHRlbmRlZCB0b29scyBmb3IgQ01TIE1hZGUgU2ltcGxlIChAa3V6bWFueSkNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9tZWRpYWNlbnRlci8NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KLyoqDQogKiAgZ2VuZXJhdG9yIA0KICogQHJldHVybiBvYmplY3QgDQogKi8NCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZW5lcmF0b3InKSkgew0KDQogICAgZnVuY3Rpb24gZ2VuZXJhdG9yKCkgew0KICAgICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsNCiAgICB9DQoNCn0NCg0KY2xhc3MgTW9kdWxlR2VuZXJhdG9yIGV4dGVuZHMgQ0dFeHRlbnNpb25zIHsNCiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAgIENvbnN0cnVjdG9yDQogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsNCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOw0KICAgIH0NCg0KICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICAgU2V0UGFyYW1ldGVycw0KICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgew0KICAgICAgICAvLyBub3RoaW5nDQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKSB7DQogICAgICAgIGlmICh2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sICcxLjEwJykgPCAwKQ0KICAgICAgICAgICAgJHRoaXMtPkluaXRpYWxpemVGcm9udGVuZCgpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIEluaXRpYWxpemVBZG1pbigpIHsNCiAgICAgICAgLy8gbm90aGluZw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKSB7DQogICAgICAgIHJldHVybiBUUlVFOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXROYW1lKCkgew0KICAgICAgICByZXR1cm4gZ2V0X2NsYXNzKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsNCiAgICAgICAgcmV0dXJuICcxLjkuMic7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEFsbG93QXV0b1VwZ3JhZGUoKSB7DQogICAgICAgIHJldHVybiBGQUxTRTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsNCiAgICAgICAgcmV0dXJuICdAa3V6bWFueSc7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgew0KICAgICAgICByZXR1cm4gJ3pkZW5vQGt1em1hbnkuYml6JzsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKSB7DQogICAgICAgIHJldHVybiBhcnJheSgnQ0dFeHRlbnNpb25zJyA9PiAnMS4yMycsICdFeHRlbmRlZFRvb2xzJyA9PiAnMS4xLjEnLCAnQ0dTbWFydEltYWdlJyA9PiAnMS41Jyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgew0KICAgICAgICByZXR1cm4gIjEuOS40IjsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbigkZXZlbnRuYW1lKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnZXZlbnRfaW5mb18nIC4gJGV2ZW50bmFtZSk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEV2ZW50SGVscCgkZXZlbnRuYW1lKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnZXZlbnRfaGVscF8nIC4gJGV2ZW50bmFtZSk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBDaGVja0FjY2VzcygkcGVybSA9ICcxJykgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkcGVybSk7DQogICAgfQ0KDQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_approveitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQppZiAoIWlzc2V0KCRwYXJhbXNbJ2FwcHJvdmUnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2l0ZW1faWQnXSkpIHsNCiAgICBkaWUoJ21pc3NpbmcgcGFyYW1ldGVyLCB0aGlzIHNob3VsZCBub3QgaGFwcGVuJyk7DQp9DQoNCiRpdGVtX2lkID0gKGludCkgJHBhcmFtc1snaXRlbV9pZCddOw0KJGFjdGl2ZSA9IChib29sKSAkcGFyYW1zWydhcHByb3ZlJ107DQoNCiRxdWVyeSA9ICdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIFNFVCBhY3RpdmUgPSA/IFdIRVJFIGl0ZW1faWQgPSA/JzsNCiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRhY3RpdmUsICRpdGVtX2lkKSk7DQoNCiRzZWFyY2ggPSBjbXNfdXRpbHM6OmdldF9zZWFyY2hfbW9kdWxlKCk7DQppZiAoaXNfb2JqZWN0KCRzZWFyY2gpKSB7DQogICAgaWYgKCRhY3RpdmUpIHsNCiAgICAgICAgJHNlYXJjaC0+RGVsZXRlV29yZHMoJG1vZC0+R2V0TmFtZSgpLCAkaXRlbV9pZCwgJ2l0ZW0nKTsNCiAgICB9IGVsc2Ugew0KDQogICAgICAkc2VhcmNoLT5BZGRXb3JkcygkbW9kLT5HZXROYW1lKCksICRpdGVtX2lkLCAnaXRlbScsIGdlbmVyYXRvcl90b29sczo6Z2V0X3NlYXJjaGFibGVfdGV4dCgkbW9kLCAkaXRlbV9pZCksIGdlbmVyYXRvcl90b29sczo6Z2V0X3NlYXJjaGFibGVfZGF0ZV9lbmQoKSk7DQogICAgfQ0KfQ0KDQpAJG1vZC0+U2VuZEV2ZW50KCdJdGVtRWRpdGVkJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRpdGVtX2lkLCAnYWN0aXZlJyA9PiAkYWN0aXZlKSk7DQoNCi8vIGFsbCBkb25lDQokbW9kLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJyA9PiAnaXRlbXRhYicpKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_bulkaction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCmlmICghJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfaXRlbScpKQogICAgcmV0dXJuOwoKJG1vZC0+U2V0Q3VycmVudFRhYignaXRlbXRhYicpOwoKCmlmIChpc3NldCgkcGFyYW1zWydtdWx0aXNlbGVjdCddKSAmJiBpc19hcnJheSgkcGFyYW1zWydtdWx0aXNlbGVjdCddKSAmJiBjb3VudCgkcGFyYW1zWydtdWx0aXNlbGVjdCddKSAmJiBpc3NldCgkcGFyYW1zWydidWxrYWN0aW9uJ10pKSB7CiAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkcGFyYW1zWydtdWx0aXNlbGVjdCddKTsgJGkrKykgewogICAgICAgICRwYXJhbXNbJ211bHRpc2VsZWN0J11bJGldID0gKGludCkgJHBhcmFtc1snbXVsdGlzZWxlY3QnXVskaV07CiAgICB9CgogICAgc3dpdGNoICgkcGFyYW1zWydidWxrYWN0aW9uJ10pIHsKICAgICAgICBjYXNlICdkZWxldGUnOgogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydtdWx0aXNlbGVjdCddIGFzICRpdGVtX2lkKSB7CiAgICAgICAgICAgICAgICAkcmVzID0gZ2VuZXJhdG9yX3Rvb2xzOjpkZXRlbGVfaXRlbSgkbW9kLCAoaW50KSAkaXRlbV9pZCk7CiAgICAgICAgICAgICAgICBAJG1vZC0+U2VuZEV2ZW50KCdJdGVtRGVsZXRlZCcsIGFycmF5KCdpdGVtX2lkJyA9PiAkaXRlbV9pZCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3NldGFjdGl2ZSc6IHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIFNFVCBhY3RpdmUgPSA/LCBtb2RpZmllZF9kYXRlID0gTk9XKCkgV0hFUkUgaXRlbV9pZCBJTiAoJzsKICAgICAgICAgICAgICAgICRxdWVyeSAuPSBpbXBsb2RlKCcsJywgJHBhcmFtc1snbXVsdGlzZWxlY3QnXSkgLiAnKSc7CiAgICAgICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoMSkpOwogICAgICAgICAgICAgICAgJHNlYXJjaCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnU2VhcmNoJyk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydtdWx0aXNlbGVjdCddIGFzICRpdGVtX2lkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWFyY2ggIT0gRkFMU0UpCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWFyY2gtPkFkZFdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1faWQsICdpdGVtJywgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfc2VhcmNoYWJsZV90ZXh0KCRtb2QsICRpdGVtX2lkKSwgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfc2VhcmNoYWJsZV9kYXRlX2VuZCgpKTsKICAgICAgICAgICAgICAgICAgICBAJG1vZC0+U2VuZEV2ZW50KCdJdGVtRWRpdGVkJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRpdGVtX2lkLCAnYWN0aXZlJyA9PiAxKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnc2V0aW5hY3RpdmUnOiB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBTRVQgYWN0aXZlID0gPywgbW9kaWZpZWRfZGF0ZSA9IE5PVygpIFdIRVJFIGl0ZW1faWQgSU4gKCc7CiAgICAgICAgICAgICAgICAkcXVlcnkgLj0gaW1wbG9kZSgnLCcsICRwYXJhbXNbJ211bHRpc2VsZWN0J10pIC4gJyknOwogICAgICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KDApKTsKICAgICAgICAgICAgICAgIC8vVXBkYXRlIHNlYXJjaCBpbmRleAogICAgICAgICAgICAgICAgJHNlYXJjaCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnU2VhcmNoJyk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydtdWx0aXNlbGVjdCddIGFzICRpdGVtX2lkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWFyY2ggIT0gRkFMU0UpCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWFyY2gtPkRlbGV0ZVdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1faWQsICdpdGVtJyk7CiAgICAgICAgICAgICAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnSXRlbUVkaXRlZCcsIGFycmF5KCdpdGVtX2lkJyA9PiAkaXRlbV9pZCwgJ2FjdGl2ZScgPT4gMCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgfQp9CgokbW9kLT5TZXRtZXNzYWdlKCRtb2QtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZScpKTsKJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQpOwojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_deletecategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCmlmICghJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfY2F0ZWdvcmllcycpKQogICAgcmV0dXJuOwoKCiRjYXRpZCA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snY2F0aWQnXSkpIHsKICAgICRjYXRpZCA9ICRwYXJhbXNbJ2NhdGlkJ107Cn0KCi8vIEdldCB0aGUgY2F0ZWdvcnkgZGV0YWlscwokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nLiRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzCiAgICAgICAgICAgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JzsKJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGNhdGlkKSk7CgovL1Jlc2V0IGFsbCBjYXRlZ29yaWVzIHVzaW5nIHRoaXMgcGFyZW50IHRvIGhhdmUgbm8gcGFyZW50ICgtMSkKJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nLiRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzIFNFVCBwYXJlbnRfaWQ9PywgbW9kaWZpZWRfZGF0ZT0nIC4gJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpIC4gJyBXSEVSRSBwYXJlbnRfaWQ9Pyc7CiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KC0xLCAkY2F0aWQpKTsKCi8vTm93IHJlbW92ZSB0aGUgY2F0ZWdvcnkKJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIuJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/IjsKJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNhdGlkKSk7CgovL0FuZCByZW1vdmUgaXQgZnJvbSBhbnkgYXJ0aWNsZXMKJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iLiRtb2QtPl9HZXRNb2R1bGVBbGlhcygpLiJfaXRlbSBTRVQgY2F0ZWdvcnlfaWQgPSAtMSBXSEVSRSBjYXRlZ29yeV9pZCA9ID8iOwokZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2F0aWQpKTsKCkAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5RGVsZXRlZCcsIGFycmF5KCdjYXRlZ29yeV9pZCcgPT4gJGNhdGlkLCAnbmFtZScgPT4gJHJvd1snY2F0ZWdvcnlfbmFtZSddKSk7CgpnZW5lcmF0b3JfdG9vbHM6OnVwZGF0ZV9oaWVyYXJjaHlfcG9zaXRpb25zKCRtb2QpOwoKJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICdjYXRlZ29yeXRhYicsICRwYXJhbXMpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_deletefielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCiRmaWVsZGRlZl9pZCA9ICcnOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snZmllbGRkZWZfaWQnXSkpIHsNCiAgICAkZmllbGRkZWZfaWQgPSAoaW50KSAkcGFyYW1zWydmaWVsZGRlZl9pZCddOw0KfQ0KDQppZiAoZW1wdHkoJGZpZWxkZGVmX2lkKSkgew0KICAgICRtb2QtPlNldEVycm9yKCRtb2QtPkxhbmcoJ2VtcHR5X3BhcmFtJykpOw0KICAgICRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnJywgYXJyYXkoKSwgJ2FkbWluX2ZpZWxkcycpOw0KfQ0KDQovLyBnZXQgZGV0YWlscw0KJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBXSEVSRSBmaWVsZGRlZl9pZCA9ID8nOw0KJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGZpZWxkZGVmX2lkKSk7DQoNCi8vIGRlbGV0ZSBmaWVsZCBkZWZpbml0aW9ucw0KJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYgV0hFUkUgZmllbGRkZWZfaWQgPSA/JzsNCiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWVsZGRlZl9pZCkpOw0KDQovLyBkZWxldGUgZmllbGQgdmFsdWVzDQokcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBmaWVsZGRlZl9pZCA9ID8nOw0KJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGZpZWxkZGVmX2lkKSk7DQoNCg0KLy8gYWxsIGRvbmUNCiRtb2QtPlNldG1lc3NhZ2UoJG1vZC0+TGFuZygnZGVsZXRlZCcpKTsNCiRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAkcm93WyJzZWN0aW9uIl0sIGFycmF5KCksICdhZG1pbl9maWVsZHMnKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_deleteitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQokaXRlbV9pZCA9ICcnOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSkgew0KICAgICRpdGVtX2lkID0gKGludCkgJHBhcmFtc1snaXRlbV9pZCddOw0KfQ0KDQppZiAoZW1wdHkoJGl0ZW1faWQpKSB7DQogICAgJG1vZC0+U2V0RXJyb3IoJG1vZC0+TGFuZygnZW1wdHlfcGFyYW0nKSk7DQogICAgJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICdkZWZhdWxhY3Rpb24nLCAkcGFyYW1zKTsNCn0NCg0KZ2VuZXJhdG9yX3Rvb2xzOjpkZXRlbGVfaXRlbSgkbW9kLCAkaXRlbV9pZCk7DQoNCiRtb2QtPlNldG1lc3NhZ2UoJG1vZC0+TGFuZygnZGVsZXRlZCcpKTsNCiRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnZGVmYXVsdGFkbWluJywgJHBhcmFtcyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfb3B0aW9uJykpIHJldHVybjsNCg0KJHRwbF9pZCA9ICcnOw0KDQppZiAoaXNzZXQoJHBhcmFtc1sndHBsX2lkJ10pKSB7DQoJJHRwbF9pZCA9IChpbnQpJHBhcmFtc1sndHBsX2lkJ107DQp9DQoNCi8vIGdldCBkZXRhaWxzDQokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3RlbXBsYXRlIFdIRVJFIHRwbF9pZCA9ID8nOw0KJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJHRwbF9pZCkpOw0KDQovLyBkZWxldGUgcmVjb3JkDQokcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ190ZW1wbGF0ZSBXSEVSRSB0cGxfaWQgPSA/JzsNCiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0cGxfaWQpKTsNCg0KLy8gYWxsIGRvbmUNCiRtb2QtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXRhYicsICdtZXNzYWdlJyA9PiAnZGVsZXRlZCcpKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_editcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCgppZiAoISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKSkKICAgIHJldHVybjsKCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsKICAgICRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnY2F0ZWdvcnl0YWInKTsKfQoKJGl0ZW1faWQgPSAkY2F0aWQgPSBudWxsOwppZiAoaXNzZXQoJHBhcmFtc1snY2F0aWQnXSkpIHsKICAgICRpdGVtX2lkID0gJGNhdGlkID0gJHBhcmFtc1snY2F0aWQnXTsKfQoKJHBhcmVudGlkID0gJy0xJzsKaWYgKGlzc2V0KCRwYXJhbXNbJ3BhcmVudCddKSkgewogICAgJHBhcmVudGlkID0gJHBhcmFtc1sncGFyZW50J107Cn0KCiRvcmlnbmFtZSA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snb3JpZ25hbWUnXSkpIHsKICAgICRvcmlnbmFtZSA9ICRwYXJhbXNbJ29yaWduYW1lJ107Cn0KCiRhbGlhcyA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkpIHsKICAgICRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snYWxpYXMnXSwgdHJ1ZSk7Cn0KCgokdXNlcmdyb3VwID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWyd1c2VyZ3JvdXAnXSkpIHsKICAgICR1c2VyZ3JvdXAgPSAkcGFyYW1zWyd1c2VyZ3JvdXAnXTsKfQoKLy8gZ2V0IHRoZSBjdXN0b20gZmllbGRzCiRmaWx0ZXJzID0gbmV3IGdlbmVyYXRvcl9maWx0ZXJzKCRpZCwgJG1vZCwgJ2FkbWluJyk7CiR0bXAgPSBnZW5lcmF0b3JfZmllbGRzOjpnZXRfZmllbGRzX2Zvcl9maWx0ZXJzKCRtb2QsIGFycmF5KCksICdjYXRlZ29yaWVzJyk7CiRjdXN0b21fZmxkcyA9ICRmaWx0ZXJzLT5wcm9jZXNzX2N1c3RvbV9maWVsZHMoYXJyYXkoKSwgJHRtcCk7CgokbmFtZSA9ICcnOwokZXJyb3JzID0gYXJyYXkoKTsKaWYgKGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkpIHsKICAgICRuYW1lID0gJHBhcmFtc1snbmFtZSddOwogICAgaWYgKCRuYW1lID09ICcnKSB7CiAgICAgICAgJGVycm9yc1tdID0gJG1vZC0+U2hvd0Vycm9ycyhnZW5lcmF0b3IoKS0+TGFuZygnbm9uYW1lZ2l2ZW4nKSk7CiAgICB9CgogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10pKSB7CiAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snY3VzdG9tZmllbGQnXSBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7CgogICAgICAgICAgICBpZiAoJHZhbHVlID09ICdzZWxlY3RfZGVmYXVsdCcpIHsKICAgICAgICAgICAgICAgICRwYXJhbXNbJ2N1c3RvbWZpZWxkJ11bJGZsZGlkXSA9ICcnOwogICAgICAgICAgICAgICAgJHZhbHVlID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlcXVpcmVkIGZpZWxkcwogICAgICAgICAgICBpZiAoJHZhbHVlID09ICcnICYmICRjdXN0b21fZmxkc1skZmxkaWRdWydyZXF1aXJlZCddICYmICgkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnZWRpdHZpZXcnXSAmJiBpc1NldCgkcGFyYW1zWyJpdGVtX2lkIl0pKSkgewogICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ3JlcXVpcmVkX2ZpZWxkX2VtcHR5JykgLiAnICgnIC4gJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ25hbWUnXSAuICcpJzsKICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBvbmx5IGRpc3BsYXkgb25lIGVycm9yIG1lc3NhZ2UgYXQgYSB0aW1lCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIG1heCBsZW5ndGgKICAgICAgICAgICAgaWYgKGlzc2V0KCRjdXN0b21fZmxkc1skZmxkaWRdWydtYXhfbGVuZ3RoJ10pICYmIG1iX3N0cmxlbigkdmFsdWUpID4gJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ21heF9sZW5ndGgnXSkgewogICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ3Rvb19sb25nJykgLiAnICgnIC4gJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ25hbWUnXSAuICcpJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvcHRpb25zCiAgICAgICAgICAgIGlmICgkdmFsdWUgIT0gJycgJiYgaXNzZXQoJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ29wdGlvbnMnXSkgJiYgIWFycmF5X2tleV9leGlzdHMoJHZhbHVlLCAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnb3B0aW9ucyddKSkgewogICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2ludmFsaWQnKSAuICcgKCcgLiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbmFtZSddIC4gJyknOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gZGlzcGxheSBlcnJvcnMgaWYgdGhlcmUgYXJlIGFueQogICAgaWYgKCFlbXB0eSgkZXJyb3JzKSkgewogICAgICAgIGVjaG8gJG1vZC0+U2hvd0Vycm9ycygkZXJyb3JzKTsKICAgIH0gZWxzZSB7CgogICAgICAgIGlmICgkY2F0aWQgIT0gbnVsbCkgewogICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBTRVQgY2F0ZWdvcnlfbmFtZSA9ID8sY2F0ZWdvcnlfYWxpYXMgPSA/LCB1c2VyZ3JvdXAgPSA/LCBwYXJlbnRfaWQgPSA/LCBtb2RpZmllZF9kYXRlID0gJyAuICRkYi0+REJUaW1lU3RhbXAodGltZSgpKSAuICcgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JzsKICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoJG5hbWUsICRhbGlhcywgJHVzZXJncm91cCwgJHBhcmVudGlkKTsKICAgICAgICAgICAgJHBhcm1zW10gPSAkY2F0aWQ7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwYXJtcyk7CiAgICAgICAgICAgIEAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5RWRpdGVkJywgYXJyYXkoJ2NhdGVnb3J5X2lkJyA9PiAkY2F0aWQsICduYW1lJyA9PiAkbmFtZSkpOwogICAgICAgICAgICAkcnBhcm1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJyA9PiAnY2F0ZWdvcnl1cGRhdGVkJyk7CiAgICAgICAgICAgIGdlbmVyYXRvcl90b29sczo6dXBkYXRlX2hpZXJhcmNoeV9wb3NpdGlvbnMoJG1vZCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRpbWUgPSAkZGItPkRCVGltZVN0YW1wKHRpbWUoKSk7CiAgICAgICAgICAgICRwb3NpdGlvbiA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgTUFYKHBvc2l0aW9uKSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBXSEVSRSBwYXJlbnRfaWQgPSA/JywgYXJyYXkoaW50dmFsKCRwYXJlbnRpZCkpKTsgICAgICAgICAgICAKICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyAoY2F0ZWdvcnlfaWQsIGNhdGVnb3J5X25hbWUsIGNhdGVnb3J5X2FsaWFzLCB1c2VyZ3JvdXAsIHBhcmVudF9pZCwgcG9zaXRpb24sIGNyZWF0ZV9kYXRlLCBtb2RpZmllZF9kYXRlKSBWQUxVRVMgKD8sPyw/LD8sPyw/LCcgLiAkdGltZSAuICcsJyAuICR0aW1lIC4gJyknOwogICAgICAgICAgICAkcGFybXMgPSBhcnJheSgkY2F0aWQsICRuYW1lLCAkYWxpYXMsICR1c2VyZ3JvdXAsIGludHZhbCgkcGFyZW50aWQpLCAkcG9zaXRpb24pOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcGFybXMpOwogICAgICAgICAgICAkY2F0aWQgPSAkaXRlbV9pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7CiAgICAgICAgICAgIEAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5QWRkZWQnLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRjYXRpZCwgJ25hbWUnID0+ICRuYW1lKSk7CiAgICAgICAgICAgICRycGFybXMgPSBhcnJheSgndGFiX21lc3NhZ2UnID0+ICdjYXRlZ29yeWFkZGVkJyk7CiAgICAgICAgICAgIGdlbmVyYXRvcl90b29sczo6dXBkYXRlX2hpZXJhcmNoeV9wb3NpdGlvbnMoJG1vZCk7CiAgICAgICAgICAgIGdlbmVyYXRvcl90b29sczo6dXBkYXRlX2hpZXJhcmNoeV9wb3NpdGlvbnMoJG1vZCk7CiAgICAgICAgfQogICAgICAgIC8vIGhhbmRsZSB1cGxvYWRpbmcgb2YgZmlsZSBmaWVsZHMKICAgICAgICBmb3JlYWNoICgkY3VzdG9tX2ZsZHMgYXMgJGN1c3RvbV9mbGQpIHsKICAgICAgICAgICAgaWYgKCRjdXN0b21fZmxkWyd0eXBlJ10gIT0gJ3VwbG9hZF9maWxlJykKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgJGVsZW0gPSAkaWQgLiAnY3VzdG9tZmllbGRfJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddOwogICAgICAgICAgICAvLyAkZWxlbSBsb29rcyBsaWtlIG0xX2N1c3RvbWZpZWxkXzEKICAgICAgICAgICAgLy8gY2hlY2sgaWYgZmlsZSB3YXMgdXBsb2FkZWQgZm9yIHRoaXMgZmllbGQKICAgICAgICAgICAgaWYgKGlzc2V0KCRfRklMRVNbJGVsZW1dKSAmJiAkX0ZJTEVTWyRlbGVtXVsnbmFtZSddICE9ICcnKSB7CgogICAgICAgICAgICAgICAgaWYgKCRfRklMRVNbJGVsZW1dWydlcnJvciddICE9IDAgfHwgJF9GSUxFU1skZWxlbV1bJ3RtcF9uYW1lJ10gPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnZXJyb3JfdXBsb2FkJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9IGdlbmVyYXRvcl90b29sczo6aGFuZGxlX3VwbG9hZCgkbW9kLCAkaXRlbV9pZCwgJGVsZW0sICRlcnJvciwgJGN1c3RvbV9mbGRbJ2FsbG93J10sICRyb3cpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSAkZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9wdWxhdGUgJHBhcmFtc1snY3VzdG9tZmllbGQnXQogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdvdWxkIGhvbGQgdGhlIHVwbG9hZGVkIGZpbGVuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgaW5zZXJ0ZWQgaW50byB0aGUgZGF0YWJhc2UgYmVsb3cKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snY3VzdG9tZmllbGQnXVskY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXV0gPSAkdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIGhhbmRsZSBpbnNlcnRpbmcgY3VzdG9tIGZpZWxkcyBpbnRvIGRhdGFiYXNlCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10gYXMgJGZsZGlkID0+ICR2YWx1ZSkgewoKICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkdmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSBpbXBsb2RlKCcsJywgJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHJvdyBleGlzdHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gaW5zZXJ0IG9yIHVwZGF0ZQogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCB2YWx1ZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGZpZWxkZGVmX2lkID0gPyc7CiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGZsZGlkKSk7CiAgICAgICAgICAgICAgICAvLyByb3cgZG9lcyBub3QgZXhpc3QKICAgICAgICAgICAgICAgIGlmICgkdG1wID09ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gb25seSBpbnNlcnQgcm93IGlmIGZpZWxkIHZhbHVlIGlzIG5vdCBlbXB0eQogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgIT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgKGl0ZW1faWQsIGZpZWxkZGVmX2lkLCB2YWx1ZSkgVkFMVUVTICg/LCA/LCA/KSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGZsZGlkLCAkdmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gcm93IGFscmVhZHkgZXhpc3RzCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSByb3cgaWYgZmllbGQgdmFsdWUgaXMgZW1wdHkKICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlID09ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIFdIRVJFIGl0ZW1faWQgPSA/IEFORCBmaWVsZGRlZl9pZCA9ID8nOwogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQsICRmbGRpZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgcm93CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIFNFVCB2YWx1ZSA9ID8gV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGZpZWxkZGVmX2lkID0gPyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsdWUsICRpdGVtX2lkLCAkZmxkaWQpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIGRlbGV0ZSB2YWx1ZSBmcm9tIGZpbGUgZmllbGQKICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snZGVsZXRlX2N1c3RvbWZpZWxkJ10pICYmIGlzX2FycmF5KCRwYXJhbXNbJ2RlbGV0ZV9jdXN0b21maWVsZCddKSkgewogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydkZWxldGVfY3VzdG9tZmllbGQnXSBhcyAkayA9PiAkdikgewogICAgICAgICAgICAgICAgaWYgKCR2ICE9ICdkZWxldGUnKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBza2lwIGlmIG5vdCBkZWxldGluZyBhbnl0aGluZwoKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIFdIRVJFIGl0ZW1faWQgPSA/IEFORCBmaWVsZGRlZl9pZCA9ID8nOwogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQsICRrKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICAkbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2NhdGVnb3J5dGFiJywgJHJwYXJtcyk7CiAgICB9Cn0gZWxzZSB7CiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JzsKICAgICRyb3cgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRjYXRpZCkpOwoKICAgIGlmICgkcm93KSB7CiAgICAgICAgJG5hbWUgPSAkcm93WydjYXRlZ29yeV9uYW1lJ107CiAgICAgICAgJGFsaWFzID0gJHJvd1snY2F0ZWdvcnlfYWxpYXMnXTsKICAgICAgICAkdXNlcmdyb3VwID0gJHJvd1sndXNlcmdyb3VwJ107CiAgICAgICAgJHBhcmVudGlkID0gJHJvd1sncGFyZW50X2lkJ107CiAgICB9Cn0KCgojRGlzcGxheSB0ZW1wbGF0ZQokbW9kLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2VkaXRjYXRlZ29yeScsICRyZXR1cm5pZCkpOwokbW9kLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsICRtb2QtPkNyZWF0ZUZvcm1FbmQoKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCduYW1ldGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCduYW1lJykpOwokbW9kLT5zbWFydHktPmFzc2lnbignYWxpYXN0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FsaWFzJykpOwoKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2lucHV0bmFtZScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICduYW1lJywgJG5hbWUsIDIwLCAyNTUpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2lucHV0YWxpYXMnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnYWxpYXMnLCAkYWxpYXMsIDIwLCAyNTUpKTsKCiRncm91cG9wcyA9IGNtc21zKCktPkdldEdyb3VwT3BlcmF0aW9ucygpOwokZ3JvdXBsaXN0ID0gJGdyb3Vwb3BzLT5Mb2FkR3JvdXBzKCk7CiR1c2VyZ3JvdXBzID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6b2JqZWN0X3RvX2hhc2goJGdyb3VwbGlzdCwgJ25hbWUnLCAnaWQnKTsKCiR1c2VyZ3JvdXBzID0gYXJyYXlfbWVyZ2UoYXJyYXkobGFuZygnbm9uZScpID0+ICcnKSwgJHVzZXJncm91cHMpOwokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXR1c2VyZ3JvdXAnLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3VzZXJncm91cCcsICR1c2VyZ3JvdXBzLCAtMSwgJHVzZXJncm91cCkpOwoKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3BhcmVudGRyb3Bkb3duJywgZ2VuZXJhdG9yX3Rvb2xzOjpjcmVhdGVfcGFyZW50X2Ryb3Bkb3duKCR0aGlzLCAkaWQsICRjYXRpZCwgJHBhcmVudGlkKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkbW9kLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdjYXRpZCcsICRjYXRpZCkgLgogICAgICAgICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ29yaWduYW1lJywgJG5hbWUpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOwokbW9kLT5zbWFydHktPmFzc2lnbigncGFyZW50dGV4dCcsIGxhbmcoJ3BhcmVudCcpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3VzZXJncm91cHRleHQnLCBsYW5nKCdncm91cCcpKTsKCiRjdXN0b21fZmxkc19vYmogPSAkZmlsdGVycy0+Z2VuZXJhdGUoJGl0ZW1faWQsICRwYXJhbXMpOwppZiAoaXNzZXQoJGN1c3RvbV9mbGRzX29iaikgJiYgY291bnQoJGN1c3RvbV9mbGRzX29iaikgPiAwKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2N1c3RvbV9maWVsZGRlZicsICRjdXN0b21fZmxkc19vYmopOwp9CgoKZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXRjYXRlZ29yeS50cGwnKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_editfielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsNCiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdmaWVsZGRlZnRhYicpOw0KICAgICRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnZmllbGRkZWZ0YWInKTsNCn0NCg0KJGRiID0gJG1vZC0+R2V0RGIoKTsNCiRmaWVsZGRlZl9pZCA9IG51bGw7DQokbmFtZSA9ICcnOw0KJGFsaWFzID0gJyc7DQokaGVscCA9ICcnOw0KJHR5cGUgPSAnJzsNCiRyZXF1aXJlZCA9IDA7DQokZnJvbnRlbmQgPSAxOw0KJGVkaXR2aWV3ID0gMDsNCiRmaWx0ZXJfZnJvbnRlbmQgPSAwOw0KJGZpbHRlcl9hZG1pbiA9IDA7DQokc2VhcmNoYWJsZSA9IDA7DQokZXh0cmEgPSAnJzsNCiRzZWN0aW9uPSAnaXRlbXMnOw0KJGVycm9ycyA9IGFycmF5KCk7DQoNCi8vIGlmICRwYXJhbXNbJ2ZpZWxkZGVmX2lkJ10gaXMgc3VwcGxpZWQgYW5kIGV4aXN0cywgcG9wdWxhdGUgd2l0aCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snZmllbGRkZWZfaWQnXSkpIHsNCiAgICAkZmllbGRkZWZfaWQgPSAoaW50KSAkcGFyYW1zWydmaWVsZGRlZl9pZCddOw0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYgV0hFUkUgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAkcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSgkZmllbGRkZWZfaWQpKTsNCg0KICAgIGlmICgkcm93KSB7DQogICAgICAgICRuYW1lID0gJHJvd1snbmFtZSddOw0KICAgICAgICAkYWxpYXMgPSAkcm93WydhbGlhcyddOw0KICAgICAgICAkaGVscCA9ICRyb3dbJ2hlbHAnXTsNCiAgICAgICAgJHR5cGUgPSAkcm93Wyd0eXBlJ107DQogICAgICAgICRyZXF1aXJlZCA9ICRyb3dbJ3JlcXVpcmVkJ107DQogICAgICAgICRmcm9udGVuZCA9ICRyb3dbJ2Zyb250ZW5kJ107DQogICAgICAgICRlZGl0dmlldyA9ICRyb3dbJ2VkaXR2aWV3J107DQogICAgICAgICRmaWx0ZXJfZnJvbnRlbmQgPSAkcm93WydmaWx0ZXJfZnJvbnRlbmQnXTsNCiAgICAgICAgJGZpbHRlcl9hZG1pbiA9ICRyb3dbJ2ZpbHRlcl9hZG1pbiddOw0KICAgICAgICAkc2VhcmNoYWJsZSA9ICRyb3dbJ3NlYXJjaGFibGUnXTsNCiAgICAgICAgJGV4dHJhID0gJHJvd1snZXh0cmEnXTsNCiAgICAgICAgJHNlY3Rpb24gPSAkcm93WydzZWN0aW9uJ107DQogICAgfSBlbHNlIHsNCiAgICAgICAgJGZpZWxkZGVmX2lkID0gbnVsbDsNCiAgICB9DQp9DQoNCi8vIGhhbmRsZSBzdWJtaXQgb3IgYXBwbHkNCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgfHwgaXNzZXQoJHBhcmFtc1snYXBwbHknXSkpIHsNCiAgICAkbmFtZSA9ICRwYXJhbXNbJ25hbWUnXTsNCiAgICAkYWxpYXMgPSAkcGFyYW1zWydhbGlhcyddOw0KICAgICRoZWxwID0gJHBhcmFtc1snaGVscCddOw0KICAgICR0eXBlID0gJHBhcmFtc1sndHlwZSddOw0KICAgICRyZXF1aXJlZCA9IChpc3NldCgkcGFyYW1zWydyZXF1aXJlZCddKSA/IDEgOiAwKTsNCiAgICAkZnJvbnRlbmQgPSAoaXNzZXQoJHBhcmFtc1snZnJvbnRlbmQnXSkgPyAxIDogMCk7DQogICAgJGVkaXR2aWV3ID0gKGlzc2V0KCRwYXJhbXNbJ2VkaXR2aWV3J10pID8gMSA6IDApOw0KICAgICRmaWx0ZXJfZnJvbnRlbmQgPSAoaXNzZXQoJHBhcmFtc1snZmlsdGVyX2Zyb250ZW5kJ10pID8gMSA6IDApOw0KICAgICRmaWx0ZXJfYWRtaW4gPSAoaXNzZXQoJHBhcmFtc1snZmlsdGVyX2FkbWluJ10pID8gMSA6IDApOw0KICAgICRzZWFyY2hhYmxlID0gKGlzc2V0KCRwYXJhbXNbJ3NlYXJjaGFibGUnXSkgPyAxIDogMCk7DQogICAgJGV4dHJhID0gJHBhcmFtc1snZXh0cmEnXTsNCiAgICAkc2VjdGlvbiA9ICRwYXJhbXNbJ3NlY3Rpb24nXTsNCg0KICAgIC8vIGNoZWNrIG5hbWUNCiAgICBpZiAoJG5hbWUgPT0gJycpIHsNCiAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX25hbWVfZW1wdHknKTsNCiAgICB9DQoNCiAgICBpZiAoaXNzZXQoJGZpZWxkZGVmX2lkKSkgew0KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGZpZWxkZGVmX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBXSEVSRSBuYW1lID0gPyBBTkQgZmllbGRkZWZfaWQgIT0gPyc7DQogICAgICAgICRleGlzdHMgPSAkZGItPkdldE9uZSgkcXVlcnksIGFycmF5KCRuYW1lLCAkZmllbGRkZWZfaWQpKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGZpZWxkZGVmX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBXSEVSRSBuYW1lID0gPyc7DQogICAgICAgICRleGlzdHMgPSAkZGItPkdldE9uZSgkcXVlcnksIGFycmF5KCRuYW1lKSk7DQogICAgfQ0KDQogICAgaWYgKCRleGlzdHMpIHsNCiAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX25hbWVfZXhpc3RzJyk7DQogICAgfQ0KDQogICAgLy8gZ2VuZXJhdGUgYWxpYXMgaWYgbm90IHN1cHBsaWVkDQogICAgaWYgKCRhbGlhcyA9PSAnJykgew0KICAgICAgICAkYWxpYXMgPSBnZW5lcmF0b3JfdG9vbHM6OmdlbmVyYXRlX2FsaWFzKCRuYW1lKTsNCiAgICB9DQoNCiAgICAvLyBjaGVjayBhbGlhcw0KICAgIGlmICghZ2VuZXJhdG9yX3Rvb2xzOjppc192YWxpZF9hbGlhcygkYWxpYXMpKSB7DQogICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdhbGlhc19pbnZhbGlkJyk7DQogICAgfQ0KDQogICAgaWYgKGVtcHR5KCRlcnJvcnMpKSB7DQogICAgICAgIC8vIHVwZGF0ZQ0KICAgICAgICBpZiAoaXNzZXQoJGZpZWxkZGVmX2lkKSkgew0KICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIFNFVCBuYW1lID0gPywgYWxpYXMgPSA/LCBoZWxwID0gPywgdHlwZSA9ID8sIHJlcXVpcmVkID0gPywgZnJvbnRlbmQgPSA/LCBlZGl0dmlldyA9ID8sIGZpbHRlcl9mcm9udGVuZCA9ID8sIGZpbHRlcl9hZG1pbiA9ID8sIHNlYXJjaGFibGUgPSA/LCBleHRyYSA9ID8sIHNlY3Rpb24gPSA/IFdIRVJFIGZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5hbWUsICRhbGlhcywgJGhlbHAsICR0eXBlLCAkcmVxdWlyZWQsICRmcm9udGVuZCwgJGVkaXR2aWV3LCAkZmlsdGVyX2Zyb250ZW5kLCAkZmlsdGVyX2FkbWluLCAkc2VhcmNoYWJsZSwgJGV4dHJhLCAkc2VjdGlvbiwgJGZpZWxkZGVmX2lkKSk7DQogICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAgICAgICAgZGllKCdGQVRBTCBTUUwgRVJST1I6ICcgLiAkZGItPkVycm9yTXNnKCkgLiAnPGJyLz5RVUVSWTogJyAuICRkYi0+c3FsKTsNCg0KICAgICAgICAgICAgLy8gaW5zZXJ0DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcG9zaXRpb24gPSAkZGItPkdldE9uZSgnU0VMRUNUIG1heChwb3NpdGlvbikgKyAxIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZicpOw0KDQogICAgICAgICAgICBpZiAoJHBvc2l0aW9uID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAkcG9zaXRpb24gPSAxOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiAobmFtZSwgYWxpYXMsIGhlbHAsIHR5cGUsIHBvc2l0aW9uLCByZXF1aXJlZCwgZnJvbnRlbmQsIGVkaXR2aWV3LCBmaWx0ZXJfZnJvbnRlbmQsIGZpbHRlcl9hZG1pbiwgc2VhcmNoYWJsZSwgZXh0cmEsIHNlY3Rpb24pIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPyknOw0KICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRuYW1lLCAkYWxpYXMsICRoZWxwLCAkdHlwZSwgJHBvc2l0aW9uLCAkcmVxdWlyZWQsICRmcm9udGVuZCwgJGVkaXR2aWV3LCAkZmlsdGVyX2Zyb250ZW5kLCAkYWRtaW5fYWRtaW4sICRzZWFyY2hhYmxlLCAkZXh0cmEsICRzZWN0aW9uKSk7DQogICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAgICAgICAgZGllKCdGQVRBTCBTUUwgRVJST1I6ICcgLiAkZGItPkVycm9yTXNnKCkgLiAnPGJyLz5RVUVSWTogJyAuICRkYi0+c3FsKTsNCg0KICAgICAgICAgICAgLy8gcG9wdWxhdGUgJGZpZWxkZGVmX2lkIGZvciBuZXdseSBpbnNlcnRlZCBpdGVtDQogICAgICAgICAgICAkZmllbGRkZWZfaWQgPSAkZGItPkluc2VydF9JRCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KICAgICAgICAgICAgJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICRzZWN0aW9uLCBhcnJheSgpLCAnYWRtaW5fZmllbGRzJyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBlY2hvICRtb2QtPlNob3dNZXNzYWdlKGdlbmVyYXRvcigpLT5MYW5nKCdjaGFuZ2Vzc2F2ZWQnKSk7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCi8vIGRpc3BsYXkgZXJyb3JzIGlmIHRoZXJlIGFyZSBhbnkNCmlmICghZW1wdHkoJGVycm9ycykpIHsNCiAgICBlY2hvICRtb2QtPlNob3dFcnJvcnMoJGVycm9ycyk7DQp9DQoNCiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAoaXNzZXQoJGZpZWxkZGVmX2lkKSA/IGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0ZmllbGRkZWYnKSA6IGdlbmVyYXRvcigpLT5MYW5nKCdhZGRmaWVsZGRlZicpKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9lZGl0ZmllbGRkZWYnLCAkcmV0dXJuaWQpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICRtb2QtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCiRzbWFydHktPmFzc2lnbignbmFtZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfbmFtZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRuYW1lJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25hbWUnLCAkbmFtZSwgMjAsIDI1NSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2FsaWFzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FsaWFzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGlhcycsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhcycsICRhbGlhcywgMjAsIDI1NSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2hlbHB0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX2hlbHAnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0aGVscCcsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdoZWxwJywgJGhlbHAsIDEwMCwgMjU1KSk7DQoNCiRzbWFydHktPmFzc2lnbigndHlwZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfdHlwZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR0eXBlJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd0eXBlJywgYXJyYXlfZmxpcChnZW5lcmF0b3JfdG9vbHM6OmdldF9maWVsZF90eXBlcygkbW9kKSksIC0xLCAkdHlwZSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3VzZXJ2aWV3dGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9yZXF1aXJlZCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdXNlcnZpZXcnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ3JlcXVpcmVkJywgMSwgJHJlcXVpcmVkKSk7DQoNCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9mcm9udGVuZCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZnJvbnRlbmQnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ2Zyb250ZW5kJywgMSwgJGZyb250ZW5kKSk7DQoNCiRzbWFydHktPmFzc2lnbignZWRpdHZpZXdfdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9lZGl0dmlldycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZWRpdHZpZXcnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ2VkaXR2aWV3JywgMSwgJGVkaXR2aWV3KSk7DQoNCiRzbWFydHktPmFzc2lnbignZmlsdGVyX2Zyb250ZW5kX3RleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZmlsdGVyX2Zyb250ZW5kJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWx0ZXJfZnJvbnRlbmQnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ2ZpbHRlcl9mcm9udGVuZCcsIDEsICRmaWx0ZXJfZnJvbnRlbmQpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdmaWx0ZXJfYWRtaW5fdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9maWx0ZXJfYWRtaW4nKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpbHRlcl9hZG1pbicsICRtb2QtPkNyZWF0ZUlucHV0Y2hlY2tib3goJGlkLCAnZmlsdGVyX2FkbWluJywgMSwgJGZpbHRlcl9hZG1pbikpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3NlYXJjaGFibGVfdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9zZWFyY2hhYmxlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zZWFyY2hhYmxlJywgJG1vZC0+Q3JlYXRlSW5wdXRjaGVja2JveCgkaWQsICdzZWFyY2hhYmxlJywgMSwgJHNlYXJjaGFibGUpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdleHRyYScsIGdlbmVyYXRvcigpLT5MYW5nKCdleHRyYScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZXh0cmEnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZXh0cmEnLCAkZXh0cmEsIDEwMCwgMjU1KSk7DQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc2VjdGlvbicsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnc2VjdGlvbicsIGFycmF5X2ZsaXAoZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRfc2VjdGlvbnMoJG1vZCkpLCAtMSwgJHNlY3Rpb24pKTsNCg0KaWYgKGlzc2V0KCRmaWVsZGRlZl9pZCkpIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpZWxkZGVmX2lkJywgJG1vZC0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZmllbGRkZWZfaWQnLCAkZmllbGRkZWZfaWQpKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhcHBseScsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5JywgbGFuZygnYXBwbHknKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGZpZWxkZGVmLnRwbCcpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_edititem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQoNCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsNCiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdpdGVtdGFiJyk7DQogICAgJG1vZC0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsNCn0NCg0KJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRlcnJvcnMgPSBhcnJheSgpOw0KJGl0ZW1faWQgPSBudWxsOw0KJHRpdGxlID0gJyc7DQokYWxpYXMgPSAnJzsNCiR1cmwgPSAnJzsNCiRhY3RpdmUgPSAxOw0KJHVzZWRjYXRlZ29yeSA9ICcnOw0KJGRhdGUgPSB0aW1lKCk7DQokZGF0ZV9lbmQgPSBudWxsOw0KJHJlY3VyX3dlZWtkYXlzID0gYXJyYXkoKTsNCiRyZWN1cl9wZXJpb2QgPSBudWxsOw0KJHJlY3Vyc2l2ZSA9ICcnOw0KDQoNCi8vIGlmICRwYXJhbXNbJ2l0ZW1faWQnXSBpcyBzdXBwbGllZCBhbmQgZXhpc3RzLCBwb3B1bGF0ZSB3aXRoIHZhbHVlcyBmcm9tIGRhdGFiYXNlDQppZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSkgew0KICAgICRpdGVtX2lkID0gKGludCkgJHBhcmFtc1snaXRlbV9pZCddOw0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBXSEVSRSBpdGVtX2lkID0gPyc7DQogICAgJHJlc3VsdCA9ICYgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsNCiAgICBpZiAoISRyZXN1bHQpDQogICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoNCiAgICBpZiAoJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7DQogICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdub3N1Y2hpZCcsIGFycmF5KCRpdGVtX2lkKSk7DQogICAgICAgICRpdGVtX2lkID0gbnVsbDsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKTsNCiAgICAgICAgJHRpdGxlID0gJHJvd1sndGl0bGUnXTsNCiAgICAgICAgJGFsaWFzID0gJHJvd1snYWxpYXMnXTsNCiAgICAgICAgJGRhdGUgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJvd1snaXRlbV9kYXRlJ10pOw0KICAgICAgICAkZGF0ZV9lbmQgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJvd1snaXRlbV9kYXRlX2VuZCddKTsNCiAgICAgICAgJHVybCA9ICRyb3dbJ3VybCddOw0KICAgICAgICAkcmVjdXJzaXZlID0gJHJvd1sncmVjdXJzaXZlJ107DQogICAgICAgICRhY3RpdmUgPSAkcm93WydhY3RpdmUnXTsNCiAgICAgICAgJHVzZWRjYXRlZ29yeSA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107DQoNCiAgICAgICAgLy9leHRyYSBvcHRpb25zIGxvYWQNCiAgICAgICAgJHJlY3VyX3dlZWtkYXlzID0gJHJlY3Vyc2l2ZV9vcHRpb24gPSAkZGItPkdldENvbCgnU0VMRUNUIHZhbHVlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtX2V4dHJhIFdIRVJFIGl0ZW1faWQgPSA/JywgYXJyYXkoJGl0ZW1faWQpKTsNCiAgICB9DQp9DQoNCi8vIGdldCBjYXRlZ29yeSBsaXN0DQokd2hlcmUgPSBhcnJheSgpOw0KJHBhcmFtc2FycmF5ID0gYXJyYXkoKTsNCiRjYXRlZ29yeWxvbmduYW1lbGlzdCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X3ByaXZhdGVfY2F0ZWdvcmllcygkbW9kKTsNCmlmIChlbXB0eSgkY2F0ZWdvcnlsb25nbmFtZWxpc3QpID09IGZhbHNlKSB7DQoNCiAgICAkd2hlcmVzdGF0ZW1lbnQgPSBhcnJheSgpOw0KICAgIGZvcmVhY2ggKCRjYXRlZ29yeWxvbmduYW1lbGlzdCBhcyAkbG9ubmFtZSkgew0KICAgICAgICAkd2hlcmVzdGF0ZW1lbnRbXSA9ICdsb25nX25hbWUgTElLRSAgPyc7DQogICAgICAgICRwYXJhbXNhcnJheVtdID0gJGxvbm5hbWUgLiAnJSc7DQogICAgfQ0KICAgICR3aGVyZVtdID0gJygnIC4gaW1wbG9kZSgnIE9SICcsICR3aGVyZXN0YXRlbWVudCkgLiAnKSc7DQp9DQokY2F0ZWdvcnlsaXN0ID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY2F0ZWdvcnlfbGlzdCgkbW9kLCAkd2hlcmUsICRwYXJhbXNhcnJheSwgZmFsc2UpOw0KJGNhdGVnb3J5bGlzdCA9IGFycmF5X3NsaWNlKCRjYXRlZ29yeWxpc3QsIDEpOw0KJGNhdGVnb3J5bGlzdCA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6OnRvX2hhc2goJGNhdGVnb3J5bGlzdCwgJ2NhdGVnb3J5X25hbWUnLCAnY2F0ZWdvcnlfaWQnKTsNCg0KLy8gZ2V0IHRoZSBjdXN0b20gZmllbGRzDQokZmlsdGVycyA9IG5ldyBnZW5lcmF0b3JfZmlsdGVycygkaWQsICRtb2QsICdhZG1pbicpOw0KJGN1c3RvbV9mbGRzID0gJGZpbHRlcnMtPnByb2Nlc3NfY3VzdG9tX2ZpZWxkcygpOw0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi8vIGhhbmRsZSBzdWJtaXQgb3IgYXBwbHkNCmlmIChpc3NldCgkcGFyYW1zWydwcmV2aWV3J10pKSB7DQogICAgLy8gc2F2ZSBkYXRhIGZvciBwcmV2aWV3Lg0KICAgIHVuc2V0KCRwYXJhbXNbJ2FwcGx5J10pOw0KICAgIHVuc2V0KCRwYXJhbXNbJ3ByZXZpZXcnXSk7DQogICAgdW5zZXQoJHBhcmFtc1snc3VibWl0J10pOw0KICAgIHVuc2V0KCRwYXJhbXNbJ2NhbmNlbCddKTsNCiAgICB1bnNldCgkcGFyYW1zWydhamF4J10pOw0KICAgIHVuc2V0KCRwYXJhbXNbJ2NvcHknXSk7DQoNCiAgICAkdG1wZm5hbWUgPSB0ZW1wbmFtKFRNUF9DQUNIRV9MT0NBVElPTiwgJHRoaXMtPkdldE5hbWUoKSAuICdfcHJldmlldycpOw0KICAgIGZpbGVfcHV0X2NvbnRlbnRzKCR0bXBmbmFtZSwgc2VyaWFsaXplKCRwYXJhbXMpKTsNCg0KICAgICRkZXRhaWxfcmV0dXJuaWQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAtMSk7DQogICAgaWYgKCRkZXRhaWxfcmV0dXJuaWQgPD0gMCkgew0KICAgICAgICAvLyBub3cgZ2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgaWQuDQogICAgICAgICRkZXRhaWxfcmV0dXJuaWQgPSBDb250ZW50T3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCktPkdldERlZmF1bHRDb250ZW50KCk7DQogICAgfQ0KICAgIGlmIChpc3NldCgkcGFyYW1zWydwcmV2aWV3cGFnZSddKSAmJiAoaW50KSAkcGFyYW1zWydwcmV2aWV3cGFnZSddID4gMCkgew0KICAgICAgICAkZGV0YWlsX3JldHVybmlkID0gKGludCkgJHBhcmFtc1sncHJldmlld3BhZ2UnXTsNCiAgICB9DQoNCiAgICAkX1NFU1NJT05bJ2l0ZW1fcHJldmlldyddID0gYXJyYXkoJ2ZuYW1lJyA9PiBiYXNlbmFtZSgkdG1wZm5hbWUpLCAnY2hlY2tzdW0nID0+IG1kNV9maWxlKCR0bXBmbmFtZSkpOw0KICAgICR0cGFybXMgPSBhcnJheSgncHJldmlldycgPT4gbWQ1KHNlcmlhbGl6ZSgkX1NFU1NJT05bJ2l0ZW1fcHJldmlldyddKSkpOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddKSkgew0KICAgICAgICAkdHBhcm1zWydkZXRhaWx0ZW1wbGF0ZSddID0gdHJpbSgkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddKTsNCiAgICB9DQogICAgJHVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdfcHJldmlld18nLCAnZGV0YWlsJywgJGRldGFpbF9yZXR1cm5pZCwgJHRwYXJtcywgVFJVRSk7DQoNCiAgICAkcmVzcG9uc2UgPSAnPD94bWwgdmVyc2lvbj0iMS4wIj8+JzsNCiAgICAkcmVzcG9uc2UgLj0gJzxFZGl0QXJ0aWNsZT4nOw0KICAgIGlmIChpc3NldCgkZXJyb3IpICYmICRlcnJvciAhPSAnJykgew0KICAgICAgICAkcmVzcG9uc2UgLj0gJzxSZXNwb25zZT5FcnJvcjwvUmVzcG9uc2U+JzsNCiAgICAgICAgJHJlc3BvbnNlIC49ICc8RGV0YWlscz48IVtDREFUQVsnIC4gJGVycm9yIC4gJ11dPjwvRGV0YWlscz4nOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRyZXNwb25zZSAuPSAnPFJlc3BvbnNlPlN1Y2Nlc3M8L1Jlc3BvbnNlPic7DQogICAgICAgICRyZXNwb25zZSAuPSAnPERldGFpbHM+PCFbQ0RBVEFbJyAuICR1cmwgLiAnXV0+PC9EZXRhaWxzPic7DQogICAgfQ0KICAgICRyZXNwb25zZSAuPSAnPC9FZGl0QXJ0aWNsZT4nOw0KDQogICAgJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOw0KICAgIGZvciAoJGNudCA9IDA7ICRjbnQgPCBzaXplb2YoJGhhbmRsZXJzKTsgJGNudCsrKSB7DQogICAgICAgIG9iX2VuZF9jbGVhbigpOw0KICAgIH0NCiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC94bWwnKTsNCiAgICBlY2hvICRyZXNwb25zZTsNCiAgICBleGl0Ow0KfSBlbHNlIGlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgfHwgaXNzZXQoJHBhcmFtc1snYXBwbHknXSkgfHwgaXNzZXQoJHBhcmFtc1snY29weSddKSkgew0KDQogICAgaWYgKGlzc2V0KCRwYXJhbXNbImNvcHkiXSkpIHsNCiAgICAgICAgJGl0ZW1faWQgPSBudWxsOw0KICAgIH0NCg0KICAgICR0aXRsZSA9ICRwYXJhbXNbJ3RpdGxlJ107DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2RhdGVfTW9udGgnXSkpIHsNCiAgICAgICAgJGRhdGUgPSBta3RpbWUoJHBhcmFtc1snZGF0ZV9Ib3VyJ10sICRwYXJhbXNbJ2RhdGVfTWludXRlJ10sICRwYXJhbXNbJ2RhdGVfU2Vjb25kJ10sICRwYXJhbXNbJ2RhdGVfTW9udGgnXSwgJHBhcmFtc1snZGF0ZV9EYXknXSwgJHBhcmFtc1snZGF0ZV9ZZWFyJ10pOw0KICAgIH0NCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snZGF0ZV9lbmRfTW9udGgnXSkpIHsNCiAgICAgICAgJGRhdGVfZW5kID0gbWt0aW1lKCRwYXJhbXNbJ2RhdGVfZW5kX0hvdXInXSwgJHBhcmFtc1snZGF0ZV9lbmRfTWludXRlJ10sICRwYXJhbXNbJ2RhdGVfZW5kX1NlY29uZCddLCAkcGFyYW1zWydkYXRlX2VuZF9Nb250aCddLCAkcGFyYW1zWydkYXRlX2VuZF9EYXknXSwgJHBhcmFtc1snZGF0ZV9lbmRfWWVhciddKTsNCiAgICB9DQoNCg0KICAgIGlmIChpc1NldCgkcGFyYW1zWyJyZWN1cl9wZXJpb2QiXSkpIHsNCiAgICAgICAgJHJlY3Vyc2l2ZSA9ICRwYXJhbXNbInJlY3VyX3BlcmlvZCJdOw0KICAgIH0NCg0KDQogICAgLyogYWxpYXMgY3JlYXRlICovDQogICAgaWYgKCEkaXRlbV9pZCB8fCAoJGl0ZW1faWQgJiYgIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKSkNCiAgICAgICAgJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW1zWyd0aXRsZSddLCB0cnVlKTsNCiAgICBlbHNlaWYgKCFpc1NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiAkaXRlbV9pZCkNCiAgICAgICAgJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW1zWyd0aXRsZSddLCB0cnVlKTsNCiAgICBlbHNlaWYgKGlzU2V0KCRwYXJhbXNbImFsaWFzIl0pKQ0KICAgICAgICAkYWxpYXMgPSBtdW5nZV9zdHJpbmdfdG9fdXJsKCRwYXJhbXNbJ2FsaWFzJ10sIHRydWUpOw0KICAgIGVsc2UNCiAgICAgICAgJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW1zWyd0aXRsZSddLCB0cnVlKTsNCg0KICAgIGlmIChpc1NldCgkcGFyYW1zWyJ1cmwiXSkpDQogICAgICAgICR1cmwgPSAkcGFyYW1zWyJ1cmwiXTsNCg0KDQogICAgJGFjdGl2ZSA9IChpc3NldCgkcGFyYW1zWydhY3RpdmUnXSkgPyAxIDogMCk7DQogICAgJHVzZWRjYXRlZ29yeSA9IChpc1NldCgkcGFyYW1zWydjYXRlZ29yeSddKSA/ICRwYXJhbXNbJ2NhdGVnb3J5J10gOiAnJyk7DQoNCiAgICAvLyBjaGVjayB0aXRsZQ0KICAgIGlmICgkdGl0bGUgPT0gJycgJiYgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV90aXRsZV9lZGl0JykpIHsNCiAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2l0ZW1fdGl0bGVfZW1wdHknKTsNCg0KICAgICAgICAvLyBjaGVjayBjdXN0b20gZmllbGRzLi4uIHRoZXNlIGxvb2sgbGlrZSBtMV9jdXN0b21maWVsZFs1XQ0KICAgIH0gZWxzZWlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgew0KICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydjdXN0b21maWVsZCddIGFzICRmbGRpZCA9PiAkdmFsdWUpIHsNCg0KICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PSAnc2VsZWN0X2RlZmF1bHQnKSB7DQogICAgICAgICAgICAgICAgJHBhcmFtc1snY3VzdG9tZmllbGQnXVskZmxkaWRdID0gJyc7DQogICAgICAgICAgICAgICAgJHZhbHVlID0gJyc7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIHJlcXVpcmVkIGZpZWxkcw0KICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PSAnJyAmJiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsncmVxdWlyZWQnXSAmJiAoJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ2VkaXR2aWV3J10gJiYgaXNTZXQoJHBhcmFtc1siaXRlbV9pZCJdKSkpIHsNCiAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygncmVxdWlyZWRfZmllbGRfZW1wdHknKSAuICcgKCcgLiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbmFtZSddIC4gJyknOw0KICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBvbmx5IGRpc3BsYXkgb25lIGVycm9yIG1lc3NhZ2UgYXQgYSB0aW1lDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIG1heCBsZW5ndGgNCiAgICAgICAgICAgIGlmIChpc3NldCgkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbWF4X2xlbmd0aCddKSAmJiBtYl9zdHJsZW4oJHZhbHVlKSA+ICRjdXN0b21fZmxkc1skZmxkaWRdWydtYXhfbGVuZ3RoJ10pIHsNCiAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygndG9vX2xvbmcnKSAuICcgKCcgLiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbmFtZSddIC4gJyknOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBvcHRpb25zDQogICAgICAgICAgICBpZiAoJHZhbHVlICE9ICcnICYmIGlzc2V0KCRjdXN0b21fZmxkc1skZmxkaWRdWydvcHRpb25zJ10pICYmICFhcnJheV9rZXlfZXhpc3RzKCR2YWx1ZSwgJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ29wdGlvbnMnXSkpIHsNCiAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnaW52YWxpZCcpIC4gJyAoJyAuICRjdXN0b21fZmxkc1skZmxkaWRdWyduYW1lJ10gLiAnKSc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAoZW1wdHkoJGVycm9ycykgJiYgJHVybCAhPSAnJykgew0KICAgICAgICAvLyBjaGVjayBmb3Igc3RhcnRpbmcgb3IgZW5kaW5nIHNsYXNoZXMNCiAgICAgICAgaWYgKHN0YXJ0c3dpdGgoJHVybCwgJy8nKSB8fCBlbmRzd2l0aCgkdXJsLCAnLycpKSB7DQogICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnZXJyb3JfaW52YWxpZHVybCcpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGVtcHR5KCRlcnJvcnMpKSB7DQogICAgICAgICAgICAvLyBjaGVjayBmb3IgaW52YWxpZCBjaGFycy4NCiAgICAgICAgICAgICR0cmFuc2xhdGVkID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkdXJsLCBmYWxzZSwgdHJ1ZSk7DQogICAgICAgICAgICBpZiAoc3RydG9sb3dlcigkdHJhbnNsYXRlZCkgIT0gc3RydG9sb3dlcigkdXJsKSkgew0KICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXJsJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKGVtcHR5KCRlcnJvcnMpKSB7DQogICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhpcyB1cmwgaXNuJ3QgdGFrZW4uDQogICAgICAgICAgICAkdXJsID0gdHJpbSgkdXJsLCAiIC9cdFxyXG5cMFx4MDgiKTsNCiAgICAgICAgICAgIGNtc19yb3V0ZV9tYW5hZ2VyOjpsb2FkX3JvdXRlcygpOw0KICAgICAgICAgICAgJHJvdXRlID0gY21zX3JvdXRlX21hbmFnZXI6OmZpbmRfbWF0Y2goJHVybCk7DQogICAgICAgICAgICBpZiAoJHJvdXRlKSB7DQogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRpdGVtX2lkKSkgew0KICAgICAgICAgICAgICAgICAgICAkZGZsdHMgPSAkcm91dGUtPmdldF9kZWZhdWx0cygpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJHJvdXRlLT5pc19jb250ZW50KCkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm91dGUtPmdldF9kZXN0KCkgIT0gJG1vZC0+R2V0TmFtZSgpIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzc2V0KCRkZmx0c1snaXRlbV9pZCddKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZmx0c1snaXRlbV9pZCddICE9ICRpdGVtX2lkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBhZGRpbmcgYW4gYXJ0aWNsZSwgbm90IGVkaXRpbmcuLi4gYW55IG1hdGNoaW5nIHJvdXRlIGlzIGJhZC4NCiAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXJsJyk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXJsJyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyB0aXRsZSBhbmQgcmVxdWlyZWQgZmllbGRzIGhhdmUgdmFsdWVzLCBsZXQncyBjb250aW51ZQ0KICAgIGlmIChlbXB0eSgkZXJyb3JzKSkgew0KICAgICAgICAvLyBrIG9yIHVwZGF0ZSB0YWJsZSBpdGVtcw0KICAgICAgICBpZiAoIWlzc2V0KCRpdGVtX2lkKSkgew0KICAgICAgICAgICAgLy8gZmluZCBwb3NpdGlvbiBiZWZvcmUgaW5zZXJ0aW5nIG5ldyBpdGVtDQogICAgICAgICAgICAkcG9zaXRpb24gPSAkZGItPkdldE9uZSgnU0VMRUNUIG1heChwb3NpdGlvbikgKyAxIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtJyk7DQoNCiAgICAgICAgICAgIGlmICgkcG9zaXRpb24gPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICRwb3NpdGlvbiA9IDE7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIGluc2VydCBpdGVtDQogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtICh0aXRsZSwgYWxpYXMsIHVybCwgcmVjdXJzaXZlLCBjYXRlZ29yeV9pZCwgcG9zaXRpb24sIGFjdGl2ZSwgaXRlbV9kYXRlLCBpdGVtX2RhdGVfZW5kLCBjcmVhdGVfZGF0ZSwgbW9kaWZpZWRfZGF0ZSApIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPyAsID8sID8sICBOT1coKSwgTk9XKCkpJzsNCiAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGl0bGUsICRhbGlhcywgJHVybCwgJHJlY3Vyc2l2ZSwgJHVzZWRjYXRlZ29yeSwgJHBvc2l0aW9uLCAkYWN0aXZlLCB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGUpLCAiJyIpLCB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZW5kKSwgIiciKSkpOw0KICAgICAgICAgICAgaWYgKCEkcmVzdWx0KQ0KICAgICAgICAgICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoNCiAgICAgICAgICAgIC8vIHBvcHVsYXRlICRpdGVtX2lkIGZvciBuZXdseSBpbnNlcnRlZCBpdGVtDQogICAgICAgICAgICAkaXRlbV9pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7DQogICAgICAgICAgICAkdXBkYXRlID0gZmFsc2U7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAvLyB1cGRhdGUgaXRlbQ0KICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0gU0VUIHRpdGxlID0gPywgYWxpYXMgPSA/LCB1cmwgPSA/LCByZWN1cnNpdmUgPSA/LCBjYXRlZ29yeV9pZCA9ID8sIGFjdGl2ZSA9ID8sIGl0ZW1fZGF0ZT0gPywgaXRlbV9kYXRlX2VuZD0gPyBXSEVSRSBpdGVtX2lkID0gPyc7DQogICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRpdGxlLCAkYWxpYXMsICR1cmwsICRyZWN1cnNpdmUsICR1c2VkY2F0ZWdvcnksICRhY3RpdmUsIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZSksICInIiksIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9lbmQpLCAiJyIpLCAkaXRlbV9pZCkpOw0KICAgICAgICAgICAgaWYgKCEkcmVzdWx0KQ0KICAgICAgICAgICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoNCiAgICAgICAgICAgICR1cGRhdGUgPSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gY3JlYXRlIHJlY3Vyc2l2ZSBzZXR0aW5ncw0KICAgICAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVjdXJzaXZlJykgJiYgJHJlY3Vyc2l2ZSA9PSAnZGFpbHknKSB7DQogICAgICAgICAgICBpZiAoaXNTZXQoJHBhcmFtc1sicmVjdXJfd2Vla2RheXMiXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1sicmVjdXJfd2Vla2RheXMiXSkpIHsNCiAgICAgICAgICAgICAgICAkcmVjdXJfd2Vla2RheXMgPSAkcGFyYW1zWyJyZWN1cl93ZWVrZGF5cyJdOw0KICAgICAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW1fZXh0cmEgV0hFUkUgaXRlbV9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtX2lkKSk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJlY3VyX3dlZWtkYXlzIGFzICRkYXkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbV9leHRyYSAoaXRlbV9pZCx2YWx1ZSkgVkFMVUVTICg/LD8pJzsNCiAgICAgICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQsICRkYXkpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyBoYW5kbGUgdXBsb2FkaW5nIG9mIGZpbGUgZmllbGRzDQogICAgICAgIGZvcmVhY2ggKCRjdXN0b21fZmxkcyBhcyAkY3VzdG9tX2ZsZCkgew0KICAgICAgICAgICAgaWYgKCRjdXN0b21fZmxkWyd0eXBlJ10gIT0gJ3VwbG9hZF9maWxlJykgew0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICRlbGVtID0gJGlkIC4gJ2N1c3RvbWZpZWxkXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXTsNCiAgICAgICAgICAgIC8vICRlbGVtIGxvb2tzIGxpa2UgbTFfY3VzdG9tZmllbGRfMQ0KICAgICAgICAgICAgLy8gY2hlY2sgaWYgZmlsZSB3YXMgdXBsb2FkZWQgZm9yIHRoaXMgZmllbGQNCiAgICAgICAgICAgIGlmIChpc3NldCgkX0ZJTEVTWyRlbGVtXSkgJiYgJF9GSUxFU1skZWxlbV1bJ25hbWUnXSAhPSAnJykgew0KDQogICAgICAgICAgICAgICAgaWYgKCRfRklMRVNbJGVsZW1dWydlcnJvciddICE9IDAgfHwgJF9GSUxFU1skZWxlbV1bJ3RtcF9uYW1lJ10gPT0gJycpIHsNCiAgICAgICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2Vycm9yX3VwbG9hZCcpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9IGdlbmVyYXRvcl90b29sczo6aGFuZGxlX3VwbG9hZCgkbW9kLCAkaXRlbV9pZCwgJGVsZW0sICRlcnJvciwgJGN1c3RvbV9mbGRbJ2FsbG93J10sICRyb3cpOw0KDQogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgPT09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSAkZXJyb3I7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3B1bGF0ZSAkcGFyYW1zWydjdXN0b21maWVsZCddDQogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdvdWxkIGhvbGQgdGhlIHVwbG9hZGVkIGZpbGVuYW1lDQogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGluc2VydGVkIGludG8gdGhlIGRhdGFiYXNlIGJlbG93DQogICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydjdXN0b21maWVsZCddWyRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddXSA9ICR2YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIGhhbmRsZSBpbnNlcnRpbmcgY3VzdG9tIGZpZWxkcyBpbnRvIGRhdGFiYXNlDQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgew0KICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snY3VzdG9tZmllbGQnXSBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7DQoNCiAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCR2YWx1ZSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSBpbXBsb2RlKCcsJywgJHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gJyc7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgcm93IGV4aXN0cyB0byBkZXRlcm1pbmUgd2hldGhlciB0byBpbnNlcnQgb3IgdXBkYXRlDQogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCB2YWx1ZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgJHRtcCA9ICRkYi0+R2V0T25lKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQsICRmbGRpZCkpOw0KDQoNCiAgICAgICAgICAgICAgICAvLyByb3cgZG9lcyBub3QgZXhpc3QNCiAgICAgICAgICAgICAgICBpZiAoJHRtcCA9PSAiIikgew0KICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGluc2VydCByb3cgaWYgZmllbGQgdmFsdWUgaXMgbm90IGVtcHR5DQogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIChpdGVtX2lkLCBmaWVsZGRlZl9pZCwgdmFsdWUpIFZBTFVFUyAoPywgPywgPyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtX2lkLCAkZmxkaWQsICR2YWx1ZSkpOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gcm93IGFscmVhZHkgZXhpc3RzDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIHJvdyBpZiBmaWVsZCB2YWx1ZSBpcyBlbXB0eQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlID09ICIiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGZsZGlkKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgcm93DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgU0VUIHZhbHVlID0gPyBXSEVSRSBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsdWUsICRpdGVtX2lkLCAkZmxkaWQpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmICghJHJlc3VsdCkNCiAgICAgICAgICAgICAgICAgICAgZGllKCdGQVRBTCBTUUwgRVJST1I6ICcgLiAkZGItPkVycm9yTXNnKCkgLiAnPGJyLz5RVUVSWTogJyAuICRkYi0+c3FsKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAvLyBkZWxldGUgdmFsdWUgZnJvbSBmaWxlIGZpZWxkDQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydkZWxldGVfY3VzdG9tZmllbGQnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snZGVsZXRlX2N1c3RvbWZpZWxkJ10pKSB7DQogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydkZWxldGVfY3VzdG9tZmllbGQnXSBhcyAkayA9PiAkdikgew0KICAgICAgICAgICAgICAgIGlmICgkdiAhPSAnZGVsZXRlJykNCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIHNraXAgaWYgbm90IGRlbGV0aW5nIGFueXRoaW5nDQoNCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGspKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIGFkZGl0aW9uYWwgY2hlY2sgaXMgbmVlZGVkIHNpbmNlIGZpbGUgdXBsb2FkIGNvdWxkIGhhdmUgcHJvZHVjZWQgZXJyb3JzDQogICAgICAgIGlmIChlbXB0eSgkZXJyb3JzKSkgew0KICAgICAgICAgICAgLy8gc2hvdyBzYXZlZCBtZXNzYWdlDQoNCiAgICAgICAgICAgIGlmICgkdXBkYXRlKSB7DQogICAgICAgICAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnSXRlbUVkaXRlZCcsIGFycmF5KCdpdGVtX2lkJyA9PiAkaXRlbV9pZCwgJ2NhdGVnb3J5X2lkJyA9PiAkdXNlZGNhdGVnb3J5LCAndGl0bGUnID0+ICR0aXRsZSwgJ2FjdGl2ZScgPT4gJGFjdGl2ZSwgJ2l0ZW1fZGF0ZScgPT4gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlKSwgIiciKSwgJ2l0ZW1fZGF0ZV9lbmQnID0+IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9lbmQpKSwgJ3JlY3Vyc2l2ZScgPT4gJHJlY3Vyc2l2ZSkpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBAJG1vZC0+U2VuZEV2ZW50KCdJdGVtQWRkZWQnLCBhcnJheSgnaXRlbV9pZCcgPT4gJGl0ZW1faWQsICdjYXRlZ29yeV9pZCcgPT4gJHVzZWRjYXRlZ29yeSwgJ3RpdGxlJyA9PiAkdGl0bGUsICdhY3RpdmUnID0+ICRhY3RpdmUsICdpdGVtX2RhdGUnID0+IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZSksICInIiksICdpdGVtX2RhdGVfZW5kJyA9PiB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZW5kKSksICdyZWN1cnNpdmUnID0+ICRyZWN1cnNpdmUpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KICAgICAgICAgICAgICAgICRtb2QtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdpdGVtdGFiJywgJ21lc3NhZ2UnID0+ICdjaGFuZ2Vzc2F2ZWQnKSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVjaG8gJG1vZC0+U2hvd01lc3NhZ2UoZ2VuZXJhdG9yKCktPkxhbmcoJ2NoYW5nZXNzYXZlZCcpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X3NlYXJjaF9tb2R1bGUoKTsNCiAgICAgICAgICAgIGlmIChpc19vYmplY3QoJG1vZHVsZSkpIHsNCiAgICAgICAgICAgICAgICBpZiAoJGFjdGl2ZSAhPSAxKSB7DQogICAgICAgICAgICAgICAgICAgICRtb2R1bGUtPkRlbGV0ZVdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1faWQsICdpdGVtJyk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJG1vZHVsZS0+QWRkV29yZHMoJG1vZC0+R2V0TmFtZSgpLCAkaXRlbV9pZCwgJ2l0ZW0nLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9zZWFyY2hhYmxlX3RleHQoJG1vZCwgJGl0ZW1faWQpLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9zZWFyY2hhYmxlX2RhdGVfZW5kKCkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0gLy8gZW5kIHN1Ym1pdCBvciBhcHBseQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KLy8gZGlzcGxheSBlcnJvcnMgaWYgdGhlcmUgYXJlIGFueQ0KaWYgKCFlbXB0eSgkZXJyb3JzKSkgew0KICAgIGVjaG8gJG1vZC0+U2hvd0Vycm9ycygkZXJyb3JzKTsNCn0NCg0KLy8gaGlkZGVuIHZhbHVlIHJlcXVpcmVkIHdoZW4gZWRpdGluZyBhbiBleGlzdGluZyBpdGVtDQppZiAoaXNzZXQoJGl0ZW1faWQpKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdpdGVtX2lkJywgJG1vZC0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnaXRlbV9pZCcsICRpdGVtX2lkKSk7DQp9DQoNCiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAoaXNzZXQoJGl0ZW1faWQpID8gZ2VuZXJhdG9yKCktPkxhbmcoJ2VkaXQnKSA6IGdlbmVyYXRvcigpLT5MYW5nKCdhZGQnKSkgLiAnICcgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3Npbmd1bGFyJywgJycpKTsNCiRzbWFydHktPmFzc2lnbignZm9ybWlkJywgJGlkKTsNCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2VkaXRpdGVtJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGl0bGUnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlJywgJycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGl0bGUnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndGl0bGUnLCAkdGl0bGUsIDUwKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2FsaWFzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FsaWFzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGlhcycsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhcycsICRhbGlhcywgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdXJsJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3VybCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdXJsJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3VybCcsICR1cmwsIDUwKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2NhdGVnb3J5JywgZ2VuZXJhdG9yKCktPkxhbmcoJ2NhdGVnb3J5JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jYXRlZ29yeScsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnY2F0ZWdvcnknLCAkY2F0ZWdvcnlsaXN0LCAtMSwgJHVzZWRjYXRlZ29yeSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hY3RpdmUnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWN0aXZlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hY3RpdmUnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ2FjdGl2ZScsIDEsICRhY3RpdmUpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdkYXRlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlJywgJGRhdGUpOw0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlcHJlZml4JywgJGlkIC4gJ2RhdGVfJyk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2RhdGVfZW5kJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9pdGVtX2RhdGVfZW5kX2VkaXQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2RhdGVlbmQnLCAkZGF0ZV9lbmQpOw0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlZW5kcHJlZml4JywgJGlkIC4gJ2RhdGVfZW5kXycpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3JlY3Vyc2l2ZScsICRyZWN1cnNpdmUpOw0KJHNtYXJ0eS0+YXNzaWduKCdyZWN1cl9vcHRpb25zJywgYXJyYXkoDQogICAgJG1vZC0+TGFuZygnbm9uZScpID0+ICcnLA0KICAgICRtb2QtPkxhbmcoJ2RhaWx5JykgPT4gJ2RhaWx5JykpOw0KDQokd2Vla2RheXMgPSBhcnJheSgkbW9kLT5MYW5nKCdzdW5kYXknKSA9PiAnMCcsDQogICAgJG1vZC0+TGFuZygnbW9uZGF5JykgPT4gJzEnLA0KICAgICRtb2QtPkxhbmcoJ3R1ZXNkYXknKSA9PiAnMicsDQogICAgJG1vZC0+TGFuZygnd2VkbmVzZGF5JykgPT4gJzMnLA0KICAgICRtb2QtPkxhbmcoJ3RodXJzZGF5JykgPT4gJzQnLA0KICAgICRtb2QtPkxhbmcoJ2ZyaWRheScpID0+ICc1JywNCiAgICAkbW9kLT5MYW5nKCdzYXR1cmRheScpID0+ICc2Jyk7DQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfd2Vla2RheXMnLCAkbW9kLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAncmVjdXJfd2Vla2RheXNbXScsICR3ZWVrZGF5cywgZW1wdHkoJHJlY3VyX3dlZWtkYXlzKSA/IGFycmF5KCkgOiAkcmVjdXJfd2Vla2RheXMsIDcpKTsNCg0KDQoNCiRzbWFydHktPmFzc2lnbignc3VibWl0JywgJG1vZC0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsNCiRzbWFydHktPmFzc2lnbignYXBwbHknLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdhcHBseScsIGxhbmcoJ2FwcGx5JykpKTsNCiRzbWFydHktPmFzc2lnbignY2FuY2VsJywgJG1vZC0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsNCmlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdjb3B5X2FkbWluJykpDQogICAgJHNtYXJ0eS0+YXNzaWduKCdjb3B5JywgJG1vZC0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY29weScsIGxhbmcoJ2NvcHknKSwgJycsICcnLCAkbW9kLT5MYW5nKCdhcmV5b3VzdXJlJykpKTsNCg0KDQoNCiRjdXN0b21fZmxkc19vYmogPSAkZmlsdGVycy0+Z2VuZXJhdGUoJGl0ZW1faWQsICRwYXJhbXMpOw0KDQppZiAoaXNzZXQoJGN1c3RvbV9mbGRzX29iaikgJiYgY291bnQoJGN1c3RvbV9mbGRzX29iaikgPiAwKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdjdXN0b21fZmllbGRkZWYnLCAkY3VzdG9tX2ZsZHNfb2JqKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCAkbW9kKTsNCg0KDQokc21hcnR5LT5hc3NpZ24oJ3RhYmhlYWRlcl9hcnRpY2xlJywgJG1vZC0+U2V0VGFiSGVhZGVyKCdhcnRpY2xlJywgJG1vZC0+TGFuZygnYXJ0aWNsZScpKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3RhYl9oZWFkZXJzJywgJG1vZC0+U3RhcnRUYWJIZWFkZXJzKCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiX2hlYWRlcnMnLCAkbW9kLT5FbmRUYWJIZWFkZXJzKCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2VuZF90YWJfY29udGVudCcsICRtb2QtPkVuZFRhYkNvbnRlbnQoKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3RhYl9jb250ZW50JywgJG1vZC0+U3RhcnRUYWJDb250ZW50KCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydF90YWJfYXJ0aWNsZScsICRtb2QtPlN0YXJ0VGFiKCdhcnRpY2xlJywgJHBhcmFtcykpOw0KJHNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiX2FydGljbGUnLCAkbW9kLT5FbmRUYWIoKSk7DQoNCi8vIHRhYiBzdHVmZi4NCmlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdwcmV2aWV3X2FkbWluJykpIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3RhYmhlYWRlcl9wcmV2aWV3JywgJG1vZC0+U2V0VGFiSGVhZGVyKCdwcmV2aWV3JywgJG1vZC0+TGFuZygncHJldmlldycpKSk7DQogICAgDQogICAgJHNtYXJ0eS0+YXNzaWduKCdzdGFydF90YWJfcHJldmlldycsICRtb2QtPlN0YXJ0VGFiKCdwcmV2aWV3JywgJHBhcmFtcykpOw0KICAgICRzbWFydHktPmFzc2lnbignZW5kX3RhYl9wcmV2aWV3JywgJG1vZC0+RW5kVGFiKCkpOw0KDQogICAgJHNtYXJ0eS0+YXNzaWduKCd3YXJuaW5nX3ByZXZpZXcnLCAkbW9kLT5MYW5nKCd3YXJuaW5nX3ByZXZpZXcnKSk7DQogICAgJGNvbnRlbnRvcHMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KICAgICRzbWFydHktPmFzc2lnbigncHJldmlld19yZXR1cm5pZCcsICRjb250ZW50b3BzLT5DcmVhdGVIaWVyYXJjaHlEcm9wZG93bignJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAtMSksICdwcmV2aWV3X3JldHVybmlkJykpOyB7DQogICAgICAgICR0bXAgPSAkbW9kLT5MaXN0VGVtcGxhdGVzKCk7DQogICAgICAgICR0bXAyID0gYXJyYXkoKTsNCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJHRtcCk7ICRpKyspIHsNCiAgICAgICAgICAgIGlmIChzdGFydHN3aXRoKCR0bXBbJGldLCAnZGV0YWlsX3RlbXBsYXRlJykpIHsNCiAgICAgICAgICAgICAgICAkeCA9IHN1YnN0cigkdG1wWyRpXSwgMTUpOw0KICAgICAgICAgICAgICAgICR0bXAyWyR4XSA9ICR4Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICRzbWFydHktPmFzc2lnbigncHJvbXB0X2RldGFpbF90ZW1wbGF0ZScsICRtb2QtPkxhbmcoJ2RldGFpbF90ZW1wbGF0ZScpKTsNCiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZGV0YWlsX3BhZ2UnLCAkbW9kLT5MYW5nKCdkZXRhaWxfcGFnZScpKTsNCiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdkZXRhaWxfdGVtcGxhdGVzJywgJHRtcDIpOw0KICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2N1cl9kZXRhaWxfdGVtcGxhdGUnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50X2RldGFpbF90ZW1wbGF0ZScpKTsNCiAgICB9DQp9DQoNCiRkZXRhaWxfcmV0dXJuaWQgPSAkZGVmYXVsdF9kZXRhaWxwYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGV0YWlsX3JldHVybmlkJywgLTEpOw0KJGRldGFpbHRlbXBsYXRlID0gJyc7DQokdGhlbWVPYmplY3QgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsNCmlmIChlbXB0eSgkcm93WyJ1cmwiXSkgPT0gZmFsc2UpIHsNCiAgICAkcHJldHR5dXJsID0gJHJvd1sidXJsIl07DQp9IGVsc2Ugew0KICAgICRwcmV0dHl1cmwgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9wcmV0dHlfdXJsKCR0aGlzLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9wcmVmaXgoJG1vZCksICRyb3dbJ2l0ZW1faWQnXSwgJHJvd1snYWxpYXMnXSwgKCRkZWZhdWx0X2RldGFpbHBhZ2UgPT0gLTEgJiYgIWlzU2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkgPyAkZGV0YWlscGFnZSA6IChpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAnJyApKSwgJGRldGFpbHRlbXBsYXRlKTsNCn0NCiRwcmV2aWV3X2xpbmsgPSAkbW9kLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkZGV0YWlsX3JldHVybmlkLCAnZGV0YWlsJywgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS92aWV3LmdpZicpLCBhcnJheSgnaXRlbV9pZCcgPT4gJHJvd1snaXRlbV9pZCddLCAnZGV0YWlsdGVtcGxhdGUnID0+ICRkZXRhaWx0ZW1wbGF0ZSksICcnLCBmYWxzZSwgJGlubGluZSwgJ3RhcmdldD0iX2JsYW5rIicsIGZhbHNlLCAkcHJldHR5dXJsKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcmV2aWV3X3ZpZXcnLCAkcHJldmlld19saW5rKTsNCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXRpdGVtLnRwbCcpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_editoption.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCg0KDQovLyBsYXp5IGxvYWRpbmcNCg0KJGxhenlsb2FkaW5nID0gIDA7DQppZiAoaXNTZXQoJHBhcmFtc1sibGF6eWxvYWRpbmciXSkpIA0KICAgICRsYXp5bG9hZGluZyA9IDE7DQoNCiRsYXp5bG9hZGluZ19vbGQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdsYXp5bG9hZGluZycpID8gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbGF6eWxvYWRpbmcnKSA6IDA7DQoNCi8vIHNldCAgbGF6eSBsb2FkaW5nLCBjbGVhciBjYWNoZQ0KaWYoJGxhenlsb2FkaW5nX29sZCAhPSAkbGF6eWxvYWRpbmcpIHsNCiAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlcyBTRVQgYWxsb3dfZmVfbGF6eWxvYWQgPSA/IFdIRVJFIG1vZHVsZV9uYW1lID0gPyc7DQogICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGxhenlsb2FkaW5nLCRtb2QtPkdldE5hbWUoKSkpOw0KICAgIGNtc21zKCktPmNsZWFyX2NhY2hlZF9maWxlcygpOw0KfQ0KJG1vZC0+UmVtb3ZlUHJlZmVyZW5jZSgnY3VzdG9tX2ZpZWxkc19kZWZhdWx0Jyk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnLGltcGxvZGUoJywnLCAkcGFyYW1zWyJjdXN0b21fZmllbGRzX2RlZmF1bHQiXSkpOw0KDQokcHJlZnMgPSBhcnJheSgpOw0KJHByZWZzW10gPSAiZnJpZW5kbHluYW1lIjsNCiRwcmVmc1tdID0gIml0ZW1fdGl0bGUiOw0KJHByZWZzW10gPSAiaXRlbV9zaW5ndWxhciI7DQokcHJlZnNbXSA9ICJpdGVtX3BsdXJhbCI7DQokcHJlZnNbXSA9ICJ1cmxfcHJlZml4IjsNCiRwcmVmc1tdID0gImRlZmF1bHRfYWN0aW9uX3BhcmFtcyI7DQokcHJlZnNbXSA9ICJkZXRhaWxfYWN0aW9uX3BhcmFtcyI7DQokcHJlZnNbXSA9ICJkZXRhaWxfYWN0aW9uX3BhcmFtcyI7DQokcHJlZnNbXSA9ICJ0aXRsZV9wYXJhbV9mb3JfY2FjaGUiOw0KJHByZWZzW10gPSAiZGlzcGxheV9pbmxpbmUiOw0KJHByZWZzW10gPSAibGF6eWxvYWRpbmciOw0KJHByZWZzW10gPSAidXNlcmdyb3VwX2RlcGVuZGVuY2UiOw0KJHByZWZzW10gPSAiaGFzX2FkbWluIjsNCiRwcmVmc1tdID0gInByZXZpZXdfYWRtaW4iOw0KJHByZWZzW10gPSAiY29weV9hZG1pbiI7DQokcHJlZnNbXSA9ICJpdGVtX3RpdGxlX2VkaXQiOw0KJHByZWZzW10gPSAiaXRlbV9kYXRlX2VkaXQiOw0KJHByZWZzW10gPSAiaXRlbV9kYXRlX2VuZF9lZGl0IjsNCiRwcmVmc1tdID0gIml0ZW1fY2F0ZWdvcnlfZWRpdCI7DQokcHJlZnNbXSA9ICJyZWN1cnNpdmUiOw0KJHByZWZzW10gPSAiZmlsdGVyX2RhdGUiOw0KJHByZWZzW10gPSAiZmlsdGVyX2RhdGUiOw0KJHByZWZzW10gPSAiaXRlbV9hbGlhc19lZGl0IjsNCiRwcmVmc1tdID0gIml0ZW1fdXJsX2VkaXQiOw0KJHByZWZzW10gPSAiaXRlbV9kZXRhaWxfcmV0dXJuaWQiOw0KJHByZWZzW10gPSAiaXRlbV9jYXRlZ29yeV9yZXR1cm5pZCI7DQokcHJlZnNbXSA9ICJzdW1tYXJ5X3BhZ2VsaW1pdCI7DQokcHJlZnNbXSA9ICJtb2RlIjsNCiRwcmVmc1tdID0gInNlYXJjaF9kYXRlX2VuZCI7DQokcHJlZnNbXSA9ICJzZWFyY2hhYmxlIjsNCiRwcmVmc1tdID0gImltYWdlc19zaXplX2FkbWluIjsNCg0KZXh0ZW5kZWRfdG9vbHNfb3B0czo6c2V0X3ByZWZlcmVuY2VzKCRwcmVmcywgJHBhcmFtcywgJG1vZCk7DQoNCg0KJHByZWZzID0gYXJyYXkoKTsNCg0KaWYgKCRwYXJhbXNbJ21vZGUnXSA9PSAnYWR2YW5jZWQnKSB7DQogICAgJHByZWZzW10gPSAic29ydG9yZGVyX2FkdmFuY2VkIjsNCiAgICAkcHJlZnNbXSA9ICJzb3J0YnlfYWR2YW5jZWQiOw0KfQ0KDQpleHRlbmRlZF90b29sc19vcHRzOjpzZXRfcHJlZmVyZW5jZXMoJHByZWZzLCAkcGFyYW1zLCAkbW9kKTsNCg0KDQoNCiRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnb3B0aW9udGFiJyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfb3B0aW9uJykpDQoJcmV0dXJuOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7DQoJJHBhcmFtcyA9IGFycmF5KA0KCQknYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRldGFiJw0KCSk7DQoJJG1vZC0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsNCn0NCg0KJHRwbF9pZCAgICAgICA9IG51bGw7DQokdGVtcGxhdGVuYW1lID0gJyc7DQokdGVtcGxhdGV0ZXh0ID0gJyc7DQokZXJyb3JzICAgICAgID0gYXJyYXkoKTsNCg0KLy8gaWYgJHBhcmFtc1sndHBsX2lkJ10gaXMgc3VwcGxpZWQgYW5kIGV4aXN0cywgcG9wdWxhdGUgd2l0aCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ3RwbF9pZCddKSkgew0KCSR0cGxfaWQgPSAoaW50KSAkcGFyYW1zWyd0cGxfaWQnXTsNCgkkcXVlcnkgID0gJ1NFTEVDVCBuYW1lLCBjb250ZW50IEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ190ZW1wbGF0ZSBXSEVSRSB0cGxfaWQgPSA/JzsNCgkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoDQoJCSR0cGxfaWQNCgkpKTsNCgkNCglpZiAoJHJlc3VsdCAmJiAkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKSkgew0KCQkkdGVtcGxhdGVuYW1lID0gJHJvd1snbmFtZSddOw0KCQkkdGVtcGxhdGV0ZXh0ID0gJHJvd1snY29udGVudCddOw0KCX0NCn0NCg0KLy8gaGFuZGxlIHN1Ym1pdCBvciBhcHBseQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KCSR0ZW1wbGF0ZW5hbWUgPSAkcGFyYW1zWyd0ZW1wbGF0ZV9uYW1lJ107DQoJJHRlbXBsYXRldGV4dCA9ICRwYXJhbXNbJ3RlbXBsYXRlX3RleHQnXTsNCglpZiAoIWlzc2V0KCR0cGxfaWQpKSB7DQoJCSR0ZW1wbGF0ZXR5cGUgPSAkcGFyYW1zWyd0ZW1wbGF0ZV90eXBlJ107DQoJfQ0KCQ0KCWlmICgkdGVtcGxhdGVuYW1lID09ICcnKSB7DQoJCSRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCd0ZW1wbGF0ZV9uYW1lX2VtcHR5Jyk7DQoJfQ0KCQ0KCWlmIChlbXB0eSgkZXJyb3JzKSkgew0KCQlpZiAoaXNzZXQoJHRwbF9pZCkpIHsNCgkJCSRxdWVyeSAgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfdGVtcGxhdGUgU0VUIG5hbWUgPSA/LCBjb250ZW50PT8gV0hFUkUgdHBsX2lkID0gPyc7DQoJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoDQoJCQkJJHRlbXBsYXRlbmFtZSwNCgkJCQkkdGVtcGxhdGV0ZXh0LA0KCQkJCSR0cGxfaWQNCgkJCSkpOw0KCQkJaWYgKCEkcmVzdWx0KQ0KCQkJCWRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoJCX0gZWxzZSB7DQoJCQkkcXVlcnkgID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfdGVtcGxhdGUgKG5hbWUsIGNvbnRlbnQsIHR5cGUpIFZBTFVFUyAoPywgPywgPyknOw0KCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KA0KCQkJCSR0ZW1wbGF0ZW5hbWUsDQoJCQkJJHRlbXBsYXRldGV4dCwNCgkJCQkkdGVtcGxhdGV0eXBlDQoJCQkpKTsNCgkJCWlmICghJHJlc3VsdCkNCgkJCQlkaWUoJ0ZBVEFMIFNRTCBFUlJPUjogJyAuICRkYi0+RXJyb3JNc2coKSAuICc8YnIvPlFVRVJZOiAnIC4gJGRiLT5zcWwpOw0KCQkJDQoJCQkvLyBwb3B1bGF0ZSAkdHBsX2lkIGZvciBuZXdseSBpbnNlcnRlZCBpdGVtDQoJCQkkdHBsX2lkID0gJGRiLT5JbnNlcnRfSUQoKTsNCgkJfQ0KCQkNCgkJaWYgKCFpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KCQkJJHBhcmFtcyA9IGFycmF5KA0KCQkJCSd0YWJfbWVzc2FnZScgPT4gJ2NoYW5nZXNzYXZlZCcsDQoJCQkJJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXRhYicNCgkJCSk7DQoJCQkkbW9kLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQoJCX0gZWxzZSB7DQoJCQllY2hvICRtb2QtPlNob3dNZXNzYWdlKGdlbmVyYXRvcigpLT5MYW5nKCdjaGFuZ2Vzc2F2ZWQnKSk7DQoJCX0NCgl9DQp9DQoNCi8vIGRpc3BsYXkgZXJyb3JzIGlmIHRoZXJlIGFyZSBhbnkNCmlmICghZW1wdHkoJGVycm9ycykpIHsNCgllY2hvICRtb2QtPlNob3dFcnJvcnMoJGVycm9ycyk7DQp9DQoNCmlmIChpc3NldCgkdHBsX2lkKSkgew0KCSRzbWFydHktPmFzc2lnbignaWRmaWVsZCcsICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RwbF9pZCcsICR0cGxfaWQpKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsIChpc3NldCgkdHBsX2lkKSA/IGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0dGVtcGxhdGUnKSA6IHNwcmludGYoZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZHRlbXBsYXRlJyksIHVjZmlyc3QoJHBhcmFtc1sndHlwZSddKSkpKTsNCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGUnLCBnZW5lcmF0b3IoKS0+TGFuZygndGVtcGxhdGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlJywgJG1vZC0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHRlbXBsYXRldGV4dCwgJ3RlbXBsYXRlX3RleHQnKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X25hbWUnLCBnZW5lcmF0b3IoKS0+TGFuZygndGVtcGxhdGVfbmFtZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfbmFtZScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0ZW1wbGF0ZV9uYW1lJywgJHRlbXBsYXRlbmFtZSwgNDApKTsNCg0KaWYgKCFpc3NldCgkdHBsX2lkKSkgew0KCSRzbWFydHktPmFzc2lnbignaW5wdXRfdHlwZScsICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RlbXBsYXRlX3R5cGUnLCAkcGFyYW1zWyd0eXBlJ10pKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhcHBseScsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5JywgbGFuZygnYXBwbHknKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdHRlbXBsYXRlLnRwbCcpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_fields.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcGxvYWRzIC09IGFsbG93IHVzZXJzIHRvIHVwbG9hZCBzdHVmZiwgYSBwc2V1ZG8gZmlsZSBtYW5hZ2VyIiBtb2R1bGUKIyBBdXRob3I6IFJvYmVydCBDYW1wYmVsbCA8cm9iQHRlY2hjb20uZHluZG5zLm9yZz4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6CS8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHdpZHRoOiA4MCU7Ij4nIC4KICRtb2QtPkNyZWF0ZUltYWdlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdiYWNrJyksICdpY29ucy9zeXN0ZW0vYmFjay5naWYnLCBhcnJheSgpLCAnJywgJycsIGZhbHNlKSAuICc8L2Rpdj48YnIvPic7CgplY2hvICRtb2QtPlN0YXJ0VGFiSGVhZGVycygpOwppZiAoJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfb3B0aW9uJykpIHsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdpdGVtcycsIGdlbmVyYXRvcigpLT5MYW5nKCdpdGVtcycpKTsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdjYXRlZ29yaWVzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2NhdGVnb3JpZXMnKSk7Cn0KZWNobyAkbW9kLT5FbmRUYWJIZWFkZXJzKCk7CmVjaG8gJG1vZC0+U3RhcnRUYWJDb250ZW50KCk7CmlmICgkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkgewogICAgZWNobyAkbW9kLT5TdGFydFRhYignaXRlbXMnLCAkcGFyYW1zKTsKICAgIGluY2x1ZGUgZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLmFkbWluX2ZpZWxkZGVmdGFiLnBocCc7CiAgICBlY2hvICRtb2QtPkVuZFRhYigpOwogICAgZWNobyAkbW9kLT5TdGFydFRhYignY2F0ZWdvcmllcycsICRwYXJhbXMpOwogICAgaW5jbHVkZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvZnVuY3Rpb24uYWRtaW5fZmllbGRkZWZ0YWJfY2F0ZWdvcmllcy5waHAnOwogICAgZWNobyAkbW9kLT5FbmRUYWIoKTsKfQplY2hvICRtb2QtPkVuZFRhYkNvbnRlbnQoKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_movefielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCiRkYXRhID0gdHJpbSh0cmltKCRwYXJhbXNbJ3NlcmlhbGRhdGEnXSksICcsJyk7DQokZGF0YSA9IGV4cGxvZGUoJywnLCAkZGF0YSk7DQoNCiRzb3J0aW5nID0gMTsNCmZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRkYXRhKTsgJGkrKykgew0KICAgICRpdGVtX2lkID0gJGRhdGFbJGldOw0KICAgIGlmICghJGl0ZW1faWQpDQogICAgICAgIGNvbnRpbnVlOw0KICAgICRxdWVyeSA9ICdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBTRVQgcG9zaXRpb24gPSA/IFdIRVJFIGZpZWxkZGVmX2lkID0gPyc7DQogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNvcnRpbmcrKywgJGl0ZW1faWQpKTsNCiAgICANCn0NCg0KJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICRwYXJhbXNbInNlY3Rpb24iXSwgYXJyYXkoKSwgJ2FkbWluX2ZpZWxkcycpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_moveitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQokZGF0YSA9IHRyaW0odHJpbSgkcGFyYW1zWydzZXJpYWxkYXRhJ10pLCAnLCcpOw0KJGRhdGEgPSBhcnJheV9yZXZlcnNlKGV4cGxvZGUoJywnLCAkZGF0YSkpOw0KJGl0ZW1zID0gYXJyYXkoKTsNCiRzb3J0aW5nID0gMTsNCmZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRkYXRhKTsgJGkrKykgew0KICAgICRpdGVtX2lkID0gJGRhdGFbJGldOw0KICAgIGlmICghJGl0ZW1faWQpDQogICAgICAgIGNvbnRpbnVlOw0KDQogICAgJHNvcnRpbmcrKzsNCg0KICAgICRpdGVtX2lkX29sZCA9ICRpdGVtc1skc29ydGluZ107DQoNCiAgICBpZiAoJGl0ZW1faWQgPT0gJGl0ZW1faWRfb2xkKQ0KICAgICAgICBjb250aW51ZTsNCg0KICAgICRpdGVtID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfaXRlbSgkbW9kLCAkaXRlbV9pZCk7DQogICAgJGl0ZW1zWyRpdGVtWyJwb3NpdGlvbiJdXSA9ICRpdGVtWyJpdGVtX2lkIl07DQp9DQoNCmtzb3J0KCRpdGVtcyk7DQokaXRlbXMyID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRpdGVtcyBhcyAka2V5ID0+ICRpdGVtKSB7DQogICAgJGl0ZW1zMltdID0gJGtleTsNCn0NCg0KDQokaW5kZXggPSAwOw0KJG5ld19zb3J0aW5nID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRkYXRhIGFzICRrZXkgPT4gJGQpIHsNCiAgICAkbmV3X3NvcnRpbmdbJGl0ZW1zMlska2V5XV0gPSAkZDsNCn0NCg0KZm9yZWFjaCAoJG5ld19zb3J0aW5nIGFzICRrZXkgPT4gJGl0ZW1faWQpIHsNCiAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBTRVQgcG9zaXRpb24gPSA/IFdIRVJFIGl0ZW1faWQgPSA/JzsNCiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgka2V5LCAkaXRlbV9pZCkpOw0KICAgIEAkbW9kLT5TZW5kRXZlbnQoJ0l0ZW1FZGl0ZWQnLCBhcnJheSgnaXRlbV9pZCcgPT4gJGl0ZW1faWQpKTsNCn0NCg0KDQoNCkAkbW9kLT5TZW5kRXZlbnQoJ0l0ZW1zUmVvcmRlcmVkJywgYXJyYXkoKSk7DQokbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2l0ZW10YWInKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_ordercategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcGxvYWRzIC09IGFsbG93IHVzZXJzIHRvIHVwbG9hZCBzdHVmZiwgYSBwc2V1ZG8gZmlsZSBtYW5hZ2VyIiBtb2R1bGUKIyBBdXRob3I6IFJvYmVydCBDYW1wYmVsbCA8cm9iQHRlY2hjb20uZHluZG5zLm9yZz4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6CS8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQokbW9kLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX29yZGVyY2F0ZWdvcnlfZG8nLCAkcmV0dXJuaWQpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkbW9kLT5DcmVhdGVGb3JtRW5kKCkpOwoKCgokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgT1JERVIgQlkgaGllcmFyY2h5X3Bvc2l0aW9uIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgoKJHJvd2NsYXNzID0gJ3JvdzEnOwp3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICRvbmVyb3cgPSBjZ2VfYXJyYXk6OnRvX29iamVjdCgkcm93KTsKICAgICRlbnRyeWFycmF5W10gPSAkb25lcm93Owp9CiRtb2QtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkZW50cnlhcnJheSkpOwoKZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ29yZGVyY2F0ZWdvcnkudHBsJyk7CiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_ordercategory_do.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcGxvYWRzIC09IGFsbG93IHVzZXJzIHRvIHVwbG9hZCBzdHVmZiwgYSBwc2V1ZG8gZmlsZSBtYW5hZ2VyIiBtb2R1bGUKIyBBdXRob3I6IFJvYmVydCBDYW1wYmVsbCA8cm9iQHRlY2hjb20uZHluZG5zLm9yZz4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6CS8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc3NldCgkZ0NtcykpCiAgICBleGl0OwppZiAoISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKSkKICAgIHJldHVybjsKCgoKaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSB8fCAhaXNTZXQoJF9QT1NUWydkYXRhJ10pKSB7CiAgICAkbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2NhdGVnb3J5dGFiJyk7Cn0KCmlmIChpc3NldCgkX1BPU1RbJ2RhdGEnXSkpIHsKCiAgICBmdW5jdGlvbiBvcmRlcmNvbnRlbnRfZ2V0X25vZGVfcmVjKCRzdHIsICRwcmVmaXggPSAnY2F0ZWdvcnlfJykgewogICAgICAgICRnQ21zID0gY21zbXMoKTsKICAgICAgICAkdHJlZSA9ICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CgogICAgICAgIGlmICghaXNfbnVtZXJpYygkc3RyKSAmJiBzdGFydHN3aXRoKCRzdHIsICRwcmVmaXgpKSB7CiAgICAgICAgICAgICRzdHIgPSBzdWJzdHIoJHN0ciwgc3RybGVuKCRwcmVmaXgpKTsKICAgICAgICB9CgogICAgICAgICRpZCA9IChpbnQpICRzdHI7CiAgICAgICAgJHRtcCA9ICR0cmVlLT5maW5kX2J5X3RhZygnaWQnLCAkaWQpOwogICAgICAgICRjb250ZW50ID0gJyc7CiAgICAgICAgaWYgKCR0bXApIHsKICAgICAgICAgICAgJGNvbnRlbnQgPSAkdG1wLT5nZXRDb250ZW50KCk7CiAgICAgICAgICAgIGlmICgkY29udGVudCkgewogICAgICAgICAgICAgICAgJHJlYyA9IGFyYXkoKTsKICAgICAgICAgICAgICAgICRyZWNbJ2lkJ10gPSAoaW50KSAkc3RyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIG9yZGVyY29udGVudF9jcmVhdGVfZmxhdGxpc3QoJHRyZWUsICRwYXJlbnRfaWQgPSAtMSkgewogICAgICAgICRkYXRhID0gYXJyYXkoKTsKICAgICAgICAkb3JkZXIgPSAxOwogICAgICAgIGZvcmVhY2ggKCR0cmVlIGFzICYkbm9kZSkgewogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJG5vZGUpICYmIGNvdW50KCRub2RlKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAkcGlkID0gc3Vic3RyKCRub2RlWzBdLCBzdHJsZW4oJ2NhdGVnb3J5XycpKTsKICAgICAgICAgICAgICAgICRkYXRhW10gPSBhcnJheSgnaWQnID0+ICRwaWQsICdwYXJlbnRfaWQnID0+ICRwYXJlbnRfaWQsICdvcmRlcicgPT4gJG9yZGVyKTsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbm9kZVsxXSkgJiYgaXNfYXJyYXkoJG5vZGVbMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJGRhdGEgPSBhcnJheV9tZXJnZSgkZGF0YSwgb3JkZXJjb250ZW50X2NyZWF0ZV9mbGF0bGlzdCgkbm9kZVsxXSwgJHBpZCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHBpZCA9IHN1YnN0cigkbm9kZSwgc3RybGVuKCdjYXRlZ29yeV8nKSk7CiAgICAgICAgICAgICAgICAkZGF0YVtdID0gYXJyYXkoJ2lkJyA9PiAkcGlkLCAncGFyZW50X2lkJyA9PiAkcGFyZW50X2lkLCAnb3JkZXInID0+ICRvcmRlcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9yZGVyKys7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCRfUE9TVFsnZGF0YSddKTsKCgogICAgLy8gc3RlcCAxLCBjcmVhdGUgYSBmbGF0IGxpc3Qgb2YgdGhlIGNvbnRlbnQgaXRlbXMsIGFuZCB0aGVpciBuZXcgb3JkZXJzLCBhbmQgbmV3IHBhcmVudHMuCiAgICAkZGF0YSA9IG9yZGVyY29udGVudF9jcmVhdGVfZmxhdGxpc3QoJGRhdGEpOwoKCgogICAgLy8gc3RlcCAyLiBtZXJnZSBpbiBvbGQgb3JkZXJzLCBhbmQgb2xkIHBhcmVudHMuCiAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAkZGF0YTIgPSBhcnJheSgpOwoKICAgIC8vIGFsbCBjYXRlZ29yaWVzCiAgICAkcXVlcnkgPSAiU0VMRUNUIGNhdGVnb3J5X2lkLHBhcmVudF9pZCxwb3NpdGlvbiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfY2F0ZWdvcmllcyBPUkRFUiBCWSBoaWVyYXJjaHlfcG9zaXRpb24iOwogICAgJGNhdGVnb3JpZXMgPSAkZGItPkdldEFsbCgkcXVlcnkpOwogICAgJGNhdF9hcnJheSA9IGFycmF5KCk7CiAgICBmb3JlYWNoICgkY2F0ZWdvcmllcyBhcyAkY2F0ZWdvcnkpIHsKICAgICAgICAkY2F0X2FycmF5WyRjYXRlZ29yeVsiY2F0ZWdvcnlfaWQiXV0gPSBhcnJheSgkY2F0ZWdvcnlbInBhcmVudF9pZCJdLCRjYXRlZ29yeVsicG9zaXRpb24iXSk7CiAgICB9CgoKICAgIGZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRkYXRhKTsgJGkrKykgewogICAgICAgICRyZWMgPSAmICRkYXRhWyRpXTsKICAgICAgICAkb2xkX2NhdGVnb3J5ID0gJGNhdF9hcnJheVskcmVjWydpZCddXTsKICAgICAgICBpZiAoJG9sZF9jYXRlZ29yeSkgewogICAgICAgICAgICAkcmVjWydvbGRfcGFyZW50J10gPSAkb2xkX2NhdGVnb3J5WzBdOwogICAgICAgICAgICAkcmVjWydvbGRfb3JkZXInXSA9ICRvbGRfY2F0ZWdvcnlbMV07CgogICAgICAgICAgICBpZiAoKCRyZWNbJ29sZF9wYXJlbnQnXSAhPSAkcmVjWydwYXJlbnRfaWQnXSkgfHwKICAgICAgICAgICAgICAgICAgICAkcmVjWydvbGRfb3JkZXInXSAhPSAkcmVjWydvcmRlciddKSB7CiAgICAgICAgICAgICAgICAkZGF0YTJbXSA9ICRyZWM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgCiAgICAvLyBkbyB0aGUgdXBkYXRlcwogICAgaWYgKGNvdW50KCRkYXRhMikgPiAwKSB7CiAgICAgICAgJGRiID0gJGdDbXMtPkdldERiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgY29udGVudCBTRVQgcG9zaXRpb24gPSA/LCBwYXJlbnRfaWQgPSA/IFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGRhdGEyKTsgJGkrKykgewogICAgICAgICAgICAkcmVjID0gJiAkZGF0YTJbJGldOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjWydvcmRlciddLCAkcmVjWydwYXJlbnRfaWQnXSwgJHJlY1snaWQnXSkpOwogICAgICAgICAgICBAJG1vZC0+U2VuZEV2ZW50KCdDYXRlZ29yeUVkaXRlZCcsIGFycmF5KCdjYXRlZ29yeV9pZCcgPT4gJHJlY1snaWQnXSkpOwogICAgICAgIH0KICAgICAgICBnZW5lcmF0b3JfdG9vbHM6OnVwZGF0ZV9oaWVyYXJjaHlfcG9zaXRpb25zKCRtb2QpOwogICAgICAgIEAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5UmVvcmRlcmVkJywgYXJyYXkoKSk7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gbGFuZygnbm90aGluZ3RvZG8nKTsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_search_reindex.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCiRzZWFyY2ggPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1NlYXJjaCcpOw0KaWYgKCRzZWFyY2ggIT0gRkFMU0UpIHsNCiAgICAkbW9kLT5TZWFyY2hSZWluZGV4KCRzZWFyY2gpOw0KfQ0KDQokbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ29wdGlvbnRhYicpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_templates.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcGxvYWRzIC09IGFsbG93IHVzZXJzIHRvIHVwbG9hZCBzdHVmZiwgYSBwc2V1ZG8gZmlsZSBtYW5hZ2VyIiBtb2R1bGUKIyBBdXRob3I6IFJvYmVydCBDYW1wYmVsbCA8cm9iQHRlY2hjb20uZHluZG5zLm9yZz4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6CS8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHdpZHRoOiA4MCU7Ij4nIC4KICRtb2QtPkNyZWF0ZUltYWdlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdiYWNrJyksICdpY29ucy9zeXN0ZW0vYmFjay5naWYnLCBhcnJheSgpLCAnJywgJycsIGZhbHNlKSAuICc8L2Rpdj48YnIvPic7CgplY2hvICRtb2QtPlN0YXJ0VGFiSGVhZGVycygpOwppZiAoJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykpIHsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdjYXRlZ29yeV90ZW1wbGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdjYXRlZ29yeV90ZW1wbGF0ZScpKTsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdzdW1tYXJ5X3RlbXBsYXRlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3N1bW1hcnlfdGVtcGxhdGUnKSk7CiAgICBlY2hvICRtb2QtPlNldFRhYkhlYWRlcignZGV0YWlsX3RlbXBsYXRlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2RldGFpbF90ZW1wbGF0ZScpKTsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdmaWx0ZXJfdGVtcGxhdGUnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmlsdGVyX3RlbXBsYXRlJykpOwogICAgLy9lY2hvICRtb2QtPlNldFRhYkhlYWRlcignZGVmYXVsdF90ZW1wbGF0ZXMnLCBnZW5lcmF0b3IoKS0+TGFuZygnZGVmYXVsdF90ZW1wbGF0ZXMnKSk7Cn0KZWNobyAkbW9kLT5FbmRUYWJIZWFkZXJzKCk7CmVjaG8gJG1vZC0+U3RhcnRUYWJDb250ZW50KCk7CmlmICgkbW9kLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSkgewogICAgLy8gdGhlIGNhdGVnb3J5IHRlbXBsYXRlIHRhYgogICAgZWNobyAkbW9kLT5TdGFydFRhYignY2F0ZWdvcnlfdGVtcGxhdGUnKTsKICAgIGVjaG8gJG1vZC0+U2hvd1RlbXBsYXRlTGlzdCgkaWQsICRyZXR1cm5pZCwgJ2NhdGVnb3J5X3RlbXBsYXRlJywgJ2RlZmF1bHRfY2F0ZWdvcnlfdGVtcGxhdGUnLCAnY2F0ZWdvcnlfdGVtcGxhdGUnLCAnY3VycmVudF9jYXRlZ29yeV90ZW1wbGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRlZGl0X2NhdGVnb3J5X3RlbXBsYXRlJyksICdhZG1pbl90ZW1wbGF0ZXMnKTsKICAgIGVjaG8gJG1vZC0+RW5kVGFiKCk7CgogICAgLy8gdGhlIHN1bW1hcnkgdGVtcGxhdGUgdGFiCiAgICBlY2hvICRtb2QtPlN0YXJ0VGFiKCJzdW1tYXJ5X3RlbXBsYXRlIik7CiAgICBlY2hvICRtb2QtPlNob3dUZW1wbGF0ZUxpc3QoJGlkLCAkcmV0dXJuaWQsICdzdW1tYXJ5X3RlbXBsYXRlJywgJ2RlZmF1bHRfc3VtbWFyeV90ZW1wbGF0ZScsICdzdW1tYXJ5X3RlbXBsYXRlJywgJ2N1cnJlbnRfc3VtbWFyeV90ZW1wbGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRlZGl0X3N1bW1hcnlfdGVtcGxhdGUnKSwgJ2FkbWluX3RlbXBsYXRlcycpOwogICAgZWNobyAkbW9kLT5FbmRUYWIoKTsKCiAgICAvLyB0aGUgZGV0YWlsIHRlbXBsYXRlIHRhYgogICAgZWNobyAkbW9kLT5TdGFydFRhYigiZGV0YWlsX3RlbXBsYXRlIik7CiAgICBlY2hvICRtb2QtPlNob3dUZW1wbGF0ZUxpc3QoJGlkLCAkcmV0dXJuaWQsICdkZXRhaWxfdGVtcGxhdGUnLCAnZGVmYXVsdF9kZXRhaWxfdGVtcGxhdGUnLCAnZGV0YWlsX3RlbXBsYXRlJywgJ2N1cnJlbnRfZGV0YWlsX3RlbXBsYXRlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZGVkaXRfZGV0YWlsX3RlbXBsYXRlJyksICdhZG1pbl90ZW1wbGF0ZXMnKTsKICAgIGVjaG8gJG1vZC0+RW5kVGFiKCk7CgogICAgLy8gdGhlIGZpbHRlciB0ZW1wbGF0ZSB0YWIKICAgIGVjaG8gJG1vZC0+U3RhcnRUYWIoImZpbHRlcl90ZW1wbGF0ZSIpOwogICAgZWNobyAkbW9kLT5TaG93VGVtcGxhdGVMaXN0KCRpZCwgJHJldHVybmlkLCAnZmlsdGVyX3RlbXBsYXRlJywgJ2RlZmF1bHRfZmlsdGVyX3RlbXBsYXRlJywgJ2ZpbHRlcl90ZW1wbGF0ZScsICdjdXJyZW50X2ZpbHRlcl90ZW1wbGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRlZGl0X2ZpbHRlcl90ZW1wbGF0ZScpLCAnYWRtaW5fdGVtcGxhdGVzJyk7CiAgICBlY2hvICRtb2QtPkVuZFRhYigpOwoKCiAgICAvLyB0aGUgZGVmYXVsdCB0ZW1wbGF0ZXMgdGFiCiAgICAvKmVjaG8gJG1vZC0+U3RhcnRUYWIoJ2RlZmF1bHRfdGVtcGxhdGVzJyk7CgogICAgZWNobyAkbW9kLT5HZXREZWZhdWx0VGVtcGxhdGVGb3JtKCR0aGlzLCAkaWQsICRyZXR1cm5pZCwgJ2NhdGVnb3J5X3N5c2RlZmF1bHQnLCAnYWRtaW5fdGVtcGxhdGVzJywgJ2RlZmF1bHRfdGVtcGxhdGVzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X3N5c2RlZmF1bHQnKSwgJ29yaWdfY2F0ZWdvcnlfdGVtcGxhdGUudHBsJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2luZm9fc3lzZGVmYXVsdCcpKTsKICAgIGVjaG8gJG1vZC0+R2V0RGVmYXVsdFRlbXBsYXRlRm9ybSgkdGhpcywgJGlkLCAkcmV0dXJuaWQsICdzdW1tYXJ5X3N5c2RlZmF1bHQnLCAnYWRtaW5fdGVtcGxhdGVzJywgJ2RlZmF1bHRfdGVtcGxhdGVzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3RpdGxlX3N1bW1hcnlfc3lzZGVmYXVsdCcpLCAnb3JpZ19zdW1tYXJ5X3RlbXBsYXRlLnRwbCcsIGdlbmVyYXRvcigpLT5MYW5nKCdpbmZvX3N5c2RlZmF1bHQnKSk7CiAgICBlY2hvICRtb2QtPkdldERlZmF1bHRUZW1wbGF0ZUZvcm0oJHRoaXMsICRpZCwgJHJldHVybmlkLCAnZGV0YWlsX3N5c2RlZmF1bHQnLCAnYWRtaW5fdGVtcGxhdGVzJywgJ2RlZmF1bHRfdGVtcGxhdGVzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3RpdGxlX2RldGFpbF9zeXNkZWZhdWx0JyksICdvcmlnX2RldGFpbF90ZW1wbGF0ZS50cGwnLCBnZW5lcmF0b3IoKS0+TGFuZygnaW5mb19zeXNkZWZhdWx0JykpOwoKCiAgICBlY2hvICc8ZGl2IHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHdpZHRoOiA4MCU7Ij48L2Rpdj4nOwoKICAgIGVjaG8gJG1vZC0+RW5kVGFiKCk7Ki8KfQplY2hvICRtb2QtPkVuZFRhYkNvbnRlbnQoKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoKJGl0ZW1zID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY2F0ZWdvcmllcygkbW9kLCAkaWQsJHBhcmFtcywkcmV0dXJuaWQpOwoKI0Rpc3BsYXkgdGVtcGxhdGUKJHNtYXJ0eS0+YXNzaWduKCdjb3VudCcsIGNvdW50KCRpdGVtcykpOwokc21hcnR5LT5hc3NpZ24oJ2NhdHMnLCAkaXRlbXMpOwoKICAvLyB0ZW1wbGF0ZQokdGhldGVtcGxhdGUgPSAnY2F0ZWdvcnlfdGVtcGxhdGUnIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY3VycmVudF9jYXRlZ29yeV90ZW1wbGF0ZScpOwppZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnl0ZW1wbGF0ZSddKSkgewogICAgJHRoZXRlbXBsYXRlID0gJ2NhdGVnb3J5X3RlbXBsYXRlJyAuICRwYXJhbXNbJ2NhdGVnb3J5dGVtcGxhdGUnXTsKfQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGhldGVtcGxhdGUpOwoKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KI0JFR0lOX0xJQ0VOU0UNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogICBAa3V6bWFueSAoa3V6bWFueS5iaXopDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiANCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiNFTkRfTElDRU5TRQ0KaWYgKCFpc3NldCgkZ0NtcykpDQogICAgZXhpdDsNCg0KDQokZmllbGRlZnMgPSAnJzsNCnsNCiAgICAkdG1wID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRzKCRtb2QsIGZhbHNlKTsNCg0KICAgIGlmIChpc19hcnJheSgkdG1wKSkgew0KICAgICAgICAkZmllbGRkZWZzID0gYXJyYXkoKTsNCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJHRtcCk7ICRpKyspIHsNCiAgICAgICAgICAgICRvYmogPSAkdG1wWyRpXTsNCiAgICAgICAgICAgICRmaWVsZGRlZnNbJG9iai0+YWxpYXNdID0gJG9iajsNCiAgICAgICAgfQ0KICAgIH0NCn0NCiRxdWVyeSA9ICcnOw0KJHF1ZXJ5MiA9ICcnOw0KJGNvdW50ID0gJyc7DQokcGFnZSA9ICcnOw0KJHN0YXJ0ZWxlbWVudCA9ICcnOw0KJGxpbWl0ID0gOTk5OTk7DQokaXRlbWxpc3QgPSAnJzsNCiRzb3J0dHlwZSA9ICcnOw0KJGNvdW50am9pbnMgPSBhcnJheSgpOw0KJGpvaW5zID0gYXJyYXkoKTsNCiRzb3J0ZmllbGQgPSAxOw0KdW5zZXQoJHBhcmFtc1snYXNzaWduJ10pOw0KJGlubGluZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2Rpc3BsYXlfaW5saW5lJywgZmFsc2UpOw0KJGRlZmF1bHRfZGV0YWlscGFnZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGV0YWlsX3JldHVybmlkJywgJycpOw0KJGRldGFpbHBhZ2UgPSAkZGVmYXVsdF9kZXRhaWxwYWdlOw0KaWYgKCFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pICYmIGlzU2V0KCRwYXJhbXNbInJldHVybmlkIl0pKQ0KICAgICRwYXJhbXNbImRldGFpbHBhZ2UiXSA9ICRwYXJhbXNbInJldHVybmlkIl07DQokZGV0YWlscGFnZSA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6OmRldGFpbHBhZ2UoJHBhcmFtcywgJGRldGFpbHBhZ2UpOw0KaWYgKCRkZXRhaWxwYWdlID09ICRkZWZhdWx0X2RldGFpbHBhZ2UpDQogICAgdW5zZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKTsNCg0KDQokZGV0YWlsdGVtcGxhdGUgPSAnJzsNCiRmaWx0ZXJzID0gYXJyYXkoKTsNCiRmaWVsZHMgPSBhcnJheSgpOw0KJGZpZWxkczIgPSBhcnJheSgpOw0KJGRhdGVfdG8gPSAnJzsNCiRkYXRlX2Zyb20gPSAnJzsNCiRjYXRlZ29yeV9pZCA9IC0xOw0KJHBhcmFtYXJyYXl0bXAgPSBhcnJheSgpOw0KJGdyb3VwYnkgPSAnJzsNCg0KDQovLyB0ZW1wbGF0ZQ0KJHRoZXRlbXBsYXRlID0gJ3N1bW1hcnlfdGVtcGxhdGUnIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY3VycmVudF9zdW1tYXJ5X3RlbXBsYXRlJyk7DQppZiAoaXNzZXQoJHBhcmFtc1snc3VtbWFyeXRlbXBsYXRlJ10pKSB7DQogICAgJHRoZXRlbXBsYXRlID0gJ3N1bW1hcnlfdGVtcGxhdGUnIC4gJHBhcmFtc1snc3VtbWFyeXRlbXBsYXRlJ107DQp9DQoNCi8vIHRlbXBsYXRlDQppZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkpIHsNCiAgICAkZGV0YWlsdGVtcGxhdGUgPSAkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snaW5saW5lJ10pKSB7DQogICAgJGlubGluZSA9ICRwYXJhbXNbJ2lubGluZSddOw0KfQ0KDQoNCi8vIGRhdGUgZnJvbQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ2RhdGVmcm9tJ10pKSB7DQogICAgJGRhdGVfZnJvbSA9ICRwYXJhbXNbJ2RhdGVmcm9tJ107DQp9DQppZiAoaXNzZXQoJHBhcmFtc1snZGF0ZWZyb21Nb250aCddKSkgew0KICAgICRkYXRlX2Zyb20gPSBta3RpbWUoMCwgMCwgMCwgJHBhcmFtc1snZGF0ZWZyb21Nb250aCddLCAkcGFyYW1zWydkYXRlZnJvbURheSddLCAkcGFyYW1zWydkYXRlZnJvbVllYXInXSk7DQp9DQppZiAoaXNzZXQoJHBhcmFtc1snZGF0ZXRvJ10pKSB7DQogICAgJGRhdGVfdG8gPSAkcGFyYW1zWydkYXRldG8nXTsNCn0NCmlmIChpc3NldCgkcGFyYW1zWydkYXRldG9Nb250aCddKSkgew0KICAgICRkYXRlX3RvID0gbWt0aW1lKDIzLCA1OSwgNTksICRwYXJhbXNbJ2RhdGV0b01vbnRoJ10sICRwYXJhbXNbJ2RhdGV0b0RheSddLCAkcGFyYW1zWydkYXRldG9ZZWFyJ10pOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9kYXRlX2Zyb21fdG8nXSkpIHsNCiAgICAkZGF0ZV9mcm9tX3RvID0gZXhwbG9kZSgnfCcsICRwYXJhbXNbJ2l0ZW1fZGF0ZV9mcm9tX3RvJ10pOw0KICAgIGlmIChjb3VudCgkZGF0ZV9mcm9tX3RvKSA9PSAyKSB7DQogICAgICAgICRkYXRlX2Zyb20gPSBnZW5lcmF0b3JfdG9vbHM6OnByb2Nlc3NfZmlsdGVyX2RhdGUoJGRhdGVfZnJvbV90b1swXSk7DQogICAgICAgICRkYXRlX3RvID0gZ2VuZXJhdG9yX3Rvb2xzOjpwcm9jZXNzX2ZpbHRlcl9kYXRlKCRkYXRlX2Zyb21fdG9bMV0pOw0KICAgIH0NCn0NCg0KLy9jYXRlZ29yeSBpZA0KaWYgKGlzU2V0KCRwYXJhbXNbImNhdGVnb3J5X2lkIl0pKSB7DQogICAgJGNhdGVnb3J5X2lkID0gaW50dmFsKCRwYXJhbXNbImNhdGVnb3J5X2lkIl0pOw0KfQ0KDQoNCmlmIChpc3NldCgkcGFyYW1zWydpdGVtbGlzdCddKSkgew0KICAgICRpdGVtbGlzdCA9ICRwYXJhbXNbJ2l0ZW1saXN0J107DQogICAgdW5zZXQoJHBhcmFtc1snaXRlbWxpc3QnXSk7DQogICAgaWYgKCFpc19hcnJheSgkaXRlbWxpc3QpKSB7DQogICAgICAgICRpdGVtbGlzdCA9IGV4cGxvZGUoJywnLCAkaXRlbWxpc3QpOw0KICAgIH0NCn0NCmlmICghKGlzX2FycmF5KCRpdGVtbGlzdCkgJiYgY291bnQoJGl0ZW1saXN0KSA+IDApKSB7DQogICAgLy8gd2UgZG9uJ3QgaGF2ZSBhbiBleHBsaWNpdCBwcm9kdWN0IGxpc3QsIHNvIGdvdHRhIGJ1aWxkIGEgcXVlcnkNCiAgICAvLyBmcm9tIG90aGVyIHBhcmFtZXRlcnMNCiAgICAkc29ydG9yZGVyID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydG9yZGVyXycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtb2RlJyksICdkZXNjJyk7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3NvcnRvcmRlciddKSkgew0KICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJHBhcmFtc1snc29ydG9yZGVyJ10pKSB7DQogICAgICAgICAgICBjYXNlICdhc2MnOg0KICAgICAgICAgICAgY2FzZSAnZGVzYyc6DQogICAgICAgICAgICAgICAgJHNvcnRvcmRlciA9ICRwYXJhbXNbJ3NvcnRvcmRlciddOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgJHNvcnRieSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3NvcnRieV8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScpLCAncG9zaXRpb24nKTsNCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snc29ydGJ5J10pKSB7DQogICAgICAgICR0bXAgPSBzdHJ0b2xvd2VyKHRyaW0oJHBhcmFtc1snc29ydGJ5J10pKTsNCiAgICAgICAgc3dpdGNoICgkdG1wKSB7DQogICAgICAgICAgICBjYXNlICdpZCc6DQogICAgICAgICAgICAgICAgJHNvcnRieSA9ICdpZCc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdpdGVtX2RhdGUnOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAnaXRlbV9kYXRlJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3Bvc2l0aW9uJzoNCiAgICAgICAgICAgICAgICAkc29ydGJ5ID0gJ3Bvc2l0aW9uJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3RpdGxlJzoNCiAgICAgICAgICAgICAgICAkc29ydGJ5ID0gJ3RpdGxlJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZWQnOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAnY3JlYXRlX2RhdGUnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAnbW9kaWZpZWQnOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAnbW9kaWZpZWRfZGF0ZSc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdyYW5kb20nOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAnUkFORCgpJzsNCiAgICAgICAgICAgICAgICAkc29ydG9yZGVyID0gJyc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgIGlmIChzdGFydHN3aXRoKCR0bXAsICdmOicpKSB7DQogICAgICAgICAgICAgICAgICAgICRmaWVsZG5hbWUgPSBzdWJzdHIoJHRtcCwgc3RybGVuKCdmOicpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRmaWVsZGRlZnNbJGZpZWxkbmFtZV0pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmllbGRpZCA9ICRmaWVsZGRlZnNbJGZpZWxkbmFtZV0tPmlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGFzID0gJ0ZWJyAuICRzb3J0ZmllbGQrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsdiB7JGFzfSBPTiBjLmlkID0geyRhc30uaXRlbV9pZCBBTkQgJGFzLmZpZWxkZGVmX2lkID0gJ3skZmllbGRpZH0nIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzb3J0YnkgPSAieyRhc30udmFsdWUiOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgkc29ydGJ5ID09ICdyYW5kb20nKSB7DQogICAgICAgICRzb3J0YnkgPSAnUkFORCgpJzsNCiAgICAgICAgJHNvcnRvcmRlciA9ICcnOw0KICAgIH0NCg0KICAgIGlmIChpc3NldCgkcGFyYW1zWydzb3J0dHlwZSddKSkgew0KICAgICAgICAkdG1wID0gdHJpbSgkcGFyYW1zWydzb3J0dHlwZSddKTsNCiAgICAgICAgJHRtcCA9IHN0cnRvdXBwZXIoJHRtcCk7DQogICAgICAgIHN3aXRjaCAoJHRtcCkgew0KICAgICAgICAgICAgY2FzZSAnU1RSSU5HJzoNCiAgICAgICAgICAgICAgICAkc29ydHR5cGUgPSAnJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ1NJR05FRCc6DQogICAgICAgICAgICBjYXNlICdVTlNJR05FRCc6DQogICAgICAgICAgICAgICAgJHNvcnR0eXBlID0gJHRtcDsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAkbGltaXQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzdW1tYXJ5X3BhZ2VsaW1pdF8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScpLCAxMDAwMCk7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3BhZ2VsaW1pdCddKSAmJiAkcGFyYW1zWydwYWdlbGltaXQnXSA+IDApIHsNCiAgICAgICAgJGxpbWl0ID0gKGludCkgJHBhcmFtc1sncGFnZWxpbWl0J107DQogICAgfQ0KDQogICAgJGxpbWl0ID0gbWF4KCRsaW1pdCwgMSk7DQogICAgJGxpbWl0ID0gbWluKCRsaW1pdCwgMTAwMDApOw0KDQoNCiAgICAkcGFnZSA9IDE7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3BhZ2UnXSkpIHsNCiAgICAgICAgJHBhZ2UgPSAoaW50KSAkcGFyYW1zWydwYWdlJ107DQogICAgICAgIGlmICgkcGFnZSA8IDEpDQogICAgICAgICAgICAkcGFnZSA9IDE7DQogICAgfQ0KICAgICRzdGFydGVsZW1lbnQgPSAoJHBhZ2UgLSAxKSAqICRsaW1pdDsNCg0KICAgICRjYXRlZ29yeSA9ICcnOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydjYXRlZ29yeSddKSkgew0KICAgICAgICAkY2F0ZWdvcnkgPSB0cmltKCRwYXJhbXNbJ2NhdGVnb3J5J10pOw0KICAgIH0NCiAgICAkY2F0ZWdvcnlpZCA9IC0xMDA7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5aWQnXSkpIHsNCiAgICAgICAgJGNhdGVnb3J5aWQgPSAoaW50KSAkcGFyYW1zWydjYXRlZ29yeWlkJ107DQogICAgfQ0KDQogICAgJGZpZWxkaWQgPSAtMTAwOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydmaWVsZGlkJ10pKSB7DQogICAgICAgICRmaWVsZGlkID0gKGludCkgJHBhcmFtc1snZmllbGRpZCddOw0KICAgIH0NCiAgICAkZmllbGR2YWwgPSAnJzsNCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snZmllbGR2YWwnXSkpIHsNCiAgICAgICAgJGZpZWxkdmFsID0gdHJpbSgkcGFyYW1zWydmaWVsZHZhbCddKTsNCiAgICB9DQoNCiAgICAvLw0KICAgIC8vIEJ1aWxkIHRoZSBxdWVyaWVzDQogICAgLy8NCiAgICAkaXRlbXNhcnJheSA9IGFycmF5KCk7DQogICAgJGVudHJ5YXJyYXkgPSBhcnJheSgpOw0KICAgICRwYXJhbWFycmF5ID0gYXJyYXkoKTsNCiAgICAkcGFyYW1hcnJheTIgPSBhcnJheSgpOw0KICAgICR3aGVyZSA9IGFycmF5KCk7DQogICAgJHdoZXJlMiA9IGFycmF5KCk7DQogICAgJHF1ZXJ5ID0gIlNFTEVDVCBjLiosPEZJRUxEUz4gRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2l0ZW0gYyI7DQogICAgJHF1ZXJ5MiA9ICJTRUxFQ1QgY291bnQoKikgYXMgY291bnQsPEZJRUxEUz4gRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2l0ZW0gYyI7DQogICAgJHdoZXJlW10gPSAnYy5hY3RpdmUgPSA/JzsNCiAgICAkcGFyYW1hcnJheVtdID0gMTsNCg0KICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBjYSBPTiBjYS5jYXRlZ29yeV9pZCA9IGMuY2F0ZWdvcnlfaWQnOw0KICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgY2EgT04gY2EuY2F0ZWdvcnlfaWQgPSBjLmNhdGVnb3J5X2lkJzsNCiAgICAkZmllbGRzW10gPSAnY2EuY2F0ZWdvcnlfbmFtZSc7DQoNCg0KICAgIGlmICgkY2F0ZWdvcnlfaWQgPiAwKSB7DQogICAgICAgICR3aGVyZVtdID0gJ2NhLmNhdGVnb3J5X2lkID0gPyc7DQogICAgICAgICRwYXJhbWFycmF5W10gPSAkY2F0ZWdvcnlfaWQ7DQogICAgfSBlbHNlIGlmIChlbXB0eSgkY2F0ZWdvcnkpID09IGZhbHNlKSB7DQogICAgICAgICRjYXRlZ29yeSA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoJGNhdGVnb3J5KTsNCiAgICAgICAgJGNhdGVnb3JpZXMgPSBleHBsb2RlKCcsJywgJGNhdGVnb3J5KTsNCg0KDQoNCiAgICAgICAgJHF1ZXJ5dG1wID0gIiAoIjsNCiAgICAgICAgJGNvdW50ID0gMDsNCiAgICAgICAgZm9yZWFjaCAoJGNhdGVnb3JpZXMgYXMgJG9uZWNhdCkgew0KICAgICAgICAgICAgaWYgKCRjb3VudCA+IDApIHsNCiAgICAgICAgICAgICAgICAkcXVlcnl0bXAgLj0gJyBPUiAnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHN0cnBvcygkb25lY2F0LCAnfCcpICE9PSBGQUxTRSB8fCBzdHJwb3MoJG9uZWNhdCwgJyonKSAhPT0gRkFMU0UpIHsNCiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5xc3RyKHRyaW0oc3RyX3JlcGxhY2UoJyonLCAnJScsIHN0cl9yZXBsYWNlKCInIiwgJ18nLCAkb25lY2F0KSkpKTsNCiAgICAgICAgICAgICAgICAkcXVlcnl0bXAgLj0gInVwcGVyKGNhLmxvbmdfbmFtZSkgbGlrZSB1cHBlcih7JHRtcH0pIjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJHRtcCA9ICRkYi0+cXN0cih0cmltKHN0cl9yZXBsYWNlKCInIiwgJ18nLCAkb25lY2F0KSkpOw0KICAgICAgICAgICAgICAgICRxdWVyeXRtcCAuPSAiY2EuY2F0ZWdvcnlfbmFtZSA9IHskdG1wfSI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkY291bnQrKzsNCiAgICAgICAgfQ0KICAgICAgICAkcXVlcnl0bXAgLj0gIikiOw0KDQogICAgICAgICR3aGVyZVtdID0gJHF1ZXJ5dG1wOw0KICAgIH0NCg0KDQoNCg0KICAgIC8vIGZpbHRlcnMNCiAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkgPT4gJHBhcmFtKSB7DQogICAgICAgIGlmIChzdGFydHN3aXRoKCRrZXksICdmaWx0ZXJfJykpIHsNCiAgICAgICAgICAgICRmaWx0ZXJfa2V5cyA9IGV4cGxvZGUoJ18nLCAka2V5KTsNCiAgICAgICAgICAgIGlmIChjb3VudCgkZmlsdGVyX2tleXMpID09IDMpIHsNCiAgICAgICAgICAgICAgICAkZmllbGRpZCA9ICRmaWx0ZXJfa2V5c1sxXTsNCiAgICAgICAgICAgICAgICAkZmlsdGVyID0gJGZpbHRlcl9rZXlzWzJdOw0KICAgICAgICAgICAgICAgICRmaWVsZHZhbCA9ICRwYXJhbTsNCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGZpZWxkaWQpICYmIGlzc2V0KCRmaWVsZHZhbCkgJiYgJGZpZWxkdmFsICE9ICIiKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChpbnR2YWwoJGZpZWxkaWQpID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGdhdGhlcmluZyAnLiRtb2QtPl9HZXRNb2R1bGVBbGlhcygpLicgdGhhdCBoYXZlIGEgY2VydGFpbiBmaWVsZCBpZC4NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsdGVyID09ICdudWxsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhIGNhc2Ugd2hlbiBhIGZpZWxkIGlzIG5vdCBzZXQgZm9yIGEgcHJvZHVjdC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICcoRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSBJUyBOVUxMKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHBhcmFtYXJyYXlbXSA9ICRmaWVsZGlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdub3RudWxsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhIGNhc2Ugd2hlbiBhIGZpZWxkIGlzIG5vdCBzZXQgZm9yIGEgcHJvZHVjdC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICcoRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSAhPSBcJ1wnKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdpbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgYSBjYXNlIHdoZW4gYSBmaWVsZCBpcyBub3Qgc2V0IGZvciBhIHByb2R1Y3QuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSBJTiAoJyAuICRkYi0+cXN0cigkZmllbGR2YWwpIC4gJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGRpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnaW5zZXQnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGEgY2FzZSB3aGVuIGEgZmllbGQgaXMgbm90IHNldCBmb3IgYSBwcm9kdWN0Lg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyBGSU5EX0lOX1NFVCgnIC4gJGRiLT5xc3RyKCRmaWVsZHZhbCkgLiAnLCAgRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSkgPiAwJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2xlc3MnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX251bWVyaWMoJGZpZWxkaWQpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbWl0IHJlc3VsdHMgdG8gYWxsIG9mIHRoZSBpdGVtcyB0aGF0IGhhdmUgdGhpcyBmaWVsZCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlIDwgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICcgYy4nIC4gJGZpZWxkaWQgLiAnICA8ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRwYXJhbWFycmF5W10gPSAkZmllbGRpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdsZXNzZXF1YWwnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGltaXQgcmVzdWx0cyB0byBhbGwgb2YgdGhlIGl0ZW1zIHRoYXQgaGF2ZSB0aGlzIGZpZWxkIHZhbHVlLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ0ZWQScgLiAkZmllbGRpZCAuICcudmFsdWUgPCA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kcGFyYW1hcnJheVtdID0gJGZpZWxkaWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnZ3JlYXRlcicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkZmllbGRpZCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGltaXQgcmVzdWx0cyB0byBhbGwgb2YgdGhlIGl0ZW1zIHRoYXQgaGF2ZSB0aGlzIGZpZWxkIHZhbHVlLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ0ZWQScgLiAkZmllbGRpZCAuICcudmFsdWUgPCA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyBjLicgLiAkZmllbGRpZCAuICcgID4gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHBhcmFtYXJyYXlbXSA9ICRmaWVsZGlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGR2YWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2dyZWF0ZXJlcXVhbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW1pdCByZXN1bHRzIHRvIGFsbCBvZiB0aGUgaXRlbXMgdGhhdCBoYXZlIHRoaXMgZmllbGQgdmFsdWUuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSA8ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRwYXJhbWFycmF5W10gPSAkZmllbGRpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdsaWtlJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbWl0IHJlc3VsdHMgdG8gYWxsIG9mIHRoZSBpdGVtcyB0aGF0IGhhdmUgdGhpcyBmaWVsZCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlIExJS0UgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAnJScgLiAkZmllbGR2YWwgLiAnJSc7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ25vdGVxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbWl0IHJlc3VsdHMgdG8gYWxsIG9mIHRoZSBpdGVtcyB0aGF0IGhhdmUgdGhpcyBmaWVsZCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlICE9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRwYXJhbWFycmF5W10gPSAkZmllbGRpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdlcXVhbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW1pdCByZXN1bHRzIHRvIGFsbCBvZiB0aGUgaXRlbXMgdGhhdCBoYXZlIHRoaXMgZmllbGQgdmFsdWUuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkY291bnRqb2lucywgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGpvaW5zLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoaXNfc3RyaW5nKCRmaWVsZGlkKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkaWQgPSBzdHJfaXJlcGxhY2UoYXJyYXkoJ0lkJywgJ0RhdGVFbmQnLCAnRGF0ZScpLCBhcnJheSgnX2lkJywgJ19kYXRlX2VuZCcsICdfZGF0ZScpLCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbHRlciA9PSAnbnVsbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgSVMgTlVMTCknOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdub3RudWxsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyBJUyBOVUxMKSc7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2luJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHN3aXRoKCRmaWVsZHZhbCwgJywnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkdmFsID0gc3Vic3RyKCRmaWVsZHZhbCwgMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnYy4nIC4gJGZpZWxkaWQgLiAnIElOICgnIC4gJGZpZWxkdmFsIC4gJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdpbnNldCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRzd2l0aCgkZmllbGR2YWwsICcsJykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZHZhbCA9IHN1YnN0cigkZmllbGR2YWwsIDEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyBGSU5EX0lOX1NFVCgnIC4gJGRiLT5xc3RyKCRmaWVsZHZhbCkgLiAnLCBjLicgLiAkZmllbGRpZCAuICcpID4gMCc7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2xpa2UnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnIGMuJyAuICRmaWVsZGlkIC4gJyAgTElLRSAiJScgLiAkZmllbGRpZCAuICclIic7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2xlc3MnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnYy4nIC4gJGZpZWxkaWQgLiAnIDwgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGVzc2VxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyA8PSAgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnZ3JlYXRlcicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgPiAgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnZ3JlYXRlcmVxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyA+PSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdlcXVhbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdub3RlcXVhbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgIT0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAgLy8gcmVjdXINCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9kYXRlX2Zyb21fdG8nXSkpIHsNCg0KICAgICAgICBpZiAoJGRhdGVfZnJvbSAmJiAkZGF0ZV90bykgew0KDQogICAgICAgICAgICAkZGF5cyA9IHJvdW5kKCgkZGF0ZV90byAtICRkYXRlX2Zyb20pIC8gKDM2MDAgKiAyNCkpOw0KDQogICAgICAgICAgICBpZiAoJGRheXMgPiA2KSB7DQogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAiKChjLml0ZW1fZGF0ZSAgPiA/IEFORCBjLml0ZW1fZGF0ZSAgPCA/IEFORCAoYy5yZWN1cnNpdmUgPSAnJyBPUiBjLnJlY3Vyc2l2ZSBJUyBOVUxMKSkNCk9SIChjLnJlY3Vyc2l2ZSA9ICdkYWlseScgKSkiOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZnJvbSksICInIik7DQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV90byksICInIik7DQogICAgICAgICAgICAgICAgJGZpZWxkc1tdID0gImUudmFsdWUiOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICIoKGMuaXRlbV9kYXRlICA+ID8gQU5EIGMuaXRlbV9kYXRlICA8ID8gQU5EIChjLnJlY3Vyc2l2ZSA9ICcnIE9SIGMucmVjdXJzaXZlIElTIE5VTEwpKQ0KICAgICAgICAgICAgICAgICAgT1IgKGMucmVjdXJzaXZlID0gJ2RhaWx5JyAgDQpBTkQgKCgNCg0KSUYoPz4/LA0KSUYoZS52YWx1ZSA+PSA/IE9SIGUgLnZhbHVlIDw9ID8sMSwwKQ0KLElGKGUudmFsdWUgPj0gPyBBTkQgZSAudmFsdWUgPD0gPywxLDApDQopIA0KDQpBTkQgSUYoZS52YWx1ZSA9ID8sIElGKERBVEVfRk9STUFUKGMuaXRlbV9kYXRlLCclSDolaScpID4gPywxLDApLDEpIA0KQU5EIElGKGUudmFsdWUgPSA/LCBJRihEQVRFX0ZPUk1BVChjLml0ZW1fZGF0ZSwnJUg6JWknKSA8ID8sMSwwKSwxKSkNCikgICAgICAgICAgICAgICAgICANCikpIjsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX2Zyb20pLCAiJyIpOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfdG8pLCAiJyIpOw0KDQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IGRhdGUoJ3cnLCAkZGF0ZV9mcm9tKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX3RvKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX2Zyb20pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCd3JywgJGRhdGVfdG8pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCd3JywgJGRhdGVfZnJvbSk7DQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IGRhdGUoJ3cnLCAkZGF0ZV90byk7DQoNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX2Zyb20pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCdIOmknLCAkZGF0ZV9mcm9tKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX3RvKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgnSDppJywgJGRhdGVfdG8pOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW1fZXh0cmEgZSBPTiBlLml0ZW1faWQgPSBjLml0ZW1faWQnOw0KICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtX2V4dHJhIGUgT04gZS5pdGVtX2lkID0gYy5pdGVtX2lkJzsNCg0KICAgICAgICAgICAgLy8kZmllbGRzW10gPSAiSUYoYy5yZWN1cnNpdmUgPSAnJyBPUiBjLnJlY3Vyc2l2ZSBJUyBOVUxMLCBkYXRlX2Zvcm1hdChjLml0ZW1fZGF0ZSwgJyVZLSVtLSVkICVIOiVpJyksIENPTkNBVChkYXRlX2Zvcm1hdChOT1coKSArIElOVEVSVkFMIChlLnZhbHVlLT8pIERBWSwgJyVZLSVtLSVkJyksJyAnLGRhdGVfZm9ybWF0KGMuaXRlbV9kYXRlLCclSDolaScpKSkgQVMgZGF0ZV9vdXQsIGUudmFsdWUiOw0KICAgICAgICAgICAgLy9hcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCBkYXRlKCd3JywgdGltZSgpKSk7DQogICAgICAgICAgICAkZmllbGRzW10gPSAiZS52YWx1ZSxDT05DQVQoZGF0ZV9mb3JtYXQoPyArIElOVEVSVkFMIElGKGUudmFsdWUgPCA/LCAoNy0/KSArIGUudmFsdWUsIGUudmFsdWUtPykgREFZLCclWS0lbS0lZCcpLCcgJyxkYXRlX2Zvcm1hdChjLml0ZW1fZGF0ZSwnJUg6JWknKSkgYXMgZGF0ZV9vdXQiOw0KDQogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCBkYXRlKCd3JywgJGRhdGVfZnJvbSkpOw0KICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgZGF0ZSgndycsICRkYXRlX2Zyb20pKTsNCiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksIGRhdGUoJ3cnLCAkZGF0ZV9mcm9tKSk7DQogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZnJvbSksICInIikpOw0KDQogICAgICAgICAgICAvKiAkd2hlcmUyW10gPSAnZGF0ZV9vdXQgID4gPyBBTkQgZGF0ZV9vdXQgPCA/JzsNCiAgICAgICAgICAgICAgJHBhcmFtYXJyYXkyW10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZnJvbSksICInIik7DQogICAgICAgICAgICAgICRwYXJhbWFycmF5MltdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX3RvKSwgIiciKTsgKi8NCg0KICAgICAgICAgICAgJHNvcnRieSA9ICdkYXRlX291dCc7DQogICAgICAgIH0NCiAgICAgICAgJGdyb3VwYnkgPSAnIEdST1VQIEJZIGMuYWN0aXZlICc7DQogICAgfSBlbHNlIHsNCg0KICAgICAgICBpZiAoJGRhdGVfZnJvbSkgew0KICAgICAgICAgICAgJHdoZXJlW10gPSAiIGMuaXRlbV9kYXRlICA+ID8iOw0KICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9mcm9tKSwgIiciKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgkZGF0ZV90bykgew0KICAgICAgICAgICAgJHdoZXJlW10gPSAiIGMuaXRlbV9kYXRlICA8ID8iOw0KICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV90byksICInIik7DQogICAgICAgIH0NCiAgICB9DQoNCg0KICAgIGlmIChpc1NldCgkcGFyYW1zWyJkYXRlX3N0YXJ0Il0pKSB7DQoNCiAgICAgICAgJHdoZXJlW10gPSAiIGMuaXRlbV9kYXRlIDwgTk9XKCkiOw0KICAgIH0NCg0KICAgIGlmIChpc1NldCgkcGFyYW1zWyJkYXRlX2VuZCJdKSkgew0KICAgICAgICAkd2hlcmVbXSA9ICIgYy5pdGVtX2RhdGVfZW5kID4gTk9XKCkiOw0KICAgIH0NCg0KDQogICAgJHF1ZXJ5ID0gc3RyX3JlcGxhY2UoJzxGSUVMRFM+JywgaW1wbG9kZSgnLCcsICRmaWVsZHMpLCAkcXVlcnkpOw0KICAgICRxdWVyeTIgPSBzdHJfcmVwbGFjZSgnPEZJRUxEUz4nLCBpbXBsb2RlKCcsJywgJGZpZWxkcyksICRxdWVyeTIpOw0KDQogICAgaWYgKGNvdW50KCRqb2lucykpIHsNCiAgICAgICAgJHF1ZXJ5IC49ICcgTEVGVCBKT0lOICcgLiBpbXBsb2RlKCcgTEVGVCBKT0lOICcsICRqb2lucyk7DQogICAgfQ0KICAgIGlmIChjb3VudCgkY291bnRqb2lucykpIHsNCiAgICAgICAgJHF1ZXJ5MiAuPSAnIExFRlQgSk9JTiAnIC4gaW1wbG9kZSgnIExFRlQgSk9JTiAnLCAkY291bnRqb2lucyk7DQogICAgfQ0KICAgICRxdWVyeSA9ICRxdWVyeSAuICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJHdoZXJlKTsNCiAgICAkcXVlcnkyID0gJHF1ZXJ5MiAuICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJHdoZXJlKTsNCg0KICAgIGlmICghZW1wdHkoJHdoZXJlMikpIHsNCiAgICAgICAgJHF1ZXJ5ID0gJyBTRUxFQ1QgKiBGUk9NICgnIC4gJHF1ZXJ5IC4gJykgdCc7DQogICAgICAgICRxdWVyeTIgPSAnIFNFTEVDVCAqIEZST00gKCcgLiAkcXVlcnkgLiAnKSB0JzsNCiAgICAgICAgJHF1ZXJ5ID0gJHF1ZXJ5IC4gJyBXSEVSRSAnIC4gaW1wbG9kZSgnIEFORCAnLCAkd2hlcmUyKTsNCiAgICAgICAgJHF1ZXJ5MiA9ICRxdWVyeTIgLiAnIFdIRVJFICcgLiBpbXBsb2RlKCcgQU5EICcsICR3aGVyZTIpOw0KICAgIH0NCg0KICAgICRwYXJhbWFycmF5ID0gYXJyYXlfbWVyZ2UoJHBhcmFtYXJyYXksICRwYXJhbWFycmF5Mik7DQoNCg0KDQoNCiAgICBpZiAoJHNvcnR0eXBlID09ICcnKSB7DQogICAgICAgICRxdWVyeSAuPSAiIE9SREVSIEJZICIgLiAkc29ydGJ5IC4gIiAiIC4gJHNvcnRvcmRlcjsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcXVlcnkgLj0gJyBPUkRFUiBCWSBDQVNUKCcgLiAkc29ydGJ5IC4gJyBBUyAnIC4gJHNvcnR0eXBlIC4gJykgJyAuICRzb3J0b3JkZXI7DQogICAgfQ0KDQoNCi8vIEV4ZWN1dGUgdGhlIFF1ZXJpZXMNCiAgICAkdG1wX2lkID0gJ2MnIC4gbWQ1KCRtb2QtPkdldE5hbWUoKSAuICRxdWVyeTIgLiBzZXJpYWxpemUoJHBhcmFtcykgLiBzZXJpYWxpemUoJHBhcmFtYXJyYXkpIC4gJHJldHVybmlkKTsNCiAgICAkY291bnQgPSBjbXNfdXRpbHM6OmdldF9hcHBfZGF0YSgkdG1wX2lkKTsNCiAgICBpZiAoISRjb3VudCkgew0KICAgICAgICBpZiAoJGdyb3VwYnkpDQogICAgICAgICAgICAkcXVlcnkyIC49ICRncm91cGJ5Ow0KICAgICAgICAkY291bnQgPSAkZGItPkdldE9uZSgkcXVlcnkyLCAkcGFyYW1hcnJheSk7DQogICAgICAgIC8vIHJldHVybiBmaXJzdCByb3cNCiAgICAgICAgaWYgKGlzU2V0KCRwYXJhbXNbIm9uZWNvdW50Il0pKSB7DQogICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1sib25lY291bnQiXSwgJGNvdW50KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCR0bXBfaWQsICRjb3VudCk7DQogICAgfQ0KDQogICAgLy8kdG1wX2lkID0gbWQ1KCRtb2QtPkdldE5hbWUoKSAuIG1kNSgkcXVlcnkpIC4gaW1wbG9kZSgnXycsICRwYXJhbWFycmF5KSAuIGltcGxvZGUoJ18nLCAkcGFyYW1zKSAuICRsaW1pdCAuICRzdGFydGVsZW1lbnQgLiAncmVzdWx0cycpOw0KICAgICR0bXBfaWQgPSAnbScgLiBtZDUoJG1vZC0+R2V0TmFtZSgpIC4gJHF1ZXJ5IC4gc2VyaWFsaXplKCRwYXJhbXMpIC4gc2VyaWFsaXplKCRwYXJhbWFycmF5KSAuICRyZXR1cm5pZCk7DQogICAgJGRicmVzdWx0ID0gY21zX3V0aWxzOjpnZXRfYXBwX2RhdGEoJHRtcF9pZCk7DQogICAgaWYgKCEkZGJyZXN1bHQpIHsNCiAgICAgICAgJHBhcmFtYXJyYXkgPSBhcnJheV9tZXJnZSgkcGFyYW1hcnJheXRtcCwgJHBhcmFtYXJyYXkpOw0KICAgICAgICAkcXVlcnkgLj0gJyBMSU1JVCAnIC4gJHN0YXJ0ZWxlbWVudCAuICcsJyAuICRsaW1pdDsNCiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5HZXRBbGwoJHF1ZXJ5LCAkcGFyYW1hcnJheSk7DQogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCR0bXBfaWQsICRkYnJlc3VsdCk7DQogICAgfQ0KfQ0KDQovLyBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBwYWdlcw0KJG5wYWdlcyA9IGludHZhbCgkY291bnQgLyAkbGltaXQpOw0KaWYgKCRjb3VudCAlICRsaW1pdCAhPSAwKQ0KICAgICRucGFnZXMrKzsNCg0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KZm9yZWFjaCAoJGRicmVzdWx0IGFzICRyb3cpIHsNCiAgICAkb25lcm93ID0gY2dlX2FycmF5Ojp0b19vYmplY3QoJHJvdyk7DQoNCiAgICBpZiAoZW1wdHkoJHJvd1sidXJsIl0pID09IGZhbHNlKSB7DQogICAgICAgICRwcmV0dHl1cmwgPSAkcm93WyJ1cmwiXTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcHJldHR5dXJsID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJldHR5X3VybCgkdGhpcywgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJlZml4KCRtb2QpLCAkcm93WydpdGVtX2lkJ10sICRyb3dbJ2FsaWFzJ10sICgkZGVmYXVsdF9kZXRhaWxwYWdlID09IC0xICYmICFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAoaXNTZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSA/ICRkZXRhaWxwYWdlIDogJycgKSksICRkZXRhaWx0ZW1wbGF0ZSk7DQogICAgfQ0KDQogICAgJG9uZXJvdy0+dXJsID0gJG9uZXJvdy0+bGluayA9ICRtb2QtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2RldGFpbCcsICcnLCBhcnJheSgnaXRlbV9pZCcgPT4gJHJvd1snaXRlbV9pZCddLCAnZGV0YWlsdGVtcGxhdGUnID0+ICRkZXRhaWx0ZW1wbGF0ZSksICcnLCB0cnVlLCAkaW5saW5lLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpOw0KICAgICRvbmVyb3ctPmZpbGVfbG9jYXRpb24gPSBnZW5lcmF0b3JfdG9vbHM6OmZpbGVfbG9jYXRpb24oJHRoaXMsICRyb3cpOw0KDQogICAgLy8gYWRkIGN1c3RvbSBmaWVsZHMNCiAgICAkZmllbGRkZWZzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY29zdHVtX2ZpZWxkX2RlZigkbW9kLCAkcm93WydpdGVtX2lkJ10sIHRydWUpOw0KICAgICRmaWVsZHMgPSBhcnJheSgpOw0KICAgIGZvcmVhY2ggKCRmaWVsZGRlZnMgYXMgJG9uZWRlZikgew0KICAgICAgICBpZiAoZW1wdHkoJG9uZWRlZlsiYWxpYXMiXSkgPT0gZmFsc2UgJiYgaW5fYXJyYXkoJG9uZWRlZlsiYWxpYXMiXSwgZ2VuZXJhdG9yX3Rvb2xzOjokZmllbGRzX2Jsb2NrbGlzdCkgPT0gZmFsc2UpIHsNCiAgICAgICAgICAgICRvbmVyb3ctPiRvbmVkZWZbImFsaWFzIl0gPSAkb25lZGVmWyJ2YWx1ZSJdOw0KICAgICAgICB9DQogICAgfQ0KICAgICRvbmVyb3ctPmZpZWxkcyA9ICRmaWVsZGRlZnM7DQogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7DQogICAgJGl0ZW1zYXJyYXlbXSA9ICRyb3c7DQp9DQoNCg0KDQovLyByZXR1cm4gZmlyc3Qgcm93DQppZiAoaXNTZXQoJHBhcmFtc1sib25lcm93Il0pKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbIm9uZXJvdyJdLCAoaXNzZXQoJGVudHJ5YXJyYXlbMF0pID8gJGVudHJ5YXJyYXlbMF0gOiAnJykpOw0KICAgIHJldHVybjsNCn0NCg0KLy9yZXR1cm4gIGFsbCByZXN1bHRzDQppZiAoaXNTZXQoJHBhcmFtc1siYWxscm93Il0pKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbImFsbHJvdyJdLCAkZW50cnlhcnJheSk7DQogICAgcmV0dXJuOw0KfQ0KDQovLyByZXR1cm4gaXRlbXMgZm9yIG1vZHVsZQ0KaWYgKGlzU2V0KCRwYXJhbXNbIml0ZW1zIl0pICYmICRwYXJhbXNbIml0ZW1zIl0gPT0gdHJ1ZSkgew0KICAgIGdlbmVyYXRvcl90b29sczo6JGl0ZW1zID0gJGVudHJ5YXJyYXk7DQogICAgcmV0dXJuOw0KfQ0KDQovLw0KLy8gR2l2ZSBldmVyeXRoaW5nIHRvIHNtYXJ0eQ0KLy8NCg0KZm9yZWFjaCAoJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KICAgIGlmICgka2V5ID09ICdtYWN0JyB8fCAka2V5ID09ICdhY3Rpb24nKQ0KICAgICAgICBjb250aW51ZTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3BhcmFtXycgLiAka2V5LCAkdmFsdWUpOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ21vZHVsZXVybCcsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgJ3Rlc3QnLCAkcGFyYW1zLCAnJywgdHJ1ZSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRlbnRyeWFycmF5KTsNCiRzbWFydHktPmFzc2lnbigndG90YWxjb3VudCcsICRjb3VudCk7DQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7DQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1vbnBhZ2UnLCAoKCRwYWdlIC0gMSkgKiAkbGltaXQpICsgY291bnQoJGVudHJ5YXJyYXkpKTsNCiRzbWFydHktPmFzc2lnbigncGFnZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygncGFnZScpKTsNCiRzbWFydHktPmFzc2lnbignb2Z0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ29mJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwYWdlY291bnQnLCAkbnBhZ2VzKTsNCiRzbWFydHktPmFzc2lnbignY3VycGFnZScsICRwYWdlKTsNCmlmICgkcGFnZSA9PSAxKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaXJzdGxpbmsnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmlyc3RwYWdlJykpOw0KICAgICRzbWFydHktPmFzc2lnbigncHJldmxpbmsnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJldnBhZ2UnKSk7DQp9IGVsc2Ugew0KICAgICRwYXJtcyA9ICRwYXJhbXM7DQogICAgJHBhcm1zWydwYWdlJ10gPSAxOw0KICAgICRzbWFydHktPmFzc2lnbignZmlyc3RsaW5rJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygnZmlyc3RwYWdlJyksICRwYXJtcywgJycsIGZhbHNlLCAkaW5saW5lKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaXJzdHVybCcsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpcnN0cGFnZScpLCAkcGFybXMsICcnLCB0cnVlLCAkaW5saW5lKSk7DQogICAgJHBhcm1zWydwYWdlJ10gPSAkcGFnZSAtIDE7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdwcmV2bGluaycsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ3ByZXZwYWdlJyksICRwYXJtcywgJycsIGZhbHNlLCAkaW5saW5lKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdwcmV2dXJsJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygncHJldnBhZ2UnKSwgJHBhcm1zLCAnJywgdHJ1ZSwgJGlubGluZSkpOw0KfQ0KaWYgKCRwYWdlID09ICRucGFnZXMpIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2xhc3RsaW5rJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2xhc3RwYWdlJykpOw0KICAgICRzbWFydHktPmFzc2lnbignbmV4dGxpbmsnLCBnZW5lcmF0b3IoKS0+TGFuZygnbmV4dHBhZ2UnKSk7DQp9IGVsc2Ugew0KICAgICRwYXJtcyA9ICRwYXJhbXM7DQogICAgJHBhcm1zWydwYWdlJ10gPSAkbnBhZ2VzOw0KICAgICRzbWFydHktPmFzc2lnbignbGFzdGxpbmsnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdsYXN0cGFnZScpLCAkcGFybXMsICcnLCBmYWxzZSwgJGlubGluZSkpOw0KICAgICRzbWFydHktPmFzc2lnbignbGFzdHVybCcsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ2xhc3RwYWdlJyksICRwYXJtcywgJycsIHRydWUsICRpbmxpbmUpKTsNCiAgICAkcGFybXNbJ3BhZ2UnXSA9ICRwYWdlICsgMTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ25leHRsaW5rJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygnbmV4dHBhZ2UnKSwgJHBhcm1zLCAnJywgZmFsc2UsICRpbmxpbmUpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ25leHR1cmwnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCduZXh0cGFnZScpLCAkcGFybXMsICcnLCB0cnVlLCAkaW5saW5lKSk7DQp9DQoNCi8vDQovLyBQcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KLy8NCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRoZXRlbXBsYXRlKTsNCg0KIw0KIyBFT0YNCiMNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KLy8gdG9wIG5hdg0KaWYgKCRtb2QtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSB7DQoNCiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgZmxvYXQ6cmlnaHQ7IHdpZHRoOiA0MCU7Ij4nOw0KICAgIGVjaG8gJG1vZC0+Q3JlYXRlSW1hZ2VMaW5rKCRpZCwgJ2FkbWluX2ZpZWxkcycsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmcycpLCAnaWNvbnMvdG9wZmlsZXMvc2l0ZWFkbWluLmdpZicsIGFycmF5KCksICcnLCAnJywgZmFsc2UpOw0KICAgIGVjaG8gJG1vZC0+Q3JlYXRlSW1hZ2VMaW5rKCRpZCwgJ2FkbWluX3RlbXBsYXRlcycsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ3RlbXBsYXRlcycpLCAnaWNvbnMvdG9wZmlsZXMvdGVtcGxhdGUuZ2lmJywgYXJyYXkoKSwgJycsICcnLCBmYWxzZSk7DQogICAgZWNobyAnPC9kaXY+JzsNCn0NCg0KJG1vZHVsZSA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlKCRtb2QtPkdldE5hbWUoKSk7DQokYXR0YWNoID0gZ2VuZXJhdG9yX29wdHM6OmdldF9hdHRhY2hfbW9kdWxlcygkbW9kdWxlWyJhdHRhY2giXSk7DQppZiAoJGF0dGFjaCkgew0KICAgICRhdHRhY2htb2R1bGVzID0gZXhwbG9kZSgnLCcsICRhdHRhY2gpOw0KICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyBmbG9hdDpsZWZ0OyB3aWR0aDogNTAlOyI+JzsNCiAgICBmb3JlYWNoICgkYXR0YWNobW9kdWxlcyBhcyAkYXR0YWNobW9kdWxlKSB7DQogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUodHJpbSgkYXR0YWNobW9kdWxlKSk7DQogICAgICAgIGlmICgkbW9kdWxlKSB7DQogICAgICAgICAgICBlY2hvICRtb2R1bGUtPkNyZWF0ZUltYWdlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2ZyaWVuZGx5bmFtZScpLCAnaWNvbnMvdG9wZmlsZXMvc2hvcnRjdXQuZ2lmJywgYXJyYXkoKSwgJycsICcnLCBmYWxzZSk7DQogICAgICAgIH0NCiAgICB9DQogICAgZWNobyAnPC9kaXY+JzsNCn0NCg0KDQplY2hvICc8YnIgc3R5bGU9ImNsZWFyOmJvdGgiIC8+JzsNCg0KDQppZiAoaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSkgew0KICAgIGVjaG8gJG1vZC0+U2hvd01lc3NhZ2UoZ2VuZXJhdG9yKCktPkxhbmcoJHBhcmFtc1snbWVzc2FnZSddKSk7DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWydlcnJvcnMnXSkgJiYgY291bnQoJHBhcmFtc1snZXJyb3JzJ10pKSB7DQogICAgZWNobyAkbW9kLT5TaG93RXJyb3JzKCRwYXJhbXNbJ2Vycm9ycyddKTsNCn0NCg0KDQplY2hvICRtb2QtPlN0YXJ0VGFiSGVhZGVycygpOw0KZWNobyAkbW9kLT5TZXRUYWJIZWFkZXIoJ2l0ZW10YWInLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3BsdXJhbCcsICcnKSk7DQoNCmlmICgkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9jYXRlZ29yaWVzJykpIHsNCiAgICBlY2hvICRtb2QtPlNldFRhYkhlYWRlcignY2F0ZWdvcnl0YWInLCBnZW5lcmF0b3IoKS0+TGFuZygnY2F0ZWdvcmllcycpKTsNCn0NCg0KaWYgKCRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X29wdGlvbicpKSB7DQogICAgZWNobyAkbW9kLT5TZXRUYWJIZWFkZXIoJ29wdGlvbnRhYicsIGdlbmVyYXRvcigpLT5MYW5nKCdvcHRpb25zJykpOw0KfQ0KDQplY2hvICRtb2QtPkVuZFRhYkhlYWRlcnMoKTsNCmVjaG8gJG1vZC0+U3RhcnRUYWJDb250ZW50KCk7DQoNCmVjaG8gJG1vZC0+U3RhcnRUYWIoJ2l0ZW10YWInLCAkcGFyYW1zKTsNCmluY2x1ZGUgZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLmFkbWluX2l0ZW10YWIucGhwJzsNCmVjaG8gJG1vZC0+RW5kVGFiKCk7DQoNCmlmICgkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9jYXRlZ29yaWVzJykpIHsNCiAgICBlY2hvICRtb2QtPlN0YXJ0VGFiKCdjYXRlZ29yeXRhYicsICRwYXJhbXMpOw0KICAgIGluY2x1ZGUgZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLmFkbWluX2NhdGVnb3J5dGFiLnBocCc7DQogICAgZWNobyAkbW9kLT5FbmRUYWIoKTsNCn0NCg0KaWYgKCRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X29wdGlvbicpKSB7DQoNCiAgICBlY2hvICRtb2QtPlN0YXJ0VGFiKCdvcHRpb250YWInLCAkcGFyYW1zKTsNCiAgICBpbmNsdWRlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9mdW5jdGlvbi5hZG1pbl9vcHRpb250YWIucGhwJzsNCiAgICBlY2hvICRtb2QtPkVuZFRhYigpOw0KfQ0KDQplY2hvICRtb2QtPkVuZFRhYkNvbnRlbnQoKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.detail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRpdGVtID0gJyc7DQokZGVmYXVsdF9kZXRhaWxwYWdlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAnJyk7DQokZGV0YWlscGFnZSA9ICRkZWZhdWx0X2RldGFpbHBhZ2U7DQppZiAoIWlzU2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkgJiYgaXNTZXQoJHBhcmFtc1sicmV0dXJuaWQiXSkpDQogICAgJHBhcmFtc1siZGV0YWlscGFnZSJdID0gJHBhcmFtc1sicmV0dXJuaWQiXTsNCiRkZXRhaWxwYWdlID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6ZGV0YWlscGFnZSgkcGFyYW1zLCAkZGV0YWlscGFnZSk7DQppZiAoJGRldGFpbHBhZ2UgPT0gJGRlZmF1bHRfZGV0YWlscGFnZSkNCiAgICB1bnNldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOw0KDQoNCi8vIHRlbXBsYXRlDQokZGV0YWlsdGVtcGxhdGUgPSAkdGhldGVtcGxhdGUgPSAnZGV0YWlsX3RlbXBsYXRlJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfZGV0YWlsX3RlbXBsYXRlJyk7DQppZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ2RldGFpbHRlbXBsYXRlJ10pKSB7DQogICAgJGRldGFpbHRlbXBsYXRlID0gJHRoZXRlbXBsYXRlID0gJ2RldGFpbF90ZW1wbGF0ZScgLiAkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddOw0KfQ0KDQokaW5saW5lID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGlzcGxheV9pbmxpbmUnLCBmYWxzZSk7DQoNCmlmIChpc3NldCgkcGFyYW1zWydpbmxpbmUnXSkpIHsNCiAgICAkaW5saW5lID0gJHBhcmFtc1snaW5saW5lJ107DQp9DQoNCmlmICgkaWQgPT0gJ19wcmV2aWV3XycgJiYgaXNzZXQoJF9TRVNTSU9OWydpdGVtX3ByZXZpZXcnXSkgJiYgaXNzZXQoJHBhcmFtc1sncHJldmlldyddKSkgew0KICAgIC8vIHNlZSBpZiBvdXIgZGF0YSBtYXRjaGVzLg0KICAgIGlmIChtZDUoc2VyaWFsaXplKCRfU0VTU0lPTlsnaXRlbV9wcmV2aWV3J10pKSA9PSAkcGFyYW1zWydwcmV2aWV3J10pIHsNCiAgICAgICAgJGZuYW1lID0gVE1QX0NBQ0hFX0xPQ0FUSU9OIC4gJy8nIC4gJF9TRVNTSU9OWydpdGVtX3ByZXZpZXcnXVsnZm5hbWUnXTsNCiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmbmFtZSkgJiYgKG1kNV9maWxlKCRmbmFtZSkgPT0gJF9TRVNTSU9OWydpdGVtX3ByZXZpZXcnXVsnY2hlY2tzdW0nXSkpIHsNCiAgICAgICAgICAgICRyb3cgPSAkcGFyYW1zID0gdW5zZXJpYWxpemUoZmlsZV9nZXRfY29udGVudHMoJGZuYW1lKSk7DQogICAgICAgICAgICAkdG1wX2lkID0gJ2QnIC4gbWQ1KCRtb2QtPkdldE5hbWUoKSAuIHNlcmlhbGl6ZSgkcGFyYW1zIC4gJHJvdykpOw0KICAgICAgICAgICAgJGl0ZW1zID0gZ2VuZXJhdG9yX29wdHM6OmZpbGxfaXRlbV9mcm9tX2Zvcm1wYXJhbXMoJG1vZCwgJHJvdywgJHBhcmFtcyk7DQogICAgICAgICAgICAkdG1wX2lkMiA9ICR0bXBfaWQgLiAnZCcgLiAkcm93WydpdGVtX2lkJ107DQogICAgICAgICAgICBjbXNfdXRpbHM6OnNldF9hcHBfZGF0YSgkdG1wX2lkMiwgZ2VuZXJhdG9yX29wdHM6OiRmaWVsZGRlZnMpOw0KICAgICAgICB9DQogICAgfQ0KfSBlbHNlIHsNCg0KLy8gU0VMRUNUIEZST00NCiAgICAkcXVlcnkgPSAnU0VMRUNUIEEuKiwgQi5jYXRlZ29yeV9pZCwgQi5jYXRlZ29yeV9uYW1lLCBCLmNhdGVnb3J5X2FsaWFzIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIEEnOw0KLy8gTEVGVCBKT0lODQogICAgJHF1ZXJ5IC49ICcgTEVGVCBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBCIE9OIEEuY2F0ZWdvcnlfaWQgPSBCLmNhdGVnb3J5X2lkJzsNCi8vIFdIRVJFDQogICAgJHF1ZXJ5IC49ICcgV0hFUkUgQS5hY3RpdmUgPSAxIEFORCBpdGVtX2lkID0gPyBMSU1JVCAxJzsNCiAgICAkdG1wX2lkID0gJ2QnIC4gbWQ1KCRtb2QtPkdldE5hbWUoKSAuICRxdWVyeSAuIHNlcmlhbGl6ZSgkcGFyYW1zKSAuICRyZXR1cm5pZCk7DQogICAgJHJvdyA9IGNtc191dGlsczo6Z2V0X2FwcF9kYXRhKCR0bXBfaWQpOw0KfQ0KDQoNCg0KaWYgKCEkcm93KSB7DQogICAgJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJHBhcmFtc1snaXRlbV9pZCddKSk7DQogICAgY21zX3V0aWxzOjpzZXRfYXBwX2RhdGEoJHRtcF9pZCwgJHJvdyk7DQp9DQppZiAoISRyb3cpIHsNCiAgICBpZiAoaXNTZXQoJHBhcmFtc1sib25lcm93Il0pKSB7DQogICAgICAgICRzbWFydHktPmFzc2lnbigkcGFyYW1zWyJvbmVyb3ciXSwgJycpOw0KICAgIH0NCiAgICByZXR1cm47DQp9DQoNCg0KDQokaXRlbSA9IGNnZV9hcnJheTo6dG9fb2JqZWN0KCRyb3cpOw0KJGl0ZW0tPmZpbGVfbG9jYXRpb24gPSBnZW5lcmF0b3JfdG9vbHM6OmZpbGVfbG9jYXRpb24oJG1vZCwgJHJvdyk7DQovKiAkaXRlbS0+aXRlbV9pZCA9ICRyb3dbJ2l0ZW1faWQnXTsNCiAgJGl0ZW0tPnRpdGxlID0gJHJvd1sndGl0bGUnXTsNCiAgJGl0ZW0tPmNhdGVnb3J5X25hbWUgPSAkcm93WydjYXRlZ29yeV9uYW1lJ107DQogICRpdGVtLT5jYXRlZ29yeV9hbGlhcyA9ICRyb3dbJ2NhdGVnb3J5X2FsaWFzJ107ICovDQoNCi8vIGFkZCBjdXN0b20gZmllbGRzDQoNCiR0bXBfaWQyID0gJHRtcF9pZCAuICdkJyAuICRyb3dbJ2l0ZW1faWQnXTsNCiRmaWVsZGRlZnMgPSBjbXNfdXRpbHM6OmdldF9hcHBfZGF0YSgkdG1wX2lkMik7DQoNCmlmICghJGZpZWxkZGVmcykgew0KICAgICRmaWVsZGRlZnMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9jb3N0dW1fZmllbGRfZGVmKCRtb2QsJHJvd1snaXRlbV9pZCddKTsNCiAgICBjbXNfdXRpbHM6OnNldF9hcHBfZGF0YSgkdG1wX2lkMiwgJGZpZWxkZGVmcyk7DQp9DQoNCiRmaWVsZHMgPSBhcnJheSgpOw0KZm9yZWFjaCAoJGZpZWxkZGVmcyBhcyAka2V5ID0+ICRvbmVkZWYpIHsNCiAgICBpZiAoZW1wdHkoJG9uZWRlZlsiYWxpYXMiXSkgPT0gZmFsc2UgJiYgaW5fYXJyYXkoJG9uZWRlZlsiYWxpYXMiXSwgZ2VuZXJhdG9yX3Rvb2xzOjokZmllbGRzX2Jsb2NrbGlzdCkgPT0gZmFsc2UpIHsNCiAgICAgICAgJGl0ZW0tPiRvbmVkZWZbImFsaWFzIl0gPSAkb25lZGVmWyJ2YWx1ZSJdOw0KICAgIH0NCn0NCiRpdGVtLT5maWVsZHMgPSAkZmllbGRkZWZzOw0KJGl0ZW0tPmZpZWxkZGVmcyA9ICRmaWVsZGRlZnM7DQoNCmlmIChlbXB0eSgkcm93WyJ1cmwiXSkgPT0gZmFsc2UpIHsNCiAgICAkcHJldHR5dXJsID0gJHJvd1sidXJsIl07DQp9IGVsc2Ugew0KICAgICRwcmV0dHl1cmwgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9wcmV0dHlfdXJsKCR0aGlzLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9wcmVmaXgoJG1vZCksICRyb3dbJ2l0ZW1faWQnXSwgJHJvd1snYWxpYXMnXSwgKCRkZWZhdWx0X2RldGFpbHBhZ2UgPT0gLTEgJiYgIWlzU2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkgPyAkZGV0YWlscGFnZSA6IChpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAnJyApKSwgJGRldGFpbHRlbXBsYXRlKTsNCn0NCg0KDQokaXRlbS0+dXJsID0gJGl0ZW0tPmxpbmsgPSAkbW9kLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkcmV0dXJuaWQsICdkZXRhaWwnLCAnJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSwgJ2RldGFpbHRlbXBsYXRlJyA9PiAkZGV0YWlsdGVtcGxhdGUpLCAnJywgdHJ1ZSwgJGlubGluZSwgJycsIGZhbHNlLCAkcHJldHR5dXJsKTsNCg0KJHByZXR0eXVybCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZXR0eV91cmwoJHRoaXMsIGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZWZpeCgkbW9kKSAuICcvYycsICRyb3dbJ2NhdGVnb3J5X2lkJ10sICRyb3dbJ2NhdGVnb3J5X2FsaWFzJ10sICgkZGVmYXVsdF9kZXRhaWxwYWdlID09IC0xICYmICFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAnJyksICRjYXRlZ29yeXRlbXBsYXRlKTsNCiRpdGVtLT5jYXRlZ29yeV9saW5rID0gJGl0ZW0tPmNhdGVnb3J5X3VybCA9ICRtb2QtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2RlZmF1bHQnLCAnJywgYXJyYXkoJ2NhdGVnb3J5X2lkJyA9PiAkcm93WydjYXRlZ29yeV9pZCddLCAnY2F0ZWdvcnl0ZW1wbGF0ZScgPT4gJGNhdGVnb3J5dGVtcGxhdGUpLCAnJywgdHJ1ZSwgaXNTZXQoJHBhcmFtc1siaW5saW5lIl0pID8gMSA6IDAsICcnLCBmYWxzZSwgJHByZXR0eXVybCk7DQoNCg0KaWYgKGlzU2V0KCRwYXJhbXNbIm9uZXJvdyJdKSkgew0KICAgICRzbWFydHktPmFzc2lnbigkcGFyYW1zWyJvbmVyb3ciXSwgJGl0ZW0pOw0KICAgIHJldHVybjsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtJywgJGl0ZW0pOw0KDQoNCi8vDQovLyBQcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KLy8NCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRoZXRlbXBsYXRlKTsNCg0KLyoNCiAqIDwhLS10aXRsZV9wYXJhbTogeyR0aXRsZV9wYXJhbX0tLT4NCiAqLw0KaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ3RpdGxlX3BhcmFtX2Zvcl9jYWNoZScpKSB7DQogICAgJHNtYXJ0eV92YXJzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoKTsNCiAgICAkdGl0bGVzX2FycmF5ID0gZXhwbG9kZSgnLCcsICRtb2QtPkdldFByZWZlcmVuY2UoJ3RpdGxlX3BhcmFtX2Zvcl9jYWNoZScpKTsNCiAgICBmb3JlYWNoICgkdGl0bGVzX2FycmF5IGFzICR0aXRsZSkgew0KICAgICAgICAkdmFsdWUgPSAkc21hcnR5X3ZhcnNbJHRpdGxlXTsNCiAgICAgICAgaWYgKCR2YWx1ZSkgew0KICAgICAgICAgICAgZWNobyAiPCEtLSIgLiAkdGl0bGUgLiAiOiIgLiAkdmFsdWUgLiAiLS0+XG4iOw0KICAgICAgICB9DQogICAgfQ0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.fesubmit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vIG5vdGhpbmcKPz4K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.filter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy8NCi8vIFNldHVwDQovLw0KJHBhZ2VsaW1pdHMgPSBhcnJheSgnMicgPT4gMiwgJzUnID0+IDUsICcyNScgPT4gMjUsICcxMDAnID0+IDEwMCwgJzUwMCcgPT4gNTAwKTsNCiRzb3J0aXRlbXMgPSBhcnJheSgpOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnZGF0ZScpXSA9ICdpdGVtX2RhdGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnY3JlYXRlZGRhdGUnKV0gPSAnY3JlYXRlX2RhdGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnbW9kaWZpZWRkYXRlJyldID0gJ21vZGlmaWVkX2RhdGUnOw0KJHNvcnRvcmRlcnMgPSBhcnJheSgpOw0KJHNvcnRvcmRlcnNbZ2VuZXJhdG9yKCktPkxhbmcoJ2FzY2VuZGluZycpXSA9ICdhc2MnOw0KJHNvcnRvcmRlcnNbZ2VuZXJhdG9yKCktPkxhbmcoJ2Rlc2NlbmRpbmcnKV0gPSAnZGVzYyc7DQokaW5saW5lID0gaXNTZXQoJHBhcmFtc1siaW5saW5lIl0pID8gJHBhcmFtc1siaW5saW5lIl0gOiAwOw0KDQokaGllcmFyY2h5ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaGllcmFyY2h5JywgJycpOw0KJGNoaWxkcmVuID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2hpbGRyZW4nLCAwKTsNCiRwYWdlbGltaXQgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19wYWdlbGltaXQnLCAyNSk7DQokc29ydGJ5ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfc29ydGJ5JywgJ2l0ZW1fZGF0ZScpOw0KJHNvcnRvcmRlciA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3NvcnRvcmRlcicsICdkZXNjJyk7DQokZGF0ZV9mcm9tID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZGF0ZV9mcm9tJywgdGltZSgpIC0gKDM2MDAgKiAyNCAqIDcpKTsNCiRkYXRlX3RvID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZGF0ZV90bycsIHRpbWUoKSk7DQoNCg0KJGNhdGVnb3J5bGlzdCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2NhdGVnb3J5X2xpc3QoJG1vZCk7DQppZiAoJGlubGluZSkgew0KICAgICRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJG1vZC0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCAnZmlsdGVyJywgJHJldHVybmlkLCBhcnJheSgpLCAkaW5saW5lLCAnR0VUJykpOw0KfSBlbHNlIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICRtb2QtPkNHQ3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsIGFycmF5KCksICRpbmxpbmUsICdHRVQnKSk7DQp9DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCAkbW9kLT5DcmVhdGVGb3JtRW5kKCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9oaWVyYXJjaHknLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2lucHV0X2hpZXJhcmNoeScsICRjYXRlZ29yeWxpc3QsIC0xLCAkaGllcmFyY2h5KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NoaWxkcmVuJywgJG1vZC0+Q3JlYXRlSW5wdXRZZXNOb0Ryb3Bkb3duKCRpZCwgJ2lucHV0X2NoaWxkcmVuJywgJGNoaWxkcmVuKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NvcnRieScsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaW5wdXRfc29ydGJ5JywgJHNvcnRpdGVtcywgLTEsICRzb3J0YnkpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc29ydG9yZGVyJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9zb3J0b3JkZXInLCAkc29ydG9yZGVycywgLTEsICRzb3J0b3JkZXIpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfcGFnZWxpbWl0JywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9wYWdlbGltaXQnLCAkcGFnZWxpbWl0cywgLTEsICRwYWdlbGltaXQpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlX2Zyb20nLCAkZGF0ZV9mcm9tKTsNCiRzbWFydHktPmFzc2lnbignZGF0ZV90bycsICRkYXRlX3RvKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdWJtaXQnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkbW9kLT5MYW5nKCdzdWJtaXQnKSkpOw0KDQovLyBjdXN0b20gZmllbGRzDQokZmllbGRzX2Zvcl9maWx0ZXIgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9maWVsZF9kZWZzKCRtb2QsIG51bGwsIDEsIG51bGwpOw0KJGN1c3RvbV9mbGRzID0gYXJyYXkoMSk7DQokY3VzdG9tX2ZpZWxkc192YWx1ZXMgPSBhcnJheSgpOw0KZm9yZWFjaCAoJGZpZWxkc19mb3JfZmlsdGVyIGFzICRyb3cpIHsNCiAgICAkY3VzdG9tX2ZsZHNbJHJvd1snZmllbGRkZWZfaWQnXV0gPSAkcm93Ow0KICAgICRjdXN0b21fZmllbGRzX3ZhbHVlc1skcm93WydmaWVsZGRlZl9pZCddXSA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jdXN0b21maWVsZHMnIC4gJHJvd1snZmllbGRkZWZfaWQnXSwgJycpOw0KfQ0KDQoNCi8vIGdldCB0aGUgY3VzdG9tIGZpZWxkcw0KJGZpbHRlcnMgPSBuZXcgZ2VuZXJhdG9yX2ZpbHRlcnMoJGlkLCAkbW9kLCAnYWRtaW4nKTsNCiRjdXN0b21fZmxkcyA9ICRmaWx0ZXJzLT5wcm9jZXNzX2N1c3RvbV9maWVsZHMoYXJyYXkoKSwgJGN1c3RvbV9mbGRzKTsNCiRjdXN0b21fZmxkc19vYmogPSAkZmlsdGVycy0+Z2VuZXJhdGUoJGl0ZW1faWQsICRwYXJhbXMsICRjdXN0b21fZmllbGRzX3ZhbHVlcywgMSk7DQppZiAoaXNzZXQoJGN1c3RvbV9mbGRzX29iaikgJiYgY291bnQoJGN1c3RvbV9mbGRzX29iaikgPiAwKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdjdXN0b21fZmllbGRkZWYnLCAkY3VzdG9tX2ZsZHNfb2JqKTsNCn0NCg0KLy8gc21hcnR5IHBhcmFtcw0KZm9yZWFjaCAoJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KICAgIGlmICgka2V5ID09ICdtYWN0JyB8fCAka2V5ID09ICdhY3Rpb24nKQ0KICAgICAgICBjb250aW51ZTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3BhcmFtXycgLiAka2V5LCAkdmFsdWUpOw0KfQ0KDQoNCi8vIHRlbXBsYXRlDQokdGhldGVtcGxhdGUgPSAnZmlsdGVyX3RlbXBsYXRlJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfZmlsdGVyX3RlbXBsYXRlJyk7DQppZiAoaXNzZXQoJHBhcmFtc1snZmlsdGVydGVtcGxhdGUnXSkpIHsNCiAgICAkdGhldGVtcGxhdGUgPSAnZmlsdGVyX3RlbXBsYXRlJyAuICRwYXJhbXNbJ2ZpbHRlcnRlbXBsYXRlJ107DQp9DQoNCi8vDQovLyBQcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KLy8NCg0Kb2Jfc3RhcnQoKTsNCiRtb2QtPkRvQWN0aW9uKCdkZWZhdWx0JywgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOw0KJG91dHB1dCA9IG9iX2dldF9jb250ZW50cygpOw0Kb2JfZW5kX2NsZWFuKCk7DQokc21hcnR5LT5hc3NpZ24oJ3Jlc3VsdHMnLCAkb3V0cHV0KTsNCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRoZXRlbXBsYXRlKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_categorytab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCgojUHV0IHRvZ2V0aGVyIGEgbGlzdCBvZiBjdXJyZW50IGNhdGVnb3JpZXMuLi4KJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIE9SREVSIEJZIGhpZXJhcmNoeV9wb3NpdGlvbiI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKJHJvd2NsYXNzID0gJ3JvdzEnOwoKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CgogICAgJGRlcHRoID0gY291bnQocHJlZ19zcGxpdCgnL1wuLycsICRyb3dbJ2hpZXJhcmNoeSddKSk7CgogICAgJG9uZXJvdy0+aWQgPSAkcm93WydjYXRlZ29yeV9pZCddOwogICAgJG9uZXJvdy0+bmFtZSA9IHN0cl9yZXBlYXQoJyZuYnNwOyZndDsmbmJzcDsnLCAkZGVwdGggLSAxKSAuICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGNhdGVnb3J5JywgJHJldHVybmlkLCAkcm93WydjYXRlZ29yeV9uYW1lJ10sIGFycmF5KCdjYXRpZCcgPT4gJHJvd1snY2F0ZWdvcnlfaWQnXSkpOwoKICAgICRvbmVyb3ctPmVkaXRsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0Y2F0ZWdvcnknLCAkcmV0dXJuaWQsIGNtc21zKCktPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2NhdGlkJyA9PiAkcm93WydjYXRlZ29yeV9pZCddKSk7CiAgICAkb25lcm93LT5kZWxldGVsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZWxldGVjYXRlZ29yeScsICRyZXR1cm5pZCwgY21zbXMoKS0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2NhdGlkJyA9PiAkcm93WydjYXRlZ29yeV9pZCddKSwgZ2VuZXJhdG9yKCktPkxhbmcoJ2FyZXlvdXN1cmUnKSk7CgogICAgJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7CgogICAgKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3MgPSAicm93MiIgOiAkcm93Y2xhc3MgPSAicm93MSIpOwp9CgokbW9kLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJGVudHJ5YXJyYXkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCiNTZXR1cCBsaW5rcwokbW9kLT5zbWFydHktPmFzc2lnbignYWRkbGluaycsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGNhdGVnb3J5JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygnYWRkY2F0ZWdvcnknKSwgYXJyYXkoKSwgJycsIGZhbHNlLCBmYWxzZSwgJ2NsYXNzPSJwYWdlb3B0aW9ucyInKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdyZW9yZGVyJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9vcmRlcmNhdGVnb3J5JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygncmVvcmRlcicpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpKTsKCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdjYXRlZ29yeXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnY2F0ZWdvcnknKSk7CgojRGlzcGxheSB0ZW1wbGF0ZQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnY2F0ZWdvcnlsaXN0LnRwbCcpOwoKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_fielddeftab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkgcmV0dXJuOw0KJGFkbWludGhlbWUgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsNCg0KDQovLyBnZXQgZmllbGQgZGVmaW5pdGlvbnMgaW4gdXNlDQokdG1wID0gJGRiLT5HZXRBcnJheSgnU0VMRUNUIERJU1RJTkNUIGZpZWxkZGVmX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCcpOw0KJHVzZWRmaWVsZGRlZnMgPSBhcnJheSgpOw0KDQppZiAoaXNfYXJyYXkoJHRtcCkpIHsNCiAgICBmb3JlYWNoICgkdG1wIGFzICRyb3cpIHsNCiAgICAgICAgJHVzZWRmaWVsZGRlZnNbXSA9ICRyb3dbJ2ZpZWxkZGVmX2lkJ107DQogICAgfQ0KfQ0KDQovLyRwb3NpdGlvbiA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgbWF4KHBvc2l0aW9uKSBhcyBtYXhfcG9zaXRpb24gRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmJyk7DQokZmllbGRzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRfZGVmcygkbW9kKTsNCiRyb3djbGFzcyA9ICdyb3cxJzsNCiRlbnRyeWFycmF5ID0gYXJyYXkoKTsNCg0KZm9yZWFjaCAoJGZpZWxkcyBhcyAkcm93KSB7DQogICAgJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOw0KICAgICRvbmVyb3ctPmlkID0gJHJvd1snZmllbGRkZWZfaWQnXTsNCiAgICAkb25lcm93LT5uYW1lID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0ZmllbGRkZWYnLCAkcmV0dXJuaWQsICRyb3dbJ25hbWUnXSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10pKTsNCiAgICAkb25lcm93LT5hbGlhcyA9ICRyb3dbJ2FsaWFzJ107DQogICAgJG9uZXJvdy0+dHlwZSA9IGdlbmVyYXRvcigpLT5MYW5nKCRyb3dbJ3R5cGUnXSk7DQogICAgJG9uZXJvdy0+cmVxdWlyZWQgPSAkcm93WydyZXF1aXJlZCddOw0KICAgICRvbmVyb3ctPmZyb250ZW5kID0gJHJvd1snZnJvbnRlbmQnXTsNCiAgICAkb25lcm93LT5lZGl0dmlldyA9ICRyb3dbJ2VkaXR2aWV3J107DQogICAgJG9uZXJvdy0+ZmlsdGVyX2Zyb250ZW5kID0gJHJvd1snZmlsdGVyX2Zyb250ZW5kJ107DQogICAgJG9uZXJvdy0+ZmlsdGVyX2FkbWluID0gJHJvd1snZmlsdGVyX2FkbWluJ107DQogICAgJG9uZXJvdy0+c2VhcmNoYWJsZSA9ICRyb3dbJ3NlYXJjaGFibGUnXTsNCiAgICAkb25lcm93LT5wb3NpdGlvbiA9ICRyb3dbJ3Bvc2l0aW9uJ107DQoNCiAgICAvLyBtb3ZlIHVwDQogICAgaWYgKCRvbmVyb3ctPnBvc2l0aW9uID4gMSkgew0KICAgICAgICAkb25lcm93LT51cGxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX21vdmVmaWVsZGRlZicsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2Fycm93LXUuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3VwJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10sICdkaXInID0+J3VwJykpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRvbmVyb3ctPnVwbGluayA9ICcnOw0KICAgIH0NCg0KICAgIC8vIG1vdmUgZG93bg0KICAgLyogaWYgKCRwb3NpdGlvbiA+ICRvbmVyb3ctPnBvc2l0aW9uKSB7DQogICAgICAgICRvbmVyb3ctPmRvd25saW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9tb3ZlZmllbGRkZWYnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9hcnJvdy1kLmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdkb3duJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10sICdkaXInID0+J2Rvd24nKSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJG9uZXJvdy0+ZG93bmxpbmsgPSAnJzsNCiAgICB9Ki8NCg0KICAgICRvbmVyb3ctPmVkaXRsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0ZmllbGRkZWYnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10pKTsNCg0KICAgIC8vIG9ubHkgZGlzcGxheSBkZWxldGUgZmllbGQgZGVmaW5pdGlvbiBsaW5rIGlmIGZpZWxkIGRlZmluaXRpb24gaXMgbm90IGluIHVzZQ0KICAgICRvbmVyb3ctPmRlbGV0ZWxpbmsgPSAnJzsNCiAgICBpZiAoIWluX2FycmF5KCRyb3dbJ2ZpZWxkZGVmX2lkJ10sICR1c2VkZmllbGRkZWZzKSkgew0KICAgICAgICAkb25lcm93LT5kZWxldGVsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZWxldGVmaWVsZGRlZicsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10pLCBnZW5lcmF0b3IoKS0+TGFuZygnYXJleW91c3VyZScpKTsNCiAgICB9DQoNCiAgICAkZW50cnlhcnJheVtdID0gJG9uZXJvdzsNCiAgICAkcm93Y2xhc3MgPSAoJHJvd2NsYXNzID09ICdyb3cxJyA/ICdyb3cyJyA6ICdyb3cxJyk7DQp9DQoNCiRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgICRlbnRyeWFycmF5KTsNCiRzbWFydHktPmFzc2lnbignYWxpYXMnLCAgICAgZ2VuZXJhdG9yKCktPkxhbmcoJ2FsaWFzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCAgICAgY291bnQoJGVudHJ5YXJyYXkpKTsNCiRzbWFydHktPmFzc2lnbignYWRkbGluaycsICAgICAgICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGZpZWxkZGVmJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRmaWVsZGRlZicpLCAnJywgJycsICdzeXN0ZW1pY29uJykgLiAnICcgLiBnZW5lcmF0b3IoKS0+TGFuZygnYWRkZmllbGRkZWYnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmaWVsZHRleHQnLCAgICAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0eXBldGV4dCcsICAgICAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX3R5cGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ21heGxlbmd0aHRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfbWF4X2xlbmd0aCcpKTsNCiRzbWFydHktPmFzc2lnbigncmVxdWlyZWR0ZXh0JywgIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9yZXF1aXJlZCcpKTsNCiRzbWFydHktPmFzc2lnbignc2VhcmNoYWJsZXRleHQnLCAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX3NlYXJjaGFibGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Zyb250ZW5kdGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZnJvbnRlbmQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VkaXR2aWV3dGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZWRpdHZpZXcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ZpbHRlcl9mcm9udGVuZHRleHQnLCAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX2ZpbHRlcl9mcm9udGVuZCcpKTsNCiRzbWFydHktPmFzc2lnbignZmlsdGVyX2FkbWludGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZmlsdGVyX2FkbWluJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZWN0aW9uJywgICdpdGVtcycpOw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnZmllbGRkZWZ0YWIudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_fielddeftab_categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkgcmV0dXJuOw0KJGFkbWludGhlbWUgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsNCg0KDQovLyBnZXQgZmllbGQgZGVmaW5pdGlvbnMgaW4gdXNlDQokdG1wID0gJGRiLT5HZXRBcnJheSgnU0VMRUNUIERJU1RJTkNUIGZpZWxkZGVmX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCcpOw0KJHVzZWRmaWVsZGRlZnMgPSBhcnJheSgpOw0KDQppZiAoaXNfYXJyYXkoJHRtcCkpIHsNCiAgICBmb3JlYWNoICgkdG1wIGFzICRyb3cpIHsNCiAgICAgICAgJHVzZWRmaWVsZGRlZnNbXSA9ICRyb3dbJ2ZpZWxkZGVmX2lkJ107DQogICAgfQ0KfQ0KDQovLyRwb3NpdGlvbiA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgbWF4KHBvc2l0aW9uKSBhcyBtYXhfcG9zaXRpb24gRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmJyk7DQokZmllbGRzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRfZGVmcygkbW9kLCBudWxsLCBudWxsLCBudWxsLCAnY2F0ZWdvcmllcycpOw0KJHJvd2NsYXNzID0gJ3JvdzEnOw0KJGVudHJ5YXJyYXkgPSBhcnJheSgpOw0KDQpmb3JlYWNoICgkZmllbGRzIGFzICRyb3cpIHsNCiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7DQogICAgJG9uZXJvdy0+aWQgPSAkcm93WydmaWVsZGRlZl9pZCddOw0KICAgICRvbmVyb3ctPm5hbWUgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXRmaWVsZGRlZicsICRyZXR1cm5pZCwgJHJvd1snbmFtZSddLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSkpOw0KICAgICRvbmVyb3ctPmFsaWFzID0gJHJvd1snYWxpYXMnXTsNCiAgICAkb25lcm93LT50eXBlID0gZ2VuZXJhdG9yKCktPkxhbmcoJHJvd1sndHlwZSddKTsNCiAgICAkb25lcm93LT5yZXF1aXJlZCA9ICRyb3dbJ3JlcXVpcmVkJ107DQogICAgJG9uZXJvdy0+ZnJvbnRlbmQgPSAkcm93Wydmcm9udGVuZCddOw0KICAgICRvbmVyb3ctPmVkaXR2aWV3ID0gJHJvd1snZWRpdHZpZXcnXTsNCiAgICAkb25lcm93LT5maWx0ZXJfZnJvbnRlbmQgPSAkcm93WydmaWx0ZXJfZnJvbnRlbmQnXTsNCiAgICAkb25lcm93LT5maWx0ZXJfYWRtaW4gPSAkcm93WydmaWx0ZXJfYWRtaW4nXTsNCiAgICAkb25lcm93LT5zZWFyY2hhYmxlID0gJHJvd1snc2VhcmNoYWJsZSddOw0KICAgICRvbmVyb3ctPnBvc2l0aW9uID0gJHJvd1sncG9zaXRpb24nXTsNCg0KICAgIC8vIG1vdmUgdXANCiAgICBpZiAoJG9uZXJvdy0+cG9zaXRpb24gPiAxKSB7DQogICAgICAgICRvbmVyb3ctPnVwbGluayA9ICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fbW92ZWZpZWxkZGVmJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygndXAnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSwgJ2RpcicgPT4ndXAnKSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJG9uZXJvdy0+dXBsaW5rID0gJyc7DQogICAgfQ0KDQogICAgLy8gbW92ZSBkb3duDQogICAvKiBpZiAoJHBvc2l0aW9uID4gJG9uZXJvdy0+cG9zaXRpb24pIHsNCiAgICAgICAgJG9uZXJvdy0+ZG93bmxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX21vdmVmaWVsZGRlZicsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2Rvd24nKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSwgJ2RpcicgPT4nZG93bicpKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkb25lcm93LT5kb3dubGluayA9ICcnOw0KICAgIH0qLw0KDQogICAgJG9uZXJvdy0+ZWRpdGxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXRmaWVsZGRlZicsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSkpOw0KDQogICAgLy8gb25seSBkaXNwbGF5IGRlbGV0ZSBmaWVsZCBkZWZpbml0aW9uIGxpbmsgaWYgZmllbGQgZGVmaW5pdGlvbiBpcyBub3QgaW4gdXNlDQogICAgJG9uZXJvdy0+ZGVsZXRlbGluayA9ICcnOw0KICAgIGlmICghaW5fYXJyYXkoJHJvd1snZmllbGRkZWZfaWQnXSwgJHVzZWRmaWVsZGRlZnMpKSB7DQogICAgICAgICRvbmVyb3ctPmRlbGV0ZWxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2RlbGV0ZWZpZWxkZGVmJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSksIGdlbmVyYXRvcigpLT5MYW5nKCdhcmV5b3VzdXJlJykpOw0KICAgIH0NCg0KICAgICRlbnRyeWFycmF5W10gPSAkb25lcm93Ow0KICAgICRyb3djbGFzcyA9ICgkcm93Y2xhc3MgPT0gJ3JvdzEnID8gJ3JvdzInIDogJ3JvdzEnKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAgJGVudHJ5YXJyYXkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhbGlhcycsICAgICBnZW5lcmF0b3IoKS0+TGFuZygnYWxpYXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsICAgICBjb3VudCgkZW50cnlhcnJheSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhZGRsaW5rJywgICAgICAgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0ZmllbGRkZWYnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZGZpZWxkZGVmJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSAuICcgJyAuIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRmaWVsZGRlZicpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ZpZWxkdGV4dCcsICAgICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWYnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3R5cGV0ZXh0JywgICAgICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfdHlwZScpKTsNCiRzbWFydHktPmFzc2lnbignbWF4bGVuZ3RodGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9tYXhfbGVuZ3RoJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdyZXF1aXJlZHRleHQnLCAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX3JlcXVpcmVkJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZWFyY2hhYmxldGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfc2VhcmNoYWJsZScpKTsNCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmR0ZXh0JywgIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9mcm9udGVuZCcpKTsNCiRzbWFydHktPmFzc2lnbignZWRpdHZpZXd0ZXh0JywgIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9lZGl0dmlldycpKTsNCiRzbWFydHktPmFzc2lnbignZmlsdGVyX2Zyb250ZW5kdGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZmlsdGVyX2Zyb250ZW5kJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdmaWx0ZXJfYWRtaW50ZXh0JywgIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9maWx0ZXJfYWRtaW4nKSk7DQokc21hcnR5LT5hc3NpZ24oJ3NlY3Rpb24nLCAgJ2NhdGVnb3JpZXMnKTsNCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ2ZpZWxkZGVmdGFiLnRwbCcpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_itemtab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQokd2hlcmUgPSBhcnJheSgpOw0KJGNhdGVnb3J5bG9uZ25hbWVsaXN0ID0gYXJyYXkoKTsNCiRwYXJhbXNhcnJheSA9IGFycmF5KCk7DQokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOw0KDQokc21hcnR5LT5hc3NpZ24oJ21vZHVsZScsICRtb2QpOw0KDQokc3RhcnRfY2F0ZWdvcnkgPSAnJzsNCg0KJGNhdGVnb3J5bG9uZ25hbWVsaXN0ID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJpdmF0ZV9jYXRlZ29yaWVzKCRtb2QpOw0KDQovLw0KLy8gU2V0dXANCi8vDQokcGFnZWxpbWl0cyA9IGFycmF5KCcyJyA9PiAyLCAnNScgPT4gNSwgJzI1JyA9PiAyNSwgJzEwMCcgPT4gMTAwLCAnNTAwJyA9PiA1MDApOw0KJHNvcnRpdGVtcyA9IGFycmF5KCk7DQokc29ydGl0ZW1zW2dlbmVyYXRvcigpLT5MYW5nKCdkYXRlJyldID0gJ2l0ZW1fZGF0ZSc7DQokc29ydGl0ZW1zW2dlbmVyYXRvcigpLT5MYW5nKCdjcmVhdGVkZGF0ZScpXSA9ICdjcmVhdGVfZGF0ZSc7DQokc29ydGl0ZW1zW2dlbmVyYXRvcigpLT5MYW5nKCdtb2RpZmllZGRhdGUnKV0gPSAnbW9kaWZpZWRfZGF0ZSc7DQokc29ydG9yZGVycyA9IGFycmF5KCk7DQokc29ydG9yZGVyc1tnZW5lcmF0b3IoKS0+TGFuZygnYXNjZW5kaW5nJyldID0gJ2FzYyc7DQokc29ydG9yZGVyc1tnZW5lcmF0b3IoKS0+TGFuZygnZGVzY2VuZGluZycpXSA9ICdkZXNjJzsNCiR1aWQgPSBnZXRfdXNlcmlkKGZhbHNlKTsNCiRoaWVyYXJjaHkgPSAnJzsNCiRjaGlsZHJlbiA9IDA7DQokcGFnZWxpbWl0ID0gMjU7DQokc29ydGJ5ID0gJ2NyZWF0ZV9kYXRlJzsNCiRzb3J0b3JkZXIgPSAnZGVzYyc7DQokcGFnZW51bWJlciA9IDE7DQokZmllbGRzX3ZpZXdhYmxlID0gYXJyYXkoKTsNCiRmaWVsZF9uYW1lcyA9IGFycmF5KCk7DQokZmllbGRfbW9kdWxlcyA9IGFycmF5KCk7DQokZmllbGRfaW1hZ2VzID0gYXJyYXkoKTsNCiRjdXN0b21fZmllbGRzID0gJyc7DQokZGF0ZV90byA9IHRpbWUoKTsNCg0KaWYgKCEkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZWRpdCcpKQ0KICAgIHVuc2V0KCRzb3J0aXRlbXNbZ2VuZXJhdG9yKCktPkxhbmcoJ2RhdGUnKV0pOw0KDQoNCi8vIGN1c3RvbSBmaWVsZHMNCiRmaWVsZHNfZm9yX2ZpbHRlciA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2ZpZWxkX2RlZnMoJG1vZCwgbnVsbCwgbnVsbCwgMSk7DQokY3VzdG9tX2ZsZHMgPSBhcnJheSgxKTsNCiRjdXN0b21fZmllbGRzX3ZhbHVlcyA9IGFycmF5KCk7DQppZiAoZW1wdHkoJGZpZWxkc19mb3JfZmlsdGVyKSA9PSBmYWxzZSkgew0KICAgIGZvcmVhY2ggKCRmaWVsZHNfZm9yX2ZpbHRlciBhcyAkcm93KSB7DQogICAgICAgICRjdXN0b21fZmxkc1skcm93WydmaWVsZGRlZl9pZCddXSA9ICRyb3c7DQogICAgICAgICRjdXN0b21fZmllbGRzX3ZhbHVlc1skcm93WydmaWVsZGRlZl9pZCddXSA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jdXN0b21maWVsZHMnIC4gJHJvd1snZmllbGRkZWZfaWQnXSwgJycpOw0KICAgIH0NCn0NCg0KDQoNCi8vDQovLyBHZXQgcHJlZmVyZW5jZXMNCi8vDQokaGllcmFyY2h5ID0gZ2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2hpZXJhcmNoeScsICcnKTsNCiRjaGlsZHJlbiA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jaGlsZHJlbicsIDApOw0KJHBhZ2VsaW1pdCA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19wYWdlbGltaXQnLCAyNSk7DQokc29ydGJ5ID0gZ2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3NvcnRieScsICdpdGVtX2RhdGUnKTsNCiRzb3J0b3JkZXIgPSBnZXRfcHJlZmVyZW5jZSgkdWlkLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfc29ydG9yZGVyJywgJ2Rlc2MnKTsNCiRkYXRlX2Zyb20gPSBnZXRfcHJlZmVyZW5jZSgkdWlkLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZGF0ZV9mcm9tJywgdGltZSgpIC0gKDM2MDAgKiAyNCAqIDcpKTsNCiRkYXRlX3RvID0gZ2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2RhdGVfdG8nLCB0aW1lKCkgKyAoMzYwMCAqIDI0ICogNykpOw0KJHRtcCA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jdXN0b21fZmllbGRzJywgJycpOw0KDQoNCg0KaWYgKGVtcHR5KCR0bXApKQ0KICAgICR0bXAgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnKTsNCmlmICghZW1wdHkoJHRtcCkpDQogICAgJGN1c3RvbV9maWVsZHMgPSBleHBsb2RlKCcsJywgJHRtcCk7DQoNCi8vDQovLyBIYW5kbGUgR2V0IHBhcmFtZXRlcnMNCi8vDQppZiAoaXNzZXQoJHBhcmFtc1sncGFnZW51bWJlciddKSkgew0KICAgICRwYWdlbnVtYmVyID0gKGludCkgJHBhcmFtc1sncGFnZW51bWJlciddOw0KfQ0KDQoNCi8vDQovLyBIYW5kbGUgZm9ybSBzdWJtaXQNCi8vDQppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKSB7DQoNCiAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScpICE9ICJzaW1wbGUiIHx8IGlzc2V0KCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10pKSB7DQoNCiAgICAgICAgaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ21vZGUnKSAhPSAic2ltcGxlIikgew0KICAgICAgICAgICAgJGNoaWxkcmVuID0gKGludCkgJHBhcmFtc1snaW5wdXRfY2hpbGRyZW4nXTsNCiAgICAgICAgICAgICRwYWdlbGltaXQgPSAoaW50KSAkcGFyYW1zWydpbnB1dF9wYWdlbGltaXQnXTsNCiAgICAgICAgICAgICRzb3J0YnkgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3NvcnRieSddKTsNCiAgICAgICAgICAgICRoaWVyYXJjaHkgPSB0cmltKCRwYXJhbXNbJ2hpZXJhcmNoeSddKTsNCiAgICAgICAgICAgICRzb3J0b3JkZXIgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3NvcnRvcmRlciddKTsNCiAgICAgICAgICAgICRkYXRlX2Zyb20gPSBta3RpbWUoMCwgMCwgMCwgJHBhcmFtc1snZGF0ZWZyb21Nb250aCddLCAkcGFyYW1zWydkYXRlZnJvbURheSddLCAkcGFyYW1zWydkYXRlZnJvbVllYXInXSk7DQogICAgICAgICAgICAkZGF0ZV90byA9IG1rdGltZSgyMywgNTksIDU5LCAkcGFyYW1zWydkYXRldG9Nb250aCddLCAkcGFyYW1zWydkYXRldG9EYXknXSwgJHBhcmFtc1snZGF0ZXRvWWVhciddKTsNCg0KICAgICAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2N1c3RvbV9maWVsZHMnXSkpIHsNCiAgICAgICAgICAgICAgICAkY3VzdG9tX2ZpZWxkcyA9ICRwYXJhbXNbJ2N1c3RvbV9maWVsZHMnXTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJGN1c3RvbV9maWVsZHMgPSBhcnJheSgpOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgIC8vIHN0b3JlIHRoZW0gYXMgdXNlciBwcmVmZXJlbmNlcw0KICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2hpZXJhcmNoeScsICRoaWVyYXJjaHkpOw0KICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NoaWxkcmVuJywgJGNoaWxkcmVuKTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19wYWdlbGltaXQnLCAkcGFnZWxpbWl0KTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19zb3J0YnknLCAkc29ydGJ5KTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19zb3J0b3JkZXInLCAkc29ydG9yZGVyKTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19kYXRlX2Zyb20nLCAkZGF0ZV9mcm9tKTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19kYXRlX3RvJywgJGRhdGVfdG8pOw0KICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2N1c3RvbV9maWVsZHMnLCBpbXBsb2RlKCcsJywgJGN1c3RvbV9maWVsZHMpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgew0KICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snY3VzdG9tZmllbGQnXSBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7DQogICAgICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2N1c3RvbWZpZWxkcycgLiAkZmxkaWQsICR2YWx1ZSk7DQogICAgICAgICAgICAgICAgJGN1c3RvbV9maWVsZHNfdmFsdWVzWyRmbGRpZF0gPSAkdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9DQoNCg0KLy8gaWYgc2ltcGxlIG1vZGUsIHJlc2V0IGFsbCBwcmVmcw0KaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ21vZGUnKSA9PSAic2ltcGxlIikgew0KICAgICRzb3J0b3JkZXIgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfc2ltcGxlJywgJ2Rlc2MnKTsNCiAgICAkc29ydGJ5ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydGJ5X3NpbXBsZScsICdwb3NpdGlvbicpOw0KICAgICRwYWdlbGltaXQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdwYWdlbGltaXRfc2ltcGxlJywgMTAwMCk7DQp9DQoNCi8vIGdldCBjYXRlZ29yeSBsaXN0DQokd2hlcmUgPSBhcnJheSgpOw0KJHBhcmFtc2FycmF5ID0gYXJyYXkoKTsNCmlmIChlbXB0eSgkY2F0ZWdvcnlsb25nbmFtZWxpc3QpID09IGZhbHNlKSB7DQoNCiAgICAkd2hlcmVzdGF0ZW1lbnQgPSBhcnJheSgpOw0KICAgIGZvcmVhY2ggKCRjYXRlZ29yeWxvbmduYW1lbGlzdCBhcyAkbG9ubmFtZSkgew0KICAgICAgICAkd2hlcmVzdGF0ZW1lbnRbXSA9ICdsb25nX25hbWUgTElLRSAgPyc7DQogICAgICAgICRwYXJhbXNhcnJheVtdID0gJGxvbm5hbWUgLiAnICUnOw0KICAgIH0NCiAgICAkd2hlcmVbXSA9ICcoJyAuIGltcGxvZGUoJyBPUiAnLCAkd2hlcmVzdGF0ZW1lbnQpIC4gJyknOw0KfQ0KJGNhdGVnb3J5bGlzdCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2NhdGVnb3J5X2xpc3QoJG1vZCwgJHdoZXJlLCAkcGFyYW1zYXJyYXkpOw0KDQovLyBmaWVsZHMgdmlldw0KJGFsbF9maWVsZHMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9maWVsZHMoJG1vZCwgZmFsc2UpOw0KDQppZiAoaXNfYXJyYXkoJGFsbF9maWVsZHMpKSB7DQogICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGFsbF9maWVsZHMpOyAkaSsrKSB7DQogICAgICAgIHN3aXRjaCAoJGFsbF9maWVsZHNbJGldWyd0eXBlJ10pIHsNCiAgICAgICAgICAgIGNhc2UgJ3RleHRhcmVhJzoNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3N0YXRpYyc6DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICd0YWInOg0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAkZmllbGRzX3ZpZXdhYmxlWyRhbGxfZmllbGRzWyRpXVsnZmllbGRkZWZfaWQnXV0gPSAkYWxsX2ZpZWxkc1skaV1bJ25hbWUnXTsNCiAgICAgICAgICAgICAgICAkZmllbGRfbmFtZXNbJGFsbF9maWVsZHNbJGldWydmaWVsZGRlZl9pZCddXSA9ICRhbGxfZmllbGRzWyRpXVsnYWxpYXMnXTsNCg0KICAgICAgICAgICAgICAgIC8vIGlmIG1vZHVsZSwgZ2V0IG1vZHVsZSBmdW5jDQogICAgICAgICAgICAgICAgaWYgKCRhbGxfZmllbGRzWyRpXVsndHlwZSddID09ICJtb2R1bGUiKSB7DQogICAgICAgICAgICAgICAgICAgICRpbnN0cnVjdGlvbnMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYSgkYWxsX2ZpZWxkc1skaV1bJ2V4dHJhJ10pOw0KICAgICAgICAgICAgICAgICAgICAkY3VzdG9tbW9kdWxlcGFyYW1zID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfbW9kdWxlcGFyYW1zKCRpbnN0cnVjdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGN1c3RvbW1vZHVsZXBhcmFtcykgJiYgIWVtcHR5KCRjdXN0b21tb2R1bGVwYXJhbXMpICYmIGNtc191dGlsczo6Z2V0X21vZHVsZSgkY3VzdG9tbW9kdWxlcGFyYW1zWyJtb2R1bGUiXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZF9tb2R1bGVzWyRhbGxfZmllbGRzWyRpXVsnZmllbGRkZWZfaWQnXV0gPSAkY3VzdG9tbW9kdWxlcGFyYW1zWyJtb2R1bGUiXTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAvLyBpZiBtb2R1bGUsIGdldCBtb2R1bGUgZnVuYw0KICAgICAgICAgICAgICAgIGlmICgkYWxsX2ZpZWxkc1skaV1bJ3R5cGUnXSA9PSAidXBsb2FkX2ZpbGUiKSB7DQogICAgICAgICAgICAgICAgICAgICRmaWVsZF9pbWFnZXNbJGFsbF9maWVsZHNbJGldWydmaWVsZGRlZl9pZCddXSA9IDE7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmIChjb3VudCgkZmllbGRzX3ZpZXdhYmxlKSAmJiBpc19hcnJheSgkY3VzdG9tX2ZpZWxkcykpIHsNCiAgICAgICAgLy8gbm93IHRyaW0gZG93biB0aGUgY3VzdG9tIGZpZWxkcw0KICAgICAgICAvLyB0byBtYWtlIHN1cmUgdGhhdCBzb21ldGhpbmcgaGFzbid0IGJlZW4gZGVsZXRlZC4NCiAgICAgICAgJHRtcCA9IGFycmF5KCk7DQogICAgICAgIGZvcmVhY2ggKCRjdXN0b21fZmllbGRzIGFzICRmaWQpIHsNCiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkZmlkLCBhcnJheV9rZXlzKCRmaWVsZHNfdmlld2FibGUpKSkgew0KICAgICAgICAgICAgICAgICR0bXBbXSA9ICRmaWQ7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJGN1c3RvbV9maWVsZHMgPSAkdG1wOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRjdXN0b21fZmllbGRzID0gYXJyYXkoKTsNCiAgICB9DQp9DQokYWxsX2ZpZWxkcyA9IGNnZV9hcnJheTo6dG9faGFzaCgkYWxsX2ZpZWxkcywgJ25hbWUnKTsNCmlmIChjb3VudCgkZmllbGRzX3ZpZXdhYmxlKSkgew0KICAgICRzbWFydHktPmFzc2lnbignZmllbGRzX3ZpZXdhYmxlJywgJGZpZWxkc192aWV3YWJsZSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaWVsZF9uYW1lcycsICRmaWVsZF9uYW1lcyk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaWVsZF9tb2R1bGVzJywgJGZpZWxkX21vZHVsZXMpOw0KICAgICRzbWFydHktPmFzc2lnbignZmllbGRfaW1hZ2VzJywgJGZpZWxkX2ltYWdlcyk7DQp9DQoNCiRzbWFydHktPmFzc2lnbignY3VzdG9tX2ZpZWxkcycsICRjdXN0b21fZmllbGRzKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCAkbW9kLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywgJG1vZC0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KDQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaGllcmFyY2h5JywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdoaWVyYXJjaHknLCAkY2F0ZWdvcnlsaXN0LCAtMSwgJGhpZXJhcmNoeSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NoaWxkcmVuJywgJG1vZC0+Q3JlYXRlSW5wdXRZZXNOb0Ryb3Bkb3duKCRpZCwgJ2lucHV0X2NoaWxkcmVuJywgJGNoaWxkcmVuKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NvcnRieScsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaW5wdXRfc29ydGJ5JywgJHNvcnRpdGVtcywgLTEsICRzb3J0YnkpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc29ydG9yZGVyJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9zb3J0b3JkZXInLCAkc29ydG9yZGVycywgLTEsICRzb3J0b3JkZXIpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfcGFnZWxpbWl0JywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9wYWdlbGltaXQnLCAkcGFnZWxpbWl0cywgLTEsICRwYWdlbGltaXQpKTsNCg0KLy8NCi8vIEJ1aWxkIHRoZSBxdWVyeQ0KLy8NCiRmaWVsZHMgPSBhcnJheSgpOw0KJGZpZWxkc1tdID0gJ0EuKic7DQokZmllbGRzW10gPSAnQi5sb25nX25hbWUnOw0KJHByZWZpeDEgPSAiU0VMRUNUIDxGSUVMRFM+IEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9pdGVtIEEgIjsNCiRwcmVmaXgyID0gIlNFTEVDVCBDT1VOVChBLml0ZW1faWQpIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9pdGVtIEEgIjsNCiR3aGVyZSA9IGFycmF5KCk7DQokam9pbnMgPSBhcnJheSgpOw0KJHFwYXJtcyA9IGFycmF5KCk7DQoNCmlmIChpc19hcnJheSgkY3VzdG9tX2ZpZWxkcykgJiYgY291bnQoJGN1c3RvbV9maWVsZHMpICYmIGNvdW50KCRmaWVsZHNfdmlld2FibGUpKSB7DQogICAgZm9yICgkaiA9IDA7ICRqIDwgY291bnQoJGN1c3RvbV9maWVsZHMpOyAkaisrKSB7DQogICAgICAgICRmaWQgPSAkY3VzdG9tX2ZpZWxkc1skal07DQogICAgICAgICRmaWVsZHNbXSA9ICJGdnskan0udmFsdWUgQVMgJ0ZsZF9feyRmaWVsZF9uYW1lc1skZmlkXX0nIjsNCiAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBPVVRFUiBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfZmllbGR2YWwgRnZ7JGp9DQogICAgICAgICAgICAgICAgICAgIE9OIEZ2eyRqfS5pdGVtX2lkID0gQS5pdGVtX2lkIEFORCBGdnskan0uZmllbGRkZWZfaWQgPSA/IjsNCiAgICAgICAgJHFwYXJtc1tdID0gJGN1c3RvbV9maWVsZHNbJGpdOw0KICAgIH0NCn0NCg0KDQokam9pbnNbXSA9ICdMRUZUIEpPSU4gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzIEIgDQogICAgICAgICAgICAgICAgICBPTiBBLmNhdGVnb3J5X2lkID0gQi5jYXRlZ29yeV9pZCc7DQoNCmlmICghZW1wdHkoJGhpZXJhcmNoeSkpIHsNCg0KICAgICR3aGVyZVtdID0gJ0IubG9uZ19uYW1lIExJS0UgPyc7DQogICAgaWYgKCRjaGlsZHJlbikgew0KICAgICAgICAkcXBhcm1zW10gPSAkaGllcmFyY2h5IC4gJyUnOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRxcGFybXNbXSA9ICRoaWVyYXJjaHk7DQogICAgfQ0KfSBlbHNlaWYgKGVtcHR5KCRjYXRlZ29yeWxvbmduYW1lbGlzdCkgPT0gZmFsc2UpIHsNCiAgICBmb3JlYWNoICgkY2F0ZWdvcnlsb25nbmFtZWxpc3QgYXMgJGxvbmduYW1lKSB7DQogICAgICAgICR3aGVyZVtdID0gJ0IubG9uZ19uYW1lIExJS0UgPyc7DQogICAgICAgICRxcGFybXNbXSA9ICRsb25nbmFtZSAuICclJzsNCiAgICB9DQp9DQoNCmlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdmaWx0ZXJfZGF0ZScpICYmICRkYXRlX2Zyb20gJiYgJGRhdGVfdG8pIHsNCiAgICAkd2hlcmVbXSA9ICIgQS5pdGVtX2RhdGUgID4gPyBhbmQgQS5pdGVtX2RhdGUgIDwgPyAiOw0KICAgICRxcGFybXNbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9mcm9tKSwgIiciKTsNCiAgICAkcXBhcm1zW10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfdG8pLCAiJyIpOw0KfQ0KDQovLyBwcm9jY2VzIHZhbHVlcyBmcm9tIHBhcmFtcw0KaWYgKCRjdXN0b21fZmllbGRzX3ZhbHVlcykgew0KICAgIGZvcmVhY2ggKCRjdXN0b21fZmllbGRzX3ZhbHVlcyBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7DQogICAgICAgIGlmIChlbXB0eSgkdmFsdWUpKQ0KICAgICAgICAgICAgY29udGludWU7DQoNCiAgICAgICAgJGogPSAnYycgLiAkZmxkaWQ7DQogICAgICAgICRqb2luc1tdID0gJ0xFRlQgT1VURVIgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2ZpZWxkdmFsIEZ2eyRqfQ0KICAgICAgICAgICAgICAgICAgICBPTiBGdnskan0uaXRlbV9pZCA9IEEuaXRlbV9pZCBBTkQgRnZ7JGp9LmZpZWxkZGVmX2lkID0gPyI7DQogICAgICAgIC8vYXJyYXlfdW5zaGlmdCgkcXBhcm1zLCAkZmxkaWQpOw0KICAgICAgICAkcXBhcm1zW10gPSAkZmxkaWQ7DQogICAgICAgICR3aGVyZVtdID0gJyBGdicgLiAkaiAuICcudmFsdWUgID0gPyc7DQogICAgICAgICRxcGFybXNbXSA9ICR2YWx1ZTsNCiAgICB9DQp9DQoNCg0KLy8gaGFuZGxlIGZ1bmt5IGN1c3RvbSBmaWVsZCBzb3J0IG9yZGVycw0KaWYgKHN0YXJ0c3dpdGgoJHNvcnRieSwgJy1GLScpKSB7DQogICAgJGZpZCA9IChpbnQpIHN1YnN0cigkc29ydGJ5LCAzKTsNCiAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBmdg0KICAgICAgICAgICAgICAgICAgT04gZnYuaXRlbV9pZCA9IEEuaXRlbV9pZCc7DQogICAgJHdoZXJlW10gPSAnZnYuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAkcXBhcm1zW10gPSAkZmlkOw0KICAgICRvcmRlciA9ICIgT1JERVIgQlkgZnYudmFsdWUgJHNvcnRvcmRlciI7DQp9IGVsc2Ugew0KICAgICRvcmRlciA9ICIgT1JERVIgQlkgJHNvcnRieSAkc29ydG9yZGVyIjsNCn0NCg0KJHN0ciA9IGltcGxvZGUoJyAnLCAkam9pbnMpOw0KaWYgKGNvdW50KCR3aGVyZSkpIHsNCiAgICAkc3RyIC49ICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJHdoZXJlKTsNCn0NCiRxdWVyeTEgPSBzdHJfcmVwbGFjZSgnPEZJRUxEUz4nLCBpbXBsb2RlKCcsJywgJGZpZWxkcyksICRwcmVmaXgxKSAuICRzdHIgLiAkb3JkZXI7DQokcXVlcnkyID0gJHByZWZpeDIgLiAkc3RyOw0KDQovLw0KLy8gU2V0dXAgc3RhcnQgZWxlbWVudCwgYW5kIGNvdW50IHBhZ2VzDQovLw0KJHRvdGFsY291bnQgPSAkZGItPkdldE9uZSgkcXVlcnkyLCAkcXBhcm1zKTsNCiRwYWdlY291bnQgPSAoaW50KSAoJHRvdGFsY291bnQgLyAkcGFnZWxpbWl0KTsNCmlmICgoJHRvdGFsY291bnQgJSAkcGFnZWxpbWl0KSAhPSAwKQ0KICAgICRwYWdlY291bnQrKzsNCiRzdGFydGVsZW1lbnQgPSAoJHBhZ2VudW1iZXIgLSAxKSAqICRwYWdlbGltaXQ7DQoNCi8vDQovLyBCZWdpbiB0aGUgb3V0cHV0DQovLw0KJHNtYXJ0eS0+YXNzaWduKCdwYWdlbnVtYmVyJywgJHBhZ2VudW1iZXIpOw0KJHNtYXJ0eS0+YXNzaWduKCdwYWdlY291bnQnLCAkcGFnZWNvdW50KTsNCiRzbWFydHktPmFzc2lnbigndG90YWxyb3dzJywgJHRvdGFsY291bnQpOw0KaWYgKCRwYWdlbnVtYmVyID4gMSkgew0KICAgICRwYXJtcyA9IGFycmF5KCdwYWdlbnVtYmVyJyA9PiAxKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpcnN0cGFnZV91cmwnLCAkbW9kLT5DcmVhdGVVUkwoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJtcykpOw0KICAgICRwYXJtcyA9IGFycmF5KCdwYWdlbnVtYmVyJyA9PiAkcGFnZW51bWJlciAtIDEpOw0KICAgICRzbWFydHktPmFzc2lnbigncHJldnBhZ2VfdXJsJywgJG1vZC0+Q3JlYXRlVVJMKCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFybXMpKTsNCn0NCmlmICgkcGFnZW51bWJlciA8ICRwYWdlY291bnQpIHsNCiAgICAkcGFybXMgPSBhcnJheSgncGFnZW51bWJlcicgPT4gJHBhZ2VudW1iZXIgKyAxKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ25leHRwYWdlX3VybCcsICRtb2QtPkNyZWF0ZVVSTCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcm1zKSk7DQogICAgJHBhcm1zID0gYXJyYXkoJ3BhZ2VudW1iZXInID0+ICRwYWdlY291bnQpOw0KICAgICRzbWFydHktPmFzc2lnbignbGFzdHBhZ2VfdXJsJywgJG1vZC0+Q3JlYXRlVVJMKCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFybXMpKTsNCn0NCg0KJHBvc2l0aW9uID0gJGRiLT5HZXRPbmUoJ1NFTEVDVCBtYXgocG9zaXRpb24pIGFzIG1heF9wb3NpdGlvbiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkdGhpcy0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0nKTsNCg0KJGVudHJ5YXJyYXkgPSBhcnJheSgpOw0KJGRicmVzdWx0ID0gJGRiLT5TZWxlY3RMaW1pdCgkcXVlcnkxLCAkcGFnZWxpbWl0LCAkc3RhcnRlbGVtZW50LCAkcXBhcm1zKTsNCndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgew0KICAgICRvbmVyb3cgPSBjZ2VfYXJyYXk6OnRvX29iamVjdCgkcm93KTsNCg0KICAgIC8vIG1vdmUgdXANCiAgICBpZiAoJHJvd1sncG9zaXRpb24nXSA+IDEpIHsNCiAgICAgICAgJG9uZXJvdy0+dXBsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fbW92ZWl0ZW0nLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9hcnJvdy11LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCd1cCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10sICdkaXInID0+ICd1cCcpKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkb25lcm93LT51cGxpbmsgPSAnJzsNCiAgICB9DQoNCiAgICAvLyBtb3ZlIGRvd24NCiAgICBpZiAoJHBvc2l0aW9uID4gJHJvd1sncG9zaXRpb24nXSkgew0KICAgICAgICAkb25lcm93LT5kb3dubGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX21vdmVpdGVtJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vYXJyb3ctZC5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZG93bicpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10sICdkaXInID0+ICdkb3duJykpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRvbmVyb3ctPmRvd25saW5rID0gJyc7DQogICAgfQ0KDQogICAgLy8gYXBwcm92ZQ0KICAgIGlmICgkcm93WydhY3RpdmUnXSkgew0KICAgICAgICAkb25lcm93LT5hcHByb3ZlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fYXBwcm92ZWl0ZW0nLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdyZXZlcnQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnYXBwcm92ZScgPT4gMCwgJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSkpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRvbmVyb3ctPmFwcHJvdmUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9hcHByb3ZlaXRlbScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdhcHByb3ZlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2FwcHJvdmUnID0+IDEsICdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10pKTsNCiAgICB9DQoNCiAgICAkb25lcm93LT5lZGl0X3VybCA9ICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGl0ZW0nLCAkcmV0dXJuaWQsICRyb3dbJ3RpdGxlJ10sIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10pLCAnJywgdHJ1ZSk7DQogICAgJG9uZXJvdy0+ZWRpdGxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXRpdGVtJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10pKTsNCiAgICAkb25lcm93LT5kZWxldGVsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZWxldGVpdGVtJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnaXRlbV9pZCcgPT4gJHJvd1snaXRlbV9pZCddKSwgZ2VuZXJhdG9yKCktPkxhbmcoJ2FyZXlvdXN1cmUnKSk7DQogICAgJG9uZXJvdy0+ZmlsZV9sb2NhdGlvbiA9IGdlbmVyYXRvcl90b29sczo6ZmlsZV9sb2NhdGlvbigkbW9kLCAkcm93KTsNCiAgICAkb25lcm93LT5maWxlcGF0aF9sb2NhdGlvbiA9IGdlbmVyYXRvcl90b29sczo6ZmlsZXBhdGhfbG9jYXRpb24oJG1vZCwgJHJvdyk7DQoNCiAgICAkZW50cnlhcnJheVtdID0gJG9uZXJvdzsNCn0NCg0KJG1vZC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdpdGVtcycsICRlbnRyeWFycmF5KTsNCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkZW50cnlhcnJheSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2RhdGVfZnJvbScsICRkYXRlX2Zyb20pOw0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlX3RvJywgJGRhdGVfdG8pOw0KDQoNCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdhZGRsaW5rJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0aXRlbScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWRkJykgLiAnICcgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3Npbmd1bGFyJywgJycpLCAnJywgJycsICdzeXN0ZW1pY29uJykgLiAnICcgLiBnZW5lcmF0b3IoKS0+TGFuZygnYWRkJykgLiAnICcgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3Npbmd1bGFyJywgJycpKSk7DQokbW9kLT5zbWFydHktPmFzc2lnbignaWR0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ2lkJykpOw0KDQoNCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0MicsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRtaW5fYnVsa2FjdGlvbicsICRyZXR1cm5pZCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kMicsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KJGJ1bGthY3Rpb25zID0gYXJyYXkoKTsNCiRidWxrYWN0aW9uc1snZGVsZXRlJ10gPSAkdGhpcy0+TGFuZygnZGVsZXRlJyk7DQokYnVsa2FjdGlvbnNbJ3NldGluYWN0aXZlJ10gPSAkdGhpcy0+TGFuZygnc2V0ZHJhZnQnKTsNCiRidWxrYWN0aW9uc1snc2V0YWN0aXZlJ10gPSAkdGhpcy0+TGFuZygnc2V0cHVibGlzaGVkJyk7DQokc21hcnR5LT5hc3NpZ24oJ2J1bGthY3Rpb25zJywgJGJ1bGthY3Rpb25zKTsNCg0KLy8gZ2V0IHRoZSBjdXN0b20gZmllbGRzDQokZmlsdGVycyA9IG5ldyBnZW5lcmF0b3JfZmlsdGVycygkaWQsICRtb2QsICdhZG1pbicpOw0KJGN1c3RvbV9mbGRzID0gJGZpbHRlcnMtPnByb2Nlc3NfY3VzdG9tX2ZpZWxkcyhhcnJheSgpLCAkY3VzdG9tX2ZsZHMpOw0KJGN1c3RvbV9mbGRzX29iaiA9ICRmaWx0ZXJzLT5nZW5lcmF0ZShudWxsLCAkcGFyYW1zLCAkY3VzdG9tX2ZpZWxkc192YWx1ZXMpOw0KaWYgKGlzc2V0KCRjdXN0b21fZmxkc19vYmopICYmIGNvdW50KCRjdXN0b21fZmxkc19vYmopID4gMCkgew0KICAgICRzbWFydHktPmFzc2lnbignY3VzdG9tX2ZpZWxkZGVmJywgJGN1c3RvbV9mbGRzX29iaik7DQp9DQoNCmVjaG8gJG1vZC0+UHJvY2Vzc1RlbXBsYXRlKCdpdGVtdGFiLnRwbCcpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_optiontab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCg0KJHNvcnRpdGVtcyA9IGFycmF5KCk7DQokc29ydGl0ZW1zWyRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdGl0bGUnKV0gPSAndGl0bGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnZGF0ZScpXSA9ICdpdGVtX2RhdGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnY3JlYXRlZGRhdGUnKV0gPSAnY3JlYXRlX2RhdGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnbW9kaWZpZWRkYXRlJyldID0gJ21vZGlmaWVkX2RhdGUnOw0KJHNvcnRvcmRlcnMgPSBhcnJheSgpOw0KJHNvcnRvcmRlcnNbZ2VuZXJhdG9yKCktPkxhbmcoJ2FzY2VuZGluZycpXSA9ICdhc2MnOw0KJHNvcnRvcmRlcnNbZ2VuZXJhdG9yKCktPkxhbmcoJ2Rlc2NlbmRpbmcnKV0gPSAnZGVzYyc7DQokbW9kZXMgPSBhcnJheSgpOw0KJG1vZGVzW2dlbmVyYXRvcigpLT5MYW5nKCdzaW1wbGUnKV0gPSAnc2ltcGxlJzsNCiRtb2Rlc1tnZW5lcmF0b3IoKS0+TGFuZygnYWR2YW5jZWQnKV0gPSAnYWR2YW5jZWQnOw0KDQokc29ydG9yZGVyX2FkdmFuY2VkID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydG9yZGVyX2FkdmFuY2VkJywgJ2Rlc2MnKTsNCiRzb3J0YnlfYWR2YW5jZWQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0YnlfYWR2YW5jZWQnLCAnY3JlYXRlX2RhdGUnKTsNCg0KJHNvcnRvcmRlcl9zaW1wbGUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfc2ltcGxlJywgJ2Rlc2MnKTsNCiRzb3J0Ynlfc2ltcGxlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydGJ5X3NpbXBsZScsICdwb3NpdGlvbicpOw0KDQoNCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2VkaXRvcHRpb24nLCAkcmV0dXJuaWQpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICRtb2QtPkNyZWF0ZUZvcm1FbmQoKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3NlYXJjaGFibGUnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3NlYXJjaGFibGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NlYXJjaGFibGUnLCAkbW9kLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3NlYXJjaGFibGUnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzZWFyY2hhYmxlJykpKTsNCiRzbWFydHktPmFzc2lnbignc2VhcmNoYWJsZScsICAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzZWFyY2hhYmxlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZWFyY2hhYmxlX2xpbmsnLCAgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9zZWFyY2hfcmVpbmRleCcsICRyZXR1cm5pZCwgJG1vZC0+TGFuZygncmVpbmRleCcpKSk7DQoNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc2VhcmNoX2RhdGVfZW5kJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9zZWFyY2hfZGF0ZV9lbmQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NlYXJjaF9kYXRlX2VuZCcsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnc2VhcmNoX2RhdGVfZW5kJywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnc2VhcmNoX2RhdGVfZW5kJykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV90aXRsZScsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfaXRlbV90aXRsZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV90aXRsZScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpdGVtX3RpdGxlJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV90aXRsZScsICcnKSwgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV9zaW5ndWxhcicsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfaXRlbV9zaW5ndWxhcicpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9zaW5ndWxhcicsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpdGVtX3Npbmd1bGFyJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9zaW5ndWxhcicsICcnKSwgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV9wbHVyYWwnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2l0ZW1fcGx1cmFsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pdGVtX3BsdXJhbCcsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpdGVtX3BsdXJhbCcsICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fcGx1cmFsJywgJycpLCA1MCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9mcmllbmRseW5hbWUnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2ZyaWVuZGx5bmFtZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZnJpZW5kbHluYW1lJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2ZyaWVuZGx5bmFtZScsICRtb2QtPkdldFByZWZlcmVuY2UoJ2ZyaWVuZGx5bmFtZScsICcnKSwgNTApKTsNCg0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF91cmxfcHJlZml4JywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF91cmxfcHJlZml4JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF91cmxfcHJlZml4JywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3VybF9wcmVmaXgnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4JywgJycpLCA1MCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9kZWZhdWx0X2FjdGlvbl9wYXJhbXMnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2RlZmF1bHRfYWN0aW9uX3BhcmFtcycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZGVmYXVsdF9hY3Rpb25fcGFyYW1zJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2RlZmF1bHRfYWN0aW9uX3BhcmFtcycsICRtb2QtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfYWN0aW9uX3BhcmFtcycsICcnKSwgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZGV0YWlsX2FjdGlvbl9wYXJhbXMnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2RldGFpbF9hY3Rpb25fcGFyYW1zJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kZXRhaWxfYWN0aW9uX3BhcmFtcycsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdkZXRhaWxfYWN0aW9uX3BhcmFtcycsICRtb2QtPkdldFByZWZlcmVuY2UoJ2RldGFpbF9hY3Rpb25fcGFyYW1zJywgJycpLCA1MCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90aXRsZV9wYXJhbV9mb3JfY2FjaGUnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3RpdGxlX3BhcmFtX2Zvcl9jYWNoZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGl0bGVfcGFyYW1fZm9yX2NhY2hlJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3RpdGxlX3BhcmFtX2Zvcl9jYWNoZScsICRtb2QtPkdldFByZWZlcmVuY2UoJ3RpdGxlX3BhcmFtX2Zvcl9jYWNoZScsICcnKSwgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZGlzcGxheV9pbmxpbmUnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2Rpc3BsYXlfaW5saW5lJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kaXNwbGF5X2lubGluZScsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnZGlzcGxheV9pbmxpbmUnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdkaXNwbGF5X2lubGluZScpKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2xhenlsb2FkaW5nJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9sYXp5bG9hZGluZycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfbGF6eWxvYWRpbmcnLCAkbW9kLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2xhenlsb2FkaW5nJywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbGF6eWxvYWRpbmcnKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF91c2VyZ3JvdXBfZGVwZW5kZW5jZScsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfdXNlcmdyb3VwX2RlcGVuZGVuY2UnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3VzZXJncm91cF9kZXBlbmRlbmNlJywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICd1c2VyZ3JvdXBfZGVwZW5kZW5jZScsIDEsICRtb2QtPkdldFByZWZlcmVuY2UoJ3VzZXJncm91cF9kZXBlbmRlbmNlJykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaGFzX2FkbWluJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9oYXNfYWRtaW4nKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2hhc19hZG1pbicsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaGFzX2FkbWluJywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaGFzX2FkbWluJykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV90aXRsZV9lZGl0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9pdGVtX3RpdGxlX2VkaXQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2l0ZW1fdGl0bGVfZWRpdCcsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaXRlbV90aXRsZV9lZGl0JywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV90aXRsZV9lZGl0JykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV9hbGlhc19lZGl0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9pdGVtX2FsaWFzX2VkaXQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2l0ZW1fYWxpYXNfZWRpdCcsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaXRlbV9hbGlhc19lZGl0JywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9hbGlhc19lZGl0JykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV91cmxfZWRpdCcsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfaXRlbV91cmxfZWRpdCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV91cmxfZWRpdCcsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaXRlbV91cmxfZWRpdCcsIDEsICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdXJsX2VkaXQnKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pdGVtX2RhdGVfZWRpdCcsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfaXRlbV9kYXRlX2VkaXQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2l0ZW1fZGF0ZV9lZGl0JywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpdGVtX2RhdGVfZWRpdCcsIDEsICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGF0ZV9lZGl0JykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV9kYXRlX2VuZF9lZGl0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9pdGVtX2RhdGVfZW5kX2VkaXQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2l0ZW1fZGF0ZV9lbmRfZWRpdCcsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaXRlbV9kYXRlX2VuZF9lZGl0JywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kYXRlX2VuZF9lZGl0JykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV9jYXRlZ29yeV9lZGl0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9pdGVtX2NhdGVnb3J5X2VkaXQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2l0ZW1fY2F0ZWdvcnlfZWRpdCcsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaXRlbV9jYXRlZ29yeV9lZGl0JywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9jYXRlZ29yeV9lZGl0JywgMCkpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcmVjdXJzaXZlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9yZWN1cnNpdmUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3JlY3Vyc2l2ZScsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAncmVjdXJzaXZlJywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVjdXJzaXZlJywgMCkpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZmlsdGVyX2RhdGUnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2ZpbHRlcl9kYXRlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWx0ZXJfZGF0ZScsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnZmlsdGVyX2RhdGUnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdmaWx0ZXJfZGF0ZScpKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X21vZGUnLCBnZW5lcmF0b3IoKS0+TGFuZygnbW9kZScpKTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2FkdmFuY2VkJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FkdmFuY2VkJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc2ltcGxlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3NpbXBsZScpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc3VtbWFyeV9zb3J0aW5nJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9zdW1tYXJ5X3NvcnRpbmcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3N1bW1hcnlfc29ydGluZ19hZHZhbmNlZCcsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnc29ydGJ5X2FkdmFuY2VkJywgJHNvcnRpdGVtcywgLTEsICRzb3J0YnlfYWR2YW5jZWQpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3N1bW1hcnlfc29ydG9yZGVyJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdW1tYXJ5X3NvcnRvcmRlcl9hZHZhbmNlZCcsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnc29ydG9yZGVyX2FkdmFuY2VkJywgJHNvcnRvcmRlcnMsIC0xLCAkc29ydG9yZGVyX2FkdmFuY2VkKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3N1bW1hcnlfcGFnZWxpbWl0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9zdW1tYXJ5X3BhZ2VsaW1pdCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc3VtbWFyeV9wYWdlbGltaXRfYWR2YW5jZWQnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnc3VtbWFyeV9wYWdlbGltaXRfYWR2YW5jZWQnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzdW1tYXJ5X3BhZ2VsaW1pdF9hZHZhbmNlZCcsIDI1KSwgNSwgNSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9zdW1tYXJ5X3NvcnRpbmcnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3N1bW1hcnlfc29ydGluZycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc3VtbWFyeV9zb3J0aW5nX3NpbXBsZScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdzb3J0Ynlfc2ltcGxlJywgJ3Bvc2l0aW9uJywgNTAsIDI1NSwgJ2Rpc2FibGVkPSJkaXNhYmxlZCInKQ0KKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3N1bW1hcnlfc29ydG9yZGVyJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdW1tYXJ5X3NvcnRvcmRlcl9zaW1wbGUnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnc29ydG9yZGVyX3NpbXBsZScsICdkZXNjJywgNSwgNSwgJ2Rpc2FibGVkPSJkaXNhYmxlZCInKQ0KKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc3VtbWFyeV9wYWdlbGltaXQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3N1bW1hcnlfcGFnZWxpbWl0JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdW1tYXJ5X3BhZ2VsaW1pdF9zaW1wbGUnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnc3VtbWFyeV9wYWdlbGltaXRfc2ltcGxlJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnc3VtbWFyeV9wYWdlbGltaXRfc2ltcGxlJywgMjUpLCA1LCA1LCAnZGlzYWJsZWQ9ImRpc2FibGVkIicpKTsNCg0KJGNvbnRlbnRvcHMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KDQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2l0ZW1fZGV0YWlsX3JldHVybmlkJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9pdGVtX2RldGFpbF9yZXR1cm5pZCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAkY29udGVudG9wcy0+Q3JlYXRlSGllcmFyY2h5RHJvcGRvd24oJycsICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGV0YWlsX3JldHVybmlkJywgLTEpLCAkaWQgLiAnaXRlbV9kZXRhaWxfcmV0dXJuaWQnKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnLCAkY29udGVudG9wcy0+Q3JlYXRlSGllcmFyY2h5RHJvcGRvd24oJycsICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnLCAtMSksICRpZCAuICdpdGVtX2NhdGVnb3J5X3JldHVybmlkJykpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9jdXN0b21fZmllbGRzX2RlZmF1bHQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2N1c3RvbV9maWVsZHNfZGVmYXVsdF9hZG1pbicpKTsNCiRzbWFydHktPmFzc2lnbignY3VzdG9tX2ZpZWxkc19kZWZhdWx0JywgZXhwbG9kZSgnLCcsJG1vZC0+R2V0UHJlZmVyZW5jZSgnY3VzdG9tX2ZpZWxkc19kZWZhdWx0JykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9tb2RlJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdtb2RlJywgJG1vZGVzLCAtMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScsICdhZHZhbmNlZCcpKSk7DQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfcHJldmlld19hZG1pbicsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAncHJldmlld19hZG1pbicsIDEsICRtb2QtPkdldFByZWZlcmVuY2UoJ3ByZXZpZXdfYWRtaW4nKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb3B5X2FkbWluJywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdjb3B5X2FkbWluJywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnY29weV9hZG1pbicpKSk7DQoNCmVjaG8gJG1vZC0+UHJvY2Vzc1RlbXBsYXRlKCdvcHRpb250YWIudHBsJyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_templatetab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOw0KDQokcXVlcnkgPSAnU0VMRUNUIHRwbF9pZCwgbmFtZSwgY29udGVudCwgdHlwZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfdGVtcGxhdGUnOw0KJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KJGl0ZW1zID0gQXJyYXkoKTsNCiRyb3djbGFzcyA9ICdyb3cxJzsNCg0Kd2hpbGUgKCRyZXN1bHQgJiYgJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpIHsNCiAgICAkdG1wID0gbmV3IFN0ZENsYXNzKCk7DQogICAgJHRtcC0+bGluayA9ICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLCAkcm93WyduYW1lJ10sIGFycmF5KCd0cGxfaWQnID0+ICRyb3dbJ3RwbF9pZCddKSk7DQogICAgJHRtcC0+ZGVsZXRlID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZWxldGV0ZW1wbGF0ZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3RwbF9pZCcgPT4gJHJvd1sndHBsX2lkJ10pLCBnZW5lcmF0b3IoKS0+TGFuZygnYXJleW91c3VyZScpKTsNCiAgICAkdG1wLT5lZGl0ID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3RwbF9pZCcgPT4gJHJvd1sndHBsX2lkJ10pKTsNCiAgICAkdG1wLT5yb3djbGFzcyA9ICRyb3djbGFzczsNCg0KICAgICRpID0gaXNzZXQoJGl0ZW1zWyRyb3dbJ3R5cGUnXV0pID8gY291bnQoJGl0ZW1zWyRyb3dbJ3R5cGUnXV0pIDogMDsNCiAgICAkaXRlbXNbJHJvd1sndHlwZSddXVskaV0gPSAkdG1wOw0KDQogICAgJHJvd2NsYXNzID0gKCRyb3djbGFzcyA9PSAncm93MScgPyAncm93MicgOiAncm93MScpOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRpdGVtcykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRpdGVtcyk7DQokc21hcnR5LT5hc3NpZ24oJ2RldGFpbHRlbXBsYXRlcycsIGdlbmVyYXRvcigpLT5MYW5nKCdkZXRhaWx0ZW1wbGF0ZXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1bW1hcnl0ZW1wbGF0ZXMnLCBnZW5lcmF0b3IoKS0+TGFuZygnc3VtbWFyeXRlbXBsYXRlcycpKTsNCiRzbWFydHktPmFzc2lnbignaGVhZGVyX25hbWUnLCBnZW5lcmF0b3IoKS0+TGFuZygndGVtcGxhdGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2FkZGRldGFpbGxpbmsnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWRkdGVtcGxhdGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpIC4gJyAnIC4gc3ByaW50ZihnZW5lcmF0b3IoKS0+TGFuZygnYWRkdGVtcGxhdGUnKSwgJ0RldGFpbCcpLCBhcnJheSgndHlwZScgPT4gJ2RldGFpbCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2FkZHN1bW1hcnlsaW5rJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZHRlbXBsYXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSAuICcgJyAuIHNwcmludGYoZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZHRlbXBsYXRlJyksICdTdW1tYXJ5JyksIGFycmF5KCd0eXBlJyA9PiAnc3VtbWFyeScpKSk7DQoNCmVjaG8gJG1vZC0+UHJvY2Vzc1RlbXBsYXRlKCd0ZW1wbGF0ZXRhYi50cGwnKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KJGRpciA9IHN0cl9yZXBsYWNlKCdcXCcgLCAnLycsIGRpcm5hbWUoX19GSUxFX18pKTsNCmluY2x1ZGUoc3RyX3JlcGxhY2UoJ01vZHVsZUxpYicuRElSRUNUT1JZX1NFUEFSQVRPUiwnJywgIF9fRklMRV9fKSk7DQoNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJG1vZHVsZV9uYW1lIC4gJyBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gaW5zdGFsbGVkJzsNCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAkbW9kdWxlX25hbWUuICcgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIHVuaW5zdGFsbGVkJzsNCiRsYW5nWyRtb2R1bGVfYWxpYXMgLiAnX21vZGlmeV9pdGVtJ10gPSAkbW9kdWxlX25hbWUgLiAnOiBNb2RpZnkgSXRlbXMnOw0KJGxhbmdbJG1vZHVsZV9hbGlhcyAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnXSA9ICRtb2R1bGVfbmFtZSAuICc6IE1vZGlmeSBDYXRlZ29yaWVzJzsNCiRsYW5nWyRtb2R1bGVfYWxpYXMgLiAnX21vZGlmeV9vcHRpb24nXSA9ICRtb2R1bGVfbmFtZSAuICc6IE1vZGlmeSBPcHRpb25zJzsNCiRsYW5nWyRtb2R1bGVfYWxpYXMgLiAnX2FsbF9jYXRlZ29yeV92aXNiaWxlJ10gPSAkbW9kdWxlX25hbWUgLiAnOiBhbGwgY2F0ZWdvcnkgdmlzaWJsZSc7DQokbGFuZ1snY2hhbmdlbG9nJ10gPSAnICAgICc7DQoNCg0KIyMgcGVybXMNCiRsYW5nWydtb2RpZnlfaXRlbSddID0gJG1vZHVsZV9uYW1lLic6IG1vZGlmeSBpdGVtJzsNCiRsYW5nWydtb2RpZnlfb3B0aW9uJ10gPSAkbW9kdWxlX25hbWUuJzogbW9kaWZ5IG9wdGlvbic7DQokbGFuZ1snbW9kaWZ5X2NhdGVnb3JpZXMnXSA9ICRtb2R1bGVfbmFtZS4nOiBtb2RpZnkgY2F0ZWdvcmllcyc7DQokbGFuZ1snYWxsX2NhdGVnb3J5X3Zpc2JpbGUnXSA9ICRtb2R1bGVfbmFtZS4nOiBhbGwgY2F0ZWdvcnkgdmlzaWJsZSc7DQoNCg0KLy8gbW9kdWxlIGhlbHANCiRsYW5nWydoZWxwJ10gPSA8PDxFT1QNCjxkaXYgaWQ9InBhZ2VfdGFicyI+ICAgICANCiAgPGRpdiBpZD0iZ2VuZXJhbCI+DQogICAgR2VuZXJhbCBJbmZvICAgDQogIDwvZGl2PiAgICAgDQogIDxkaXYgaWQ9InVzYWdlIj4NCiAgICBVc2FnZSAgIA0KICA8L2Rpdj4gICAgIA0KICA8ZGl2IGlkPSJwZXJtaXNzaW9ucyI+DQogICAgUGVybWlzc2lvbnMgICANCiAgPC9kaXY+ICAgICANCiAgPGRpdiBpZD0iZmllbGQiPg0KICAgIEZpZWxkIERlZmluaXRpb25zICAgDQogIDwvZGl2PiAgICAgDQogIDxkaXYgaWQ9ImNhdGVnb3JpZXMiPg0KICAgIENhdGVnb3JpZXMgICANCiAgPC9kaXY+ICAgICANCiAgPGRpdiBpZD0iZXhhbXBsZXMiPg0KICAgIEV4YW1wbGVzICAgDQogIDwvZGl2PiAgICAgDQo8L2Rpdj4gICANCjxkaXYgY2xhc3M9ImNsZWFyYiI+ICANCjwvZGl2Pg0KPGRpdiBpZD0icGFnZV9jb250ZW50Ij4gIA0KICA8ZGl2IGlkPSJnZW5lcmFsX2MiPgk8aDM+R2VuZXJhbCBJbmZvPC9oMz4JCQ0KICAgIDxwPlNpbXBseSBwdXQsIExpc3RJdCBhbGxvd3MgeW91IHRvIGNyZWF0ZSBsaXN0cyB0aGF0IHlvdSBjYW4gZGlzcGxheSB0aHJvdWdob3V0IHlvdXIgd2Vic2l0ZS4gWW91IGNvdWxkIG1ha2UgYSBzaW1wbGUgRkFRIG9yIFRlc3RpbW9uaWFscyBmZWF0dXJlIHdpdGggdGhpcyBtb2R1bGUuIFRoZSB3ZWIgZGV2ZWxvcGVyIGRlZmluZXMgZmllbGRzIHRvIGNvbnN0cmFpbiB3aGF0IGRhdGEgdGhlIGNsaWVudCBjYW4gZW50ZXIuIEEgbnVtYmVyIG9mIGZpZWxkIHR5cGVzIGNhbiBiZSBzcGVjaWZpZWQgLSB0ZXh0IGlucHV0LCBjaGVja2JveCwgdGV4dCBhcmVhLCBzZWxlY3QgZGF0ZSwgdXBsb2FkIGZpbGUsIHNlbGVjdCBmaWxlLCBkcm9wZG93biAtIGFuZCBhZGRpdGlvbmFsIGluc3RydWN0aW9ucyBjYW4gYmUgc2V0IGZvciBlYWNoIHR5cGUsIGZvciBleGFtcGxlLCBpbnB1dCBmaWVsZCBzaXplLCBtYXggbGVuZ3RoLCBXWVNJV1lHIGVkaXRvciwgcG9zc2libGUgZHJvcCBkb3duIHZhbHVlcywgcG9zc2libGUgZmlsZSBleHRlbnNpb25zLCBkaXJlY3RvcnkgcGF0aHMgZm9yIGZpbGUgc2VsZWN0aW9ucywgZGF0ZSBmb3JtYXRzLCBldGMuDQogICAgPC9wPg0KICAgIDxwPkFuIGltcG9ydGFudCBub3RlIG9mIHdhcm5pbmcgLSBUaGlzIGlzIG5vdCBhIGNvbnRlbnQgY29uc3RydWN0aW9uIGtpdCwgc3VjaCBhcyBpbiBEcnVwYWwuIEl0IGlzIG1lYW50IGZvciBzbWFsbCBsaXN0aW5ncywgbm90IHRvIHN0b3JlIHRob3VzYW5kcyBvZiByZWNvcmRzLiBUaGlzIGlzIGJlY2F1c2Ugb2YgdGhlIGRhdGFiYXNlIG1vZGVsIHVzZWQgKEVBVikuIEFsc28sIGVhY2ggYml0IG9mIGRhdGEgeW91IGVudGVyIGlzIHN0b3JlZCBhcyBURVhUIGRhdGEgdHlwZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIHZhcmNoYXIsIGJvb2xlYW4sIHRpbWVzdGFtcCwgZXRjLiBUaGlzIGlzIGEgcmVzdHJpY3Rpb24gb2YgYSBzaG9ydCBkZXZlbG9wbWVudCB0aW1lIGZyYW1lLg0KICAgIDwvcD4JDQogIDwvZGl2PgkNCiAgPGRpdiBpZD0idXNhZ2VfYyI+CQkNCiAgICA8aDM+VXNhZ2U8L2gzPgkJCQ0KICAgICAgPHA+WW91IGNhbiBjb25maWd1cmUgeyRtb2R1bGVfbmFtZX0gaGVyZTogQ29udGVudCA+IHskbW9kdWxlX25hbWV9DQogICAgICA8L3A+CQkJDQogICAgPHA+UGxhY2UgdGhpcyB0YWcgaW4geW91ciBwYWdlOjxiciAvPgkNCiAgICB7eyRtb2R1bGVfbmFtZX19DQogICAgPC9wPgkJDQogICAgPGRpdj4JCQkNCiAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij4NCiAgICAgICAgQWZ0ZXIgaW5zdGFsbGluZyB0aGUgbW9kdWxlIHRoZSBuZXh0IHRoaW5nIHRvIGRvIGlzIHNldCB0aGUgb3B0aW9ucy4gIAkJCQkNCiAgICAgICAgPG9sPgkJCQkJDQogICAgICAgICAgPGxpPlRvIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGluIHRoZSBtZW51IGNoYW5nZSB0aGUgJ01vZHVsZSBGcmllbmRseSBOYW1lJy4NCiAgICAgICAgICA8L2xpPgkJCQkJDQogICAgICAgICAgPGxpPlRvIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGUgaXRlbSB0YWIgY2hhbmdlIHRoZSAnSXRlbSBQbHVyYWwnLg0KICAgICAgICAgIDwvbGk+CQkJCQ0KICAgICAgICA8L29sPgkJDQogICAgICA8L2Rpdj4NCiAgICAgIDxiciBzdHlsZT0iY2xlYXI6Ym90aDsiIC8+CQkNCiAgICA8L2Rpdj4JCQ0KICAgIDxkaXY+DQogICAgICA8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+DQogICAgICAgIE5leHQgLSBzZXQgdGhlIEZpZWxkIERlZmluaXRpb25zLiANCiAgICAgICAgPG9sPg0KICAgICAgICAgIDxsaT5DaG9vc2UgZnJvbSAnVGV4dCBJbnB1dCcsICdDaGVja2JveCcsICdUZXh0IEFyZWEnLCAnU2VsZWN0IERhdGUnLCAnVXBsb2FkIEZpbGUnLCAnU2VsZWN0IEZpbGUnICYgJ0Ryb3Bkb3duJy4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaT5Gb3IgZWFjaCBmaWVsZCBkZWZpbml0aW9uLCB5b3UgY2FuIHNwZWNpZnkgYWRkaXRpb25hbCBpbnN0cnVjdGlvbnMgaW4gdGhlICdleHRyYScgZmllbGQuIFNlZSB0aGUgJ0ZpZWxkIERlZmluaXRpb25zJyB0YWIgZm9yIGEgbGlzdC4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaT5FYWNoIGl0ZW0gaW4gZWFjaCBsaXN0IGhhcyB0aHJlZSBkZWZhdWx0IGZpZWxkcy4gQWxsIEZpZWxkIERlZmluaXRpb25zIHNldCBoZXJlIGFyZSBhZGRpdGlvbmFsIHRvIHRoZW0uDQogICAgICAgICAgPC9saT4NCiAgICAgICAgPC9vbD4NCiAgICAgIDwvZGl2PjxiciBzdHlsZT0iY2xlYXI6Ym90aDsiIC8+DQogICAgPC9kaXY+DQogICAgICAgIDxkaXY+DQogICAgICANCiAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij4NCiAgICAgICAgTm93IHdlIG1vdmUgb24gdG8gdGhlIEl0ZW0gbGlzdCBpdHNlbGYuIEluIHRoaXMgZXhhbXBsZSBpdCBzYXlzICdBZGQgQm94JywgdGhpcyB3YXMgcmVuYW1lZCBpbiB0aGUgJ09wdGlvbnMnIHRhYi4gDQogICAgICAgIDxvbD4NCiAgICAgICAgICA8bGk+VGhlIGZpcnN0IGZpZWxkIGlzIHRoZSBkZWZhdWx0ICdUaXRsZScgZmllbGQuDQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGk+VGhlICdDYXRlZ29yeScgZHJvcGRvd24gaXMgYWxzbyBhIGRlZmF1bHQgZmllbGQsIGFuZCBpZiB1bmNoYW5nZWQsIHdpbGwgYmUgc2V0IHRvICdHZW5lcmFsJy4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaT5UaGUgdGhpcmQgZGVmYXVsdCBmaWVsZCBpcyB0aGUgY2hlY2tib3ggY2FsbGVkICdBY3RpdmUnLiBUaGlzIGFsbG93cyB5b3UgdG8gdG9nZ2xlIGEgbGlzdCBlbnRyeSB3aXRob3V0IGRlbGV0aW5nIGl0Lg0KICAgICAgICAgIDwvbGk+DQogICAgICAgIDwvb2w+DQogICAgICA8L2Rpdj48YnIgc3R5bGU9ImNsZWFyOmJvdGg7IiAvPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7IiAvPg0KICAgIDwvZGl2Pg0KICA8L2Rpdj4NCiAgPGRpdiBpZD0icGVybWlzc2lvbnNfYyI+PGgzPlBlcm1pc3Npb25zPC9oMz4NCiAgICA8cD5Zb3UgY2FuIHNwZWNpZnkgdGhlIGZvbGxvd2luZyBwZXJtaXNzaW9ucyB1bmRlciBVc2VycyAmIEdyb3VwcyA+IEdyb3VwIFBlcm1pc3Npb25zDQogICAgPC9wPg0KICAgIDx1bD4NCiAgICAgIDxsaT57JG1vZHVsZV9uYW1lfTogbW9kaWZ5IEl0ZW1zDQogICAgICA8L2xpPg0KICAgICAgPGxpPnskbW9kdWxlX25hbWV9OiBtb2RpZnkgQ2F0ZWdvcmllcw0KICAgICAgPC9saT4NCiAgICAgIDxsaT57JG1vZHVsZV9uYW1lfTogbW9kaWZ5IE9wdGlvbnMNCiAgICAgIDwvbGk+DQogICAgICA8bGk+eyRtb2R1bGVfbmFtZX06IGFsbCBjYXRlZ29yeSB2aXNpYmxlDQogICAgICA8L2xpPg0KICAgIDwvdWw+DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJmaWVsZF9jIj48aDM+RmllbGQgRGVmaW5pdGlvbnM8L2gzPg0KICAgIDxwPlRoZSBmaXJzdCB0aGluZyB5b3Ugc2hvdWxkIGNvbmZpZ3VyZSBhcmUgeW91ciBmaWVsZCBkZWZpbml0aW9ucy4NCiAgICA8L3A+DQogICAgPHA+Rm9yIGVhY2ggZmllbGQgZGVmaW5pdGlvbiwgeW91IGNhbiBzcGVjaWZ5IGFkZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zIGluIHRoZSAiZXh0cmEiIGZpZWxkLg0KICAgIDwvcD4NCiAgICA8dWw+ICAgIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPnNpemVbMjBdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGludGVnZXI8YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogVGV4dCBJbnB1dCwgU2VsZWN0IERhdGUNCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgICANCiAgICAgIDxsaT4gICAgICAgIA0KICAgICAgPHA+SW5zdHJ1Y3Rpb246IA0KICAgICAgICA8Y29kZT5tYXhfbGVuZ3RoWzIwXQ0KICAgICAgICA8L2NvZGU+PGJyIC8+DQogICAgICAgIFBvc3NpYmxlIHZhbHVlOiBpbnRlZ2VyPGJyIC8+DQogICAgICAgIEFwcGxpY2FibGUgdG86IFRleHQgSW5wdXQsIFRleHQgQXJlYSwgU2VsZWN0IERhdGUNCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+d3lzaXd5Z1sxXQ0KICAgICAgICA8L2NvZGU+PGJyIC8+DQogICAgICAgIFBvc3NpYmxlIHZhbHVlOiAxfDB8dHJ1ZXxmYWxzZTxiciAvPg0KICAgICAgICBBcHBsaWNhYmxlIHRvOiBUZXh0IEFyZWENCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgICANCiAgICAgIDxsaT4gICAgICAgIA0KICAgICAgPHA+SW5zdHJ1Y3Rpb246IA0KICAgICAgICA8Y29kZT5vcHRpb25zW2FwcGxlPUFwcGxlLGJhbmFuYT1CYW5hbmFdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGtleT12YWx1ZSwuLi4gb3Ige2Ntc19tb2R1bGV9IHRhZyB3aXRoIHNpbWlsYXIgb3V0cHV0IGV0Yy4ge2Ntc19nYWxsZXJ5IG1vZHVsZT1HYWxsZXJ5IHRlbXBsYXRlPXNlbGVjdGVib3h9PGJyIC8+DQogICAgICAgIEFwcGxpY2FibGUgdG86IERyb3Bkb3duDQogICAgICA8L3A+ICAgIA0KICAgICAgPC9saT4gICAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+TW9kdWxlbmFtZVthY3Rpb249ZGVmYXVsdCxzb3J0Ynk9dGl0bGUsc29ydG9yZGVyPWRlc2NdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGV2ZXJ5dGhpbmcgeW91IHVzZWQgaW4gbW9kdWxlDQogICAgICAgIEFwcGxpY2FibGUgdG86IE1vZHVsZQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+ICAgIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPm11bHRpcGxlWzVdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGludGVnZXI8YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogTW9kdWxlDQogICAgICA8L3A+ICAgIA0KICAgICAgPC9saT4gIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPmFsbG93W3BkZixnaWYscG5nLGpwZWcsanBnXQ0KICAgICAgICA8L2NvZGU+PGJyIC8+DQogICAgICAgIFBvc3NpYmxlIHZhbHVlOiBleHRlbnNpb24sLi4uIChrZWVwIGxvd2VyY2FzZSk8YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogVXBsb2FkIEZpbGUsIFNlbGVjdCBGaWxlDQogICAgICA8L3A+ICAgIA0KICAgICAgPC9saT4gICAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+ZGlyWy9wYXRoL3RvL2Rpcl0NCiAgICAgICAgPC9jb2RlPjxiciAvPg0KICAgICAgICBQb3NzaWJsZSB2YWx1ZTogRGlyZWN0b3J5IHBhdGggdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIA0KICAgICAgICA8Y29kZT5cJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10NCiAgICAgICAgPC9jb2RlPi4gTm8gc2xhc2ggYXQgdGhlIGVuZC48YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogU2VsZWN0IEZpbGUNCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgICANCiAgICAgIDxsaT4gICAgICAgIA0KICAgICAgPHA+SW5zdHJ1Y3Rpb246IA0KICAgICAgICA8Y29kZT5leGNsdWRlX3ByZWZpeFt0aHVtYl8sZm9vX10NCiAgICAgICAgPC9jb2RlPjxiciAvPg0KICAgICAgICBQb3NzaWJsZSB2YWx1ZTogcHJlZml4LC4uLjxiciAvPg0KICAgICAgICBBcHBsaWNhYmxlIHRvOiBTZWxlY3QgRmlsZQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+ICAgIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPmRhdGVmb3JtYXRbZGQvbW0veXldDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IERhdGUgZm9ybWF0IHVzZWQgYnkgdGhlIGpxdWVyeSBkYXRlcGlja2VyPGJyIC8+DQogICAgICAgIEFwcGxpY2FibGUgdG86IFRleHQgQXJlYQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+DQogICAgPC91bD4NCiAgICA8cD5Zb3UgY2FuIHNwZWNpZnkgbXVsdGlwbGUgaW5zdHJ1Y3Rpb25zIHNlcGFyYXRlZCBieSBhIHNlbWljb2xvbiAoIA0KICAgICAgPGNvZGU+Ow0KICAgICAgPC9jb2RlPiApLCBmb3IgZXhhbXBsZToNCiAgICA8L3A+DQogICAgPHA+DQogICAgICA8Y29kZT5hbGxvd1twZGZdO2RpclsvZG9jcy9wZGZdDQogICAgICA8L2NvZGU+DQogICAgPC9wPg0KICA8L2Rpdj4NCiAgPGRpdiBpZD0iY2F0ZWdvcmllc19jIj4NCiAgICA8aDM+Q2F0ZWdvcmllczwvaDM+DQogICAgPHA+T25seSBzaW5nbGUgbGV2ZWwgY2F0ZWdvcmllcyBhcmUgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4NCiAgICA8L3A+DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJleGFtcGxlc19jIj4NCiAgICA8aDM+RXhhbXBsZXM8L2gzPg0KICAgIDxwPntNb2R1bGVOYW1lIGZpbHRlcl8xX2VxdWFsPTEgZGF0ZV9zdGFydD0xIGRhdGVfZW5kPTF9PC9wPg0KICAgIDx1bD4NCiAgICA8bGk+dmFsdWUgZnJvbSBjdXN0b20gZmllbGRpZCB3aXRoIGlkIDEgPSAxPC9saT4NCiAgICA8bGk+ZGF0ZSBzdGFydCAgPCBOT1c8L2xpPg0KICAgIDxsaT5lbmQgZGF0ZSAgPiBOT1c8L2xpPg0KICAgIDwvdWw+DQogICAgPGJyIC8+DQogICAgPHA+e01vZHVsZU5hbWUgZmlsdGVyX2l0ZW1JZF9pbnNldD0nMSwyLDMnfTwvcD4NCiAgICA8dWw+DQogICAgPGxpPml0ZW0gaWQgaXMgaXMgaW4gc2V0ICgxLDIsMyk8L2xpPg0KICAgIDwvdWw+DQogICAgPGJyIC8+DQogICAgPHA+e01vZHVsZU5hbWUgIGFsbHJvdz0iaXRlbXMifTwvcD4NCiAgICA8dWw+DQogICAgPGxpPnNldCBhbGwgcmVzdWx0IHRvIHNtYXJ0eSB2YXIgXCRpdGVtczwvbGk+ICAgIA0KICAgIDwvdWw+DQogICAgPGJyIC8+DQogICAgPHA+e01vZHVsZU5hbWUgYWN0aW9uPSJkZXRhaWwiIGl0ZW1faWQ9MSAgb25lcm93PSJpdGVtIn08L3A+DQogICAgPHVsPg0KICAgIDxsaT5kZXRhaWwgZnJvbSBpdGVtIHdpdGggaWQgMTwvbGk+ICAgIA0KICAgIDxsaT5zZXQgcmVzdWx0IHRvIHNtYXJ0eSB2YXIgXCRpdGVtPC9saT4gICAgDQogICAgPC91bD4NCiAgPC9kaXY+DQo8L2Rpdj4NCkVPVDsNCiRsYW5nWydoZWxwX3BhcmFtX2FjdGlvbiddID0gPDw8RU9UDQonT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KPGxpPiZxdW90O2RlZmF1bHQmcXVvdDsgLSB0byBkaXNwbGF5IHRoZSBzdW1tYXJ5IHZpZXcuPC9saT4NCjxsaT4mcXVvdDtkZXRhaWwmcXVvdDsgLSB0byBkaXNwbGF5IGEgc3BlY2lmaWVkIGVudHJ5IGluIGRldGFpbCBtb2RlLjwvbGk+DQo8bGk+JnF1b3Q7Y2F0ZWdvcmllcyZxdW90OyAtIHRvIGRpc3BsYXkgdGhlIGNhdGVnb3JpZXM8L2xpPg0KPGxpPiZxdW90O2ZpbHRlciZxdW90OyAtIGZpbHRlciBmb3IgaXRlbXM8L2xpPg0KPC91bD4NCkVPVDsNCiRsYW5nWydoZWxwX3BhcmFtX2NhdGVnb3J5X2lkJ10gPSAnU3BlY2lmeSB0aGUgY2F0ZWdvcnkgaWQgdG8gZGlzcGxheSBpdGVtcyBvbmx5IGZyb20gdGhpcyBjYXRlZ29yeS4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fY2F0ZWdvcnknXSA9ICdTcGVjaWZ5IHRoZSBjYXRlZ29yeSBhbGlhcyB0byBkaXNwbGF5IGl0ZW1zIG9ubHkgZnJvbSB0aGlzIGNhdGVnb3J5Lic7DQokbGFuZ1snaGVscF9wYXJhbV9kZXRhaWx0ZW1wbGF0ZSddID0gJ1RoZSBkZXRhaWwgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlLic7DQokbGFuZ1snaGVscF9wYXJhbV9zdW1tYXJ5dGVtcGxhdGUnXSA9ICdUaGUgc3VtbWFyeSB0ZW1wbGF0ZSB5b3Ugd2lzaCB0byB1c2UnOw0KJGxhbmdbJ2hlbHBfcGFyYW1fY2F0ZWdvcnl0ZW1wbGF0ZSddID0gJ1RoZSBjYXRlZ29yeSB0ZW1wbGF0ZSB5b3Ugd2lzaCB0byB1c2UnOw0KJGxhbmdbJ2hlbHBfcGFyYW1fZmlsdGVydGVtcGxhdGUnXSA9ICdUaGUgZmlsdGVyIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSc7DQokbGFuZ1snaGVscF9wYXJhbV9vcmRlcmJ5J10gPSAnWW91IGNhbiBvcmRlciBieSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb2x1bW5zOiBpdGVtX2lkLCB0aXRsZSwgaXRlbV9kYXRlLCBtb2RpZmllZCwgcmFuZG9tLCBmOmZpZWxkYWxpYXMuJzsNCiRsYW5nWydoZWxwX3BhcmFtX3BhZ2VsaW1pdCddID0gJ1BhZ2UgbGltaXQgZm9yIHBhZ2luYXRpb24nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fc29ydG9yZGVyJ10gPSAnT3JkZXIgZm8gIGRlZmF1bHQgYWN0aW9uJzsNCiRsYW5nWydoZWxwX3BhcmFtX2lubGluZSddID0gJ0lubGluZSc7DQokbGFuZ1snaGVscF9wYXJhbV9vbmVyb3cnXSA9ICdTZXQgcmVzdWx0IGFycmF5IHRvIHNtYXJ0eS4gRm9yIGRlZmF1bHQgYW5kIGRldGFpbCBhY3Rpb24nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fYWxscm93J10gPSAnU2V0IHJlc3VsdHMgYXJyYXkgdG8gc21hcnR5LiBGb3IgZGVmYXVsdCBhY3Rpb24nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fb25lY291bnQnXSA9ICdTZXQgY291bnQgcmVzdWx0IHRvIHNtYXJ0eS4gRm9yIGRlZmF1bHQgYWN0aW9uJzsNCiRsYW5nWydoZWxwX3BhcmFtX2RhdGVfc3RhcnQnXSA9ICdBbGxvdyB1c2luZyBkYXRlX2VuZCBmb3IgcHVibGljIGl0ZW1zJzsNCiRsYW5nWydoZWxwX3BhcmFtX2RhdGVfZW5kJ10gPSAnSXRlbXMgZXhwaXJhdGlvbic7DQokbGFuZ1snaGVscF9wYXJhbV9maWx0ZXInXSA9ICdGaWx0ZXIgZm9yIHJlc3VsdHMuIFlvdSBjYW4gdXNlIGZpbHRlcl9GSUVMRElEX0NPTkRJVElPTiBmb3IgZmllbGRzIG9yIGZpbHRlcl9QUkVGX0NPTkRJVElPTiBmb3IgaXRlbSBjb2xzLjxiciAvPg0KQ29uZGl0aW9uIGZvciBGSUVMRFMgKGV0YzogZmllbGRfMV9lcXVhbD1cJ2FwcGxlXCcpOjxiciAgLz4NCjx1bD4NCjxsaT5udWxsPC9saT4NCjxsaT5ub3RudWxsPC9saT4NCjxsaT5pbjwvbGk+DQo8bGk+aW5zZXQ8L2xpPg0KPGxpPmluc2V0PC9saT4NCjxsaT5sZXNzPC9saT4NCjxsaT5sZXNzZXF1YWw8L2xpPg0KPGxpPmdyZWF0ZXI8L2xpPg0KPGxpPmdyZWF0ZXJlcXVhbDwvbGk+DQo8bGk+bGlrZTwvbGk+DQo8bGk+bm90ZXF1YWw8L2xpPg0KPGxpPmVxdWFsPC9saT4NCjwvdWw+DQpDb25kaXRpb24gZm9yIGl0ZW0gY29scyAtIGl0ZW1JZCwgaXRlbURhdGVFbmQsIGl0ZW1EYXRlLCBhbGlhcywgdXJsICAgKGV0YzogZmllbGRfaXRlbURhdGVFbmRfZXF1YWw9XCcyMDExLTAxLTAxIDAwOjAwOjAwXCcpOjxiciAgLz4NCjx1bD4NCjxsaT5udWxsPC9saT4NCjxsaT5ub3RudWxsPC9saT4NCjxsaT5pbjwvbGk+DQo8bGk+aW5zZXQ8L2xpPg0KPGxpPmxpa2U8L2xpPg0KPGxpPmxlc3M8L2xpPg0KPGxpPmxlc3NlcXVhbDwvbGk+DQo8bGk+Z3JlYXRlcjwvbGk+DQo8bGk+Z3JlYXRlcmVxdWFsPC9saT4NCjxsaT5ub3RlcXVhbDwvbGk+DQo8bGk+ZXF1YWw8L2xpPg0KPC91bD4NCic7DQoNCiRsYW5nWydoZWxwX3BhcmFtX2RldGFpbHBhZ2UnXSA9ICdQYWdlIHRvIGRpc3BsYXkgaXRlbSBkZXRhaWxzIGluLiBNdXN0IGJlIGEgcGFnZSBhbGlhcy4gVXNlZCB0byBhbGxvdyBkZXRhaWxzIHRvIGJlIGRpc3BsYXllZCBpbiBhIGRpZmZlcmVudCBwYWdlIHRoYW4gc3VtbWFyeS4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1faXRlbSddID0gJ1RoaXMgcGFyYW1ldGVyIGlzIG9ubHkgYXBwbGljYWJsZSB0byB0aGUgZGV0YWlsIHZpZXcuIEl0IGFsbG93cyBzcGVjaWZ5aW5nIHdoaWNoIGl0ZW0gdG8gZGlzcGxheSBpbiBkZXRhaWwgbW9kZS4gTXVzdCBiZSBhbiBpdGVtIGFsaWFzLic7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCiR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7DQoNCg0KLy8gY3JlYXRlIGl0ZW0gdGFibGUNCg0KJGZpZWxkcyA9ICcNCiAgICBpdGVtX2lkIEkgS0VZIEFVVE8sDQoJY2F0ZWdvcnlfaWQgSSwNCiAgICB0aXRsZSBDKDI1NSksDQoJYWxpYXMgQygyNTUpLA0KCXVybCBDKDI1NSksDQoJcmVjdXJzaXZlIEMoNTApLA0KICAgIHBvc2l0aW9uIEksDQogICAgYWN0aXZlIEkoMSksDQogICAgaXRlbV9kYXRlICcgLiBDTVNfQURPREJfRFQgLiAnLA0KICAgIGl0ZW1fZGF0ZV9lbmQgJyAuIENNU19BRE9EQl9EVCAuICcsDQogICAgY3JlYXRlX2RhdGUgJyAuIENNU19BRE9EQl9EVCAuICcsDQoJbW9kaWZpZWRfZGF0ZSAnIC4gQ01TX0FET0RCX0RUIC4gJw0KJzsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtJywgJGZpZWxkcywgJHRhYm9wdGFycmF5KTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCg0KICRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ191cmwnLA0KCQkJCSAgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtJywNCgkJCQkgICd1cmwnKTsNCiAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKGNtc19kYl9wcmVmaXgoKS4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3J5X2lkJywNCgkJCQkgIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbScsDQoJCQkJICAnY2F0ZWdvcnlfaWQnKTsNCiAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCg0KLy8gY3JlYXRlIGNhdGVnb3J5IHRhYmxlDQokZmllbGRzID0gIg0KCWNhdGVnb3J5X2lkIEkgS0VZIEFVVE8sDQoJY2F0ZWdvcnlfbmFtZSBDKDI1NSksDQoJY2F0ZWdvcnlfYWxpYXMgQygyNTUpLA0KCXBhcmVudF9pZCBJLA0KCWhpZXJhcmNoeSBDKDI1NSksDQogICAgICAgIHBvc2l0aW9uIEksDQogICAgICAgIGhpZXJhcmNoeV9wb3NpdGlvbiBDKDI1NSksDQoJbG9uZ19uYW1lIFgsDQogICAgICAgIHVzZXJncm91cCBJLA0KCWNyZWF0ZV9kYXRlIFQsDQoJbW9kaWZpZWRfZGF0ZSBUDQoiOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQoNCi8vIGNyZWF0ZSBmaWVsZGRlZiB0YWJsZQ0KDQokZmllbGRzID0gJw0KICAgIGZpZWxkZGVmX2lkIEkgS0VZIEFVVE8sDQogICAgbmFtZSBDKDI1NSksDQogICAgYWxpYXMgQygyNTUpLA0KICAgIGhlbHAgQygyNTUpLA0KICAgIHR5cGUgQyg1MCksDQogICAgc2VjdGlvbiBDKDEwKSwNCiAgICBwb3NpdGlvbiBJLA0KICAgIHJlcXVpcmVkIEkoMSksDQogICAgZnJvbnRlbmQgSSgxKSwNCiAgICBlZGl0dmlldyBJKDEpLA0KICAgIGZpbHRlcl9mcm9udGVuZCBJKDEpLA0KICAgIGZpbHRlcl9hZG1pbiBJKDEpLA0KICAgIHNlYXJjaGFibGUgSSgxKSwNCiAgICBleHRyYSBDKDI1NSkNCic7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBjcmVhdGUgZmllbGR2YWwgdGFibGUNCg0KJGZpZWxkcyA9ICcNCiAgICBpdGVtX2lkIEkgS0VZIE5PVCBudWxsLA0KICAgIGZpZWxkZGVmX2lkIEkgS0VZIE5PVCBudWxsLA0KICAgIHZhbHVlIFgNCic7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBjcmVhdGUgaXRlbSBleHRyYSB0YWJsZQ0KDQokZmllbGRzID0gJw0KICAgIGl0ZW1faWQgSSBLRVkgTk9UIG51bGwsDQogICAgdmFsdWUgSSBLRVkgTk9UIG51bGwsDQonOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW1fZXh0cmEnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBjYXRlZ29yeSB0ZW1wbGF0ZQ0KJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwgJ3RlbXBsYXRlcycsICdvcmlnX2NhdGVnb3J5X3RlbXBsYXRlLnRwbCcpOw0KaWYgKGZpbGVfZXhpc3RzKCRmbikpIHsNCiAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cygkZm4pOw0KICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfY2F0ZWdvcnlfdGVtcGxhdGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFRlbXBsYXRlKCdjYXRlZ29yeV90ZW1wbGF0ZVNhbXBsZScsICR0ZW1wbGF0ZSk7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9jYXRlZ29yeV90ZW1wbGF0ZScsICdTYW1wbGUnKTsNCn0NCg0KLy8gc3VtbWFyeSB0ZW1wbGF0ZQ0KJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwgJ3RlbXBsYXRlcycsICdvcmlnX3N1bW1hcnlfdGVtcGxhdGUudHBsJyk7DQppZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KICAgICR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9zdW1tYXJ5X3RlbXBsYXRlJywgJHRlbXBsYXRlKTsNCiAgICAkbW9kLT5TZXRUZW1wbGF0ZSgnc3VtbWFyeV90ZW1wbGF0ZVNhbXBsZScsICR0ZW1wbGF0ZSk7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9zdW1tYXJ5X3RlbXBsYXRlJywgJ1NhbXBsZScpOw0KfQ0KDQovLyBkZXRhaWwgdGVtcGxhdGUNCiRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksICd0ZW1wbGF0ZXMnLCAnb3JpZ19kZXRhaWxfdGVtcGxhdGUudHBsJyk7DQppZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KICAgICR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9kZXRhaWxfdGVtcGxhdGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFRlbXBsYXRlKCdkZXRhaWxfdGVtcGxhdGVTYW1wbGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfZGV0YWlsX3RlbXBsYXRlJywgJ1NhbXBsZScpOw0KfQ0KDQovLyBmaWx0ZXIgdGVtcGxhdGUNCiRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksICd0ZW1wbGF0ZXMnLCAnb3JpZ19maWx0ZXJfdGVtcGxhdGUudHBsJyk7DQppZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KICAgICR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9maWx0ZXJfdGVtcGxhdGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFRlbXBsYXRlKCdmaWx0ZXJfdGVtcGxhdGVTYW1wbGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfZmlsdGVyX3RlbXBsYXRlJywgJ1NhbXBsZScpOw0KfQ0KDQoNCi8vIHNldCBwcmVmZXJlbmNlcw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdmcmllbmRseW5hbWUnLCAkbW9kLT5HZXROYW1lKCkpOw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgnaXRlbV9zaW5ndWxhcicsIGdlbmVyYXRvcigpLT5MYW5nKCdpdGVtJykpOw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgnaXRlbV9wbHVyYWwnLCBnZW5lcmF0b3IoKS0+TGFuZygnaXRlbXMnKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2l0ZW1fdGl0bGUnKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlX2VkaXQnLCAxKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfZWRpdCcsIDEpOw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgncmVjdXJzaXZlJywgMCk7DQoNCiRtb2QtPlNldFByZWZlcmVuY2UoJ21vZGUnLCAnYWR2YW5jZWQnKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3NvcnRvcmRlcl9hZHZhbmNlZCcsICdkZXNjJyk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdzb3J0YnlfYWR2YW5jZWQnLCAnY3JlYXRlX2RhdGUnKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3N1bW1hcnlfcGFnZWxpbWl0X2FkdmFuY2VkJywgMjUpOw0KDQokbW9kLT5TZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfc2ltcGxlJywgJ2Rlc2MnKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3NvcnRieV9zaW1wbGUnLCAncG9zaXRpb24nKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3N1bW1hcnlfcGFnZWxpbWl0X3NpbXBsZScsIDEwMDAwKTsNCg0KJG1vZC0+U2V0UHJlZmVyZW5jZSgnaGFzX2FkbWluJywgMSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdzZWFyY2hhYmxlJywgMSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdpbWFnZXNfc2l6ZV9hZG1pbicsICcyMDB4Jyk7DQoNCiR0aGlzLT5DcmVhdGVFdmVudCgnSXRlbUFkZGVkJyk7DQokdGhpcy0+Q3JlYXRlRXZlbnQoJ0l0ZW1FZGl0ZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnSXRlbURlbGV0ZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlBZGRlZCcpOw0KJHRoaXMtPkNyZWF0ZUV2ZW50KCdDYXRlZ29yeUVkaXRlZCcpOw0KJHRoaXMtPkNyZWF0ZUV2ZW50KCdDYXRlZ29yeURlbGV0ZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnSXRlbXNSZW9yZGVyZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnQ2F0ZWdvcmllc1Jlb3JkZXJlZCcpOw0KDQovLyBzZXQgcGVybWlzc2lvbnMNCiRtb2QtPkNyZWF0ZVBlcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJywgJG1vZC0+TGFuZygnbW9kaWZ5X2l0ZW0nKSk7DQokbW9kLT5DcmVhdGVQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfY2F0ZWdvcmllcycsICRtb2QtPkxhbmcoJ21vZGlmeV9jYXRlZ29yaWVzJykpOw0KJG1vZC0+Q3JlYXRlUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfYWxsX2NhdGVnb3J5X3Zpc2JpbGUnLCAkbW9kLT5MYW5nKCdhbGxfY2F0ZWdvcnlfdmlzYmlsZScpKTsNCiRtb2QtPkNyZWF0ZVBlcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nLCAkbW9kLT5MYW5nKCdtb2RpZnlfb3B0aW9uJykpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQoNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCg0KLy8gZHJvcCB0YWJsZXMNCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0nKTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnKTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcnknKTsgLy8gdGhlIG9ubHkgZ29vZCBjYXQgaXMgYSBkZWFkIGNhdA0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCcpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyByZW1vdmUgcHJlZmVyZW5jZXMNCiRtb2QtPlJlbW92ZVByZWZlcmVuY2UoKTsNCg0KLy8gcmVtb3ZlIHBlcm1pc3Npb25zDQokbW9kLT5SZW1vdmVQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfaXRlbScpOw0KJG1vZC0+UmVtb3ZlUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKTsNCiRtb2QtPlJlbW92ZVBlcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2FsbF9jYXRlZ29yeV92aXNiaWxlJyk7DQokbW9kLT5SZW1vdmVQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfb3B0aW9uJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/PD9waHANCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOw0KJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOw0KDQpzd2l0Y2ggKCRvbGR2ZXJzaW9uKSB7DQogICAgY2FzZSAnMS4wJzoNCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_addcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_approveitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_bulkaction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_deletecategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_deletefielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_deleteitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_editcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_editfielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_edititem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_editoption.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_fields.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_movecategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_movefielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_moveitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_ordercategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_ordercategory_do.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_search_reindex.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_templates.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.detail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.filter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_categorytab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_fielddeftab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_fielddeftab_categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_itemtab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_optiontab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_templatetab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyogLS0tIGRvIG5vdCBlZGl0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLyogVG8gbWFrZSB0aGlzIG1vZHVsZSBlYXN5IHRvIGR1cGxpY2F0ZSwgdGhlIG1vZHVsZSBuYW1lIGFuZCBtb2R1bGUgYWxpYXMNCiAqIGlzIHRha2VuIGZyb20gdGhlIG1vZHVsZSBkaXJlY3RvcnkgbmFtZSB0aGF0IHRoaXMgbGFuZyBmaWxlIGlzIGNvbnRhaW5lZC4NCiAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGUgbW9kdWxlIG9iamVjdCBjYW5ub3QgYmUgYWNjZXNzZWQgd2l0aG91dA0KICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHRoZSBtb2R1bGUgb2JqZWN0IGNhbm5vdCBiZSBhY2Nlc3NlZCB3aXRob3V0DQogKiBrbm93aW5nIGl0cyBuYW1lLg0KICovDQokY29uZmlnPWNtc21zKCktPkdldENvbmZpZygpOw0KJGRpciA9IHN0cl9yZXBsYWNlKCdcXCcgLCAnLycsIGRpcm5hbWUoX19GSUxFX18pKTsNCnByZWdfbWF0Y2goJy9cL21vZHVsZXNcLyguKylcLy8nLCAkZGlyLCAkbWF0Y2hlcyk7DQokbW9kdWxlX25hbWUgPSAkbWF0Y2hlc1sxXTsNCiRtb2R1bGVfYWxpYXMgPSBzdHJ0b2xvd2VyKCRtYXRjaGVzWzFdKTsNCiRyb290dXJsID0gJGNvbmZpZ1sncm9vdF91cmwnXTsNCmluY2x1ZGUoY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwnbW9kdWxlcycsJ01vZHVsZUdlbmVyYXRvcicsJ01vZHVsZUxpYicsJ2xhbmcnLCdlbl9VUy5waHAnKSk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGVfb25jZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/ModuleExample.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiAgZ2VuZXJhdG9yICAtIHVnbHksIGJ1dCB3b3JrcyA6KQ0KICogQHJldHVybiBvYmplY3QgDQogKi8NCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZW5lcmF0b3InKSkgew0KDQogICAgZnVuY3Rpb24gZ2VuZXJhdG9yKCkgew0KICAgICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsNCiAgICB9DQoNCn0NCg0KLyoNCg0KICBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+DQogIENvLU1haW50YWluZXI6IFNpbW9uIFJhZGZvcmQsIDxzaW1vbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+DQogIFdlYjogd3d3LmNvbmNlcHRmYWN0b3J5LmNvbS5hdQ0KICBDby1NYWludGFpbmVyOiBKb25hdGhhbiBTY2htaWQsIDxoaUBqb25hdGhhbnNjaG1pZC5kZT4NCg0KICBMaXN0SXQgaXMgYSBDTVMgTWFkZSBTaW1wbGUgbW9kdWxlIHRoYXQgZW5hYmxlcyB0aGUgd2ViIGRldmVsb3BlciB0byBjcmVhdGUNCiAgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQ0KICBuYW1lcyBmb3IgZWFzaWVyIGNsaWVudCBtYWludGVuYW5jZS4NCg0KICBXaGVuIGR1cGxpY2F0aW5nIHRoaXMgbW9kdWxlIGNoYW5nZSB0aGUgJ0xpc3RJdCcgYmVsb3cgdG8gdGhlIG5ldyBtb2R1bGUNCiAgbmFtZSwgZS5nLiBOZXdOYW1lLiBGb2xsb3cgdGhlIENNU01TIG1vZHVsZSBuYW1pbmcgY29udmVudGlvbnMsIGEteiB3aXRoIG5vDQogIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMgb3Igc3BhY2VzLiBBbHNvIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGlzIGZpbGUgdG8gbWF0Y2gNCiAgLSBOZXdOYW1lLm1vZHVsZS5waHAuIEZpbmFsbHkgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBMaXN0SXQgZm9sZGVyIHRvIHRoZQ0KICBzYW1lIE5ld05hbWUNCg0KICovDQoNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiRjZ2V4dGVuc2lvbnMgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3Jvb3RfcGF0aCddLCAnbW9kdWxlcycsICdDR0V4dGVuc2lvbnMnLCAnQ0dFeHRlbnNpb25zLm1vZHVsZS5waHAnKTsNCmlmICghaXNfcmVhZGFibGUoJGNnZXh0ZW5zaW9ucykpIHsNCiAgICBlY2hvICc8aDE+PGZvbnQgY29sb3I9InJlZCI+RVJST1I6IFRoZSBDR0V4dGVuc2lvbnMgbW9kdWxlIGNvdWxkIG5vdCBiZSBmb3VuZC48L2ZvbnQ+PC9oMT4nOw0KICAgIHJldHVybjsNCn0NCnJlcXVpcmVfb25jZSgkY2dleHRlbnNpb25zKTsNCg0KY2xhc3MgTW9kdWxlRXhhbXBsZSBleHRlbmRzIENHRXh0ZW5zaW9ucyB7DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7DQogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TmFtZSgpIHsNCiAgICAgICAgcmV0dXJuIGdldF9jbGFzcygkdGhpcyk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZyaWVuZGx5bmFtZScpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgew0KICAgICAgICByZXR1cm4gJzEuMCc7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKSB7DQogICAgICAgIHJldHVybiAnQGt1em1hbnknOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsNCiAgICAgICAgcmV0dXJuICd6ZGVub0BrdXptYW55LmJpeic7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsNCg0KICAgICAgICAkdGhpcy0+SW5pdGlhbGl6ZUFkbWluKCk7DQogICAgICAgICR0aGlzLT5Jbml0aWFsaXplRnJvbnRlbmQoKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gQWxsb3dBdXRvVXBncmFkZSgpIHsNCiAgICAgICAgcmV0dXJuIEZBTFNFOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKSB7DQoNCiAgICAgICAgLy8gYXV0byBsb2FkIGZvciBnZW5lcmF0b3Jfb3B0cw0KICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgICAgICRnZW5lcmF0b3Jfb3B0cyA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sncm9vdF9wYXRoJ10sICdtb2R1bGVzJywgJ01vZHVsZUdlbmVyYXRvcicsICdsaWInLCAnY2xhc3MuZ2VuZXJhdG9yX29wdHMucGhwJyk7DQogICAgICAgIHJlcXVpcmVfb25jZSgkZ2VuZXJhdG9yX29wdHMpOw0KDQogICAgICAgIGdlbmVyYXRvcl9vcHRzOjppbml0X2FkbWluKCR0aGlzKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgew0KDQogICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiAgICAgICAgJGdlbmVyYXRvcl9vcHRzID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWydyb290X3BhdGgnXSwgJ21vZHVsZXMnLCAnTW9kdWxlR2VuZXJhdG9yJywgJ2xpYicsICdjbGFzcy5nZW5lcmF0b3Jfb3B0cy5waHAnKTsNCiAgICAgICAgcmVxdWlyZV9vbmNlKCRnZW5lcmF0b3Jfb3B0cyk7DQoNCiAgICAgICAgZ2VuZXJhdG9yX29wdHM6OmluaXQoJHRoaXMpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkgew0KICAgICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xhenlsb2FkaW5nJykpIHsNCiAgICAgICAgICAgIHJldHVybiBUUlVFOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24oJGV2ZW50bmFtZSkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmxhbmcoJ2V2ZW50ZGVzYy0nIC4gJGV2ZW50bmFtZSk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBEb0FjdGlvbiAtIGRlZmF1bHQgYWRkIGRlZmF1bHQgcGFyYW1zDQogICAgICogQHBhcmFtIHR5cGUgJG5hbWUNCiAgICAgKiBAcGFyYW0gdHlwZSAkaWQNCiAgICAgKiBAcGFyYW0gdHlwZSAkcGFyYW1zDQogICAgICogQHBhcmFtIHR5cGUgJHJldHVybmlkIA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBEb0FjdGlvbigkbmFtZSwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQ9JycpIHsNCiAgICAgICAgc3dpdGNoICgkbmFtZSkgew0KICAgICAgICAgICAgY2FzZSAiZGVmYXVsdCI6DQogICAgICAgICAgICBjYXNlICJkZXRhaWwiOg0KICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgkbmFtZSAuICdfYWN0aW9uX3BhcmFtcycpICE9ICIiKSB7DQogICAgICAgICAgICAgICAgICAgICRkZWZhdWx0X2FjdGlvbl9wYXJhbXMgPSBleHBsb2RlKCIgIiwgJHRoaXMtPkdldFByZWZlcmVuY2UoJG5hbWUgLiAnX2FjdGlvbl9wYXJhbXMnKSk7DQogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkZGVmYXVsdF9hY3Rpb25fcGFyYW1zKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRlZmF1bHRfYWN0aW9uX3BhcmFtcyBhcyAkZGVmYXVsdF9hY3Rpb25fcGFyYW0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdF9hY3Rpb25fcGFyYW1fYXJyYXkgPSBleHBsb2RlKCI9IiwgJGRlZmF1bHRfYWN0aW9uX3BhcmFtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQoJGRlZmF1bHRfYWN0aW9uX3BhcmFtX2FycmF5KSA9PSAyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJGRlZmF1bHRfYWN0aW9uX3BhcmFtX2FycmF5WzBdXSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YShzdHJfcmVwbGFjZShhcnJheSgnIicsICInIiksIGFycmF5KCcnLCAnJyksICRkZWZhdWx0X2FjdGlvbl9wYXJhbV9hcnJheVsxXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvL2ZsdXNoDQogICAgICAgIG9iX3N0YXJ0KCk7DQogICAgICAgIHBhcmVudDo6RG9BY3Rpb24oJG5hbWUsICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsNCiAgICAgICAgJG91dHB1dDIgPSBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgICAgb2JfZW5kX2NsZWFuKCk7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aXRsZV9wYXJhbV9mb3JfY2FjaGUnKSkgew0KICAgICAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KICAgICAgICAgICAgc3dpdGNoICgkbmFtZSkgew0KICAgICAgICAgICAgICAgIGNhc2UgImRldGFpbCI6DQogICAgICAgICAgICAgICAgICAgICR0aXRsZXNfYXJyYXkgPSBleHBsb2RlKCcsJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlX3BhcmFtX2Zvcl9jYWNoZScpKTsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRpdGxlc19hcnJheSBhcyAkdGl0bGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvPCEtLScgLiAkdGl0bGUgLiAnOiguKiktLT4vaScsICRvdXRwdXQyLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJHRpdGxlLCAkbWF0Y2hlc1sxXSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgYmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGVjaG8gJG91dHB1dDI7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hhc19hZG1pbicsIGZhbHNlKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkgew0KICAgICAgICByZXR1cm4gJ2NvbnRlbnQnOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXMtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfaXRlbScpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKSB7DQogICAgICAgIHJldHVybiBhcnJheSgnQ0dFeHRlbnNpb25zJyA9PiAnMS4yNicsICdNb2R1bGVHZW5lcmF0b3InID0+ICcxLjAnLCAnRXh0ZW5kZWRUb29scycgPT4gJzEuMCcpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsNCiAgICAgICAgcmV0dXJuICcxLjknOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpIHsNCiAgICAgICAgcmV0dXJuICcxLjEwLjknOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiAgZ2V0IG1vZHVsZSBhbGlhcw0KICAgICAqIEByZXR1cm4gdHlwZSANCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX0dldE1vZHVsZUFsaWFzKCkgew0KICAgICAgICAkdmFsdWUgPSBjbXNfdXRpbHM6OmdldF9hcHBfZGF0YShnZXRfY2xhc3MoKSAuIF9fRlVOQ1RJT05fXyk7DQogICAgICAgIGlmICgkdmFsdWUpDQogICAgICAgICAgICByZXR1cm4gJHZhbHVlOw0KDQogICAgICAgICR2YWx1ZSA9IHN0cnRvbG93ZXIoJHRoaXMtPkdldE5hbWUoKSk7DQogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKGdldF9jbGFzcygpIC4gX19GVU5DVElPTl9fLCAkdmFsdWUpOw0KICAgICAgICByZXR1cm4gJHZhbHVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqICBnZXQgY29zdHVtIGZpZWxkIGRlZnMNCiAgICAgKiBAcGFyYW0gSU5UICRpdGVtX2lkDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRDb3N0dW1GaWVsZERlZnMoJGl0ZW1faWQpIHsNCiAgICAgICAgcmV0dXJuIGdlbmVyYXRvcl90b29sczo6Z2V0X2Nvc3R1bV9maWVsZF9kZWYoJHRoaXMsICRpdGVtX2lkKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySHRtbCgpIHsNCiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7DQogICAgICAgICRmbiA9ICRtb2R1bGUtPkdldE1vZHVsZVVSTFBhdGgoKSAuICcvanMvanF1ZXJ5LnRhYmxlZG5kXzBfNS5qcyc7DQogICAgICAgICRvdXRwdXQgPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJyAuICRmbiAuICciPjwvc2NyaXB0PicgLiAiXG4iOw0KICAgICAgICAkb3V0cHV0IC49ICc8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL21ldGExMDAuZ2l0aHViLmNvbS9tQ29sb3JQaWNrZXIvamF2YXNjcmlwdHMvbUNvbG9yUGlja2VyX21pbi5qcyI+PC9zY3JpcHQ+JzsNCiAgICAgICAgcmV0dXJuICRvdXRwdXQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIFNlYXJjaFJlc3VsdFdpdGhQYXJhbXMoJHJldHVybmlkLCAkaXRlbV9pZCwgJGF0dHIgPSAnJywgJHBhcmFtcyA9ICcnKSB7DQogICAgICAgIGlmICghJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlYXJjaGFibGUnKSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgcmV0dXJuIGdlbmVyYXRvcl90b29sczo6Z2V0X3NlYXJjaF9yZXN1bHQoJHRoaXMsICRyZXR1cm5pZCwgJGl0ZW1faWQsICRhdHRyLCAkcGFyYW1zKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gU2VhcmNoUmVpbmRleCgkbW9kdWxlKSB7DQogICAgICAgIGlmICghJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlYXJjaGFibGUnKSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgcmV0dXJuIGdlbmVyYXRvcl90b29sczo6c2VhcmNoX3JlaW5kZXgoJHRoaXMsICRtb2R1bGUpOw0KICAgIH0NCg0KfQ0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/categorylist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQp7Y2FwdHVyZSBhc3NpZ249Iml0ZW1wbGF0ZSJ9eyRnZW5lcmF0b3JfdGVtcGxhdGVzfS97JHRlbXBsYXRlX2FycmF5LjF9ey9jYXB0dXJlfQp7aW5jbHVkZSBmaWxlPSRpdGVtcGxhdGV9]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/categorytab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/editcategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQp7Y2FwdHVyZSBhc3NpZ249Iml0ZW1wbGF0ZSJ9eyRnZW5lcmF0b3JfdGVtcGxhdGVzfS97JHRlbXBsYXRlX2FycmF5LjF9ey9jYXB0dXJlfQp7aW5jbHVkZSBmaWxlPSRpdGVtcGxhdGV9]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/editcategory_old.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/editfielddef.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/edititem.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/fielddeftab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/filter.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/itemtab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/optiontab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/ordercategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQp7Y2FwdHVyZSBhc3NpZ249Iml0ZW1wbGF0ZSJ9eyRnZW5lcmF0b3JfdGVtcGxhdGVzfS97JHRlbXBsYXRlX2FycmF5LjF9ey9jYXB0dXJlfQp7aW5jbHVkZSBmaWxlPSRpdGVtcGxhdGV9]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/orig_category_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/orig_detail_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/orig_filter_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/orig_summary_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/templatetab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/templates/categorylist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPnskY2F0ZWdvcnl0ZXh0fTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfSc7Ij4KCQkJPHRkPnskZW50cnktPm5hbWV9PC90ZD4KCQkJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CgkJPC90cj4Key9mb3JlYWNofQoJPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua317aWYgJGl0ZW1jb3VudCA+IDB9IC8geyRyZW9yZGVyfXsvaWZ9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/categorytab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQ0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4NCiAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0aD57JHRpdGxlfTwvdGg+DQogICAgICAgICAgICA8dGg+eyRhbGlhc308L3RoPg0KICAgICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgPC90cj4NCiAgICA8L3RoZWFkPg0KICAgIDx0Ym9keT4NCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9DQogICAgICAgIDx0ciBjbGFzcz0ieyRlbnRyeS5yb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS5yb3djbGFzc30nOyI+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS5saW5rfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS5hbGlhc308L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnkudXBsaW5rfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS5kb3dubGlua308L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnkuZWRpdGxpbmt9PC90ZD4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LmRlbGV0ZX08L3RkPg0KICAgICAgICA8L3RyPg0Key9mb3JlYWNofQ0KICAgIDwvdGJvZHk+DQo8L3RhYmxlPg0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L2Rpdj4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/editcategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9Im1vZHVsZSIgdmFsdWU9JG1vZH0KCnskc3RhcnRmb3JtfQoKeyRtb2R1bGUtPlN0YXJ0VGFiSGVhZGVycygpfQp7JG1vZHVsZS0+U2V0VGFiSGVhZGVyKCdjYXRlZ29yeScsICRtb2R1bGUtPkxhbmcoJ2NhdGVnb3J5JykpfQoKe2lmIGlzc2V0KCRjdXN0b21fZmllbGRkZWYpfQogICAge2ZvcmVhY2ggZnJvbT0kY3VzdG9tX2ZpZWxkZGVmIGl0ZW09J2ZpZWxkJ30KICAgICAgICB7aWYgJGZpZWxkLT50eXBlID09ICd0YWInfQogICAgICAgICAgICB7JG1vZHVsZS0+U2V0VGFiSGVhZGVyKCRmaWVsZC0+YWxpYXMsICRmaWVsZC0+bGFiZWwpfQogICAgICAgIHsvaWZ9ICAgICAgICAgICAgCiAgICB7L2ZvcmVhY2h9ICAgICAgICAgICAgCnsvaWZ9ICAgICAgICAgICAgCnskbW9kdWxlLT5FbmRUYWJIZWFkZXJzKCl9Cgp7JG1vZHVsZS0+U3RhcnRUYWJDb250ZW50KCl9CnskbW9kdWxlLT5TdGFydFRhYignY2F0ZWdvcnknKX0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPip7JG5hbWV0ZXh0fTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0bmFtZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzdGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dGFsaWFzfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcGFyZW50dGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwYXJlbnRkcm9wZG93bn08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVzZXJncm91cHRleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXR1c2VyZ3JvdXB9PC9wPgo8L2Rpdj4KCntpZiBpc3NldCgkY3VzdG9tX2ZpZWxkZGVmKX0KICAgIHtmb3JlYWNoIGZyb209JGN1c3RvbV9maWVsZGRlZiBpdGVtPSdmaWVsZCd9CiAgICAgICAge2lmICRmaWVsZC0+dHlwZSA9PSAndGFiJ30KICAgICAgICAgICAgeyRtb2R1bGUtPkVuZFRhYigpfQogICAgICAgICAgICB7JG1vZHVsZS0+U3RhcnRUYWIoJGZpZWxkLT5hbGlhcyl9IAogICAgICAgIHtlbHNlaWYgKCFpc1NldCgkaXRlbV9pZCkgJiYgISRmaWVsZC0+ZWRpdHZpZXcpIHx8IGlzU2V0KCRpdGVtX2lkKX0KICAgICAgICAgICAge2lmICRmaWVsZC0+ZmllbGR9CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZC0+cHJvbXB0fTo8L3A+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAgICAgICAgICAgICAge2lmICFlbXB0eSgkZmllbGQtPmhlbHApfSh7JGZpZWxkLT5oZWxwfSk8YnIgLz57L2lmfQogICAgICAgICAgICAgICAgICAgIHskZmllbGQtPmZpZWxkfQogICAgICAgICAgICAgICAgICAgIHtpZiBpc3NldCgkZmllbGQtPmZpbGVuYW1lKX08YnIgLz4KICAgICAgICAgICAgICAgICAgICB7Y2FwdHVyZSBhc3NpZ249InNyYyJ9eyRmaWVsZC0+ZmlsZV9sb2NhdGlvbn0veyRmaWVsZC0+ZmlsZW5hbWV9ey9jYXB0dXJlfSAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAge2NhcHR1cmUgYXNzaWduPSJzcmNwYXRoIn17JGZpZWxkLT5maWxlcGF0aF9sb2NhdGlvbn0veyRmaWVsZC0+ZmlsZW5hbWV9ey9jYXB0dXJlfSAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAge2lmICRmaWVsZC0+aXNfaW1hZ2V9CiAgICAgICAgICAgICAgICAgICAge2lmICRpbWFnZV9zaXplX2FkbWluX3dpZHRoICYmICRpbWFnZV9zaXplX2FkbWluX2hlaWdodH0KICAgICAgICAgICAgICAgICAgICAgICAge2Ntc19tb2R1bGUgbW9kdWxlPSJDR1NtYXJ0SW1hZ2UiIHNyYz0kc3JjcGF0aHxyZXBsYWNlOiJgJHJvb3RfdXJsYCI6JycgYWx0PSRmaWxlLT5maWxlbmFtZSBmaWx0ZXJfY3JvcHRvZml0PSJgJGltYWdlX3NpemVfYWRtaW5fd2lkdGhgLGAkaW1hZ2Vfc2l6ZV9hZG1pbl9oZWlnaHRgIiBzdHlsZT0ibWFyZ2luOjVweCAwOyJ9ICAgIAogICAgICAgICAgICAgICAgICAgIHtlbHNlaWYgJGltYWdlX3NpemVfYWRtaW5fd2lkdGh9CiAgICAgICAgICAgICAgICAgICAgICAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iQ0dTbWFydEltYWdlIiBzcmM9JHNyY3BhdGh8cmVwbGFjZToiYCRyb290X3VybGAiOicnIGFsdD0kZmlsZS0+ZmlsZW5hbWUgZmlsdGVyX3Jlc2l6ZT0idyxgJGltYWdlX3NpemVfYWRtaW5fd2lkdGhgIiBzdHlsZT0ibWFyZ2luOjVweCAwOyJ9ICAgIAogICAgICAgICAgICAgICAgICAgIHtlbHNlaWYgJGltYWdlX3NpemVfYWRtaW5faGVpZ2h0fQogICAgICAgICAgICAgICAgICAgICAgICB7Y21zX21vZHVsZSBtb2R1bGU9IkNHU21hcnRJbWFnZSIgc3JjPSRzcmNwYXRofHJlcGxhY2U6ImAkcm9vdF91cmxgIjonJyBhbHQ9JGZpbGUtPmZpbGVuYW1lIGZpbHRlcl9yZXNpemU9ImgsYCRpbWFnZV9zaXplX2FkbWluX2hlaWdodGAiIHN0eWxlPSJtYXJnaW46NXB4IDA7In0gICAgCiAgICAgICAgICAgICAgICAgICAgey9pZn0KICAgICAgICAgICAgICAgIHsvaWZ9CiAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgIHskZmllbGQtPmRlbGV0ZV9maWxlfSB7JGZpZWxkLT5maWxlbmFtZX08YnIgLz4KICAgICAgICAgICAgey9pZn0KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KCntlbHNlfQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGQtPnByb21wdH08L3A+CiAgICAgICAge2lmICRmaWVsZC0+ZXh0cmF9CiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgeyRmaWVsZC0+ZXh0cmF9CiAgICAgICAgICAgIDwvcD4KICAgICAgICB7L2lmfQogICAgPC9kaXY+CnsvaWZ9CnsvaWZ9CnsvZm9yZWFjaH0Key9pZn0KeyRtb2R1bGUtPkVuZFRhYigpfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRoaWRkZW59eyRjYW5jZWx9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQoK]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/editfielddef.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4NCnskc3RhcnRmb3JtfQ0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPip7JG5hbWV0ZXh0fTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dG5hbWV9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRhbGlhc306PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfYWxpYXN9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRoZWxwdGV4dH06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRoZWxwfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdHlwZXRleHR9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0dHlwZX08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVzZXJ2aWV3dGV4dH06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdXNlcnZpZXd9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmcm9udGVuZF90ZXh0fTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mcm9udGVuZH08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVkaXR2aWV3X3RleHR9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2VkaXR2aWV3fTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmlsdGVyX2Zyb250ZW5kX3RleHR9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ZpbHRlcl9mcm9udGVuZH08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpbHRlcl9hZG1pbl90ZXh0fTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9maWx0ZXJfYWRtaW59PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRzZWFyY2hhYmxlX3RleHR9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NlYXJjaGFibGV9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRleHRyYX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZXh0cmF9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb24nKX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc2VjdGlvbn08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQo8cCBjbGFzcz0icGFnZWlucHV0Ij57aWYgaXNzZXQoJGZpZWxkZGVmX2lkKX17JGZpZWxkZGVmX2lkfXsvaWZ9eyRzdWJtaXR9eyRjYW5jZWx9eyRhcHBseX08L3A+DQo8L2Rpdj4NCnskZW5kZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/edititem.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9Im1vZHVsZSIgdmFsdWU9JG1vZH0NCntsaXRlcmFsfQ0KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICBmdW5jdGlvbiB0b2dnbGVEaXNwbGF5KGVsZW0pDQogICAgew0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbSk7DQogICAgICB2YXIgdHh0ID0gZWwuc3R5bGUuZGlzcGxheTsNCiAgICAgIGlmKCB0eHQgPT0gJ25vbmUnICkNCiAgICAgICAgew0KICAgICAgICAgIHR4dCA9ICdibG9jayc7DQogICAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgIHR4dCA9ICdub25lJzsNCiAgICAgICAgfQ0KICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHR4dDsNCiAgICB9DQoNCiAgICA8L3NjcmlwdD4NCnsvbGl0ZXJhbH0NCg0KPGgzPnskdGl0bGV9PC9oMz4NCnskc3RhcnRmb3JtfQ0KDQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2lmIGlzc2V0KCRpdGVtX2lkKX17JGl0ZW1faWR9ey9pZn17JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fSB7aWYgaXNTZXQoJGNvcHkpfXskY29weX17L2lmfXtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdwcmV2aWV3X2FkbWluJyl9PHNwYW4gc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6NXB4OyI+eyRwcmV2aWV3X3ZpZXd9PC9zcGFuPnsvaWZ9PC9wPg0KPC9kaXY+DQoNCg0KeyRtb2R1bGUtPlN0YXJ0VGFiSGVhZGVycygpfQ0KeyRtb2R1bGUtPlNldFRhYkhlYWRlcignYXJ0aWNsZScsICRtb2R1bGUtPkxhbmcoJ2NhdGVnb3J5JykpfQ0Ke2lmIGlzc2V0KCRjdXN0b21fZmllbGRkZWYpfQ0KICAgIHtmb3JlYWNoIGZyb209JGN1c3RvbV9maWVsZGRlZiBpdGVtPSdmaWVsZCd9DQogICAgICAgIHtpZiAkZmllbGQtPnR5cGUgPT0gJ3RhYid9DQogICAgICAgICAgICB7JG1vZHVsZS0+U2V0VGFiSGVhZGVyKCRmaWVsZC0+YWxpYXMsICRmaWVsZC0+bGFiZWwpfQ0KICAgICAgICB7L2lmfSAgICAgICAgICAgIA0KICAgIHsvZm9yZWFjaH0gICAgICAgICAgICANCnsvaWZ9ICAgICAgICAgICAgDQp7aWYgaXNzZXQoJHRhYmhlYWRlcl9wcmV2aWV3KX17JHRhYmhlYWRlcl9wcmV2aWV3fXsvaWZ9DQp7JG1vZHVsZS0+RW5kVGFiSGVhZGVycygpfQ0KDQp7JG1vZHVsZS0+U3RhcnRUYWJDb250ZW50KCl9DQp7JG1vZHVsZS0+U3RhcnRUYWIoJ2FydGljbGUnKX0NCg0KDQp7aWYgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV90aXRsZV9lZGl0Jyl9DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyRwcm9tcHRfdGl0bGV9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90aXRsZX08L3A+DQogICAgPC9kaXY+DQp7L2lmfQ0KDQp7aWYgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9hbGlhc19lZGl0Jyl9DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9hbGlhc306PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2FsaWFzfTwvcD4NCiAgICA8L2Rpdj4NCnsvaWZ9DQoNCntpZiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3VybF9lZGl0Jyl9DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF91cmx9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91cmx9PC9wPg0KICAgIDwvZGl2Pg0Key9pZn0NCg0Ke2lmICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfZWRpdCcpfQ0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfY2F0ZWdvcnl9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jYXRlZ29yeX08L3A+DQogICAgPC9kaXY+DQp7L2lmfQ0KDQp7aWYgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kYXRlX2VkaXQnKX0NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2RhdGV9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSRkYXRlcHJlZml4IHRpbWU9JGRhdGUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzE1In0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSRkYXRlcHJlZml4IHRpbWU9JGRhdGV9PC9wPg0KICAgIDwvZGl2Pg0Key9pZn0NCg0Ke2lmICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGF0ZV9lbmRfZWRpdCcpfQ0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZGF0ZV9lbmR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSRkYXRlZW5kcHJlZml4IHRpbWU9JGRhdGVlbmQgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzE1In0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSRkYXRlZW5kcHJlZml4IHRpbWU9JGRhdGVlbmR9PC9wPg0KICAgIDwvZGl2Pg0Key9pZn0NCg0Ke2lmICRtb2QtPkdldFByZWZlcmVuY2UoJ3JlY3Vyc2l2ZScpfQ0KDQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncmVjdXJfcGVyaW9kJyl9OjwvcD4NCiAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1ldmVudF9yZWN1cl9wZXJpb2R7L2NhcHR1cmV9DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgIDxzZWxlY3QgaWQ9InJlY3VycGVyaW9kIiBzdGFydF90YWJfaGVhZGVyc3RhYWN0aXZlPSJ7JGFjdGlvbmlkfXJlY3VyX3BlcmlvZCIgb25jbGljaz0iaGFuZGxlRHJvcGRvd24oKTsiPg0KICAgICAgICAgICAge2ZvcmVhY2ggZnJvbT0kcmVjdXJfb3B0aW9ucyBrZXk9a2V5IGl0ZW09dmFsdWV9DQogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ieyR2YWx1ZX0iIHtpZiAkdmFsdWUgPT0gJHJlY3Vyc2l2ZX1zZWxlY3RlZD0ic2VsZWN0ZWQiey9pZn0+eyRrZXl9PC9vcHRpb24+ICAgDQogICAgICAgICAgICB7L2ZvcmVhY2h9DQogICAgICAgIDwvc2VsZWN0Pg0KICAgIDwvcD4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIGlkPSJyZWN1cl93ZWVrbHkiPiAgDQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnd2Vla2RheXMnKX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfd2Vla2RheXN9PC9wPg0KPC9kaXY+DQoNCnsvaWZ9DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9hY3RpdmV9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2FjdGl2ZX08L3A+DQo8L2Rpdj4NCg0Ke2lmIGlzc2V0KCRjdXN0b21fZmllbGRkZWYpfQ0KICAgIHtmb3JlYWNoIGZyb209JGN1c3RvbV9maWVsZGRlZiBpdGVtPSdmaWVsZCd9DQogICAgICAgIHtpZiAkZmllbGQtPnR5cGUgPT0gJ3RhYid9DQogICAgICAgICAgICB7JG1vZHVsZS0+RW5kVGFiKCl9DQogICAgICAgICAgICB7JG1vZHVsZS0+U3RhcnRUYWIoJGZpZWxkLT5hbGlhcyl9ICAgICAgICAgICAgICAgIA0KICAgICAgICB7ZWxzZWlmICghaXNTZXQoJGl0ZW1faWQpICYmICEkZmllbGQtPmVkaXR2aWV3KSB8fCBpc1NldCgkaXRlbV9pZCl9DQogICAgICAgICAgICB7aWYgJGZpZWxkLT5maWVsZH0NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGQtPnByb21wdH06PC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgICAgICAgICAgICAge2lmICFlbXB0eSgkZmllbGQtPmhlbHApfSh7JGZpZWxkLT5oZWxwfSk8YnIgLz57L2lmfQ0KICAgICAgICAgICAgICAgICAgICB7JGZpZWxkLT5maWVsZH0NCiAgICAgICAgICAgICAgICAgICAge2lmIGlzc2V0KCRmaWVsZC0+ZmlsZW5hbWUpfTxiciAvPg0KICAgICAgICAgICAgICAgICAgICB7Y2FwdHVyZSBhc3NpZ249InNyYyJ9eyRmaWVsZC0+ZmlsZV9sb2NhdGlvbn0veyRmaWVsZC0+ZmlsZW5hbWV9ey9jYXB0dXJlfSAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIHtjYXB0dXJlIGFzc2lnbj0ic3JjcGF0aCJ9eyRmaWVsZC0+ZmlsZXBhdGhfbG9jYXRpb259L3skZmllbGQtPmZpbGVuYW1lfXsvY2FwdHVyZX0gICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICB7aWYgJGZpZWxkLT5pc19pbWFnZX0NCiAgICAgICAgICAgICAgICAgICAge2lmICRpbWFnZV9zaXplX2FkbWluX3dpZHRoICYmICRpbWFnZV9zaXplX2FkbWluX2hlaWdodH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iQ0dTbWFydEltYWdlIiBzcmM9JHNyY3BhdGh8cmVwbGFjZToiYCRyb290X3VybGAiOicnIGFsdD0kZmlsZS0+ZmlsZW5hbWUgZmlsdGVyX2Nyb3B0b2ZpdD0iYCRpbWFnZV9zaXplX2FkbWluX3dpZHRoYCxgJGltYWdlX3NpemVfYWRtaW5faGVpZ2h0YCIgc3R5bGU9Im1hcmdpbjo1cHggMDsifSAgICANCiAgICAgICAgICAgICAgICAgICAge2Vsc2VpZiAkaW1hZ2Vfc2l6ZV9hZG1pbl93aWR0aH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iQ0dTbWFydEltYWdlIiBzcmM9JHNyY3BhdGh8cmVwbGFjZToiYCRyb290X3VybGAiOicnIGFsdD0kZmlsZS0+ZmlsZW5hbWUgZmlsdGVyX3Jlc2l6ZT0idyxgJGltYWdlX3NpemVfYWRtaW5fd2lkdGhgIiBzdHlsZT0ibWFyZ2luOjVweCAwOyJ9ICAgIA0KICAgICAgICAgICAgICAgICAgICB7ZWxzZWlmICRpbWFnZV9zaXplX2FkbWluX2hlaWdodH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iQ0dTbWFydEltYWdlIiBzcmM9JHNyY3BhdGh8cmVwbGFjZToiYCRyb290X3VybGAiOicnIGFsdD0kZmlsZS0+ZmlsZW5hbWUgZmlsdGVyX3Jlc2l6ZT0iaCxgJGltYWdlX3NpemVfYWRtaW5faGVpZ2h0YCIgc3R5bGU9Im1hcmdpbjo1cHggMDsifSAgICANCiAgICAgICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgICAgICB7L2lmfQ0KICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgIHskZmllbGQtPmRlbGV0ZV9maWxlfSB7JGZpZWxkLT5maWxlbmFtZX08YnIgLz4NCiAgICAgICAgICAgIHsvaWZ9DQogICAgICAgIDwvcD4NCiAgICA8L2Rpdj4NCntlbHNlfQ0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZC0+cHJvbXB0fTwvcD4NCiAgICAgICAge2lmICRmaWVsZC0+ZXh0cmF9DQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4gICAgICAgICAgICANCiAgICAgICAgICAgICAgICB7JGZpZWxkLT5leHRyYX0NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgey9pZn0NCiAgICA8L2Rpdj4NCnsvaWZ9DQp7L2lmfQ0Key9mb3JlYWNofQ0Key9pZn0NCg0KDQp7JG1vZHVsZS0+RW5kVGFiQ29udGVudCgpfQ0KDQp7aWYgaXNzZXQoJHN0YXJ0X3RhYl9wcmV2aWV3KX0NCiAgICB7JHN0YXJ0X3RhYl9wcmV2aWV3fQ0KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij57bGl0ZXJhbH0NCiAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7DQogICAgICBqUXVlcnkoJ2lucHV0W25hbWU9bTFfYXBwbHldJykuY2xpY2soZnVuY3Rpb24oKXsNCiAgICAgICAgaWYoIHR5cGVvZiB0aW55TUNFICE9ICd1bmRlZmluZWQnKSB0aW55TUNFLnRyaWdnZXJTYXZlKCk7DQogICAgICAgIHZhciBkYXRhID0galF1ZXJ5KCdmb3JtJykuZmluZCgnaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLCBzZWxlY3QsIHRleHRhcmVhJykuc2VyaWFsaXplQXJyYXkoKTsNCiAgICAgICAgZGF0YS5wdXNoKHsnbmFtZSc6ICdtMV9hamF4JywgJ3ZhbHVlJzogMX0pOw0KICAgICAgICBkYXRhLnB1c2goeyduYW1lJzogJ20xX2FwcGx5JywgJ3ZhbHVlJzogMX0pOw0KICAgICAgICBkYXRhLnB1c2goeyduYW1lJzogJ3Nob3d0ZW1wbGF0ZScsICd2YWx1ZSc6ICdmYWxzZSd9KTsNCiAgICAgICAgdmFyIHVybCA9IGpRdWVyeSgnZm9ybScpLmF0dHIoJ2FjdGlvbicpOw0KICAgICAgICBqUXVlcnkucG9zdCh1cmwsZGF0YSxmdW5jdGlvbihyZXN1bHRkYXRhLHRleHQpew0KICAgICAgICAgIHZhciByZXNwID0galF1ZXJ5KHJlc3VsdGRhdGEpLmZpbmQoJ1Jlc3BvbnNlJykudGV4dCgpOw0KICAgICAgICAgIHZhciBkZXRhaWxzID0galF1ZXJ5KHJlc3VsdGRhdGEpLmZpbmQoJ0RldGFpbHMnKS50ZXh0KCk7DQogICAgICAgICAgdmFyIGh0bWxTaG93ID0gJyc7DQogICAgICAgICAgaWYoIHJlc3AgPT0gJ1N1Y2Nlc3MnICYmIGRldGFpbHMgIT0gJycgKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgICBodG1sU2hvdyA9ICc8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+PHAgY2xhc3M9InBhZ2VtZXNzYWdlIj4nK2RldGFpbHMrJzxcL3A+PFwvZGl2Pic7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICB7DQogICAgICAgICAgICAgaHRtbFNob3cgPSAnPGRpdiBjbGFzcz0icGFnZWVycm9yY29udGFpbmVyIj48dWwgY2xhc3M9InBhZ2VlcnJvciI+JzsNCiAgICAgICAgICAgICBodG1sU2hvdyArPSBkZXRhaWxzOw0KICAgICAgICAgICAgIGh0bWxTaG93ICs9ICc8XC91bD48XC9kaXY+JzsNCiAgICAgICAgICB9DQogICAgICAgICAgalF1ZXJ5KCcjZWRpdGFydGljbGVfcmVzdWx0JykuaHRtbChodG1sU2hvdyk7DQogICAgICAgIH0sJ3htbCcpOw0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICB9KTsNCg0KICAgICAgZnVuY3Rpb24gbmV3c19kb3ByZXZpZXcoKQ0KICAgICAgew0KICAgICAgICBpZiggdHlwZW9mIHRpbnlNQ0UgIT0gJ3VuZGVmaW5lZCcpIHRpbnlNQ0UudHJpZ2dlclNhdmUoKTsNCiAgICAgICAgdmFyIGRhdGEgPSBqUXVlcnkoJ2Zvcm0nKS5maW5kKCdpbnB1dDpub3QoW3R5cGU9c3VibWl0XSksIGlucHV0OmNoZWNrYm94LCBpbnB1dDpyYWRpbywgc2VsZWN0LCB0ZXh0YXJlYScpLnNlcmlhbGl6ZUFycmF5KCk7DQogICAgICAgIGRhdGEucHVzaCh7J25hbWUnOiAnbTFfYWpheCcsICd2YWx1ZSc6IDF9KTsNCiAgICAgICAgZGF0YS5wdXNoKHsnbmFtZSc6ICdtMV9wcmV2aWV3JywgJ3ZhbHVlJzogMX0pOw0KICAgICAgICBkYXRhLnB1c2goeyduYW1lJzogJ3Nob3d0ZW1wbGF0ZScsICd2YWx1ZSc6ICdmYWxzZSd9KTsNCiAgICAgICAgZGF0YS5wdXNoKHsnbmFtZSc6ICdtMV9wcmV2aWV3cGFnZScsICd2YWx1ZSc6IGpRdWVyeSgnI3ByZXZpZXdfcmV0dXJuaWQnKS52YWwoKX0pOw0KICAgICAgICBkYXRhLnB1c2goeyduYW1lJzogJ20xX2RldGFpbHRlbXBsYXRlJywgJ3ZhbHVlJzogalF1ZXJ5KCcjcHJldmlld190ZW1wbGF0ZScpLnZhbCgpfSk7DQogICAgICAgIHZhciB1cmwgPSBqUXVlcnkoJ2Zvcm0nKS5hdHRyKCdhY3Rpb24nKTsNCiAgICAgICAgalF1ZXJ5LnBvc3QodXJsLGRhdGEsZnVuY3Rpb24ocmVzdWx0ZGF0YSx0ZXh0KXsNCiAgICAgICAgICB2YXIgcmVzcCA9IGpRdWVyeShyZXN1bHRkYXRhKS5maW5kKCdSZXNwb25zZScpLnRleHQoKTsNCiAgICAgICAgICB2YXIgZGV0YWlscyA9IGpRdWVyeShyZXN1bHRkYXRhKS5maW5kKCdEZXRhaWxzJykudGV4dCgpOw0KICAgICAgICAgIHZhciBodG1sU2hvdyA9ICcnOw0KICAgICAgICAgIGlmKCByZXNwID09ICdTdWNjZXNzJyAmJiBkZXRhaWxzICE9ICcnICkNCiAgICAgICAgICB7DQogICAgICAgICAgICAgLy8gcHJldmlldyB3b3JrZWQuLi4gbm93IHRoZSBkZXRhaWxzIHNob3VsZCBjb250YWluIHRoZSB1cmwNCiAgICAgICAgICAgICBkZXRhaWxzID0gZGV0YWlscy5yZXBsYWNlKC9hbXA7L2csJycpOw0KICAgICAgICAgICAgIGpRdWVyeSgnI3ByZXZpZXdmcmFtZScpLmF0dHIoJ3NyYycsZGV0YWlscyk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICB7DQogICAgICAgICAgICAgaWYoIGRldGFpbHMgPT0gJycgKSBkZXRhaWxzID0gJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnOw0KDQogICAgICAgICAgICAgLy8gcHJldmlldyBzYXZlIGRpZCBub3Qgd29yay4NCiAgICAgICAgICAgICBodG1sU2hvdyA9ICc8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPjx1bCBjbGFzcz0icGFnZWVycm9yIj4nOw0KICAgICAgICAgICAgIGh0bWxTaG93ICs9IGRldGFpbHM7DQogICAgICAgICAgICAgaHRtbFNob3cgKz0gJzxcL3VsPjxcL2Rpdj4nOw0KICAgICAgICAgICAgIGpRdWVyeSgnI2VkaXRhcnRpY2xlX3Jlc3VsdCcpLmh0bWwoaHRtbFNob3cpOw0KICAgICAgICAgIH0NCiAgICAgICAgfSwneG1sJyk7DQogICAgICB9DQoNCiAgICAgIGpRdWVyeSgnI3ByZXZpZXcnKS5jbGljayhmdW5jdGlvbigpew0KICAgICAgICBuZXdzX2RvcHJldmlldygpOw0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICB9KTsNCg0KICAgICAgalF1ZXJ5KCcjcHJldmlld19yZXR1cm5pZCwjcHJldmlld190ZW1wbGF0ZScpLmNoYW5nZShmdW5jdGlvbigpew0KICAgICAgICBuZXdzX2RvcHJldmlldygpOw0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICB9KTsNCiAgICB9KTsNCiAgICAgICAgey9saXRlcmFsfTwvc2NyaXB0Pg0KDQogICAgICAgIHsqIGRpc3BsYXkgYSB3YXJuaW5nICp9DQogICAgICAgIDxkaXYgY2xhc3M9InBhZ2V3YXJuaW5nIj57JHdhcm5pbmdfcHJldmlld308L2Rpdj4NCiAgICAgICAgPGZpZWxkc2V0Pg0KDQogICAgICAgICAgICA8bGFiZWwgZm9yPSJwcmV2aWV3X3RlbXBsYXRlIj57JHByb21wdF9kZXRhaWxfdGVtcGxhdGV9OjwvbGFiZWw+Jm5ic3A7DQogICAgICAgICAgICA8c2VsZWN0IGlkPSJwcmV2aWV3X3RlbXBsYXRlIiBuYW1lPSJwcmV2aWV3X3RlbXBsYXRlIj4NCiAgICAgICAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGRldGFpbF90ZW1wbGF0ZXMgc2VsZWN0ZWQ9JGN1cl9kZXRhaWxfdGVtcGxhdGV9DQogICAgICAgICAgICA8L3NlbGVjdD4mbmJzcDsNCg0KICAgICAgICAgICAgPGxhYmVsIGZvcj0icHJldmlld19yZXR1cm5pZCI+eyRwcm9tcHRfZGV0YWlsX3BhZ2V9OjwvbGFiZWw+Jm5ic3A7DQogICAgICAgICAgICB7JHByZXZpZXdfcmV0dXJuaWR9DQogICAgICAgIDwvZmllbGRzZXQ+DQogICAgICAgIDxici8+DQogICAgICAgIDxpZnJhbWUgaWQ9InByZXZpZXdmcmFtZSIgc3R5bGU9ImhlaWdodDogODAwcHg7IHdpZHRoOiAxMDAlOyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsgb3ZlcmZsb3c6IGF1dG87IiBzcmM9IiI+PC9pZnJhbWU+DQogICAgICAgIHskZW5kX3RhYl9wcmV2aWV3fQ0KICAgICAgICB7JG1vZHVsZS0+RW5kVGFiKCl9DQogICAgICAgIHsvaWZ9DQoNCg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57aWYgaXNzZXQoJGl0ZW1faWQpfXskaXRlbV9pZH17L2lmfXskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9IHtpZiBpc1NldCgkY29weSl9eyRjb3B5fXsvaWZ9e2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ3ByZXZpZXdfYWRtaW4nKX08c3BhbiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IHRvcDo1cHg7Ij57JHByZXZpZXdfdmlld308L3NwYW4+ey9pZn08L3A+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgeyRlbmRmb3JtfQ0K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4NCnskc3RhcnRmb3JtfQ0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiogeyRwcm9tcHRfbmFtZX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbmFtZX08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdGVtcGxhdGV9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPntpZiBpc3NldCgkaWRmaWVsZCl9eyRpZGZpZWxkfXsvaWZ9eyRzdWJtaXR9eyRjYW5jZWx9eyRhcHBseX08L3A+DQo8L2Rpdj4NCnskaW5wdXRfdHlwZX0NCnskZW5kZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/fielddeftab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9DQogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgICAgICAgLnNjcm9sbGFibGUgew0KICAgICAgICAgICAgZGlzcGxheTogbm9uZTsNCiAgICAgICAgICAgIHdpZHRoOiA5MCU7DQogICAgICAgIH0NCg0KICAgIDwvc3R5bGU+DQoNCiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsNCg0KICAgICAgICAkKCcjZmllbGRsaXN0ey9saXRlcmFsfXskc2VjdGlvbn17bGl0ZXJhbH0nKS50YWJsZURuRCgpOw0KICAgICAgJCgnOnN1Ym1pdC5zYXZlX2ZpZWxkc3svbGl0ZXJhbH17JHNlY3Rpb259e2xpdGVyYWx9JykuY2xpY2soZnVuY3Rpb24oKXsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgQXJyYXk7DQogICAgICAgICQoJ3RhYmxlI2ZpZWxkbGlzdHsvbGl0ZXJhbH17JHNlY3Rpb259e2xpdGVyYWx9IHRyJykuZWFjaChmdW5jdGlvbihpLHRyKXsNCiAgICAgICAgICBkYXRhLnB1c2goJCh0cikuYXR0cignaWQnKSk7DQogICAgICAgIH0pOw0KICAgICAgICBkYXRhID0gZGF0YS5qb2luKCcsJyk7DQogICAgICAgICQoJyNmc2VyaWFsZGF0YXsvbGl0ZXJhbH17JHNlY3Rpb259e2xpdGVyYWx9JykudmFsKGRhdGEpOw0KICAgICAgfSk7DQogIA0KICAgIH0pOw0KDQogICAgPC9zY3JpcHQ+DQp7L2xpdGVyYWx9DQoNCg0KDQp7aWYgJGl0ZW1jb3VudCA+IDB9DQogICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIGNtc19zb3J0YWJsZSB0YWJsZXNvcnRlciIgaWQ9ImZpZWxkbGlzdHskc2VjdGlvbn0iPg0KICAgICAgICA8dGhlYWQ+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRoPjwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZmllbGR0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskYWxpYXN9PC90aD4NCiAgICAgICAgICAgICAgICA8dGg+eyR0eXBldGV4dH08L3RoPg0KICAgICAgICAgICAgICAgIDx0aD57JHJlcXVpcmVkdGV4dH08L3RoPg0KICAgICAgICAgICAgICAgIDx0aD57JHNlYXJjaGFibGV0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZnJvbnRlbmR0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZWRpdHZpZXd0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZmlsdGVyX2Zyb250ZW5kdGV4dH08L3RoPg0KICAgICAgICAgICAgICAgIDx0aD57JGZpbHRlcl9hZG1pbnRleHR9PC90aD4NCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RoZWFkPg0KICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQ0KICAgICAgICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQogICAgICAgICAgICAgICAgPHRyIGlkPSJ7JGVudHJ5LT5pZH0iIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmlkfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5hbGlhc308L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+dHlwZX08L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+cmVxdWlyZWR8dHJ1ZWZhbHNlfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5zZWFyY2hhYmxlfHRydWVmYWxzZX08L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZnJvbnRlbmR8dHJ1ZWZhbHNlfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5lZGl0dmlld3x0cnVlZmFsc2V9PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmZpbHRlcl9mcm9udGVuZHx0cnVlZmFsc2V9PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmZpbHRlcl9hZG1pbnx0cnVlZmFsc2V9PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIHsvZm9yZWFjaH0NCiAgICAgICAgPC90Ym9keT4NCiAgICA8L3RhYmxlPg0KDQogICAgeyRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkYWN0aW9uaWQsICdhZG1pbl9tb3ZlZmllbGRkZWYnKX0NCiAgICA8aW5wdXQgaWQ9ImZzZXJpYWxkYXRheyRzZWN0aW9ufSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfXNlcmlhbGRhdGEiIHZhbHVlPSIiLz4NCiAgICA8aW5wdXQgaWQ9InNlY3Rpb24iIHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1zZWN0aW9uIiB2YWx1ZT0ieyRzZWN0aW9ufSIvPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0ic2F2ZV9maWVsZHN7JHNlY3Rpb259IiB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3NhdmVfb3JkZXInKX0iLz4NCiAgICAgICAgPC9wPg0KICAgIDwvZGl2PiAgICAgICAgDQogICAgeyRtb2QtPkNyZWF0ZUZvcm1FbmQoKX0NCg0Key9pZn0NCg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvZGl2Pg0K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/filter.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8ZGl2Pg0KeyRmb3Jtc3RhcnR9DQo8ZmllbGRzZXQgc3R5bGU9ImZsb2F0OmxlZnQ7IHdpZHRoOjQ5JTsiPg0KPGxlZ2VuZD57JG1vZC0+TGFuZygnZmlsdGVycycpfTombmJzcDs8L2xlZ2VuZD4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hpZXJhcmNoeScpfTo8L3A+DQogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaGllcmFyY2h5fSZuYnNwO3skbW9kLT5MYW5nKCdpbmNsdWRlX2NoaWxkcmVuJyl9IHskaW5wdXRfY2hpbGRyZW59PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0aW5nJyl9OjwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zb3J0Ynl9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInKX06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NvcnRvcmRlcn08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3BhZ2VfbGltaXQnKX06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3BhZ2VsaW1pdH08L3A+DQo8L2Rpdj4NCntpZiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZWRpdCcpfQ0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZGF0ZScpfTwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+ICAJDQogIHskbW9kLT5MYW5nKCdmcm9tJyl9DQogIHtjYXB0dXJlIGFzc2lnbj0iaWRmcm9tZGF0ZSJ9eyRtb2QtPkdldEFjdGlvbklkKCl9ZGF0ZWZyb217L2NhcHR1cmV9DQogIHtodG1sX3NlbGVjdF9kYXRlIGZpZWxkX29yZGVyPURNWSBwcmVmaXg9JGlkZnJvbWRhdGUgdGltZT0kZGF0ZV9mcm9tIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxIn0NCiAgJm5ic3A7DQogIHskbW9kLT5MYW5nKCd0bycpfQ0KICB7Y2FwdHVyZSBhc3NpZ249ImlkdG9kYXRlIn17JG1vZC0+R2V0QWN0aW9uSWQoKX1kYXRldG97L2NhcHR1cmV9DQogIHtodG1sX3NlbGVjdF9kYXRlIGZpZWxkX29yZGVyPURNWSBwcmVmaXg9JGlkdG9kYXRlIHRpbWU9JGRhdGVfdG8gc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEifQ0KICA8L3A+DQo8L2Rpdj4NCnsvaWZ9DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JG1vZC0+R2V0QWN0aW9uSWQoKX1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ij48L3A+DQo8L2Rpdj4NCg0KPC9maWVsZHNldD4NCg0KeyRmb3JtZW5kfQ0KPC9kaXY+Kn0NCg0KDQoNCg0KPGRpdiBjbGFzcz0iY29udGVudCBkZXN0aW5hdGlvbnMiPg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICB7JGZvcm1zdGFydH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPkZpbHRlcjwvbGVnZW5kPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc3RfY29sdW1uIj48c2VsZWN0PjxvcHRpb24+S3JhamluYTwvb3B0aW9uPjxvcHRpb24+MTwvb3B0aW9uPjxvcHRpb24+Mjwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc3RfY29sdW1uIj48c2VsZWN0PjxvcHRpb24+RGVzdGluw6FjaWE8L29wdGlvbj48b3B0aW9uPjE8L29wdGlvbj48b3B0aW9uPjI8L29wdGlvbj48L3NlbGVjdD48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXN0X2NvbHVtbiI+PHNlbGVjdD48b3B0aW9uPkNoYXJha3RlcmlzdGlrYTwvb3B0aW9uPjxvcHRpb24+MTwvb3B0aW9uPjxvcHRpb24+Mjwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaHJfZnVsbCI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxoMz5ab3puYW0gZGVzdGluw6FjacOtPC9oMz4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzdF9jb2x1bW4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkVVUsOTUEE8L2g0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgU29vcmksIEJhbGk8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVWx1d2F0dSwgQ2F0YW1hcmFuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+TWFuZ2lzLCBUYWl3YW48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8aDQ+QUZSSUtBPC9oND4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVmlsbGFzLCBUYWl3YW48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBVbHV3YXR1LCBDYXRhbWFyYW48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc3RfY29sdW1uIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxoND5BTUVSSUtBPC9oND4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVmlsbGFzIFNvb3JpLCBCYWxpPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVmlsbGFzIFRhaXdhbjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIiPkFsaWxhIFVsdXdhdHUsIENhdGFtYXJhbjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIiPk1hbmdpcywgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVmlsbGFzIFRhaXdhbjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIiPkFsaWxhIFVsdXdhdHUsIENhdGFtYXJhbjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIiPk1hbmdpcywgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpYWxpPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXN0X2NvbHVtbiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8aDQ+w4FaSUE8L2g0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgU29vcmksIEJhbGk8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVWx1d2F0dSwgQ2F0YW1hcmFuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkFVU1RSw4FMSUE8L2g0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgU29vcmksIEJhbGk8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICB7JGZvcm1lbmR9DQogICAgICAgICAgICAgICAgPC9kaXY+DQoNCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/frontend_bigmedia1.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e1NuaXBwZXRzIG5hbWU9InZ5aHJhIDEifQ==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/frontend_bigmedia2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e1NuaXBwZXRzIG5hbWU9InZ5aHJhIDIifQ==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/itemtab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9Im9sZGFjdGlvbmlkIiB2YWx1ZT0kYWN0aW9uaWR9DQoNCntpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtb2RlJykgPT0gInNpbXBsZSJ9DQogICAge2xpdGVyYWx9DQogICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQogICAgICAgICAgICAuc2Nyb2xsYWJsZSB7DQogICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsNCiAgICAgICAgICAgICAgICB3aWR0aDogOTAlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgIDwvc3R5bGU+DQoNCiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpew0KDQoNCiAgICAgICAgICAgICAgJCgnI2l0ZW1saXN0JykudGFibGVEbkQoKTsNCiAgICAgICAgICAkKCc6c3VibWl0LnNhdmVfaXRlbXMnKS5jbGljayhmdW5jdGlvbigpew0KICAgICAgICAgICAgdmFyIGRhdGEgPSBuZXcgQXJyYXk7DQogICAgICAgICAgICAkKCd0YWJsZSNpdGVtbGlzdCB0cicpLmVhY2goZnVuY3Rpb24oaSx0cil7DQogICAgICAgICAgICAgIGRhdGEucHVzaCgkKHRyKS5hdHRyKCdpZCcpKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgZGF0YSA9IGRhdGEuam9pbignLCcpOw0KICAgICAgICAgICAgJCgnI3NlcmlhbGRhdGEnKS52YWwoZGF0YSk7DQogICAgICAgICAgfSk7DQogIA0KICAgICAgICB9KTsNCg0KICAgICAgICA8L3NjcmlwdD4NCiAgICB7L2xpdGVyYWx9DQp7L2lmfQ0KDQoNCjxkaXY+DQogICAgeyRmb3Jtc3RhcnR9DQogICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ21vZGUnKSAhPSAic2ltcGxlIn0NCiAgICAgICAgPGZpZWxkc2V0Pg0KICAgICAgICAgICAgPGxlZ2VuZD57JG1vZHVsZS0+TGFuZygnZmlsdGVycycpfTombmJzcDs8L2xlZ2VuZD4NCiAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtb2RlJykgIT0gInNpbXBsZSJ9DQogICAgICAgICAgICAgICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfZWRpdCcsIDApfQ0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2R1bGUtPkxhbmcoJ2hpZXJhcmNoeScpfTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaGllcmFyY2h5fSZuYnNwO3skbW9kdWxlLT5MYW5nKCdpbmNsdWRlX2NoaWxkcmVuJyl9IHskaW5wdXRfY2hpbGRyZW59PC9wPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZHVsZS0+TGFuZygncHJvbXB0X3N1bW1hcnlfc29ydGluZycpfTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc29ydGJ5fTwvcD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kdWxlLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInKX06PC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NvcnRvcmRlcn08L3A+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZHVsZS0+TGFuZygncGFnZV9saW1pdCcpfTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGFnZWxpbWl0fTwvcD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICB7aWYgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZmlsdGVyX2RhdGUnKX0NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2R1bGUtPkxhbmcoJ2RhdGUnKX08L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4gIAkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JG1vZHVsZS0+TGFuZygnZnJvbScpfQ0KICAgICAgICAgICAgICAgICAgICAgICAge2NhcHR1cmUgYXNzaWduPSJpZGZyb21kYXRlIn17JG1vZHVsZS0+R2V0QWN0aW9uSWQoKX1kYXRlZnJvbXsvY2FwdHVyZX0NCiAgICAgICAgICAgICAgICAgICAgICAgIHtodG1sX3NlbGVjdF9kYXRlIGZpZWxkX29yZGVyPURNWSBwcmVmaXg9JGlkZnJvbWRhdGUgdGltZT0kZGF0ZV9mcm9tIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxIn0NCiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgeyRtb2R1bGUtPkxhbmcoJ3RvJyl9DQogICAgICAgICAgICAgICAgICAgIHtjYXB0dXJlIGFzc2lnbj0iaWR0b2RhdGUifXskbW9kdWxlLT5HZXRBY3Rpb25JZCgpfWRhdGV0b3svY2FwdHVyZX0NCiAgICAgICAgICAgICAgICAgICAge2h0bWxfc2VsZWN0X2RhdGUgZmllbGRfb3JkZXI9RE1ZIHByZWZpeD0kaWR0b2RhdGUgdGltZT0kZGF0ZV90byBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMSJ9DQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIHsvaWZ9DQogICAgey9pZn0NCg0KICAgIHtpZiBpc3NldCgkY3VzdG9tX2ZpZWxkZGVmKX0NCiAgICAgICAge2ZvcmVhY2ggZnJvbT0kY3VzdG9tX2ZpZWxkZGVmIGl0ZW09J2ZpZWxkJ30NCiAgICAgICAgICAgIHtpZiAkZmllbGQtPmZpZWxkfQ0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZC0+cHJvbXB0fTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgICAgICAgICAgICAgICAgICB7aWYgIWVtcHR5KCRmaWVsZC0+aGVscCl9KHskZmllbGQtPmhlbHB9KTxiciAvPnsvaWZ9DQogICAgICAgICAgICAgICAgICAgIHskZmllbGQtPmZpZWxkfQ0KICAgICAgICAgICAgICAgICAgICB7aWYgaXNzZXQoJGZpZWxkLT5maWxlbmFtZSl9PGJyIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIHskZmllbGQtPmRlbGV0ZV9maWxlfSB7JGZpZWxkLT5maWxlbmFtZX08YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICB7ZWxzZX0NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkLT5wcm9tcHR9PC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIHsvaWZ9DQogICAgey9mb3JlYWNofQ0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JG1vZHVsZS0+R2V0QWN0aW9uSWQoKX1zdWJtaXQiIHZhbHVlPSJ7JG1vZHVsZS0+TGFuZygnc3VibWl0Jyl9Ij48L3A+DQo8L2Rpdj4NCg0KPC9maWVsZHNldD4NCnsvaWZ9DQp7JGZvcm1lbmR9DQo8L2Rpdj4NCg0KDQo8YnIgc3R5bGU9ImNsZWFyOmJvdGg7IiAvPg0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvcD48L2Rpdj4NCntpZiAkaXRlbWNvdW50ID4gMH0NCg0KICAgIDxkaXYgaWQ9InByb2R1Y3RsaXN0Ij4NCiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPntsaXRlcmFsfQ0KICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpew0KICAgICAgICAgICQoJyNzZWxlY3RfYWxsX2l0ZW1zJykuY2xpY2soZnVuY3Rpb24oKXsNCiAgICAgICAgICAgIHZhciBjaGVja2VkID0gJCh0aGlzKS5hdHRyKCdjaGVja2VkJyk7DQogICAgICAgICAgICAkKCcubXVsdGlzZWxlY3QnKS5hdHRyKCdjaGVja2VkJyxjaGVja2VkID09IHVuZGVmaW5lZCA/IGZhbHNlIDogY2hlY2tlZCk7IA0KICAgICAgICAgIH0pOw0KICAgICAgICAgICQoJyNidWxrYWN0aW9uX3N1Ym1pdCcpLmNsaWNrKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICB2YXIgbGVuID0gJCgnI2l0ZW1saXN0IHRib2R5IGlucHV0OmNoZWNrYm94OmNoZWNrZWQnKS5sZW5ndGg7DQogICAgICAgICAgICBpZiggbGVuID09IDAgKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBhbGVydCgney9saXRlcmFsfXskbW9kdWxlLT5MYW5nKCdub3RoaW5nX3NlbGVjdGVkJyl9e2xpdGVyYWx9Jyk7DQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICAgICAgICAgIHsvbGl0ZXJhbH08L3NjcmlwdD4NCiAgICAgICAgICAgICAgICB7JGZvcm1zdGFydDJ9DQogICAgICAgICAgICAgICAge2lmIGlzc2V0KCRmaXJzdHBhZ2VfdXJsKX0NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJ7JGZpcnN0cGFnZV91cmx9IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ2ZpcnN0cGFnZScpfSI+eyRtb2R1bGUtPkxhbmcoJ2ZpcnN0cGFnZScpfTwvYT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJ7JHByZXZwYWdlX3VybH0iIHRpdGxlPSJ7JG1vZHVsZS0+TGFuZygncHJldnBhZ2UnKX0iPnskbW9kdWxlLT5MYW5nKCdwcmV2cGFnZScpfTwvYT4NCiAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICB7aWYgaXNzZXQoJGZpcnN0cGFnZV91cmwpIHx8IGlzc2V0KCRsYXN0cGFnZV91cmwpfQ0KICAgICAgICAgICAgICAgIHskbW9kdWxlLT5MYW5nKCdwYWdlX29mJywkcGFnZW51bWJlciwkcGFnZWNvdW50KX0NCiAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICB7aWYgaXNzZXQoJGxhc3RwYWdlX3VybCl9DQogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyRuZXh0cGFnZV91cmx9IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ25leHRwYWdlJyl9Ij57JG1vZHVsZS0+TGFuZygnbmV4dHBhZ2UnKX08L2E+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyRsYXN0cGFnZV91cmx9IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ2xhc3RwYWdlJyl9Ij57JG1vZHVsZS0+TGFuZygnbGFzdHBhZ2UnKX08L2E+DQogICAgICAgICAgICB7L2lmfQ0KDQoNCiAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSBjbXNfc29ydGFibGUgdGFibGVzb3J0ZXIiIGlkPSJpdGVtbGlzdCI+DQogICAgICAgICAgICAgICAgPHRoZWFkPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGg+eyRpZHRleHR9PC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlX2VkaXQnKX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+eyRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdGl0bGUnKX08L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgICAgICAgICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGF0ZV9lZGl0JywgMCl9PHRoPnskbW9kdWxlLT5MYW5nKCdkYXRlJyl9PC90aD57L2lmfQ0KICAgICAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZW5kX2VkaXQnLCAwKX08dGg+eyRtb2R1bGUtPkxhbmcoJ2RhdGVfZW5kJyl9PC90aD57L2lmfQ0KICAgICAgICAgICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfZWRpdCcsIDApfTx0aD57JG1vZHVsZS0+TGFuZygnY2F0ZWdvcnknKX08L3RoPnsvaWZ9DQoNCiAgICAgICAgICAgIHtpZiBpc3NldCgkY3VzdG9tX2ZpZWxkcyl9DQogICAgICAgICAgICAgICAge2ZvcmVhY2ggZnJvbT0kY3VzdG9tX2ZpZWxkcyBpdGVtPSdmaWQnfQ0KICAgICAgICAgICAgICAgICAgICA8dGg+eyRmaWVsZHNfdmlld2FibGUuJGZpZH08L3RoPg0KICAgICAgICAgICAgICAgIHsvZm9yZWFjaH0NCiAgICAgICAgICAgIHsvaWZ9DQoNCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQoNCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4NCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4NCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ3NlbGVjdF9hbGwnKX0iIHZhbHVlPSIxIiBuYW1lPSJzZWxlY3RfYWxsIiBpZD0ic2VsZWN0X2FsbF9pdGVtcyI+PC90aD4NCiAgICAgICAgPC90cj4NCiAgICA8L3RoZWFkPg0KICAgIDx0Ym9keT4NCiAgICAgICAge2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0NCiAgICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQogICAgICAgICAgICB7Kjx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+Kn0NCiAgICAgICAgICAgIDx0ciBpZD0ieyRlbnRyeS0+aXRlbV9pZH0iPg0KICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5pdGVtX2lkfTwvdGQ+DQogICAgICAgICAgICAgICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdGl0bGVfZWRpdCcpfTx0ZD48YSBocmVmPSJ7JGVudHJ5LT5lZGl0X3VybH0iIHRpdGxlPSJ7JG1vZHVsZS0+TGFuZygnZWRpdCcpfSI+eyRlbnRyeS0+dGl0bGV9PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZWRpdCcsIDApfQkgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPml0ZW1fZGF0ZXxjbXNfZGF0ZV9mb3JtYXR9PC90ZD57L2lmfQ0KICAgICAgICB7aWYgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kYXRlX2VuZF9lZGl0JywgMCl9CSAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+aXRlbV9kYXRlX2VuZHxjbXNfZGF0ZV9mb3JtYXR9PC90ZD57L2lmfQ0KICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2NhdGVnb3J5X2VkaXQnLCAwKX0JICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5sb25nX25hbWV9PC90ZD57L2lmfQ0KICAgIHtpZiBpc3NldCgkY3VzdG9tX2ZpZWxkcyl9DQogICAgICAgIHtmb3JlYWNoIGZyb209JGN1c3RvbV9maWVsZHMgaXRlbT0nZmlkJ30NCiAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ31GbGRfX3skZmllbGRfbmFtZXMuJGZpZH17L2NhcHR1cmV9DQogICAgICAgICAgICB7aWYgJGZpZWxkX21vZHVsZXMuJGZpZH0NCiAgICAgICAgICAgICAgICB7aWYgJGVudHJ5LT4kdG1wfQ0KICAgICAgICB7Y2FwdHVyZSBhc3NpZ249InRtcG1vZHVsZSJ9e2xpdGVyYWx9e2Ntc19tb2R1bGV7L2xpdGVyYWx9IG1vZHVsZT0ieyRmaWVsZF9tb2R1bGVzLiRmaWR9IiAgYWxscm93PSJ0bXByb3dzIiBmaWx0ZXJfaXRlbUlkX2luPSJ7JGVudHJ5LT4kdG1wfSJ7bGl0ZXJhbH19ey9saXRlcmFsfXsvY2FwdHVyZX0NCiAgICB7L2lmfQ0KICAgIHtldmFsIHZhcj0kdG1wbW9kdWxlfQ0KICAgIHtpZiAkdG1wcm93c30NCiAgICAgICAge2ZvcmVhY2ggZnJvbT0kdG1wcm93cyBpdGVtPSd0bXByb3cnIG5hbWU9Im1vZHVsZSJ9DQogICAgICAgIHskdG1wcm93LT50aXRsZX17aWYgJHNtYXJ0eS5mb3JlYWNoLm1vZHVsZS5sYXN0PT1mYWxzZX0sey9pZn0NCiAgICB7L2ZvcmVhY2h9DQp7L2lmfQ0Ke2Fzc2lnbiB2YXI9InRtcHJvd3MiIHZhbHVlPSIifQ0Ke2Fzc2lnbiB2YXI9InRtcG1vZHVsZSIgdmFsdWU9IiJ9DQp7ZWxzZWlmICRmaWVsZF9pbWFnZXMuJGZpZCAmJiAkZW50cnktPiR0bXB9DQp7Y2FwdHVyZSBhc3NpZ249InNyYyJ9eyRlbnRyeS0+ZmlsZV9sb2NhdGlvbn0veyRlbnRyeS0+JHRtcH17L2NhcHR1cmV9DQp7Y2FwdHVyZSBhc3NpZ249InNyY3BhdGgifXskZW50cnktPmZpbGVwYXRoX2xvY2F0aW9ufS97JGVudHJ5LT4kdG1wfXsvY2FwdHVyZX0NCntpZiAkc3JjcGF0aHxAZ2V0aW1hZ2VzaXplfQ0KICAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iQ0dTbWFydEltYWdlIiBzcmM9JHNyY3BhdGggIGZpbHRlcl9yZXNpemU9ImgsNTAiIHN0eWxlPSJtYXJnaW46NXB4IDA7In0gICAgDQp7ZWxzZX0NCiAgICA8YSBocmVmPSJ7JGVudHJ5LT5maWxlX2xvY2F0aW9ufS97JGVudHJ5LT4kdG1wfSI+eyRlbnRyeS0+JHRtcH08L2E+DQp7L2lmfQ0Ke2Vsc2V9DQogICAgeyRlbnRyeS0+JHRtcH0NCnsvaWZ9DQo8L3RkPg0Key9mb3JlYWNofQ0Key9pZn0NCg0KPHRkPnskZW50cnktPmFwcHJvdmV9PC90ZD4NCg0KPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+DQo8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPg0KPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9Im11bHRpc2VsZWN0IiBuYW1lPSJ7JG9sZGFjdGlvbmlkfW11bHRpc2VsZWN0W10iIHZhbHVlPSJ7JGVudHJ5LT5pdGVtX2lkfSI+PC90ZD4NCjwvdHI+DQp7L2ZvcmVhY2h9DQo8L3Rib2R5Pg0KPC90YWJsZT4NCg0Ke2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ21vZGUnKSA9PSAic2ltcGxlIn0NCiAgICB7JG1vZHVsZS0+Q3JlYXRlRm9ybVN0YXJ0KCRvbGRhY3Rpb25pZCwgJ2FkbWluX21vdmVpdGVtJyl9DQogICAgPGlucHV0IGlkPSJzZXJpYWxkYXRhIiB0eXBlPSJoaWRkZW4iIG5hbWU9Inskb2xkYWN0aW9uaWR9c2VyaWFsZGF0YSIgdmFsdWU9IiIvPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0ic2F2ZV9pdGVtcyIgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JG9sZGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kdWxlLT5MYW5nKCdzYXZlX29yZGVyJyl9Ii8+DQogICAgICAgIDwvcD4NCiAgICA8L2Rpdj4NCiAgICB7JG1vZHVsZS0+Q3JlYXRlRm9ybUVuZCgpfQ0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvcD48L2Rpdj4NCntpZiAkaXRlbWNvdW50IGd0IDB9DQogICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHdpZHRoOiA0MCU7IGZsb2F0OiByaWdodDsgbWFyZ2luLXRvcDogMC41ZW07Ij4NCiAgICAgICAgeyRtb2R1bGUtPkxhbmcoJ3dpdGhfc2VsZWN0ZWQnKX06DQogICAgICAgIDxzZWxlY3QgbmFtZT0ieyRvbGRhY3Rpb25pZH1idWxrYWN0aW9uIj57aHRtbF9vcHRpb25zIG9wdGlvbnM9JGJ1bGthY3Rpb25zfTwvc2VsZWN0Pg0KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0iYnVsa2FjdGlvbl9zdWJtaXQiIG5hbWU9Inskb2xkYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2R1bGUtPkxhbmcoJ2dvJyl9Ii8+DQogICAgPC9kaXY+DQp7L2lmfQ0KeyRmb3JtZW5kMn08L2Rpdj4NCnsvaWZ9DQoNCg0KPGJyIHN0eWxlPSJjbGVhcjpib3RoIiAvPg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/optiontab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9DQogICAgPHNjcmlwdCB0eWxlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7DQogICAgJCgiI2FkdmFuY2VkLCNzaW1wbGUiKS5oaWRlKCk7DQogICAgJCgiIyIrJCgiI21vZGUgc2VsZWN0IikudmFsKCkpLmZhZGVJbigpOzsNCg0KICAgICQoIiNtb2RlIHNlbGVjdCIpLmNoYW5nZShmdW5jdGlvbigpew0KICAgICQoIiNhZHZhbmNlZCwjc2ltcGxlIikuaGlkZSgpOw0KICAgICQoIiMiKyQodGhpcykudmFsKCkpLmZhZGVJbigpOzsNCiAgICB9KQ0KICAgIH0pDQogICAgPC9zY3JpcHQ+DQp7L2xpdGVyYWx9DQoNCu+7v3skc3RhcnRmb3JtfQ0KDQo8ZmllbGRzZXQ+DQogICAgPGgzPnskbW9kLT5MYW5nKCdnbG9iYWwnKX08L2gzPg0KDQoNCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VybF9wcmVmaXh9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91cmxfcHJlZml4fTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2RlZmF1bHRfYWN0aW9uX3BhcmFtc306PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RlZmF1bHRfYWN0aW9uX3BhcmFtc308L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9kZXRhaWxfYWN0aW9uX3BhcmFtc306PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RldGFpbF9hY3Rpb25fcGFyYW1zfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RpdGxlX3BhcmFtX2Zvcl9jYWNoZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RpdGxlX3BhcmFtX2Zvcl9jYWNoZX08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9kaXNwbGF5X2lubGluZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2Rpc3BsYXlfaW5saW5lfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2xhenlsb2FkaW5nfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbGF6eWxvYWRpbmd9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9kZXRhaWxfcmV0dXJuaWR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX2RldGFpbF9yZXR1cm5pZH08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pdGVtX2NhdGVnb3J5X3JldHVybmlkfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9jYXRlZ29yeV9yZXR1cm5pZH08L3A+DQogICAgPC9kaXY+DQo8L2ZpZWxkc2V0Pg0KPGZpZWxkc2V0Pg0KICAgIDxoMz57JG1vZC0+TGFuZygnYWRtaW5fYXJlYScpfTwvaDM+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaW1hZ2VzX3NpemVfYWRtaW4nKX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9InskbW9kLT5HZXRQcmVmZXJlbmNlKCdpbWFnZXNfc2l6ZV9hZG1pbicpfSIgbmFtZT0ieyRhY3Rpb25pZH1pbWFnZXNfc2l6ZV9hZG1pbiIgLz4NCiAgICAgICAgICAgIDxzcGFuPiAqeyRtb2QtPkxhbmcoJ2ltYWdlX3NpemVfYWRtaW5faW5mbycpfTwvc3Bhbj4NCiAgICAgICAgPC9wPg0KDQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9mcmllbmRseW5hbWV9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mcmllbmRseW5hbWV9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV90aXRsZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1fdGl0bGV9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9zaW5ndWxhcn06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1fc2luZ3VsYXJ9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9wbHVyYWx9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX3BsdXJhbH08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY29weV9hZG1pbicpfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY29weV9hZG1pbn08L3A+DQogICAgPC9kaXY+DQoNCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcmV2aWV3X2FkbWluJyl9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wcmV2aWV3X2FkbWlufTwvcD4NCiAgICA8L2Rpdj4NCg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaGFzX2FkbWlufTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaGFzX2FkbWlufTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VzZXJncm91cF9kZXBlbmRlbmNlfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdXNlcmdyb3VwX2RlcGVuZGVuY2V9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfY3VzdG9tX2ZpZWxkc19kZWZhdWx0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9maWVsZHNfZGVmYXVsdFtdIiBzaXplPSI2IiBtdWx0aXBsZT0ibXVsdGlwbGUiPg0KICAgICAgICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZmllbGRzX3ZpZXdhYmxlIHNlbGVjdGVkPSRjdXN0b21fZmllbGRzX2RlZmF1bHR9DQogICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgPC9wPg0KICAgIDwvZGl2Pg0KPC9maWVsZHNldD4NCjxiciAvPg0KPC9maWVsZHNldD4NCjxiciAvPg0KDQo8ZmllbGRzZXQ+DQogICAgPGgzPnskbW9kLT5MYW5nKCdzZWFyY2gnKX08L2gzPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc2VhcmNoYWJsZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NlYXJjaGFibGV9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc2VhcmNoX2RhdGVfZW5kfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc2VhcmNoX2RhdGVfZW5kfTwvcD4NCiAgICA8L2Rpdj4NCiAgICB7aWYgJHNlYXJjaGFibGV9DQogICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgICB7JHNlYXJjaGFibGVfbGlua30NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgey9pZn0NCjwvZmllbGRzZXQ+DQo8YnIgLz4NCjxmaWVsZHNldD4NCiAgICA8aDM+eyRtb2QtPkxhbmcoJ2VkaXQnKX08L2gzPg0KDQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9maWx0ZXJfZGF0ZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ZpbHRlcl9kYXRlfTwvcD4NCiAgICA8L2Rpdj4gICANCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3JlY3Vyc2l2ZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3JlY3Vyc2l2ZX08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pdGVtX3RpdGxlX2VkaXR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX3RpdGxlX2VkaXR9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9hbGlhc19lZGl0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9hbGlhc19lZGl0fTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2l0ZW1fdXJsX2VkaXR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX3VybF9lZGl0fTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2l0ZW1fZGF0ZV9lZGl0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9kYXRlX2VkaXR9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9kYXRlX2VuZF9lZGl0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9kYXRlX2VuZF9lZGl0fTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2l0ZW1fY2F0ZWdvcnlfZWRpdH06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1fY2F0ZWdvcnlfZWRpdH08L3A+DQogICAgPC9kaXY+DQo8L2ZpZWxkc2V0Pg0KPGJyIC8+DQo8ZmllbGRzZXQ+DQogICAgPGgzPnskcHJvbXB0X21vZGV9PC9oMz4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0IiBpZD0ibW9kZSI+eyRpbnB1dF9tb2RlfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGlkPSJhZHZhbmNlZCI+DQogICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3N1bW1hcnlfc29ydGluZ306PC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdW1tYXJ5X3NvcnRpbmdfYWR2YW5jZWR9PC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXJ9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9zb3J0b3JkZXJfYWR2YW5jZWR9PC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc3VtbWFyeV9wYWdlbGltaXR9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9wYWdlbGltaXRfYWR2YW5jZWR9PC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGlkPSJzaW1wbGUiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9zdW1tYXJ5X3NvcnRpbmd9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9zb3J0aW5nX3NpbXBsZX08L3A+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9zdW1tYXJ5X3NvcnRvcmRlcn06PC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdW1tYXJ5X3NvcnRvcmRlcl9zaW1wbGV9PC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc3VtbWFyeV9wYWdlbGltaXR9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9wYWdlbGltaXRfc2ltcGxlfTwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQo8L2ZpZWxkc2V0PgkNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPg0KPC9kaXY+DQoNCnskZW5kZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/ordercategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZWNvbnRhaW5lciI+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCntsaXRlcmFsfQpmdW5jdGlvbiBwYXJzZVRyZWUodWwpewoJdmFyIHRhZ3MgPSBbXTsKCXVsLmNoaWxkcmVuKCJsaSIpLmVhY2goZnVuY3Rpb24oKXsKCQl2YXIgc3VidHJlZSA9CSQodGhpcykuY2hpbGRyZW4oInVsIik7CgkJaWYoc3VidHJlZS5zaXplKCkgPiAwKQoJCQl0YWdzLnB1c2goWyQodGhpcykuYXR0cigiaWQiKSwgcGFyc2VUcmVlKHN1YnRyZWUpXSk7CgkJZWxzZQoJCQl0YWdzLnB1c2goJCh0aGlzKS5hdHRyKCJpZCIpKTsKCX0pOwoJcmV0dXJuIHRhZ3M7Cn0KCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7Cgp2YXIgYWpheF91cmwgPSAkKCdmb3JtJykuYXR0cignYWN0aW9uJykrIj8iOwokKCdmb3JtIGlucHV0OmhpZGRlbixmb3JtIGlucHV0OnRleHQsZm9ybSBpbnB1dDpzdWJtaXQ6Zmlyc3QnKS5lYWNoKGZ1bmN0aW9uKCl7CmFqYXhfdXJsKz0iJiIrJCh0aGlzKS5hdHRyKCduYW1lJykrIj0iKyQodGhpcykuYXR0cigndmFsdWUnKTsKfSkKCiQoJ3VsLnNvcnRhYmxlJykubmVzdGVkU29ydGFibGUoewkKCQkJCQlkaXNhYmxlTmVzdGluZzogJ25vLW5lc3QnLAoJCQkJCWZvcmNlUGxhY2Vob2xkZXJTaXplOiB0cnVlLAoJCQkJCWhhbmRsZTogJ2RpdicsCgkJCQkJaXRlbXM6ICdsaScsCgkJCQkJb3BhY2l0eTogLjYsCgkJCQkJcGxhY2Vob2xkZXI6ICdwbGFjZWhvbGRlcicsCgkJCQkJdGFiU2l6ZTogMjUsCgkJCQkJdG9sZXJhbmNlOiAncG9pbnRlcicsCgkJCQkJdG9sZXJhbmNlRWxlbWVudDogJz4gZGl2JwoJCQkJfSk7CgogICAgIAokKCIuc2F2ZSIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICB2YXIgdHJlZSA9ICQudG9KU09OKHBhcnNlVHJlZSgkKCd1bC5zb3J0YWJsZScpKSk7CiAgICB2YXIgYWpheF9yZXMgPSBmYWxzZTsKICAgICQuYWpheCh7CiAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgdXJsOiAgYWpheF91cmwsCiAgICAgIGRhdGE6IHtkYXRhOiB0cmVlfSwKICAgICAgY2FjaGU6IGZhbHNlLAogICAgICBhc3luYzogZmFsc2UsCiAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewogICAgICAgICBhamF4X3JlcyA9IHRydWU7CiAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIGFqYXhfcmVzOwp9KTsvL2VuZCBzYXZlCgp9KTsvL2VuZCByZWFkeQp7L2xpdGVyYWx9Cjwvc2NyaXB0Pgp7JHN0YXJ0Zm9ybX0KPGRpdiBjbGFzcz0icmVvcmRlci1wYWdlcyI+Cjx1bCBjbGFzcz0ic29ydGFibGVMaXN0IHNvcnRhYmxlIj4KCntpZiAkaXRlbWNvdW50ID4gMH0Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeSBuYW1lPSJjYXRlZ29yeWxpc3QifQogICAgCnthc3NpZ24gdmFyPSJoaWVyYXJjaHljb3VudCIgdmFsdWU9Ii4ifGV4cGxvZGU6JGhpZXJhcmNoeX0Ke2Fzc2lnbiB2YXI9ImhpZXJhcmNoeWN1cnJlbnRjb3VudCIgdmFsdWU9Ii4ifGV4cGxvZGU6JGVudHJ5LT5oaWVyYXJjaHlfcG9zaXRpb259CntpZiAkc21hcnR5LmZvcmVhY2guY2F0ZWdvcnlsaXN0LmZpcnN0PT1mYWxzZSAmJiAkcGFyZW50X2lkIT0kZW50cnktPnBhcmVudF9pZCAmJiAkaGllcmFyY2h5Y291bnR8QGNvdW50IDw9ICAkaGllcmFyY2h5Y3VycmVudGNvdW50fEBjb3VudH0KPC9saT48dWw+CntlbHNlaWYgJHNtYXJ0eS5mb3JlYWNoLmNhdGVnb3J5bGlzdC5maXJzdD09ZmFsc2UgJiYgJHBhcmVudF9pZCE9JGVudHJ5LT5wYXJlbnRfaWR9CnttYXRoIGVxdWF0aW9uPSJ4IC0geSIgeD0kaGllcmFyY2h5Y291bnR8QGNvdW50IHk9JGhpZXJhcmNoeWN1cnJlbnRjb3VudHxAY291bnQgYXNzaWduPSJkZXB0aCJ9CntyZXBlYXQgc3RyaW5nPSI8L2xpPjwvdWw+IiB0aW1lcz0kZGVwdGh9e2Vsc2V9PC9saT4Key9pZn0KCgo8bGkgaWQ9ImNhdGVnb3J5X3skZW50cnktPmNhdGVnb3J5X2lkfSI+CjxkaXYgY2xhc3M9ImxhYmVsIj48c3Bhbj4mbmJzcDs8L3NwYW4+eyRlbnRyeS0+Y2F0ZWdvcnlfaWR9OiZuYnNwO3skZW50cnktPmNhdGVnb3J5X25hbWV9PGVtPnskZW50cnktPmhpZXJhcmNoeX08L2VtPjwvZGl2PgoKCgp7YXNzaWduIHZhcj0iaGllcmFyY2h5IiB2YWx1ZT0kZW50cnktPmhpZXJhcmNoeV9wb3NpdGlvbn0Ke2Fzc2lnbiB2YXI9InBhcmVudF9pZCIgdmFsdWU9JGVudHJ5LT5wYXJlbnRfaWR9CnsvZm9yZWFjaH0Key9pZn0KCjwvdWw+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnb2V2ZXJmbG93Ij4KIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiBjbGFzcz0iYnV0dG9uIHNhdmUiIHZhbHVlPSJ7J3N1Ym1pdCd8bGFuZ30iLz4KIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieydjYW5jZWwnfGxhbmd9Ii8+CjwvZGl2Pgp7JGVuZGZvcm19CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/orig_category_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRjb3VudCA+IDB9DQo8dWw+DQp7Zm9yZWFjaCBmcm9tPSRjYXRzIGl0ZW09bm9kZX0NCntpZiAkbm9kZS5kZXB0aCA+ICRub2RlLnByZXZkZXB0aH0NCntyZXBlYXQgc3RyaW5nPSI8dWw+IiB0aW1lcz0kbm9kZS5kZXB0aC0kbm9kZS5wcmV2ZGVwdGh9DQp7ZWxzZWlmICRub2RlLmRlcHRoIDwgJG5vZGUucHJldmRlcHRofQ0Ke3JlcGVhdCBzdHJpbmc9IjwvbGk+PC91bD4iIHRpbWVzPSRub2RlLnByZXZkZXB0aC0kbm9kZS5kZXB0aH0NCjwvbGk+DQp7ZWxzZWlmICRub2RlLmluZGV4ID4gMH08L2xpPg0Key9pZn0NCjxsaT4NCntpZiAkbm9kZS5jb3VudCA+IDB9DQoJPGEgaHJlZj0ieyRub2RlLnVybH0iPnskbm9kZS5jYXRlZ29yeV9uYW1lfTwvYT4gKHskbm9kZS5jb3VudH0pe2Vsc2V9PHNwYW4+eyRub2RlLmNhdGVnb3J5X25hbWV9ICgwKTwvc3Bhbj57L2lmfQ0Key9mb3JlYWNofQ0Ke3JlcGVhdCBzdHJpbmc9IjwvbGk+PC91bD4iIHRpbWVzPSRub2RlLmRlcHRoLTF9PC9saT4NCjwvdWw+DQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/orig_detail_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iaXRlbSI+DQo8aDIgY2xhc3M9Iml0ZW0tdGl0bGUiPnskaXRlbS0+dGl0bGV8Y21zX2VzY2FwZX08L2gyPg0KPGRpdiBjbGFzcz0iaXRlbS1jYXRlZ29yeSI+Q2F0ZWdvcnk6IHskaXRlbS0+Y2F0ZWdvcnlfbmFtZXxjbXNfZXNjYXBlfTwvZGl2Pg0Ke2lmICFlbXB0eSgkaXRlbS0+ZmllbGRkZWZzKX0NCiAgICA8ZGl2IGNsYXNzPSJpdGVtLXByb3BlcnRpZXMiPg0KICAgIHtmb3JlYWNoIGZyb209JGl0ZW0tPmZpZWxkZGVmcyBpdGVtPWZpZWxkZGVmfQ0KICAgICAgICB7aWYgJGZpZWxkZGVmLnR5cGUgPT0gJ3VwbG9hZF9maWxlJyB8fCAkZmllbGRkZWYudHlwZSA9PSAnc2VsZWN0X2ZpbGUnfQ0KICAgICAgICAgICAgeyRmaWVsZGRlZi5uYW1lfGNtc19lc2NhcGV9OiA8YSBocmVmPSJ7JGZpZWxkZGVmLmRpcnxjbXNfZXNjYXBlfS97JGZpZWxkZGVmLnZhbHVlfGNtc19lc2NhcGV9Ij57JGZpZWxkZGVmLnZhbHVlfGNtc19lc2NhcGV9PC9hPjxiciAvPg0KICAgICAgICB7ZWxzZX0NCiAgICAgICAgICAgIHskZmllbGRkZWYubmFtZXxjbXNfZXNjYXBlfTogeyRmaWVsZGRlZi52YWx1ZXxjbXNfZXNjYXBlfTxiciAvPg0KICAgICAgICB7L2lmfQ0KICAgIHsvZm9yZWFjaH0NCiAgICA8L2Rpdj4NCnsvaWZ9DQo8L2Rpdj48IS0tIGl0ZW0gLS0+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/orig_filter_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZmlsdGVyIj4gICAgICAgICAgICAgICAgICAgIA0KICAgIHskZm9ybXN0YXJ0fQ0KICAgIDxmaWVsZHNldD4NCiAgICAgICAgICAge2lmIGlzc2V0KCRjdXN0b21fZmllbGRkZWYpfQ0KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRjdXN0b21fZmllbGRkZWYgaXRlbT0nZmllbGQnfQ0KICAgICAgICAgICAge2lmICRmaWVsZC0+ZmllbGR9DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkLT5wcm9tcHR9OjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgICAgICAgICAgICAgIHtpZiAhZW1wdHkoJGZpZWxkLT5oZWxwKX0oeyRmaWVsZC0+aGVscH0pPGJyIC8+ey9pZn0NCiAgICAgICAgICAgICAgICAgICAgeyRmaWVsZC0+ZmllbGR9DQogICAgICAgICAgICAgICAgICAgIHtpZiBpc3NldCgkZmllbGQtPmZpbGVuYW1lKX08YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgeyRmaWVsZC0+ZGVsZXRlX2ZpbGV9IHskZmllbGQtPmZpbGVuYW1lfTxiciAvPg0KICAgICAgICAgICAgICAgICAgICB7L2lmfQ0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgIHtlbHNlfQ0KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGQtPnByb21wdH08L3A+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgey9pZn0NCiAgICB7L2ZvcmVhY2h9DQogICAgey9pZn0NCiAgICA8L2ZpZWxkc2V0Pg0KICAgIHskaW5wdXRfc3VibWl0fQ0KICAgIHskZm9ybWVuZH0NCiAgICAgICANCjwvZGl2Pg0KDQp7aWYgaXNTZXQoJHJlc3VsdHMpfQ0KeyRyZXN1bHRzfQ0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/orig_summary_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1pdGVtfQ0KPGgyPnskaXRlbS0+dGl0bGV8Y21zX2VzY2FwZX08L2gyPg0KPHA+eyRpdGVtLT5pdGVtX2RhdGV8Y21zX2RhdGVfZm9ybWF0fTwvcD4NCntpZiAkaXRlbS0+Y2F0ZWdvcnlfbmFtZX08cD57JGl0ZW0tPmNhdGVnb3J5X25hbWV8Y21zX2VzY2FwZX08cD57L2lmfQ0Ke2lmICFlbXB0eSgkaXRlbS0+ZmllbGRzKX0NCiAgICA8ZGl2IGNsYXNzPSJpdGVtLXByb3BlcnRpZXMiPg0KICAgIHtmb3JlYWNoIGZyb209JGl0ZW0tPmZpZWxkcyBpdGVtPWZpZWxkZGVmfQ0KICAgICAgICB7aWYgJGZpZWxkZGVmLnR5cGUgPT0gJ3VwbG9hZF9maWxlJyB8fCAkZmllbGRkZWYudHlwZSA9PSAnc2VsZWN0X2ZpbGUnfQ0KICAgICAgICAgICAgeyRmaWVsZGRlZi5uYW1lfGNtc19lc2NhcGV9OiA8YSBocmVmPSJ7JGZpZWxkZGVmLmRpcnxjbXNfZXNjYXBlfS97JGZpZWxkZGVmLnZhbHVlfGNtc19lc2NhcGV9Ij57JGZpZWxkZGVmLnZhbHVlfGNtc19lc2NhcGV9PC9hPjxiciAvPg0KICAgICAgICB7ZWxzZX0NCiAgICAgICAgICAgIHskZmllbGRkZWYubmFtZXxjbXNfZXNjYXBlfTogeyRmaWVsZGRlZi52YWx1ZX08YnIgLz4NCiAgICAgICAgey9pZn0NCiAgICB7L2ZvcmVhY2h9DQogICAgPC9kaXY+DQp7L2lmfQ0KPGEgaHJlZj0ieyRpdGVtLT5saW5rfSI+eyRpdGVtLT5saW5rfTwvYT4NCnsvZm9yZWFjaH0NCg0Ke2lmIGlzc2V0KCRwYWdlY291bnQpICYmICRwYWdlY291bnQgZ3QgMX0NCjxwPg0KICAgICAgICB7aWYgJHByZXZ1cmx9PGEgaHJlZj0ieyRwcmV2dXJsfSIgY2xhc3M9InByZXYiPsKrPC9hPiZuYnNwO3svaWZ9DQogICAgICAgIDxlbT57JHBhZ2VudW1iZXJ9IC8geyRwYWdlY291bnR9PC9lbT4NCiAgICAgICAge2lmICRuZXh0dXJsfTxhIGhyZWY9InskbmV4dHVybH0iIGNsYXNzPSJuZXh0Ij7CuzwvYT4mbmJzcDt7L2lmfQ0KICAgIDwvcD4NCnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/templatetab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/e2lmICRpdGVtY291bnQgPiAwfQ0KPGgzPnskc3VtbWFyeXRlbXBsYXRlc308L2gzPg0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4NCiAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0aD57JGhlYWRlcl9uYW1lfTwvdGg+DQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgPC90cj4NCiAgICA8L3RoZWFkPg0KICAgIDx0Ym9keT4NCntmb3JlYWNoIGZyb209JGl0ZW1zLnN1bW1hcnkgaXRlbT1lbnRyeX0NCiAgICAgICAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfSc7Ij4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5saW5rfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZWRpdH08L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnktPmRlbGV0ZX08L3RkPg0KICAgICAgICA8L3RyPg0Key9mb3JlYWNofQ0KICAgIDwvdGJvZHk+DQo8L3RhYmxlPg0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkc3VtbWFyeWxpbmt9PC9kaXY+DQoNCg0Ke2lmICRpdGVtY291bnQgPiAwfQ0KPGgzPnskZGV0YWlsdGVtcGxhdGVzfTwvaDM+DQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPg0KICAgIDx0aGVhZD4NCiAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRoPnskaGVhZGVyX25hbWV9PC90aD4NCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGhlYWQ+DQogICAgPHRib2R5Pg0Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMuZGV0YWlsIGl0ZW09ZW50cnl9DQogICAgICAgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc30nOyI+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+bGlua308L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnktPmVkaXR9PC90ZD4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGV9PC90ZD4NCiAgICAgICAgPC90cj4NCnsvZm9yZWFjaH0NCiAgICA8L3Rib2R5Pg0KPC90YWJsZT4NCnsvaWZ9DQoNCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGRldGFpbGxpbmt9PC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/editmodule.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19IA0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8ZGl2IGNsYXNzPSJwYWdldGV4dCI+DQo8aDM+eyRtb2R1bGVuYW1lfTwvaDM+DQp7JG1vZC0+TGFuZygnYXR0YWNoJyl9OjwvZGl2Pg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCXskYXR0YWNofQ0KICAgIDwvcD4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfTwvcD4NCjwvZGl2Pg0KDQp7JGVuZGZvcm19DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/generator.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQ0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIGNtc19zb3J0YWJsZSB0YWJsZXNvcnRlciI+DQoJPHRoZWFkPg0KCQk8dHI+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2lkJyl9PC90aD4NCgkJCTx0aD57JG1vZC0+TGFuZygnbmFtZScpfTwvdGg+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2F0dGFjaCcpfTwvdGg+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2NyZWF0ZWRhdGUnKX08L3RoPg0KCQkJPHRoPnskbW9kLT5MYW5nKCdtb2RpZmllZGRhdGUnKX08L3RoPg0KDQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+DQoJCTwvdHI+DQoJPC90aGVhZD4NCgk8dGJvZHk+DQp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQ0KCXtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQoJCXsqPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4qfQ0KICAgICAgICAgICAgICAgIDx0cj4NCgkJCTx0ZD57JGVudHJ5LT5pZH08L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPntpZiBpc1NldCgkZW50cnktPm1vZHVsZWxpbmspICYmICRlbnRyeS0+bW9kdWxlbGlua317JGVudHJ5LT5tb2R1bGVsaW5rfXtlbHNlfTxzdHJvbmc+eyRlbnRyeS0+bW9kdWxlX25hbWV9PC9zdHJvbmc+IC0geyRtb2QtPkxhbmcoJ3BsZWFzZV9pbnN0YWxsX2l0Jyl9ey9pZn08L3RkPg0KDQoJCQk8dGQ+eyRlbnRyeS0+YXR0YWNobW9kdWxlc308L3RkPg0KCSAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+Y3JlYXRlX2RhdGV8Y21zX2RhdGVfZm9ybWF0fTwvdGQ+DQoJICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5tb2RpZmllZF9kYXRlfGNtc19kYXRlX2Zvcm1hdH08L3RkPg0KCQkJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+cmVnZW5lcmF0ZWxpbmt9PC90ZD4NCgkJCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+DQoJCTwvdHI+DQp7L2ZvcmVhY2h9DQoJPC90Ym9keT4NCjwvdGFibGU+DQp7L2lmfQ0KDQoNCg0KeyRzdGFydGZvcm19IA0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8aDMgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY3JlYXRlX21vZHVsZScpfTwvaDM+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnbmFtZScpfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJeyRuYW1lfQ0KICAgIDwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhdHRhY2gnKX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCXskYXR0YWNofQ0KICAgIDwvcD4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4NCjwvZGl2Pg0KDQp7JGVuZGZvcm19DQo=]]></data>
	</file>
</module>
