<?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>SEOTools2</name>
	<version>1.0.11</version>
  <mincmsversion>1.9.2</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlNFT1Rvb2xzMiBoZWxwcyB5b3UgdG8gZ2V0IHlvdXIgU0VPIChTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbikgcmlnaHQuIFRoZSBtb2R1bGUgYWRkcyBzZXZlcmFsIFNFTyBjYXBhYmlsaXRpZXMgdG8geW91ciBDTVNNUyBpbnN0YWxsYXRpb24gYW5kIGFsZXJ0cyB5b3UgaWYgeW91IG1pc3NlZCBvdXQgb24gc29tZXRoaW5nIFNFTyByZWxhdGVkLiBDdXJyZW50bHksIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDo8L3A+Cjx1bD4KPGxpPi0gZ2VuZXJhdGVzIE1ldGEgdGFncyBpbiBzdGFuZGFyZCBodG1sLCBEdWJsaW4gQ29yZSBhbmQgT3BlbkdyYXBoIGZvcm1hdHM8L2xpPgo8bGk+LSBhdXRvbWF0aWNhbGx5IGV4dHJhY3RzIGtleXdvcmRzIGZyb20geW91ciBwYWdlcyBhbmQgYWRkcyB0aGVtIHRvIHRoZSBtZXRhIHRhZ3MgYW5kIHBhZ2UgdGl0bGU8L2xpPgo8bGk+LSBsZXRzIHlvdSBkZXRlcm1pbmUgd2l0aCBhIHNpbmdsZSBjbGljayB3aGV0aGVyIGNlcnRhaW4gcGFnZXMgc2hvdWxkIGJlIGluZGV4ZWQgYnkgc2VhcmNoIGVuZ2luZXMgb3Igbm90PC9saT4KPGxpPi0gZ2VuZXJhdGVzIGEgc2l0ZW1hcC54bWwgZmlsZSB3aXRoIHlvdXIgcGFnZXMgd2hpbGUgZ2l2aW5nIHlvdSBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgcHJpb3JpdGllcyBvZiB5b3VyIHBhZ2VzPC9saT4KPGxpPi0gZ2VuZXJhdGVzIGEgcm9ib3RzLnR4dCBmaWxlIGV4cGxpY2l0bHkgZGlzYWxsb3dpbmcgYWNjZXNzIHRvIHBhZ2VzIHlvdSBkb24ndCB3YW50IHRvIGJlIGluZGV4ZWQ8L2xpPgo8bGk+LSBhbGVydHMgeW91IHdoZW4gdGhlcmUgYXJlIHNldmVyYWwgcGFnZXMgZmVhdHVyaW5nIHRoZSBzYW1lIHBhZ2UgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnM8L2xpPgo8bGk+LSBhbGVydHMgeW91IHdoZW4gdmVyeSBzaG9ydCBwYWdlIG1ldGEgZGVzY3JpcHRpb25zIGFyZSBkZXRlY3RlZDwvbGk+CjxsaT4tIGF1dG9tYXRpY2FsbHkgc3VibWl0cyB5b3VyIHNpdGVtYXAgZmlsZSB0byBHb29nbGUgd2hlbiB5b3UgY2hhbmdlIHlvdXIgY29udGVudDwvbGk+CjwvdWw+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5GaXJzdCwgb3BlbiBhbGwgdGVtcGxhdGVzIHdoZXJlIHlvdSB3YW50IGRvIHVzZSBTRU9Ub29sczIuIFJlbW92ZSB0aGUgY29tcGxldGUgJmx0O3RpdGxlJmd0OyB0YWcgYW5kIHRoZSB7bWV0YWRhdGF9IHRhZyAoZXZlbiBpZiBpdCBzYXlzIHRvIG5ldmVyIHJlbW92ZSBpdCkgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSB0YWc8L3A+CjxwcmU+CntTRU9Ub29sczJ9CjwvcHJlPjxiciAvPgo8cD5OZXh0LCBhdCB0aGUgYm90dG9tIG9mIHlvdXIgdGVtcGxhdGUgKGFmdGVyIHRoZSBjbG9zaW5nICZsdDsvYm9keSZndDsgdGFnKSwgaW5zZXJ0IHRoZSBmb2xsb3dpbmcgY29kZTo8L3A+CjxwcmU+CntjYXB0dXJlIGFzc2lnbj0ibWV0YWRlc2NyaXB0aW9uIn17Y29udGVudCBibG9jaz0ibWV0YWRlc2NyaXB0aW9uIiBsYWJlbD0iUGFnZSBEZXNjcmlwdGlvbiIgb25lbGluZT0idHJ1ZSJ9ey9jYXB0dXJlfQo8L3ByZT48YnIgLz4KPHA+VGhpcyBpcyB3aGVyZSB5b3UnbGwgZW50ZXIgYSBzaG9ydCBwYWdlIGRlc2NyaXB0aW9uIChvbmUgb3IgdHdvIHNlbnRlbmNlcykgdGhhdCB3aWxsIGFwcGVhciBpbiB0aGUgc2VhcmNoIGVuZ2luZSdzIHJlc3VsdHMgYW5kIGlmLCBmb3IgZXhhbXBsZSwgc29tZW9uZSBzaGFyZXMgYSBsaW5rIHRvIHlvdXIgcGFnZSBvbiBmYWNlYm9vay48L3A+CjxwPk5vdywgdmlzaXQgdGhlIHNldHRpbmdzIHRhYnMgZm9yIHBhZ2UgdGl0bGUgJiBtZXRhIGluZm9ybWF0aW9uLCB0aGUgc2l0ZW1hcCAmIGNyYXdsZXIgc2V0dGluZ3MgYW5kIHRoZSBrZXl3b3JkIGdlbmVyYXRvciBzZXR0aW5ncyBhbmQgZmlsbCBpbiBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIHlvdXIgcGFnZS4gVW5kZXIgIk5hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrIiB5b3UgbmVlZCB0byBlbnRlciB0aGUgbmFtZSBvZiB0aGUgY29udGVudCBibG9jayB5b3UganVzdCBhZGRlZCB0byB5b3VyIHRlbXBsYXRlcyAoIlBhZ2UgRGVzY3JpcHRpb24iIGluIG91ciBleGFtcGxlKS4gVGhlIHRhYiAiU0VPIEFsZXJ0cyIgd2lsbCBhbGVydCB5b3UgaWYgaXQgZGV0ZWN0cyBhbnl0aGluZyB0aGF0IGlzIHJlcXVpcmVkIGJ1dCBub3QgYWN0aXZhdGVkIG9yIGZpbGxlZCBpbi4gWW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIHNpZ25pbmcgdXAgeW91cgpzaXRlIHdpdGggR29vZ2xlIFdlYm1hc3RlciB0b29scy4gVGhlcmUsIHNlbGVjdCAiTWV0YSB0YWcgdmFsaWRhdGlvbiIgYW5kIHBhc3RlIHRoZSB2ZXJpZmljYXRpb24gY29kZSAocXVpdGUgYSBsb25nIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGFuZCBudW1iZXJzKSBpbnRvIHRoZSBib3ggIlZlcmlmaWNhdGlvbiBDb2RlIiBpbiAiU0VPIFNldHRpbmdzIiB0byBhdXRvbWF0aWNhbGx5IHZlcmlmeSB0aGF0IHlvdSBhcmUgcmVhbGx5CnRoZSBvd25lciBvZiB5b3VyIHBhZ2UgKG5vIG5lZWQgdG8gcGFzdGUgdGhlIEdvb2dsZSBNZXRhLWNvZGUgaW50byB5b3VyIHRlbXBsYXRlKS48L3A+CjxwPkFzIHNvb24gYXMgZXZlcnl0aGluZyBpcyBzZXQgdXAsIGxvb2sgYXQgdGhlICJTRU8gQWxlcnRzIiB0YWIgYW5kIGZpeCBhbGwgcHJvYmxlbXMgZGV0ZWN0ZWQgaGVyZS4gVGFrZSBjYXJlIHRvIGluc2VydCBhICh1bmlxdWUpIHBhZ2UgZGVzY3JpcHRpb24gb24gZXZlcnkgcGFnZSB5b3UgZWRpdCBpbiB0aGUgZmllbGQgIlBhZ2UgRGVzY3JpcHRpb24iIGF0IHRoZSBib3R0b20gb2YgeW91ciAiRWRpdCBQYWdlIiBmb3JtLjwvcD4KPHA+VG8gc2V0IHlvdXIgb3duIGtleXdvcmRzIChpbnN0ZWFkIG9mIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBvbmVzKSBvciBPcGVuR3JhcGggdHlwZSBmb3IgY2VydGFpbiBwYWdlcywgdmlzaXQgdGhlICJQYWdlIHNldHRpbmdzIiB0YWIgd2hlcmUgeW91J2xsIGZpbmQgYSBsaXN0IG9mIGFsbCBwYWdlcyB5b3UgaGF2ZSBpbiB5b3VyIHN5c3RlbS4gVGhlcmUsIHlvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIHNpdGVtYXAgcHJpb3JpdHkgKHdoaWNoIGlzIGF1dG8tY2FsY3VsYXRlZCBieSBkZWZhdWx0KSBvZiBhIHBhZ2UgdG8gaW5kaWNhdGUgdGhhdCBpdCBzaG91bGQKYmUgY29uc2lkZXJlZCBtb3JlIGltcG9ydGFudCBmb3Igc2VhcmNoIGVuZ2luZSBtYXRjaGVzIG9uIHlvdXIgcGFnZSBvciBleGNsdWRlIGNlcnRhaW4gcGFnZXMgZnJvbSB0aGUgc2VhcmNoIGluZGV4LjwvcD4KPHA+U0VPVG9vbHMyIHdpbGwgYWxzbyBhdXRvbWF0aWNhbGx5IGluc2VydCBhIGxpbmsgdG8gdGhlIGltYWdlIHRvIGJlIHVzZWQgYXMgdGhlIG1haW4gaW1hZ2Ugb2YgeW91ciBwYWdlIGlmIHlvdSBzZWxlY3QgYW4gIkltYWdlIiBmb3IgdGhlIHBhZ2UgZnJvbSB3aXRoaW4geW91ciBwYWdlJ3MgIk9wdGlvbnMiIHRhYiAodGhpcyBpcyBpbXBvcnRhbnQgZm9yIHBlb3BsZSBzdWJtaXR0aW5nIGEgbGluayB0byB5b3VyIHBhZ2UgZS5nLiBvbiBmYWNlYm9vaykuIEFsc28sIGlmIHlvdSBhcmUgdXNpbmcgT3BlbkdyYXBoLCB0aGUgaW1hZ2Ugc2VsZWN0ZWQgaGVyZQp3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBpbWFnZSB5b3Ugc3BlY2lmaWVkIGZyb20gd2l0aGluICJTRU8gU2V0dGluZ3MiLiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB5b3UgbmVlZCB0byB1cGxvYWQgdGhvc2UgaW1hZ2VzIHRvIHlvdXIgL3VwbG9hZHMvaW1hZ2VzIGRpcmVjdG9yeS48L3A+CjxoMz5DYW4gSSB1c2Ugc21hcnR5IHZhcmlhYmxlcz88L2gzPgo8cD5Zb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyB3aXRoaW4gdGhlIHNldHRpbmdzIGZpZWxkcyA8aT5QYWdlIHRpdGxlPC9pPiwgPGk+TWV0YSBwYWdlIHRpdGxlPC9pPiwgPGk+QXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZGVzY3JpcHRpb25zPC9pPiBhbmQgPGk+QWRkaXRpb25hbCBtZXRhIHRhZ3M8L2k+LiBFbnRlciA8Y29kZT57ZGVidWd9PC9jb2RlPiB0byBzZWUgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdmFyaWFibGVzLjwvcD4KPGgzPldoaWNoIHNtYXJ0eSB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkIGJ5IFNFT1Rvb2xzMj88L2gzPgo8Y29kZT57JHNlb19rZXl3b3Jkc308L2NvZGU+OiBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlIChpbmNsdWRpbmcgdGhlIGRlZmF1bHQga2V5d29yZHMpPGJyIC8+Cjxjb2RlPnskdGl0bGVfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwga2V5d29yZHMgc2V0IGZvciB0aGUgcGFnZSAoaW5jbHVkaW5nIHRoZSBkZWZhdWx0IGtleXdvcmRzKTxiciAvPgo8Y29kZT57JGRlZmF1bHRfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwgZGVmYXVsdCBrZXl3b3JkczxiciAvPgo8Y29kZT57JHBhZ2Vfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwga2V5d29yZHMgc2V0IGZvciB0aGUgcGFnZSAod2l0aG91dCB0aGUgZGVmYXVsdCBrZXl3b3JkcykKPGgzPlN1cHBvcnQ8L2gzPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBDbGlwIE1hZ2ljIDxhIGhyZWY9Im1haWx0bzphZG1pbkBjbGlwbWFnaWMuY29tLmF1Ij4mbHQ7YWRtaW5AY2xpcG1hZ2ljLmNvbS5hdSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc2hvd2Jhc2U9InRydWUiIC0gU2V0IHRoaXMgcGFyYW1ldGVyIHRvIDxjb2RlPmZhbHNlPC9jb2RlPiB0byBzdXBwcmVzcyB0aGUgb3V0cHV0IG9mIHRoZSBiYXNlIGhyZWYgdGFnLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDbGlwIE1hZ2ljICZsdDthZG1pbkBjbGlwbWFnaWMuY29tLmF1Jmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC4xMTxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjx1bD4KPGxpPlZlcnNpb24gMS4wIC0gMjUgSmFudWFyeSAyMDEyLiBJbml0aWFsIHJlbGVhc2UuIFRoaXMgaXMgYSBmb3JrIG9mIHRoZSBTRU9Ub29scyBtb2R1bGUgd2l0aCBDTVNNUyAxLjEwKyBjb21wYXRpYmlsaXR5LiBDaGFuZ2VzIGluY2x1ZGU6Cgk8dWw+CgkJPGxpPlNldCBwcmVmZXJlbmNlcyBvbiBpbnN0YWxsPC9saT4KCQk8bGk+UmVtb3ZlIHByZWZlcmVuY2VzIG9uIHVuaW5zdGFsbDwvbGk+CgkJPGxpPlJlcGxhY2UgYWxsIHJlZmVyZW5jZSB0byBIaWVyYXJjaHlNYW5hZ2VyIG9iamVjdHMgd2l0aCBDb250ZW50T3BlcmF0aW9ucyBvYmplY3RzPC9saT4KCQk8bGk+R2VuZXJhdGUgYWxsIGtleXdvcmRzLCBrZXl3b3JkIHN1Z2dlc3Rpb25zLCBkZXNjcmlwdGlvbnMgYW5kIGRlZmF1bHQgZGVzY3JpcHRpb25zPC9saT4KCQk8bGk+R2VuZXJhdGUgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQgZmlsZXM8L2xpPgoJCTxsaT5SZXRhaW4gY2hlY2tib3ggcHJlZmVyZW5jZSBzZXR0aW5ncyBhZnRlciBzdWJtaXQ8L2xpPgoJCTxsaT5PbiBmcm9udGVuZCBwYWdlIGxvYWQsIGVuc3VyZSB0aGF0IGEgY29ycmVzcG9uZGluZyByZWNvcmQgZXhpc3RzIGluIHRoZSBzZW90b29sczIgZGF0YWJhc2UgdGFibGU8L2xpPgoJPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4wLjEgLSAyNSBKYW51YXJ5IDIwMTIuIE1pbm9yIGJ1ZyBmaXg8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMiAtIDEgRmVicnVhcnkgMjAxMi4gQnVnIGZpeDwvbGk+CjxsaT5WZXJzaW9uIDEuMC4zIC0gMSBGZWJydWFyeSAyMDEyLiBCdWcgZml4PC9saT4KPGxpPlZlcnNpb24gMS4wLjQgLSAxIEZlYnJ1YXJ5IDIwMTIuIENvcnJlY3Rpb248L2xpPgo8bGk+VmVyc2lvbiAxLjAuNSAtIDYgRmVicnVhcnkgMjAxMi4gQWRkIGV2ZW50IGhhbmRsZXJzIHRvIHB1c2ggc2l0ZW1hcCB0byBHb29nbGUgd2VibWFzdGVyczwvbGk+CjxsaT5WZXJzaW9uIDEuMC42IC0gNSBNYXJjaCAyMDEyLiBJbXByb3ZlZCBoYW5kbGluZyBvZiBzc2wgdXJscyBhbmQgYnVnIGZpeCB3aGVuIHRoZXJlIGFyZSBubyBzaG9ydCBtZXRhIGRlc2NyaXB0aW9uczwvbGk+CjxsaT5WZXJzaW9uIDEuMC43IC0gOSBBcHJpbCAyMDEyLiBCdWcgZml4PC9saT4KPGxpPlZlcnNpb24gMS4wLjggLSA5IEFwcmlsIDIwMTIuIEJ1ZyBmaXg8L2xpPgo8bGk+VmVyc2lvbiAxLjAuOSAtIDExIEFwcmlsIDIwMTIuCiAgICA8dWw+CiAgICAgICAgPGxpPk1vcmUgaW1wcm92ZW1lbnRzIHRvIHNzbCBoYW5kbGluZyBlc3BlY2lhbGx5IGluIHRoZSBzaXRlbWFwLnhtbCAodGhhbmtzIGFuZHJpZXNpbmZvc2Vydik8L2xpPgogICAgICAgIDxsaT5BYmlsaXR5IHRvIHNob3cgYW55IEFjdGl2ZSBwYWdlLCBub3QganVzdCBwYWdlcyB3aXRoIEFjdGl2ZSBhbmQgU2hvdyBJbiBNZW51IGluIHRoZSBzaXRlbWFwLnhtbCAodGhhbmtzIE1hdHQpPC9saT4KICAgIDwvdWw+CjxsaT5WZXJzaW9uIDEuMC4xMCAtIDI0IE1heSAyMDEyIC0gbW9zdGx5IGltcHJvdmVtZW50cyBpbiB0aGUgc2l0ZW1hcCBhcmVhLCBpZToKICAgIDx1bD4KICAgICAgICA8bGk+QWxsb3dzIHNpdGVtYXAgaW5kZXhpbmcgb2YgaW50ZXJuYWwgYW5kIGV4dGVybmFsIFVSTCBsaW5rczwvbGk+CiAgICAgICAgPGxpPkZpbHRlcnMgb3V0IEVycm9yIFBhZ2UgZnJvbSBzaXRlbWFwLnhtbDwvbGk+CiAgICA8L3VsPgo8bGk+VmVyc2lvbiAxLjAuMTEgLSAxNCBBdWd1c3QgMjAxMi4gQ01TTVMgMS4xMSBjb21wYXRpYmlsaXR5ICh0aGFua3MgbGVlcm95YnJ1bik8L2xpPgo8L3VsPjxiciAvPg==]]></about>
	<description><![CDATA[Helps with SEO in general, automatically generating XML sitemaps and comprehensive meta descriptions]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.changesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoIkVkaXQgU0VPIFNldHRpbmdzIikpCnsKICByZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCkNvZGUgZm9yIFNFT1Rvb2xzMiAiY2hhbmdlc2V0dGluZ3MiIGFkbWluIGFjdGlvbgogCi09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCiAKVHlwaWNhbGx5LCB0aGlzIHdpbGwgZGlzcGxheSBzb21ldGhpbmcgZnJvbSBhIHRlbXBsYXRlCm9yIGRvIHNvbWUgb3RoZXIgdGFzay4KIAoqLwoKLy8gUmVnZW5lcmF0ZSBTaXRlbWFwIGFuZCByb2JvdHMudHh0CmlmIChpc3NldCgkX1BPU1RbJ2RvX3JlZ2VuZXJhdGUnXSkpIHsKICAkdGhpcy0+Y3JlYXRlU2l0ZW1hcCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKSA9PSAxKTsKICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpID09IDEpIHsKICAgICR0aGlzLT5jcmVhdGVSb2JvdHNUWFQoKTsKICB9CiAgJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiTWFudWFsbHkgcmVnZW5lcmF0ZWQgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQiKTsKICAkdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NpdGVtYXBfcmVnZW5lcmF0ZWQnLCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOwp9CgppZiAoaXNzZXQoJF9QT1NUWydzYXZlX21ldGFfc2V0dGluZ3MnXSkpIHsKICAkbWV0YV9zdGFuZGFyZCA9IGlzc2V0KCRfUE9TVFsnbWV0YV9zdGFuZGFyZCddKSA/IDEgOiAwOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywkbWV0YV9zdGFuZGFyZCk7CgogICRtZXRhX2R1YmxpbmNvcmUgPSBpc3NldCgkX1BPU1RbJ21ldGFfZHVibGluY29yZSddKSA/IDEgOiAwOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnLCRtZXRhX2R1YmxpbmNvcmUpOwoKICAkbWV0YV9vcGVuZ3JhcGggPSBpc3NldCgkX1BPU1RbJ21ldGFfb3BlbmdyYXBoJ10pID8gMSA6IDA7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywkbWV0YV9vcGVuZ3JhcGgpOwoKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCRfUE9TVFsnYWRkaXRpb25hbF9tZXRhX3RhZ3MnXSk7CgogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJF9QT1NUWydtZXRhX3B1Ymxpc2hlciddKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9jb250cmlidXRvcicsJF9QT1NUWydtZXRhX2NvbnRyaWJ1dG9yJ10pOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcsJF9QT1NUWydtZXRhX2NvcHlyaWdodCddKTsKCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCRfUE9TVFsnbWV0YV9sb2NhdGlvbiddKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCRfUE9TVFsnbWV0YV9yZWdpb24nXSk7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCRfUE9TVFsnbWV0YV9sYXRpdHVkZSddKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCRfUE9TVFsnbWV0YV9sb25naXR1ZGUnXSk7CgogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90aXRsZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF90aXRsZSddKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF90eXBlJ10pOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9zaXRlbmFtZSddKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnXSk7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSk7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJ10pOwoKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndGl0bGUnLCRfUE9TVFsndGl0bGUnXSk7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3RpdGxlX21ldGEnLCRfUE9TVFsndGl0bGVfbWV0YSddKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCRfUE9TVFsnZGVzY3JpcHRpb25fYmxvY2snXSk7CgoKICAkZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZSA9IGlzc2V0KCRfUE9TVFsnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZSddKSA/IDEgOiAwOwoKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsJGRlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUpOwoKCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCRfUE9TVFsnZGVzY3JpcHRpb25fYXV0byddKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9rZXl3b3JkcycsJF9QT1NUWydkZWZhdWx0X2tleXdvcmRzJ10pOwoKICAkdGhpcy0+YXVkaXQoIlRlc3QiLCJTRU8gVG9vbHMiLCJFZGl0ZWQgTWV0YSBzZXR0aW5ncyIpOwogICR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2V0dGluZ3NfdXBkYXRlZCcsJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3NhdmVfc2l0ZW1hcF9zZXR0aW5ncyddKSkgewoKICAkY3JlYXRlX3NpdGVtYXAgPSBpc3NldCgkX1BPU1RbJ2NyZWF0ZV9zaXRlbWFwJ10pID8gMSA6IDA7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywkY3JlYXRlX3NpdGVtYXApOwoKICAkcHVzaF9zaXRlbWFwID0gaXNzZXQoJF9QT1NUWydwdXNoX3NpdGVtYXAnXSkgPyAxIDogMDsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywkcHVzaF9zaXRlbWFwKTsKCiAgJGNyZWF0ZV9yb2JvdHMgPSBpc3NldCgkX1BPU1RbJ2NyZWF0ZV9yb2JvdHMnXSkgPyAxIDogMDsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsJGNyZWF0ZV9yb2JvdHMpOwoKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywkX1BPU1RbJ3ZlcmlmaWNhdGlvbiddKTsKCiAgJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIFNpdGVtYXAgc2V0dGluZ3MiKTsKICAkdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOwp9CgppZiAoaXNzZXQoJF9QT1NUWydzYXZlX2tleXdvcmRfc2V0dGluZ3MnXSkpIHsKCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywkX1BPU1RbJ2tleXdvcmRfbWlubGVuZ3RoJ10pOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX3RpdGxlX3dlaWdodCcsJF9QT1NUWydrZXl3b3JkX3RpdGxlX3dlaWdodCddKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCRfUE9TVFsna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnXSk7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0J10pOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfY29udGVudF93ZWlnaHQnXSk7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnLCRfUE9TVFsna2V5d29yZF9taW5pbXVtX3dlaWdodCddKTsKCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfZXhjbHVkZScsJF9QT1NUWydrZXl3b3JkX2V4Y2x1ZGUnXSk7CgoKCiAgJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIEtleXdvcmQgc2V0dGluZ3MiKTsKICAkdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4na2V5d29yZHNldHRpbmdzJykpOwp9CgovLyBEbyBldmVudHMKJHRoaXMtPlNlbmRFdmVudCgnUHJlZnNVcGRhdGVkJywkX1BPU1QpOwoKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCkNvZGUgZm9yIFNFT1Rvb2xzMiAiZGVmYXVsdCIgYWN0aW9uCgotPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQoKVHlwaWNhbGx5LCB0aGlzIHdpbGwgZGlzcGxheSBzb21ldGhpbmcgZnJvbSBhIHRlbXBsYXRlCm9yIGRvIHNvbWUgb3RoZXIgdGFzay4KCiovCgovLyBHZXQgcGFnZSBkYXRhCiRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKJGRiID0mIGNtc21zKCktPkdldERiKCk7CiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKJGh0bWwgPSAnJzsKCiRyb290X3VybCA9IGVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSA/ICRjb25maWdbJ3Jvb3RfdXJsJ10gOiAkY29uZmlnWydzc2xfdXJsJ107CgovLyBGaXJzdCB1cCwgd2UgZG8gc29tZSBkYXRhYmFzZSBtYWludGVuYW5jZQovLyBFbnN1cmUgYWxsIHRoZSBhY3RpdmUgcGFnZXMgYXJlIGluIHRoZSBzZW90b29sczIgZGF0YWJhc2UKJHF1ZXJ5ID0gJ1NFTEVDVCBgY29udGVudF9pZGAgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBXSEVSRSAoYHR5cGVgIExJS0UgIiVjb250ZW50JSIgT1IgYHR5cGVgIExJS0UgIiVsaW5rJSIgT1IgYHR5cGVgIExJS0UgIiVjYXRhbG9nJSIgKUFORCBgY29udGVudF9pZGAgTk9UIElOIChTRUxFQ1QgYGNvbnRlbnRfaWRgIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKS4gJ21vZHVsZV9zZW90b29sczIpJzsKaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsKICAkaHRtbCAuPSAgIjxiciAvPlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOwogIGRpZTsKfQoKaWYgKCRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKSB7CiAgLy8gT0sgd2UgaGF2ZSBzb21lIG5ldyBwYWdlcwogICRxMiA9ICdJTlNFUlQgSU5UTyAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQgY29udGVudF9pZCA9ID8sIGluZGV4YWJsZSA9ID8nOwogIHdoaWxlICgkb25lX3BhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7CiAgICAkZGItPkV4ZWN1dGUoJHEyLGFycmF5KCRvbmVfcGFnZVsnY29udGVudF9pZCddLDEpKTsKICB9Cn0KCi8vIE5vdyBjaGVjayB0aGF0IHdlIGhhdmUgcmVtb3ZlZCBmcm9tIHNlb3Rvb2xzMiBhbnkgcGFnZXMgdGhhdCBoYXZlIGJlZW4gZGVsZXRlZAokcXVlcnkgPSAnU0VMRUNUIGBjb250ZW50X2lkYCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGBjb250ZW50X2lkYCBOT1QgSU4gKFNFTEVDVCBgY29udGVudF9pZGAgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpLiAnY29udGVudCknOwppZiAoISRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KSkgewogICRodG1sIC49ICAiPGJyIC8+UHJvYmxlbSB3aXRoIHRoZSBkYXRhYmFzZSEgUGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLiI7CiAgZGllOwp9CmlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgewogIC8vIE9LIHdlIGhhdmUgc29tZSBkZWxldGVkIHBhZ2VzCiAgJHEzID0gJ0RFTEVURSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSA/JzsKICB3aGlsZSAoJG9uZV9wYWdlID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewogICAgJGRiLT5FeGVjdXRlKCRxMyxhcnJheSgkb25lX3BhZ2VbJ2NvbnRlbnRfaWQnXSwxKSk7CiAgfQp9CgovLyBMYXN0bHksIGVuc3VyZSB0aGF0IGFsbCBpbmFjdGl2ZSBwYWdlcyBhcmUgbWFya2VkIGFzIG5vdCBpbmRleGFibGUgaW4gc2VvdG9vbHMyCiRxdWVyeSA9ICdTRUxFQ1QgY29udGVudF9pZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnY29udGVudCBXSEVSRSBhY3RpdmUgPSAwJzsKaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsKICAkaHRtbCAuPSAgIjxiciAvPlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOwogIGRpZTsKfQoKaWYgKCRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKSB7CiAgLy8gT0sgd2UgaGF2ZSB0byBwcmV2ZW50IHRoZSBpbmFjdGl2ZSBwYWdlcyBmcm9tIGJlaW5nIGluZGV4ZWQuCiAgJHE0ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQgaW5kZXhhYmxlID0gMCBXSEVSRSBjb250ZW50X2lkID0gPyc7CiAgd2hpbGUgKCRvbmVfcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsKICAgICRkYi0+RXhlY3V0ZSgkcTQsYXJyYXkoJG9uZV9wYWdlWydjb250ZW50X2lkJ10pKTsKICB9Cn0KCi8vIFBoZXcsIHRoYXQncyBhbGwgZG9uZSBzbyB3ZSBjYW4gbW92ZSBvbiB0byB0aGUgcmVhbCBidXNpbmVzcyBvZiB0aGUgZGF5CgokdHBsX3ZhcnMgPSAkc21hcnR5LT5nZXRfdGVtcGxhdGVfdmFycygpOwokY3VyY29udGVudCA9ICR0cGxfdmFyc1snY29udGVudF9vYmonXTsKCgppZigkY3VyY29udGVudCAhPSBOVUxMKSB7CiAgLy8gSW1hZ2UtTGluawogICRpbWcgPSAkY3VyY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgnaW1hZ2UnKTsKICBpZiAoKCRpbWcgIT0gLTEpICYmICgkaW1nICE9ICIiKSkgIHsKICAgICRodG1sIC49ICAiPGxpbmsgcmVsPSdpbWFnZV9zcmMnIGhyZWY9JyIuJHJvb3RfdXJsLiIvdXBsb2Fkcy9pbWFnZXMvIi4kaW1nLiInIC8+IjsKICB9CgogICRwYWdlX3VybCA9ICRjdXJjb250ZW50LT5HZXRVUkwoKTsKICAkcGFnZV9pZCA9ICRjdXJjb250ZW50LT5JZCgpOwp9IGVsc2UgewogIHJldHVybjsKfQoKJG1vZGlmaWVkX2RhdGUgPSAkY3VyY29udGVudC0+Z2V0TW9kaWZpZWREYXRlKCk7CiRtb2RpZmllZF9kYXRlID0gZGF0ZSgnWS1tLWRcVEg6aTpzUCcsJG1vZGlmaWVkX2RhdGUpOwoKLy8gS2V5d29yZCBnZW5lcmF0b3IKJGtleXdvcmRzID0gZXhwbG9kZSgnICcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCcnKSk7CgoKJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ID8nOwppZiAoISRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRwYWdlX2lkKSkpIHsKICAkaHRtbCAuPSAgIlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOwogIGRpZTsKfQoKJHBhZ2VfaW5mbyA9ICRyZXN1bHQtPkZldGNoUm93KCk7CgoKaWYgKCRwYWdlX2luZm9bJ2tleXdvcmRzJ10gIT0gIiIpIHsKICAkb3RoZXJfa2V5d29yZHMgPSBhcnJheV9mbGlwKGV4cGxvZGUoJyAnLCRwYWdlX2luZm9bJ2tleXdvcmRzJ10pKTsKfWVsc2V7CiAgJG90aGVyX2tleXdvcmRzID0gJHRoaXMtPmdldEtleXdvcmRTdWdnZXN0aW9ucygkcGFnZV9pZCk7Cn0KCiRzZW9fa2V5d29yZHMgPSBpbXBsb2RlKCcsICcsYXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRrZXl3b3JkcywgYXJyYXlfZmxpcCgkb3RoZXJfa2V5d29yZHMpKSkpOwokc21hcnR5LT5hc3NpZ24oJ3Nlb19rZXl3b3JkcycsICRzZW9fa2V5d29yZHMpOwokdGl0bGVfa2V5d29yZHMgPSBpbXBsb2RlKCcgJyxhcnJheV91bmlxdWUoYXJyYXlfbWVyZ2UoJGtleXdvcmRzLCBhcnJheV9mbGlwKCRvdGhlcl9rZXl3b3JkcykpKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGVfa2V5d29yZHMnLCAkdGl0bGVfa2V5d29yZHMpOwokc21hcnR5LT5hc3NpZ24oJ2RlZmF1bHRfa2V5d29yZHMnLCBpbXBsb2RlKCcgJywgJGtleXdvcmRzKSk7CiRzbWFydHktPmFzc2lnbigncGFnZV9rZXl3b3JkcycsIGltcGxvZGUoJyAnLCBhcnJheV9mbGlwKCRvdGhlcl9rZXl3b3JkcykpKTsKCi8vIFBhZ2UgZGVzY3JpcHRpb24KJGRlc2NyaXB0aW9uX2lkID0gc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSk7CmlmICgkY3VyY29udGVudCAhPT0gZmFsc2UpIHsKICAkZGVzY3JpcHRpb24gPSBzdHJpcF90YWdzKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCRkZXNjcmlwdGlvbl9pZCkpOwp9CgppZiAoKCRkZXNjcmlwdGlvbiA9PSAiIikgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywxKSA9PSAxKSAmJiAkY3VyY29udGVudCAhPT0gTlVMTCkgewogICRrdyA9IGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKTsKICAkbGFzdF9rZXl3b3JkID0gYXJyYXlfcG9wKCRrdyk7CiAgJGtleXdvcmRzID0gaW1wbG9kZSgnLCAnLCRrdykgLiAiICIgLiAkdGhpcy0+bGFuZygnYW5kJykgLiAiICIgLiAkbGFzdF9rZXl3b3JkOwogIAogICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCd7a2V5d29yZHN9Jywka2V5d29yZHMsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSk7CiAgJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJGRlc2NyaXB0aW9uKTsKICAkZGVzY3JpcHRpb24gPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJGRlc2NyaXB0aW9uKTsKCn0KCi8vIFNob3cgYmFzZT8KaWYgKGlzc2V0KCRwYXJhbXNbJ3Nob3diYXNlJ10pICYmICRwYXJhbXNbJ3Nob3diYXNlJ10gIT0gZmFsc2UpIHsKICAkaHRtbCAuPSAgIjxiYXNlIGhyZWY9JyIuJHJvb3RfdXJsLiIvJyAvPlxuIjsKfQoKCi8vIFBhZ2UgdGl0bGUKaWYgKCRjdXJjb250ZW50ICE9PSBOVUxMKXsKICAkdGl0bGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGl0bGUnLCd7dGl0bGV9IHwge3NpdGVuYW1lfSAtIHtzZW9fa2V5d29yZHN9Jyk7CiAgJHRpdGxlID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJHRpdGxlKTsKICAkdGl0bGUgPSBzdHJfcmVwbGFjZSgne3NpdGVuYW1lfScsY21zX3NpdGVwcmVmczo6Z2V0KCdzaXRlbmFtZScpLCR0aXRsZSk7CiAgJHRpdGxlID0gc3RyX3JlcGxhY2UoJ3tzZW9fa2V5d29yZHN9JywkdGl0bGVfa2V5d29yZHMsJHRpdGxlKTsKICAkdGl0bGUgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRpdGxlKTsKCiAgJG1ldGFfdGl0bGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGl0bGVfbWV0YScsJ3t0aXRsZX0gfCB7c2l0ZW5hbWV9Jyk7CiAgJG1ldGFfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPk5hbWUoKSwkbWV0YV90aXRsZSk7CiAgJG1ldGFfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3NpdGVuYW1lfScsJHRwbF92YXJzWydzaXRlbmFtZSddLCRtZXRhX3RpdGxlKTsKICAkbWV0YV90aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2VvX2tleXdvcmRzfScsJHRpdGxlX2tleXdvcmRzLCRtZXRhX3RpdGxlKTsKICAkbWV0YV90aXRsZSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkbWV0YV90aXRsZSk7CgogICRvcGVuZ3JhcGhfdGl0bGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCd7dGl0bGV9Jyk7CiAgJG9wZW5ncmFwaF90aXRsZSA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkY3VyY29udGVudC0+TmFtZSgpLCRvcGVuZ3JhcGhfdGl0bGUpOwogICRvcGVuZ3JhcGhfdGl0bGUgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJG9wZW5ncmFwaF90aXRsZSk7CgogICRodG1sIC49ICAiPHRpdGxlPiIuJHRpdGxlLiI8L3RpdGxlPlxuIjsKfQovLyBNRVRBIHRhZ3MgZm9yIGNvbnRlbnQgdHlwZSBldGMuCiRodG1sIC49ICAiPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9Ii4kY29uZmlnWydkZWZhdWx0X2VuY29kaW5nJ10uIicgLz5cbiI7CmlmICgoJHBhZ2VfaW5mb1snaW5kZXhhYmxlJ10gPT0gIiIpIHx8ICgkcGFnZV9pbmZvWydpbmRleGFibGUnXSA9PSAiMSIpKSB7CiAgJGh0bWwgLj0gICI8bWV0YSBuYW1lPSdyb2JvdHMnIGNvbnRlbnQ9J2luZGV4LCBmb2xsb3cnIC8+XG4iOwp9ZWxzZXsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J3JvYm90cycgY29udGVudD0nbm9pbmRleCcgLz5cbiI7Cn0KCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywnJykgIT0gJycpIHsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J2dvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywnJykuIicgLz5cbiI7Cn0KCi8vIFN0YW5kYXJkIE1FVEEgdGFncwppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLDEpID09IDEpIHsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J3RpdGxlJyBjb250ZW50PSckbWV0YV90aXRsZScgLz5cbiI7CiAgJGh0bWwgLj0gICI8bWV0YSBuYW1lPSdkZXNjcmlwdGlvbicgY29udGVudD0nJGRlc2NyaXB0aW9uJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J2tleXdvcmRzJyBjb250ZW50PSckc2VvX2tleXdvcmRzJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J2RhdGUnIGNvbnRlbnQ9JyRtb2RpZmllZF9kYXRlJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J2xhc3R1cGRhdGUnIGNvbnRlbnQ9JyRtb2RpZmllZF9kYXRlJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J3JldmlzZWQnIGNvbnRlbnQ9JyRtb2RpZmllZF9kYXRlJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J2F1dGhvcicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKS4iJyAvPlxuIjsKICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKSAhPSAiIikgewogICAgJGh0bWwgLj0gICI8bWV0YSBuYW1lPSdnZW8ucGxhY2VuYW1lJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywnJykuIicgLz5cbiI7CiAgfQogIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCcnKSAhPSAiIikgewogICAgJGh0bWwgLj0gICI8bWV0YSBuYW1lPSdnZW8ucmVnaW9uJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpLiInIC8+XG4iOwogIH0KICBpZiAoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykgIT0gIiIpICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKSAhPSAiIikpIHsKICAgICRodG1sIC49ICAiPG1ldGEgbmFtZT0nZ2VvLnBvc2l0aW9uJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIjsiLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOwogICAgJGh0bWwgLj0gICI8bWV0YSBuYW1lPSdJQ0JNJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIiwgIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKS4iJyAvPlxuIjsKICB9Cn0KCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSAhPSAnJykgewogICRodG1sIC49ICAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FkZGl0aW9uYWxfbWV0YV90YWdzJywnJykpOwp9CgovLyBEdWJsaW5Db3JlIE1FVEEgdGFncwppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsMCkgPT0gMSkgewogICRodG1sIC49ICAiPGxpbmsgcmVsPSdzY2hlbWEuREMnIGhyZWY9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxsaW5rIHJlbD0nc2NoZW1hLkRDVEVSTVMnIGhyZWY9J2h0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8nIC8+XG4iOwogICRodG1sIC49ICAiPG1ldGEgbmFtZT0nREMudHlwZScgY29udGVudD0nVGV4dCcgc2NoZW1lPSdEQ1RFUk1TLkRDTUlUeXBlJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J0RDLmZvcm1hdCcgY29udGVudD0ndGV4dC9odG1sJyBzY2hlbWU9J0RDVEVSTVMuSU1UJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J0RDLnJlbGF0aW9uJyBjb250ZW50PSdodHRwOi8vZHVibGluY29yZS5vcmcvJyBzY2hlbWU9J0RDVEVSTVMuVVJJJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J0RDLnB1Ymxpc2hlcicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKS4iJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J0RDLmNvbnRyaWJ1dG9yJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywnJykuIicgLz5cbiI7CgogIGlmKCRmZWxhbmcgPSBjbXNfc2l0ZXByZWZzOjpnZXQoJ2Zyb250ZW5kbGFuZycpKQogICAgJGh0bWwgLj0gICI8bWV0YSBuYW1lPSdEQy5sYW5ndWFnZScgY29udGVudD0nIi4kZmVsYW5nLiInIHNjaGVtZT0nRENURVJNUy5SRkMzMDY2JyAvPlxuIjsKCiAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcsJycpICE9ICIiKQogICAgJGh0bWwgLj0gICI8bWV0YSBuYW1lPSdEQy5yaWdodHMnIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywnJykuIicgLz5cbiI7CgogICRodG1sIC49ICAiPG1ldGEgbmFtZT0nREMudGl0bGUnIGNvbnRlbnQ9JyRtZXRhX3RpdGxlJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIG5hbWU9J0RDLmRlc2NyaXB0aW9uJyBjb250ZW50PSckZGVzY3JpcHRpb24nIC8+XG4iOwogICRodG1sIC49ICAiPG1ldGEgbmFtZT0nREMuZGF0ZScgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIHNjaGVtZT0nRENURVJNUy5XM0NEVEYnIC8+XG4iOwogICRodG1sIC49ICAiPG1ldGEgbmFtZT0nREMuaWRlbnRpZmllcicgY29udGVudD0nJHBhZ2VfdXJsJyBzY2hlbWU9J0RDVEVSTVMuVVJJJyAvPlxuIjsKfQoKLy8gT3BlbkdyYXBoIE1FVEEgdGFncwppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywwKSA9PSAxKSB7CiAgJGh0bWwgLj0gICI8bWV0YSBwcm9wZXJ0eT0nb2c6dGl0bGUnIGNvbnRlbnQ9JyRvcGVuZ3JhcGhfdGl0bGUnIC8+XG4iOwogIGlmICgkcGFnZV9pbmZvWydvZ3R5cGUnXSA9PSAiIikgewogICAgJGh0bWwgLj0gICI8bWV0YSBwcm9wZXJ0eT0nb2c6dHlwZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpLiInIC8+XG4iOwogIH1lbHNlewogICAgJGh0bWwgLj0gICI8bWV0YSBwcm9wZXJ0eT0nb2c6dHlwZScgY29udGVudD0nIi4kcGFnZV9pbmZvWydvZ3R5cGUnXS4iJyAvPlxuIjsKICB9CiAgJGh0bWwgLj0gICI8bWV0YSBwcm9wZXJ0eT0nb2c6dXJsJyBjb250ZW50PSckcGFnZV91cmwnIC8+XG4iOwoKICBpZigkY3VyY29udGVudCAhPSBOVUxMKSB7CiAgICAkaW1nID0gJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJ2ltYWdlJyk7OwogICAgaWYgKCgkaW1nICE9IC0xKSAmJiAoJGltZyAhPSAiIikpICB7CiAgICAgICRpbWFnZSA9ICRpbWc7CiAgICAgICAKICAgIH1lbHNlewogICAgICAkaW1hZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnLCcnKTsKICAgIH0KICB9CiAgJGh0bWwgLj0gICI8bWV0YSBwcm9wZXJ0eT0nb2c6aW1hZ2UnIGNvbnRlbnQ9JyIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL3VwbG9hZHMvaW1hZ2VzLyRpbWFnZScgLz5cbiI7CiAgJGh0bWwgLj0gICI8bWV0YSBwcm9wZXJ0eT0nb2c6c2l0ZV9uYW1lJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsY21zX3NpdGVwcmVmczo6Z2V0KCdzaXRlbmFtZScpKS4iJyAvPlxuIjsKICAkaHRtbCAuPSAgIjxtZXRhIHByb3BlcnR5PSdvZzpkZXNjcmlwdGlvbicgY29udGVudD0nJGRlc2NyaXB0aW9uJyAvPlxuIjsKICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJykgIT0gIiIpIHsKICAgICRodG1sIC49ICAiPG1ldGEgcHJvcGVydHk9J2ZiOmFwcF9pZCcgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nLCcnKS4iJyAvPlxuIjsKICB9ZWxzZXsKICAgICRodG1sIC49ICAiPG1ldGEgcHJvcGVydHk9J2ZiOmFkbWlucycgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywnJykuIicgLz5cbiI7CiAgfQogIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpICE9ICIiKSB7CiAgICAkaHRtbCAuPSAgIjxtZXRhIHByb3BlcnR5PSdvZzpsb2NhbGl0eScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpLiInIC8+XG4iOwogIH0KICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykgIT0gIiIpIHsKICAgICRodG1sIC49ICAiPG1ldGEgcHJvcGVydHk9J29nOnJlZ2lvbicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCcnKS4iJyAvPlxuIjsKICB9CiAgaWYgKCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpICE9ICIiKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJykgIT0gIiIpKSB7CiAgICAkaHRtbCAuPSAgIjxtZXRhIHByb3BlcnR5PSdvZzpsYXRpdHVkZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpLiInIC8+XG4iOwogICAgJGh0bWwgLj0gICI8bWV0YSBwcm9wZXJ0eT0nb2c6bG9uZ2l0dWRlJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOwogIH0KfQoKZWNobyAkaHRtbDsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkKewogIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CgovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQoKQ29kZSBmb3IgU0VPVG9vbHMyICJkZWZhdWx0YWRtaW4iIGFkbWluIGFjdGlvbgogCi09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCiAKVHlwaWNhbGx5LCB0aGlzIHdpbGwgZGlzcGxheSBzb21ldGhpbmcgZnJvbSBhIHRlbXBsYXRlCm9yIGRvIHNvbWUgb3RoZXIgdGFzay4KIAoqLwokZGIgPSAmJGdDbXMtPkdldERiKCk7CiRtZXNzYWdlID0gJyc7CgovLyBEbyB0aGUgYWN0aW9uCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICd0b2dnbGVfaW5kZXgnKSB7CiAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ICcuJF9HRVRbJ2NvbnRlbnRfaWQnXTsKICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICRpbmZvID0gJHJlc3VsdC0+ZmV0Y2hSb3coKTsKICBpZiAoJGluZm9bJ2luZGV4YWJsZSddID09ICIxIikgewogICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQgaW5kZXhhYmxlID0gMCBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOwogIH1lbHNlewogICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddLicsIGluZGV4YWJsZSA9IDAgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgaW5kZXhhYmxlID0gMSc7CiAgfQogICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKCiAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywxKSA9PSAxKSB7CiAgICAkdGhpcy0+Y3JlYXRlUm9ib3RzVFhUKCk7CiAgfQogIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpID09IDEpIHsKICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLDEpID09IDEpOwogIH0KICAkX0dFVFsndGFiJ10gPSAncGFnZWRlc2NyaXB0aW9ucyc7Cn0KCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICdzZXRfcHJpb3JpdHknKSB7CiAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddLicsIHByaW9yaXR5ID0gJy4kX0dFVFsncHJpb3JpdHknXS4nIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIHByaW9yaXR5ID0gJy4kX0dFVFsncHJpb3JpdHknXTsKICAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAkX0dFVFsndGFiJ10gPSAncGFnZWRlc2NyaXB0aW9ucyc7CiAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSkgPT0gMSkgewogICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSkgPT0gMSk7CiAgfQp9CgppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAncmVzZXRfcHJpb3JpdHknKSB7CiAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQgcHJpb3JpdHkgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOwogIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpID09IDEpIHsKICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLDEpID09IDEpOwogIH0KfQoKaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3Jlc2V0X29ndHlwZScpIHsKICAkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBvZ3R5cGUgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOwp9CgppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAncmVzZXRfa2V5d29yZHMnKSB7CiAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQga2V5d29yZHMgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOwp9CgppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAnZWRpdF9vZ3R5cGUnKSB7CiAgZWNobyAkdGhpcy0+UmVkaXJlY3QobnVsbCwgJ2VkaXRfb2d0eXBlJywgJHRoaXMtPnJldHVybmlkLCBBcnJheSgnY29udGVudF9pZCc9PiRfR0VUWydjb250ZW50X2lkJ10pKTsKfQoKaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ2VkaXRfa2V5d29yZHMnKSB7CiAgZWNobyAkdGhpcy0+UmVkaXJlY3QobnVsbCwgJ2VkaXRfa2V5d29yZHMnLCAkdGhpcy0+cmV0dXJuaWQsIEFycmF5KCdjb250ZW50X2lkJz0+JF9HRVRbJ2NvbnRlbnRfaWQnXSkpOwp9CgoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfaGVhZGVycycsJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpLgokdGhpcy0+U2V0VGFiSGVhZGVyKCdzZW9hbGVydHMnLCR0aGlzLT5MYW5nKCd0aXRsZV9zZW9hbGVydHMnKSkuCiR0aGlzLT5TZXRUYWJIZWFkZXIoJ3BhZ2VkZXNjcmlwdGlvbnMnLCR0aGlzLT5MYW5nKCd0aXRsZV9wYWdlZGVzY3JpcHRpb25zJyksIChpc3NldCgkX0dFVFsndGFiJ10pICYmICRfR0VUWyd0YWInXSA9PSAncGFnZWRlc2NyaXB0aW9ucycpKS4KJHRoaXMtPlNldFRhYkhlYWRlcignbWV0YXNldHRpbmdzJywkdGhpcy0+TGFuZygndGl0bGVfbWV0YXNldHRpbmdzJyksIChpc3NldCgkX0dFVFsndGFiJ10pICYmICRfR0VUWyd0YWInXSA9PSAnbWV0YXNldHRpbmdzJykpLgokdGhpcy0+U2V0VGFiSGVhZGVyKCdzaXRlbWFwc2V0dGluZ3MnLCR0aGlzLT5MYW5nKCd0aXRsZV9zaXRlbWFwc2V0dGluZ3MnKSwgKGlzc2V0KCRfR0VUWyd0YWInXSkgJiYgJF9HRVRbJ3RhYiddID09ICdzaXRlbWFwc2V0dGluZ3MnKSkuCiR0aGlzLT5TZXRUYWJIZWFkZXIoJ2tleXdvcmRzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3RpdGxlX2tleXdvcmRzZXR0aW5ncycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ2tleXdvcmRzZXR0aW5ncycpKS4KJHRoaXMtPkVuZFRhYkhlYWRlcnMoKS4kdGhpcy0+U3RhcnRUYWJDb250ZW50KCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF90YWInLCR0aGlzLT5FbmRUYWIoKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGFiX2Zvb3RlcnMnLCR0aGlzLT5FbmRUYWJDb250ZW50KCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3Nlb2FsZXJ0c190YWInLCR0aGlzLT5TdGFydFRhYignc2VvYWxlcnRzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3BhZ2VkZXNjcmlwdGlvbnNfdGFiJywkdGhpcy0+U3RhcnRUYWIoJ3BhZ2VkZXNjcmlwdGlvbnMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfbWV0YXNldHRpbmdzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdtZXRhc2V0dGluZ3MnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfc2l0ZW1hcHNldHRpbmdzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdzaXRlbWFwc2V0dGluZ3MnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfa2V5d29yZHNldHRpbmdzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdrZXl3b3Jkc2V0dGluZ3MnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfc2VjdGlvbicsJ2RlZmF1bHRhZG1pbicpOwoKaWYgKGlzc2V0KCRfR0VUWydtZXNzYWdlJ10pKSB7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+c2hvd01lc3NhZ2UoJHRoaXMtPmxhbmcoJF9HRVRbJ21lc3NhZ2UnXSkpKTsKfSBlbHNlIHsKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCcnKTsKfQoKLyogU0VPIEFsZXJ0cyBUYWIgKi8KCiRhbGVydHMgID0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FsZXJ0c191cmdlbnQnLCAkdGhpcy0+TGFuZygndGl0bGVfYWxlcnRzX3VyZ2VudCcpKTsKCiR1cmdlbnRfYWxlcnRzID0gJHRoaXMtPmdldFVyZ2VudEFsZXJ0cygpOwoKaWYgKGNvdW50KCR1cmdlbnRfYWxlcnRzKSA9PSAwKSB7CiAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+ICcuJHRoaXMtPmxhbmcoJ25vdGhpbmdfdG9fYmVfZml4ZWQnKS4nPGJyIC8+PGJyIC8+JzsKfWVsc2V7CiAgJGdyb3VwcyA9IEFycmF5KCk7CiAgZm9yZWFjaCAoJHVyZ2VudF9hbGVydHMgYXMgJGFsZXJ0KSB7CiAgICAkZ3JvdXBzWyRhbGVydFsnZ3JvdXAnXV1bXSA9ICRhbGVydDsKICB9CiAgZm9yZWFjaCgkZ3JvdXBzIGFzICRncm91cCA9PiAkZ2FsZXJ0cykgewogICAgJGNvdW50ID0gY291bnQoJGdhbGVydHMpOwogICAgaWYgKGNvdW50KCRnYWxlcnRzKSA+IDIwKSB7CiAgICAgICRwYXJ0cyA9IGFycmF5X2NodW5rKCRnYWxlcnRzLCAyMCk7CiAgICAgICRnYWxlcnRzID0gJHBhcnRzWzBdOwogICAgICAkY291bnQgPSAiPiAyMCI7CiAgICB9CiAgICBpZiAoY291bnQoJGdhbGVydHMpID09IDEpIHsKICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9Ob3RpZmljYXRpb25zLzEuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRnYWxlcnRzWzBdWydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkZ2FsZXJ0c1swXVsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOwogICAgfWVsc2V7CiAgICAgICRncm91cF90aXRsZSA9ICR0aGlzLT5sYW5nKCdncm91cHRpdGxlXycuJGdyb3VwLCBBcnJheSgkY291bnQpKTsKICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzEuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRncm91cF90aXRsZS4nPC9iPiBbPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKG51bGwpIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3VyZ2VudF9ncm91cF8nLiRncm91cC4nXCcpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCciPicuJHRoaXMtPmxhbmcoJ3ZpZXdfYWxsJykuJzwvYT5dPGJyIC8+PGJyIC8+JzsKICAgICAgJGFsZXJ0cyAuPSAnPGRpdiBpZD0idXJnZW50X2dyb3VwXycuJGdyb3VwLiciIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMwcHg7IGRpc3BsYXk6IG5vbmU7Ij4nOwogICAgICBmb3JlYWNoICgkZ2FsZXJ0cyBhcyAkYWxlcnQpIHsKICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL05vdGlmaWNhdGlvbnMvMS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGFsZXJ0WydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkYWxlcnRbJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsKICAgICAgfQogICAgICAkYWxlcnRzIC49ICc8L2Rpdj4nOwogICAgfQogIH0KfQoKJGFsZXJ0cyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsKCiRhbGVydHMgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FsZXJ0c19pbXBvcnRhbnQnLCAkdGhpcy0+TGFuZygndGl0bGVfYWxlcnRzX2ltcG9ydGFudCcpKTsKCiRpbXBvcnRhbnRfYWxlcnRzID0gJHRoaXMtPmdldEltcG9ydGFudEFsZXJ0cygpOwppZiAoY291bnQoJGltcG9ydGFudF9hbGVydHMpID09IDApIHsKICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS90cnVlLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gJy4kdGhpcy0+bGFuZygnbm90aGluZ190b19iZV9maXhlZCcpLic8YnIgLz48YnIgLz4nOwp9ZWxzZXsKICAkZ3JvdXBzID0gQXJyYXkoKTsKICBmb3JlYWNoICgkaW1wb3J0YW50X2FsZXJ0cyBhcyAkYWxlcnQpIHsKICAgICRncm91cHNbJGFsZXJ0Wydncm91cCddXVtdID0gJGFsZXJ0OwogIH0KICBmb3JlYWNoKCRncm91cHMgYXMgJGdyb3VwID0+ICRnYWxlcnRzKSB7CiAgICAkY291bnQgPSBjb3VudCgkZ2FsZXJ0cyk7CiAgICBpZiAoY291bnQoJGdhbGVydHMpID4gMjApIHsKICAgICAgJHBhcnRzID0gYXJyYXlfY2h1bmsoJGdhbGVydHMsIDIwKTsKICAgICAgJGdhbGVydHMgPSAkcGFydHNbMF07CiAgICAgICRjb3VudCA9ICI+IDIwIjsKICAgIH0KICAgIGlmIChjb3VudCgkZ2FsZXJ0cykgPT0gMSkgewogICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMi5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdhbGVydHNbMF1bJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRnYWxlcnRzWzBdWydsaW5rcyddKS4nXTxiciAvPjxiciAvPic7CiAgICB9ZWxzZXsKICAgICAgJGdyb3VwX3RpdGxlID0gJHRoaXMtPmxhbmcoJ2dyb3VwdGl0bGVfJy4kZ3JvdXAsIEFycmF5KCRjb3VudCkpOwogICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMi5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdyb3VwX3RpdGxlLic8L2I+IFs8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQobnVsbCkiIG9uQ2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnaW1wb3J0YW50X2dyb3VwXycuJGdyb3VwLidcJykuc3R5bGUuZGlzcGxheSA9IFwnYmxvY2tcJyI+Jy4kdGhpcy0+bGFuZygndmlld19hbGwnKS4nPC9hPl08YnIgLz48YnIgLz4nOwogICAgICAkYWxlcnRzIC49ICc8ZGl2IGlkPSJpbXBvcnRhbnRfZ3JvdXBfJy4kZ3JvdXAuJyIgc3R5bGU9InBhZGRpbmctbGVmdDogMzBweDsgZGlzcGxheTogbm9uZTsiPic7CiAgICAgIGZvcmVhY2ggKCRnYWxlcnRzIGFzICRhbGVydCkgewogICAgICAgICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvTm90aWZpY2F0aW9ucy8yLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gPGI+Jy4kYWxlcnRbJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRhbGVydFsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOwogICAgICB9CiAgICAgICRhbGVydHMgLj0gJzwvZGl2Pic7CiAgICB9CiAgfQp9CgokYWxlcnRzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwoKJGFsZXJ0cyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnYWxlcnRzX25vdGljZXMnLCAkdGhpcy0+TGFuZygndGl0bGVfYWxlcnRzX25vdGljZXMnKSk7Cgokbm90aWNlX2FsZXJ0cyA9ICR0aGlzLT5nZXROb3RpY2VBbGVydHMoKTsKaWYgKGNvdW50KCRub3RpY2VfYWxlcnRzKSA9PSAwKSB7CiAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+ICcuJHRoaXMtPmxhbmcoJ25vdGhpbmdfdG9fYmVfZml4ZWQnKS4nPGJyIC8+PGJyIC8+JzsKfWVsc2V7CiAgZm9yZWFjaCAoJG5vdGljZV9hbGVydHMgYXMgJGFsZXJ0KSB7CiAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMy5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGFsZXJ0WydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkYWxlcnRbJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsKICB9Cn0KCiRhbGVydHMgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7CgoKCi8qIFBhZ2Ugc2V0dGluZ3MgVGFiICovCgokcGFnZXNldHRpbmdzICA9ICc8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRyPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdwYWdlX2lkJykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ3BhZ2VfbmFtZScpLic8L3RoPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdwcmlvcml0eScpLic8L3RoPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdvZ190eXBlJykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRzJykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ2Rlc2NyaXB0aW9uJykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ2luZGV4JykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPC90cj4nOwoKCiRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IE9SREVSIEJZIGhpZXJhcmNoeSBBU0MnOwokcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKJGogPSAwOwp3aGlsZSAoJHBhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7CgogICRwcmVmaXggPSAiIjsKICAkYXV0b19wcmlvcml0eSA9IDgwOwogIGZvciAoJGkgPSAwOyAkaSA8IHN1YnN0cl9jb3VudCgkcGFnZVsnaGllcmFyY2h5J10sJy4nKTsgJGkrKykgewogICAgJHByZWZpeCAuPSAnJnJhcXVvOyAnOwogICAgJGF1dG9fcHJpb3JpdHkgID0gJGF1dG9fcHJpb3JpdHkgLyAyOwogIH0KICBpZiAoJHBhZ2VbJ2RlZmF1bHRfY29udGVudCddID09IDEpIHsKICAgICRhdXRvX3ByaW9yaXR5ID0gMTAwOwogIH0KICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBXSEVSRSBjb250ZW50X2lkID0gJy4kcGFnZVsnY29udGVudF9pZCddLicgQU5EIHByb3BfbmFtZSA9ICInLnN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpLiciJzsKICAkcmVzdWx0MSA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAkZGVzYyA9ICRyZXN1bHQxLT5mZXRjaFJvdygpOwogICRkZXNjcmlwdGlvbiA9ICRkZXNjWydjb250ZW50J107CgogICRrdyA9IGFycmF5X2ZsaXAoJHRoaXMtPmdldEtleXdvcmRTdWdnZXN0aW9ucygkcGFnZVsnY29udGVudF9pZCddKSk7CgogICRkZXNjcmlwdGlvbl9hdXRvID0gZmFsc2U7CiAgaWYgKCgkZGVzY3JpcHRpb24gPT0gIiIpICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsJ2ZhbHNlJykgPT0gJ3RydWUnKSkgewogICAgJGxhc3Rfa2V5d29yZCA9IGFycmF5X3BvcCgka3cpOwogICAgJGtleXdvcmRzID0gaW1wbG9kZSgnLCAnLCRrdykgLiAiICIgLiAkdGhpcy0+bGFuZygnYW5kJykgLiAiICIgLiAkbGFzdF9rZXl3b3JkOwogICAgJGRlc2NyaXB0aW9uID0gJHRoaXMtPmxhbmcoJ2F1dG9fZ2VuZXJhdGVkJykuIjogIi5zdHJfcmVwbGFjZSgne2tleXdvcmRzfScsJGtleXdvcmRzLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywnJykpOwogICAgJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRwYWdlWydjb250ZW50X25hbWUnXSwkZGVzY3JpcHRpb24pOwogICAgJGRlc2NyaXB0aW9uX2F1dG8gPSB0cnVlOwogIH0KCiAgJGRlZmF1bHRfb2d0eXBlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKTsKCiAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ICcuJHBhZ2VbJ2NvbnRlbnRfaWQnXTsKICAkcmVzdWx0MiA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAkaW5mbyA9ICRyZXN1bHQyLT5mZXRjaFJvdygpOwoKICAkcHJpb3JpdHkgPSAnKGF1dG8pICcuJGF1dG9fcHJpb3JpdHkuJyUgJzsKICAkb2d0eXBlID0gJyhkZWZhdWx0KSAnLiRkZWZhdWx0X29ndHlwZS4nICcuJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzMi9pbWcvZWRpdC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9vZ3R5cGUiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOwogICRrZXl3b3JkcyA9ICcoYXV0bykgJy5jb3VudCgka3cpLicgJy4kdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9lZGl0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCBpbXBsb2RlKCcsICcsJGt3KS4nOyAnLiR0aGlzLT5sYW5nKCdlZGl0X3ZhbHVlJyksIEFycmF5KCJ3aGF0Ij0+ImVkaXRfa2V5d29yZHMiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOwogICRpbmRleGFibGUgPSAndHJ1ZSc7CiAgaWYgKCRpbmZvWydjb250ZW50X2lkJ10gIT0gIiIpIHsKICAgIGlmICgkaW5mb1sncHJpb3JpdHknXSAhPSAwKSB7CiAgICAgICRwcmlvcml0eSA9ICc8Yj4nLiRpbmZvWydwcmlvcml0eSddIC4gJyUgJy4kdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9yZXNldC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ3Jlc2V0X3RvX2RlZmF1bHQnKSwgQXJyYXkoIndoYXQiPT4icmVzZXRfcHJpb3JpdHkiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIC4gJzwvYj4nOwogICAgICAkYXV0b19wcmlvcml0eSA9ICRpbmZvWydwcmlvcml0eSddOwogICAgfQogICAgaWYgKCRpbmZvWydvZ3R5cGUnXSAhPSAiIikgewogICAgICAkb2d0eXBlID0gJzxiPicuJGluZm9bJ29ndHlwZSddIC4gJyAnIC4gJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzMi9pbWcvcmVzZXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdyZXNldF90b19kZWZhdWx0JyksIEFycmF5KCJ3aGF0Ij0+InJlc2V0X29ndHlwZSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkgLiAkdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9lZGl0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnZWRpdF92YWx1ZScpLCBBcnJheSgid2hhdCI9PiJlZGl0X29ndHlwZSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvYj4nOwogICAgfQogICAgaWYgKCRpbmZvWydrZXl3b3JkcyddICE9ICIiKSB7CiAgICAgICRrZXl3b3JkcyA9ICc8Yj4nLmNvdW50KGV4cGxvZGUoJyAnLCRpbmZvWydrZXl3b3JkcyddKSkgLiAkdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9yZXNldC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ3Jlc2V0X3RvX2RlZmF1bHQnKSwgQXJyYXkoIndoYXQiPT4icmVzZXRfa2V5d29yZHMiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIC4gJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzMi9pbWcvZWRpdC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9rZXl3b3JkcyIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvYj4nOwogICAgfQogICAgaWYgKCRpbmZvWydpbmRleGFibGUnXSA9PSAwKSB7CiAgICAgICRpbmRleGFibGUgPSAnZmFsc2UnOwogICAgfQogIH0KCiAgJHVwZG93biAgPSAkdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vYXJyb3ctZC5naWYiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnZGVjcmVhc2VfcHJpb3JpdHknKSwgQXJyYXkoJ3doYXQnPT4nc2V0X3ByaW9yaXR5JywncHJpb3JpdHknPT4kYXV0b19wcmlvcml0eS0xMCwnY29udGVudF9pZCc9PiRwYWdlWydjb250ZW50X2lkJ10pKTsKICAkdXBkb3duIC49ICR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS9hcnJvdy11LmdpZiIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdpbmNyZWFzZV9wcmlvcml0eScpLCBBcnJheSgnd2hhdCc9PidzZXRfcHJpb3JpdHknLCdwcmlvcml0eSc9PiRhdXRvX3ByaW9yaXR5KzEwLCdjb250ZW50X2lkJz0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOwoKICAkcGFnZXNldHRpbmdzIC49ICc8dHIgY2xhc3M9InJvdycuKCRqICUgMiArIDEpLiciPic7CiAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nPC90ZD4nOwogICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4nLiRwcmVmaXggLicgJy4kcGFnZVsnY29udGVudF9uYW1lJ10uJzwvdGQ+JzsKCgogIGlmIChzdHJwb3MoJHBhZ2VbJ3R5cGUnXSwgJ2NvbnRlbnQnKSAhPT0gZmFsc2UgfHwgc3RycG9zKCRwYWdlWyd0eXBlJ10sICdsaW5rJykgIT09IGZhbHNlICkgewogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHVwZG93bi4nICcuJHByaW9yaXR5Lic8L3RkPic7CiAgICAvLyAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4nLiAkb2d0eXBlLic8L3RkPic7CiAgICAkcGFnZXNldHRpbmdzIC49IHN0cnBvcygkcGFnZVsndHlwZSddLCAnbGluaycpICE9PSBmYWxzZSA/ICc8dGQ+LS0tPC90ZD4nIDogJzx0ZD4nLiAkb2d0eXBlLic8L3RkPic7CiAgICAkcGFnZXNldHRpbmdzIC49IHN0cnBvcygkcGFnZVsndHlwZSddLCAnbGluaycpICE9PSBmYWxzZSA/ICc8dGQ+LS0tPC90ZD4nIDogJzx0ZD4nLiAka2V5d29yZHMuJzwvdGQ+JzsKCiAgICAvLyAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4nLiRrZXl3b3Jkcy4nPC90ZD4nOwogICAgaWYgKHN0cnBvcygkcGFnZVsndHlwZSddLCAnY29udGVudCcpICE9PSBmYWxzZSApIHsKICAgICAgaWYgKCRkZXNjcmlwdGlvbiAhPSAiIikgewogICAgICAgIGlmICgkZGVzY3JpcHRpb25fYXV0bykgewogICAgICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPjxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3dhcm5pbmcuZ2lmIiB0aXRsZT0iJy5zdHJpcF90YWdzKCRkZXNjcmlwdGlvbikuJyIgLz48L3RkPic7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIHRpdGxlPSInLnN0cmlwX3RhZ3MoJGRlc2NyaXB0aW9uKS4nIiAvPjwvdGQ+JzsKICAgICAgICB9CiAgICAgIH1lbHNlewoKICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ3NwXyddKSkKICAgICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+PGEgaHJlZj0iZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcGFnZVsnY29udGVudF9pZCddLiciPjxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZiIgYm9yZGVyPSIwIiB0aXRsZT0iJy4kdGhpcy0+bGFuZygnY2xpY2tfdG9fYWRkX2Rlc2NyaXB0aW9uJykuJyIgLz48L2E+PC90ZD4nOwogICAgICAgIGVsc2UKICAgICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+PGEgaHJlZj0iZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwYWdlWydjb250ZW50X2lkJ10uJyI+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIiBib3JkZXI9IjAiIHRpdGxlPSInLiR0aGlzLT5sYW5nKCdjbGlja190b19hZGRfZGVzY3JpcHRpb24nKS4nIiAvPjwvYT48L3RkPic7CgogICAgICB9CiAgICB9IGVsc2UgewogICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOwogICAgfQogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtLycuJGluZGV4YWJsZS4nLmdpZiIgLz4nLCAkdGhpcy0+bGFuZygndG9nZ2xlJyksIEFycmF5KCd3aGF0Jz0+J3RvZ2dsZV9pbmRleCcsJ2NvbnRlbnRfaWQnPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvdGQ+JzsKICB9ZWxzZXsKICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4tLS08L3RkPic7CiAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOwogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsKICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4tLS08L3RkPic7CiAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOwogIH0KICAkcGFnZXNldHRpbmdzIC49ICc8L3RyPic7CiAgJGorKzsKCn0KCiRwYWdlc2V0dGluZ3MgLj0gJzwvdGFibGU+JzsKCi8qIFNFTyBTZXR0aW5ncyBUYWIgKi8KCi8vIEdldCBpbWFnZSBmaWxlcyBmcm9tIC91cGxvYWRzL2ltYWdlcwokZmlsZXNfbGlzdCA9IEFycmF5KCR0aGlzLT5sYW5nKCdub25lJyk9PiIiKTsKJGRwID0gb3BlbmRpcigkZ0Ntcy0+Y29uZmlnWydyb290X3BhdGgnXS4nL3VwbG9hZHMvaW1hZ2VzJyk7CndoaWxlICgkZmlsZSA9IHJlYWRkaXIoJGRwKSkgewogIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5naWYnKSAhPT0gZmFsc2UpIHsKICAgICRmaWxlc19saXN0WyRmaWxlXSA9ICRmaWxlOwogIH0KICBpZiAoc3RycG9zKHN1YnN0cigkZmlsZSwgLTUpLCcucG5nJykgIT09IGZhbHNlKSB7CiAgICAkZmlsZXNfbGlzdFskZmlsZV0gPSAkZmlsZTsKICB9CiAgaWYgKHN0cnBvcyhzdWJzdHIoJGZpbGUsIC01KSwnLmpwZycpICE9PSBmYWxzZSkgewogICAgJGZpbGVzX2xpc3RbJGZpbGVdID0gJGZpbGU7CiAgfQogIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5qcGVnJykgIT09IGZhbHNlKSB7CiAgICAkZmlsZXNfbGlzdFskZmlsZV0gPSAkZmlsZTsKICB9Cn0KY2xvc2VkaXIoJGRwKTsKCiRzZXR0aW5ncyAgPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KG51bGwsICdjaGFuZ2VzZXR0aW5ncycpOwoKLyogUGFnZSBUaXRsZSAqLwokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ3RpdGxlX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3RpdGxlX2Rlc2NyaXB0aW9uJykpOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygndGl0bGVfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAndGl0bGUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGl0bGUnLCd7dGl0bGV9IHwgeyRzaXRlbmFtZX0gLSB7JHRpdGxlX2tleXdvcmRzfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCd0aXRsZV90aXRsZV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygndGl0bGVfbWV0YV90aXRsZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICd0aXRsZV9tZXRhJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlX21ldGEnLCd7dGl0bGV9IHwgeyRzaXRlbmFtZX0nKSwgMzIpLicgJy4kdGhpcy0+bGFuZygndGl0bGVfbWV0YV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYmxvY2tfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnZGVzY3JpcHRpb25fYmxvY2snLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYmxvY2tfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLDEpKSAuICc8L3A+JzsKCgokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYXV0b190aXRsZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdkZXNjcmlwdGlvbl9hdXRvJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCdUaGlzIHBhZ2UgY292ZXJzIHRoZSB0b3BpY3Mge2tleXdvcmRzfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdkZXNjcmlwdGlvbl9hdXRvX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdkZWZhdWx0X2tleXdvcmRzX3RpdGxlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2RlZmF1bHRfa2V5d29yZHMnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9rZXl3b3JkcycsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdkZWZhdWx0X2tleXdvcmRzX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsKCi8qIE1FVEEgVHlwZXMgKi8KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdtZXRhX3R5cGUnLCAkdGhpcy0+TGFuZygndGl0bGVfbWV0YV90eXBlJykpOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdtZXRhX2NyZWF0ZV9zdGFuZGFyZCcpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdtZXRhX3N0YW5kYXJkJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLDEpKSAuICc8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnbWV0YV9jcmVhdGVfZHVibGluY29yZScpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdtZXRhX2R1YmxpbmNvcmUnLCAxLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywxKSkgLiAnPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ21ldGFfY3JlYXRlX29wZW5ncmFwaCcpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdtZXRhX29wZW5ncmFwaCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsMSkpIC4gJzwvcD4nOwokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7CgovKiBNRVRBIERlZmF1bHRzICovCiRzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnbWV0YV9kZWZhdWx0cycsICR0aGlzLT5MYW5nKCd0aXRsZV9tZXRhX2RlZmF1bHRzJykpOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9wdWJsaXNoZXInKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9wdWJsaXNoZXInLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9wdWJsaXNoZXJfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfY29udHJpYnV0b3InKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9jb250cmlidXRvcicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfY29udHJpYnV0b3JfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfY29weXJpZ2h0JykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfY29weXJpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywnKEMpICcuZGF0ZSgnWScpLicuIEFsbCByaWdodHMgcmVzZXJ2ZWQuJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfY29weXJpZ2h0X2hlbHAnKS4nPC9wPjxiciAvPic7Cgokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGI+Jy4kdGhpcy0+bGFuZygnbWV0YV9sb2NhdGlvbl9kZXNjcmlwdGlvbicpLic8L2I+PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX2xvY2F0aW9uJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfbG9jYXRpb24nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2xvY2F0aW9uX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX3JlZ2lvbicpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX3JlZ2lvbicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpLCA1LCA1KS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfcmVnaW9uX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX2xhdGl0dWRlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfbGF0aXR1ZGUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2xhdGl0dWRlX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX2xvbmdpdHVkZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2xvbmdpdHVkZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2xvbmdpdHVkZV9oZWxwJykuJzwvcD48YnIgLz4nOwoKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPjxiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2Rlc2NyaXB0aW9uJykuJzwvYj48L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfb3BlbmdyYXBoX3RpdGxlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJywne3RpdGxlfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF90aXRsZV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfdHlwZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF90eXBlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfdHlwZV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWVfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKG51bGwsICdtZXRhX29wZW5ncmFwaF9pbWFnZScsICRmaWxlc19saXN0LCBudWxsLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnLCcnKSkuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9pbWFnZV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbl9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7CgovKiBBZGRpdGlvbmFsIE1ldGEgVGFncyAqLwokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FkZGl0aW9uYWxfbWV0YScsICR0aGlzLT5MYW5nKCd0aXRsZV9hZGRpdGlvbmFsX21ldGFfdGFncycpKTsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2FkZGl0aW9uYWxfbWV0YV90YWdzX3RpdGxlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgbnVsbCwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FkZGl0aW9uYWxfbWV0YV90YWdzJywnJyksICdhZGRpdGlvbmFsX21ldGFfdGFncycpLicgJy4kdGhpcy0+bGFuZygnYWRkaXRpb25hbF9tZXRhX3RhZ3NfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwoKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdChudWxsLCAnc2F2ZV9tZXRhX3NldHRpbmdzJywgJHRoaXMtPmxhbmcoJ3NhdmUnKSkuJzwvcD4nOwokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCiRzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9kZXNjcmlwdGlvbl9jb250ZW50Jyk7CgovKiBTSVRFTUFQIFNldHRpbmdzICovCgokc3NldHRpbmdzICA9ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7Cgokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdzaXRlbWFwX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3NpdGVtYXBfZGVzY3JpcHRpb24nKSk7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdjcmVhdGVfc2l0ZW1hcF90aXRsZScpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdjcmVhdGVfc2l0ZW1hcCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSkpIC4gJzwvcD4nOwppZiAoaW5pX2dldCgnYWxsb3dfdXJsX2ZvcGVuJykpIHsKICAkc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygncHVzaF9zaXRlbWFwX3RpdGxlJykgLiAnOiAnIC4gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3gobnVsbCwgJ3B1c2hfc2l0ZW1hcCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLDApKSAuICc8L3A+JzsKfWVsc2V7CiAgJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ3B1c2hfc2l0ZW1hcF90aXRsZScpIC4gJzogJyAuICR0aGlzLT5MYW5nKCdub191cmxfZm9wZW4nKSAuICc8L3A+JzsKfQokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnY3JlYXRlX3JvYm90c190aXRsZScpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdjcmVhdGVfcm9ib3RzJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpKSAuICc8L3A+JzsKCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygndmVyaWZpY2F0aW9uX3RpdGxlJykuJzo8L3A+JzsKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICd2ZXJpZmljYXRpb24nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ3ZlcmlmaWNhdGlvbl9oZWxwJykuJzwvcD4nOwokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwoKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NhdmVfc2l0ZW1hcF9zZXR0aW5ncycsICR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsKCiRzc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCiRzc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydChudWxsLCAnY2hhbmdlc2V0dGluZ3MnKTsKJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAncmVnZW5lcmF0ZV9zaXRlbWFwJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3JlZ2VuZXJhdGVfc2l0ZW1hcCcpKTsKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ2RvX3JlZ2VuZXJhdGUnLCAkdGhpcy0+bGFuZygnYnV0dG9uX3JlZ2VuZXJhdGVfc2l0ZW1hcCcpKS4nPC9wPic7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmxhbmcoJ3RleHRfcmVnZW5lcmF0ZV9zaXRlbWFwJykuJzwvcD4nOwokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7Cgokc3NldHRpbmdzIC49ICc8YnIgLz48YnIgLz4nLiR0aGlzLT5sYW5nKCdoZWxwX3NpdGVtYXBfcm9ib3RzJyk7CgovKiBLRVlXT1JEIFNldHRpbmdzICovCgoka3NldHRpbmdzICA9ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7Cgoka3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdrZXl3b3JkX3dlaWdodF9kZXNjcmlwdGlvbicsICR0aGlzLT5MYW5nKCd0aXRsZV9rZXl3b3JkX3dlaWdodCcpKTsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX21pbmxlbmd0aF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9taW5sZW5ndGgnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9taW5sZW5ndGhfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX3RpdGxlX3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF90aXRsZV93ZWlnaHQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCc2JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF90aXRsZV93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCc0JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2hlYWRsaW5lX3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCcyJyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0X3RpdGxlJykuJzo8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLCcxJyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9jb250ZW50X3dlaWdodF9oZWxwJykuJzwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfbWluaW11bV93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJzcnKSwgMikuJyAnLiR0aGlzLT5sYW5nKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0X2hlbHAnKS4nPC9wPic7CiRrc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7Cgoka3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdrZXl3b3JkX2V4Y2x1ZGVfZGVzY3JpcHRpb24nLCAkdGhpcy0+TGFuZygndGl0bGVfa2V5d29yZF9leGNsdWRlJykpOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZXhjbHVkZV90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCBudWxsLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJywnJyksICdrZXl3b3JkX2V4Y2x1ZGUnKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZXhjbHVkZV9oZWxwJykuJzwvcD4nOwoka3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwoKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NhdmVfa2V5d29yZF9zZXR0aW5ncycsICR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwoKJGtzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9rZXl3b3JkX2dlbmVyYXRvcicpOwoKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWxlcnRzJywkYWxlcnRzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlc2V0dGluZ3MnLCRwYWdlc2V0dGluZ3MpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21ldGFfZm9ybScsJHNldHRpbmdzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzaXRlbWFwX2Zvcm0nLCRzc2V0dGluZ3MpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2tleXdvcmRfZm9ybScsJGtzZXR0aW5ncyk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWlucGFuZWwudHBsJyk7CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.edit_keywords.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZWRpdG1ldGEiIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCgppZiAoaXNzZXQoJF9QT1NUWydzZXRfa2V5d29yZHMnXSkpIHsKCWlmICgkX1BPU1RbJ2tleXdvcmRzJ10gIT0gIiIpIHsKCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIgU0VUIGNvbnRlbnRfaWQgPSAiLiRfUE9TVFsnY29udGVudF9pZCddLiIsIGtleXdvcmRzID0gJyIuJF9QT1NUWydrZXl3b3JkcyddLiInLCBpbmRleGFibGUgPSAxIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIGtleXdvcmRzID0gJyIuJF9QT1NUWydrZXl3b3JkcyddLiInIjsKCX1lbHNlewoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIgU0VUIGtleXdvcmRzID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXTsKCX0KCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJJHRoaXMtPnJlZGlyZWN0KG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCBBcnJheSgndGFiJz0+J3BhZ2VkZXNjcmlwdGlvbnMnKSk7Cn0KCiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOwoKaWYgKCRpbmZvWydrZXl3b3JkcyddID09ICIiKSB7CgkkaW5mb1sna2V5d29yZHMnXSA9IHN0cnRvbG93ZXIoaW1wbG9kZSgnICcsYXJyYXlfZmxpcCgkdGhpcy0+Z2V0S2V5d29yZFN1Z2dlc3Rpb25zKCRfR0VUWydjb250ZW50X2lkJ10pKSkpOwp9Cgokb3V0cHV0ICA9ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2VkaXRfa2V5d29yZHMnKTsKJG91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4obnVsbCwgJ2NvbnRlbnRfaWQnLCAkX0dFVFsnY29udGVudF9pZCddKTsKJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5MYW5nKCdlbnRlcl9uZXdfa2V5d29yZHMnKS4nOjwvcD4nOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgbnVsbCwgJGluZm9bJ2tleXdvcmRzJ10sICdrZXl3b3JkcycpLicgJy4kdGhpcy0+TGFuZygnaGVscF9uZXdfa2V5d29yZHMnKS4nPC9wPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzZXRfa2V5d29yZHMnLCR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsKCiRvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCmVjaG8gJG91dHB1dDsKCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.edit_ogtype.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZWRpdG1ldGEiIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCmlmIChpc3NldCgkX1BPU1RbJ3NldF9vZ3R5cGUnXSkpIHsKCWlmICgkX1BPU1RbJ29nX3R5cGUnXSAhPSAiIikgewoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgY29udGVudF9pZCA9ICIuJF9QT1NUWydjb250ZW50X2lkJ10uIiwgb2d0eXBlID0gJyIuJF9QT1NUWydvZ190eXBlJ10uIicsIGluZGV4YWJsZSA9IDEgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgb2d0eXBlID0gJyIuJF9QT1NUWydvZ190eXBlJ10uIiciOwoJfWVsc2V7CgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgb2d0eXBlID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXTsKCX0KCQoJZWNobyAkcXVlcnk7CgkKCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJJHRoaXMtPlJlZGlyZWN0KG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCBBcnJheSgndGFiJz0+J3BhZ2VkZXNjcmlwdGlvbnMnKSk7Cn0KCiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOwoKJG91dHB1dCAgPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KG51bGwsICdlZGl0X29ndHlwZScpOwokb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbihudWxsLCAnY29udGVudF9pZCcsICRfR0VUWydjb250ZW50X2lkJ10pOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPkxhbmcoJ2VudGVyX25ld19vZ3R5cGUnKS4nOjwvcD4nOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ29nX3R5cGUnLCAkaW5mb1snb2d0eXBlJ10sIDMwLCAzMCkuJyAnLiR0aGlzLT5MYW5nKCdoZWxwX25ld19vZ3R5cGUnKS4nPC9wPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPjxiciAvPicuJHRoaXMtPkxhbmcoJ2hlbHBfb3BlbmdyYXBoJykuJzxiciAvPjxiciAvPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzZXRfb2d0eXBlJywkdGhpcy0+TGFuZygnc2F2ZScpKS4nPC9wPic7Cgokb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgplY2hvICRvdXRwdXQ7CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/event.Core.ContentDeletePost.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCkNvZGUgdG8gcHVzaCBzaXRlbWFwIHRvIEdvb2dsZSBXZWJtYXN0ZXJzIGlmIHJlcXVpcmVkCgotPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LSAqLwoKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnKSA9PSAxKSB7CiAgICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnKSA9PSAxKTsKICAgIH0K]]></data>
	</file>
	<file>
	  <filename>/event.Core.ContentEditPost.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCkNvZGUgdG8gcHVzaCBzaXRlbWFwIHRvIEdvb2dsZSBXZWJtYXN0ZXJzIGlmIHJlcXVpcmVkCgotPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LSAqLwoKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnKSA9PSAxKSB7CiAgICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnKSA9PSAxKTsKICAgIH0K]]></data>
	</file>
	<file>
	  <filename>/img/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/img/edit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH2ggQDQAHiaSPRwAAAAlwSFlzAAAewQAAHsEBw2lUUwAAAARnQU1BAACxjwv8YQUAAAImSURBVHjajZPPaxNBFMe/O9tuaJMY7NbUqrVNVeoPVESqB+2pBxFBD3r3Ip78Lzx48aA0WpGi4EnBg0UptIeK0Jh6UKIhmKRG0f5MqjFNm7o7uzvrzJoNqUm0A495zLzPd95j3pNs24YkSbsAdHCT8e+V4/aNM6xyIgT4Oq5pWsEwDMs0Tbue8Xs7HA7f5rE93IjgnMfLGZzgcFTXdcL9ijgHwRgDpRSqqmIp9QxrsaeQfYdR+v4KkjZ/WUQL6+fBb7gICCEO5ApYluUItNAI1tLTaGkfQCB0DIUvUSQnRrJN1QUK2N2FiCzLTprs5yQMK4W2faeQz3yEIlH4t2yHT90dqBFwSxC+eJ2tTEMxEgj0noG++BhKq4SvsSS0dX2lVFo9uUGgun7h0x8RsMJLBPaehzZ/D0Qx0ezrhteeQ3j0w7U7Y5k0afRf2eRzlBYmyvAwSLMBWuzB8tR7qIPXIWAn07pwagzFhSiCh86BLo1AVmzoxW4Ov8O2C0PwdOyvxDb9Dc9En4CtJmBKO7AYH8LWoAIt34XC2yQ6L96F7O/cEF+TQfz1Axw8fRWe2SmkRyOIjeeRnowhePZGDVxXYObzMmjiBUJHB+D19iEbz6Dv0k142nudn3G/umEJiU853Lo/jP4DIfj3HMHglYdobdvZcDiqBcRQSI/G57CJ5bQqbzJbDIUAGW+aX+7F/2Aeu853y+mX8jB14c84k00IoAznODv7G84tFQol4BT4AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/img/reset.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH2ggQDDghTfTcdgAAAAlwSFlzAAAewQAAHsEBw2lUUwAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHjapVNdSBRRGD1zZ8bZHcfFn1VWDSNMpYSUBCGCMivJHgyMkiAwfCroIZBSiFAixLeIChaiIlAhf4IoKkhEgh4KJetF1/xF3XSUTVubcdydud1xZRmjJOiDw8yd+53zffd8c4H/DM65uHq/sv9QiXxYN1S2IYDCYk8RinAAS/qidaff3zFwC7WAaHFihKMRUOIU8KXKGUnJERD3OHh5DoIcZJiFKX1GuneZtNZcOd/SWfUFpZHdlPE5EZzgFFglAWUpIYyQFARx9CZgBGaUtWsC5QfrC/0ptQMX654U0hlpjt9ynkx1x0xwhXwdwdjYKKYYJsdGuen5OU/IpaRmpGbKZFLrtYpyy92iQnIG30x1xcmia4svv0NhqLjxLG+hfcZDu4NltGOgTkcOTsU7sKLbmr3OMB5YCekVZcUn1+h7eN1FQvuHoXnhrxTbXsvREwUWVAxRIwkcsRVXbHM2p0Bi+XZkncOF9Hw+LU5GjGzHsePuao+L1TQSoWnf7U/6pssxy083pjTce33UTi9jcDOkMXhRifwjjdLNro81tHOwhHYN7aTNTwu+sb09G0eIshIn6pMbzlbvb/Up+XjUp/Ym8ImUbpQWOdlVzCcpOsL6KMJrgxCEAnS/CDxgm8Ox0lVofnx9b5OUoOGnMQVF9oJadLN35jPng2FOgxd+wIxko6dn8dXLlvUzjKzFphDgZ9P2qSVZecs5dv6qqWGd02HAhoYor8KgFiYmpLW2tpD/3V3zMmOFN7Sdf/Klh3i+qxCl1xpxO1tCkPDsItgeExCdKalv0c+Wn5yTib2LcZHsyib0eXKRu+14/3gtxS0pAsfjn+IXjhPiCXMAIGsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1NFT1Rvb2xzMic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1NFT1Rvb2xzMiBoYXMgYmVlbiBpbnN0YWxsZWQuIEJlIHN1cmUgdG8gcmVhZCB0aGUgbW9kdWxlIGhlbHAgdG8gbGVhcm4gaG93IHRvIHVzZSBpdC4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1NFT1Rvb2xzMiBoYXMgYmVlbiB1bmluc3RhbGxlZC4gUGxlYXNlIGJlIGF3YXJlIHRoYXQgeW91IGhhdmUganVzdCBsb3N0IGFsbCBtZXRhIGluZm9ybWF0aW9uIGZyb20geW91ciBwYWdlcyEnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byB1bmluc3RhbGwgU0VPVG9vbHMyPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0EgY29sbGVjdGlvbiBvZiB0b29scyB0byBoZWxwIHdpdGggU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24uJzsKCiRsYW5nWydldmVudGRlc2MtUHJlZnNVcGRhdGVkJ10gPSAnU2VudCB3aGVuIHRoZSBhZG1pbiBwcmVmZXJlbmNlcyBhcmUgdXBkYXRlZC4nOwokbGFuZ1snZXZlbnRoZWxwLVByZWZzVXBkYXRlZCddID0gJzxwPlNlbnQgd2hlbiB0aGUgYWRtaW4gcHJlZmVyZW5jZXMgYXJlIHVwZGF0ZWQuPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+CjxvbD4KPGxpPjwvbGk+Cjwvb2w+JzsKCgoKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3IhJzsKJGxhbmRbJ2FkbWluX3RpdGxlJ10gPSAnU0VPVG9vbHMyIEFkbWluIFBhbmVsJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdIZWxwcyB3aXRoIFNFTyBpbiBnZW5lcmFsLCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgWE1MIHNpdGVtYXBzIGFuZCBjb21wcmVoZW5zaXZlIG1ldGEgZGVzY3JpcHRpb25zJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7CiRsYW5nWydTRU9BbGVydHMnXSA9ICdTRU8gQWxlcnRzJzsKJGxhbmdbJ1BhZ2VkZXNjcmlwdGlvbnMnXSA9ICdQYWdlIHNldHRpbmdzJzsKJGxhbmdbJ1NpdGVtYXAnXSA9ICdTaXRlbWFwJzsKJGxhbmdbJ1NFT1NldHRpbmdzJ10gPSAnU0VPIFNldHRpbmdzJzsKJGxhbmdbJ3RpdGxlX3Nlb2FsZXJ0cyddID0gJ1NFTyBBbGVydHMnOwokbGFuZ1sndGl0bGVfcGFnZWRlc2NyaXB0aW9ucyddID0gJ1BhZ2Ugc2V0dGluZ3MnOwokbGFuZ1sndGl0bGVfc2l0ZW1hcCddID0gJ1NpdGVtYXAnOwokbGFuZ1sndGl0bGVfc2Vvc2V0dGluZ3MnXSA9ICdTRU8gU2V0dGluZ3MnOwoKJGxhbmdbJ3RpdGxlX21ldGFfdHlwZSddID0gJ01ldGEgVGFnIEdlbmVyYXRvcic7CiRsYW5nWydtZXRhX2NyZWF0ZV9zdGFuZGFyZCddID0gJ0dlbmVyYXRlIHN0YW5kYXJkIE1ldGEgVGFncyc7CiRsYW5nWydtZXRhX2NyZWF0ZV9kdWJsaW5jb3JlJ10gPSAnR2VuZXJhdGUgRHVibGluIENvcmUgTWV0YSBUYWdzJzsKJGxhbmdbJ21ldGFfY3JlYXRlX29wZW5ncmFwaCddID0gJ0dlbmVyYXRlIE9wZW5HcmFwaCBNZXRhIFRhZ3MgKGUuZy4gZm9yIEZhY2Vib29rIExpa2UgQnV0dG9uKSc7CgokbGFuZ1sndGl0bGVfbWV0YV9kZWZhdWx0cyddID0gJ01FVEEgVGFnIFZhbHVlcyc7CiRsYW5nWydtZXRhX3B1Ymxpc2hlciddID0gJ1NpdGUgcHVibGlzaGVyJzsKJGxhbmdbJ21ldGFfcHVibGlzaGVyX2hlbHAnXSA9ICcoVGhpcyBpcyB1c3VhbGx5IHRoZSBvcmdhbml6YXRpb24geW91IGFyZSBidWlsZGluZyB0aGUgd2Vic2l0ZSBmb3IpJzsKJGxhbmdbJ21ldGFfY29udHJpYnV0b3InXSA9ICdTaXRlIGNvbnRyaWJ1dG9yJzsKJGxhbmdbJ21ldGFfY29udHJpYnV0b3JfaGVscCddID0gJyhVc3VhbGx5LCB0aGlzIHdvdWxkIGJlIHlvdSBvciBhbnkgb3RoZXIgY29udGVudCBhdXRob3IpJzsKJGxhbmdbJ21ldGFfY29weXJpZ2h0J10gPSAnU2l0ZSBjb3B5cmlnaHQnOwokbGFuZ1snbWV0YV9jb3B5cmlnaHRfaGVscCddID0gJyhTb21ldGhpbmcgbGlrZSAiKEMpIFlvdXIgQ29tcGFueS4gQWxsIFJpZ2h0cyBSZXNlcnZlZCIpJzsKJGxhbmdbJ21ldGFfbG9jYXRpb25fZGVzY3JpcHRpb24nXSA9ICdJZiB5b3VyIHdlYnNpdGUgaXMgYWJvdXQgYW4gZW50aXRpeSB0aGF0IGNhbiBiZSBsb2NhdGVkIG9uIGEgbWFwLCB5b3Ugc2hvdWxkIG9wdGlvbmFsbHkgZmlsbCBpbiB0aGUgZm9sbG93aW5nIHZhbHVlczonOwokbGFuZ1snbWV0YV9sb2NhdGlvbiddID0gJ0xvY2F0aW9uIG9mIHlvdXIgZW50aXR5JzsKJGxhbmdbJ21ldGFfbG9jYXRpb25faGVscCddID0gJyhVc3VhbGx5LCB0aGlzIHdvdWxkIGJlIHRoZSB0b3duIG5hbWUgb2YgeW91ciBjb21wYW55KSc7CiRsYW5nWydtZXRhX3JlZ2lvbiddID0gJ1JlZ2lvbiBvZiB5b3VyIGVudGl0eSc7CiRsYW5nWydtZXRhX3JlZ2lvbl9oZWxwJ10gPSAnKEVudGVyIHNvbWV0aGluZyBsaWtlICJVUy1JTCIgZm9yIGFuIGVudGl0eSBsb2NhdGVkIGluIElsbGlub2lzLCBVUyknOwokbGFuZ1snbWV0YV9sYXRpdHVkZSddID0gJ0xhdGl0dWRlIG9mIHlvdXIgZW50aXR5JzsKJGxhbmdbJ21ldGFfbGF0aXR1ZGVfaGVscCddID0gJyhFbnRlciB0aGUgZGVjaW1hbCBsYXRpdHVkZSBnZW8gY29vZGluYXRlIG9mIHlvdXIgZW50aXRpeSknOwokbGFuZ1snbWV0YV9sb25naXR1ZGUnXSA9ICdMb25naXR1ZGUgb2YgeW91ciBlbnRpdHknOwokbGFuZ1snbWV0YV9sb25naXR1ZGVfaGVscCddID0gJyhFbnRlciB0aGUgZGVjaW1hbCBsb25naXR1ZGUgZ2VvIGNvb2RpbmF0ZSBvZiB5b3VyIGVudGl0aXkpJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2Rlc2NyaXB0aW9uJ10gPSAnSWYgeW91IGFyZSBjcmVhdGluZyBPcGVuR3JhcGggTUVUQSBUYWdzLCBwbGVhc2UgZmlsbCBpbiB0aGUgZm9sbG93aW5nIHZhbHVlczonOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGUnXSA9ICdPcGVuR3JhcGggcGFnZSB0aXRsZSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF90aXRsZV9oZWxwJ10gPSAnKFlvdSBjYW4gdXNlIGFsbCBzbWFydHkgdGFncyBoZXJlLCBlLmcuIHRvIHJlcGxhY2Ugd2l0aCB0aGUgYWN0dWFsIHBhZ2UgdGl0bGUpJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3R5cGUnXSA9ICdPcGVuR3JhcGggZGVmYXVsdCBwYWdlIHR5cGUnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdHlwZV9oZWxwJ10gPSAnKFRoZSBkZWZhdWx0IHBhZ2UgdHlwZSBmb3IgT3BlbkdyYXBoLCBjYW4gYmUgb3ZlcnJpZGRlbiBmb3IgZWFjaCBwYWdlLiBMb29rIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL29wZW5ncmFwaCN0eXBlcyIgdGFnZXQ9Il9ibGFuayI+aGVyZTwvYT4gZm9yIGEgbGlzdCBvZiBhbGxvd2VkIHZhbHVlcyknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnXSA9ICdPcGVuR3JhcGggc2l0ZSBuYW1lJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lX2hlbHAnXSA9ICcoQSBzaG9ydCB2ZXJzaW9uIG9mIHlvdXIgc2l0ZSBuYW1lLCBlLmcuICJZb3VyIENvbXBhbnkiLCBtYXguIDI1IGNoYXJzKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9pbWFnZSddID0gJ09wZW5HcmFwaCBkZWZhdWx0IGltYWdlJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2ltYWdlX2hlbHAnXSA9ICcoU2VsZWN0IGFuIGltYWdlIGZyb20geW91ciAvdXBsb2Fkcy9pbWFnZXMgZGlyZWN0b3J5IHRvIGJlIHVzZWQgYXMgdGhlIGRlZmF1bHQgZm9yIE9wZW5HcmFwaCBwYWdlcyknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJ10gPSAnRmFjZWJvb2sgc2l0ZSBhZG1pbmlzdHJhdG9ycyc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9hZG1pbnNfaGVscCddID0gJyhBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGZhY2Vib29rIGFjY291bnQgSURzIHdobyBhcmUgYWJsZSB0byBhZG1pbmlzdHJhdGUgdGhlIHN0cmVhbXMgb2YgeW91ciBwYWdlcyknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nXSA9ICdGYWNlYm9vayBhcHBsaWNhdGlvbic7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbl9oZWxwJ10gPSAnKFRoZSBJRCBvZiBhIGZhY2Vib29rIGFwcGxpY2F0aW9uIGFibGUgdG8gYWRtaW5pc3RyYXRlIHRoZSBzdHJlYW1zIG9mIHlvdXIgcGFnZXMpJzsKCiRsYW5nWyd0aXRsZV90aXRsZV9kZXNjcmlwdGlvbiddID0gJ1BhZ2UgdGl0bGUsIGRlc2NyaXB0aW9uIGFuZCBrZXl3b3Jkcyc7CiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ1BhZ2UgdGl0bGUnOwokbGFuZ1sndGl0bGVfdGl0bGVfaGVscCddID0gJyhUaGUgcGFnZSB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGJyb3dzZXJcJ3MgdGl0bGUgYmFyLiBZb3UgY2FuIHVzZSB0aGUgdGFncyB7dGl0bGV9LCB7cGFnZXRpdGxlfSwge3Nlb19rZXl3b3Jkc30gYW5kIGFsbCBzbWFydHkgdGFncyBhbmQgVURUcyBoZXJlKSc7CiRsYW5nWyd0aXRsZV9tZXRhX3RpdGxlJ10gPSAnUGFnZSBNZXRhIHRpdGxlJzsKJGxhbmdbJ3RpdGxlX21ldGFfaGVscCddID0gJyhUaGUgcGFnZSB0aXRsZSB0byBiZSB1c2VkIGluIHRoZSBNZXRhIHRpdGxlIHRhZ3MuIFlvdSBjYW4gdXNlIHRoZSB0YWdzIHt0aXRsZX0sIHtwYWdldGl0bGV9LCB7c2VvX2tleXdvcmRzfSBhbmQgYWxsIHNtYXJ0eSB0YWdzIGFuZCBVRFRzIGhlcmUpJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uX2Jsb2NrX3RpdGxlJ10gPSAnTmFtZSBvZiBwYWdlIGRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2snOwokbGFuZ1snZGVzY3JpcHRpb25fYmxvY2tfaGVscCddID0gJyhUaGUgbmFtZSBvZiB5b3VyIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jay4gUGxlYXNlIHNlZSBiZWxvdyBmb3IgYW4gZXhwbGFuYXRpb24pJzsKJGxhbmdbJ2RlZmF1bHRfa2V5d29yZHNfdGl0bGUnXSA9ICdLZXl3b3JkcyB0byBhbHdheXMgaW5jbHVkZSc7CiRsYW5nWydkZWZhdWx0X2tleXdvcmRzX2hlbHAnXSA9ICcoQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBrZXl3b3JkcyB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIG9uIGV2ZXJ5IHBhZ2UpJzsKCiRsYW5nWyd0aXRsZV9zaXRlbWFwX2Rlc2NyaXB0aW9uJ10gPSAnR29vZ2xlIFNpdGVtYXAgYW5kIENyYXdsZXIgU2V0dGluZ3MnOwokbGFuZ1snY3JlYXRlX3NpdGVtYXBfdGl0bGUnXSA9ICdDcmVhdGUgYW4gWE1MIEdvb2dsZSBTaXRlbWFwKic7CiRsYW5nWydwdXNoX3NpdGVtYXBfdGl0bGUnXSA9ICdBdXRvbWF0aWNhbGx5IHB1c2ggdGhlIHNpdGVtYXAgdG8gR29vZ2xlIGFmdGVyIGNvbnRlbnQgY2hhbmdlcyc7CiRsYW5nWydjcmVhdGVfcm9ib3RzX3RpdGxlJ10gPSAnQ3JlYXRlIGEgcm9ib3RzLnR4dCBmaWxlKic7CiRsYW5nWyd2ZXJpZmljYXRpb25fdGl0bGUnXSA9ICdTaXRlIHZlcmlmaWNhdGlvbiBjb2RlJzsKJGxhbmdbJ3ZlcmlmaWNhdGlvbl9oZWxwJ10gPSAnKFRoZSBzaXRlIHZlcmlmaWNhdGlvbiBjb2RlIHlvdSBvYnRhaW4gZnJvbSBHb29nbGUgV2VibWFzdGVyIFRvb2xzLCBqdXN0IHRoZSBoYXNoLCBub3QgdGhlIGNvbXBsZXRlIG1ldGEgdGFnKSc7CgokbGFuZ1sndGl0bGVfYWxlcnRzX3VyZ2VudCddID0gJ1RvIGJlIGZpeGVkIGltbWVkaWF0ZWx5JzsKJGxhbmdbJ3RpdGxlX2FsZXJ0c19pbXBvcnRhbnQnXSA9ICdUbyBiZSBmaXhlZCBhcyBzb29uIGFzIHBvc3NpYmxlJzsKJGxhbmdbJ3RpdGxlX2FsZXJ0c19ub3RpY2VzJ10gPSAnVGhpbmdzIHlvdSBzaG91bGQgY29uc2lkZXIgZml4aW5nJzsKJGxhbmdbJ25vdGhpbmdfdG9fYmVfZml4ZWQnXSA9ICdUaGVyZSBhcmUgbm8gYWN0aW9ucyB5b3UgbmVlZCB0byB0YWtlIGluIHRoaXMgY2F0ZWdvcnknOwoKJGxhbmdbJ3NhdmUnXSA9ICdTYXZlIHNldHRpbmdzJzsKJGxhbmdbJ25vbmUnXSA9ICcobm9uZSknOwokbGFuZ1snc2V0dGluZ3NfdXBkYXRlZCddID0gJ1RoZSBTRU8gc2V0dGluZ3Mgd2VyZSBzdWNjZXNzZnVsbHkgdXBkYXRlZC4nOwokbGFuZ1sncHJvYmxlbV9hbGVydCddID0gJ2hhcyBkZXRlY3RlZCBzZXZlcmUgcHJvYmxlbXMgd2l0aCB5b3VyIFNFTy4gJXMnOwokbGFuZ1sncHJvYmxlbV9saW5rX3RpdGxlJ10gPSAnQ2xpY2sgaGVyZSB0byBmaXggdGhlbSc7CgokbGFuZ1snaGVscF9kZXNjcmlwdGlvbl9jb250ZW50J10gPSAnPGI+SG93IHRvIHVzZSB0aGUgImRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2siOjwvYj48YnIgLz5UbyBiZSBhYmxlIHRvIGVudGVyIGEgcGFnZSBkZXNjcmlwdGlvbiB3aGVuIGVkaXRpbmcgYSBwYWdlLCB5b3UgbXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgY29kZSBhbnl3aGVyZSBvbiBldmVyeSB0ZW1wbGF0ZTo8YnIgLz48YnIgLz48cHJlPntjYXB0dXJlIGFzc2lnbj1tZXRhZGVzY3JpcHRpb259e2NvbnRlbnQgYmxvY2s9Im1ldGFkZXNjcmlwdGlvbiIgbGFiZWw9Ik1FVEEgRGVzY3JpcHRpb24iIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX08L3ByZT48YnIgLz5UaGVuLCBwdXQgIm1ldGFkZXNjcmlwdGlvbiIgaW50byB0aGUgZmllbGQgIk5hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrPGJyIC8+PGJyIC8+QWx0ZXJuYXRpdmVseSwgZW5hYmxlIHRoZSBvcHRpb24gJnF1b3Q7QXV0b21hdGljYWxseSBnZW5lcmF0ZSBkZXNjcmlwdGlvbnMgd2hlcmUgbm9uZSBpcyBnaXZlbiZxdW90Oy4gVGhpcyBpcyBub3QgYXMgZ29vZCBidXQgc3RpbGwgYmV0dGVyIHRoYW4gbm90aGluZy4nOwokbGFuZ1snaGVscF9zaXRlbWFwX3JvYm90cyddID0gJyopIFRvIHVzZSB0aGUgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgYSBzaXRlbWFwLSBhbmQgcm9ib3RzLWZpbGUsIHRoZSByb290IGRpcmVjdG9yeSBvZiB5b3VyIENNU01TIGluc3RhbGxhdGlvbiBtdXN0IGJlIHdyaXRlYWJsZSB0byB0aGUgd2ViIHNlcnZlci4gSWYgeW91ciBhbHJlYWR5IGhhdmUgYSBzaXRlbWFwLnhtbCBhbmQvcHIgcm9ib3RzLnR4dCBmaWxlLCBib3RoIG9mIHRoZW0gbXVzdCBiZSB3cml0ZWFibGUgdG8gdGhlIHdlYiBzZXJ2ZXIuJzsKCiRsYW5nWyd1c2Vfc3RhbmRhcmRfb3JfZHVibGluY29yZV9tZXRhJ10gPSAnVXNlIGF0IGxlYXN0IG9uZSBvZiB0aGUgc3RhbmRhcmQgb3IgRHVibGluIENvcmUgTWV0YSBUYWcgZ2VuZXJhdG9ycyc7CiRsYW5nWyd1c2Vfc3RhbmRhcmRfbWV0YSddID0gJ1lvdSBzaG91bGQgYWx3YXlzIGVuYWJsZSB0aGUgc3RhbmRhcmQgTWV0YSBnZW5lcmF0b3InOwokbGFuZ1snbWV0YV9kZXNjcmlwdGlvbl9taXNzaW5nJ10gPSAnVGhlIHBhZ2UgPGk+JXM8L2k+IGlzIGxhY2tpbmcgYSBNZXRhIGRlc2NyaXB0aW9uJzsKJGxhbmdbJ21ldGFfZGVzY3JpcHRpb25fc2hvcnQnXSA9ICdUaGUgTWV0YSBkZXNjcmlwdGlvbiBvZiA8aT4lczwvaT4gaXMgcmF0aGVyIHNob3J0ICggPCA3NSBjaGFycyknOwokbGFuZ1snZHVwbGljYXRlX3RpdGxlcyddID0gJ1RoZSBwYWdlcyA8aT4lczwvaT4gYW5kIDxpPiVzPC9pPiBoYXZlIHRoZSBzYW1lIHRpdGxlJzsKJGxhbmdbJ2R1cGxpY2F0ZV9kZXNjcmlwdGlvbnMnXSA9ICdUaGUgcGFnZXMgPGk+JXM8L2k+IGFuZCA8aT4lczwvaT4gaGF2ZSB0aGUgc2FtZSBNZXRhIGRlc2NyaXB0aW9uJzsKJGxhbmdbJ3Byb3ZpZGVfYW5fYXV0aG9yJ10gPSAnWW91IHNob3VsZCBwcm92aWRlIHRoZSBuYW1lIG9mIHRoZSBwYWdlIHB1Ymxpc2hlcic7CiRsYW5nWydzZXRfdXBfZGVzY3JpcHRpb25fYmxvY2snXSA9ICdTZXQgdXAgYSBjb250ZW50IGJsb2NrIGZvciBNZXRhIGRlc2NyaXB0aW9ucyc7CiRsYW5nWydhY3RpdmF0ZV9wcmV0dHlfdXJscyddID0gJ0FjdGl2YXRlIHRoZSBwcmV0dHkgVVJMcyBmZWF0dXJlIG9mIENNU01TJzsKJGxhbmdbJ3ByZXR0eV91cmxzX2hlbHAnXSA9ICc8YSBocmVmPSJodHRwOi8vd2lraS5jbXNtYWRlc2ltcGxlLm9yZy9pbmRleC5waHAvVXNlcl9IYW5kYm9vay9JbnN0YWxsYXRpb24vT3B0aW9uYWxfU2V0dGluZ3MiIHRhcmdldD0iX2JsYW5rIj5HZXQgaGVscDwvYT4nOwokbGFuZ1snY3JlYXRlX2Ffc2l0ZW1hcCddID0gJ0hhdmUgYSBHb29nbGUgWE1MIFNpdGVtYXAgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB5b3UnOwokbGFuZ1snYXV0b21hdGljYWxseV91cGxvYWRfc2l0ZW1hcCddID0gJ0hhdmUgeW91ciBYTUwgU2l0ZW1hcCBhdXRvbWF0aWNhbGx5IHVwbG9hZGVkIHRvIEdvb2dsZSc7CiRsYW5nWydjcmVhdGVfcm9ib3RzJ10gPSAnSGF2ZSBhIHJvYm90cy50eHQgZmlsZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZm9yIHlvdSc7CiRsYW5nWydzaXRlbWFwX25vdF93cml0ZWFibGUnXSA9ICdZb3VyIHNpdGVtYXAueG1sIGZpbGUgaXMgbm90IHdyaXRlYWJsZSc7CiRsYW5nWydjaG1vZF9zaXRlbWFwJ10gPSAnU2V0IHlvdXIgL3NpdGVtYXAueG1sIGZpbGUgdG8gYmUgd3JpdGVhYmxlIGJ5IHRoZSB3ZWIgc2VydmVyJzsKJGxhbmdbJ3JvYm90c19ub3Rfd3JpdGVhYmxlJ10gPSAnWW91ciByb2JvdHMudHh0IGZpbGUgaXMgbm90IHdyaXRlYWJsZSc7CiRsYW5nWydub19vcGVuZ3JhcGhfYWRtaW5zJ10gPSAnWW91IGhhdmUgbm90IHNldCBhbiBPcGVuR3JhcGggYWRtaW4gYXBwbGljYXRpb24gcmVzcC4gYWRtaW4gbGlzdCc7CiRsYW5nWydub19vcGVuZ3JhcGhfdHlwZSddID0gJ1lvdSBoYXZlIG5vdCBzZXQgdGhlIGRlZmF1bHQgT3BlbkdyYXBoIHBhZ2UgdHlwZSc7CiRsYW5nWydub19vcGVuZ3JhcGhfc2l0ZW5hbWUnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IHRoZSBPcGVuR3JhcGggc2l0ZSBuYW1lJzsKJGxhbmdbJ25vX29wZW5ncmFwaF9pbWFnZSddID0gJ1lvdSBoYXZlIG5vdCBzZXQgYW4gT3BlbkdyYXBoIGRlZmF1bHQgaW1hZ2UnOwokbGFuZ1snY2htb2Rfcm9ib3RzJ10gPSAnU2V0IHlvdXIgL3JvYm90cy50eHQgZmlsZSB0byBiZSB3cml0ZWFibGUgYnkgdGhlIHdlYiBzZXJ2ZXInOwokbGFuZ1snZWRpdF9wYWdlJ10gPSAnRWRpdCAlcyc7CiRsYW5nWydlZGl0X3BhZ2VfdG9fZml4J10gPSAnQ2xpY2sgaGVyZSB0byBlZGl0IHRoZSBwYWdlIGFuZCBmaXggdGhlIHByb2JsZW0nOwokbGFuZ1sndmlzaXRfc2V0dGluZ3MnXSA9ICdDaGFuZ2Ugc2V0dGluZ3MnOwoKJGxhbmdbJ3BhZ2VfaWQnXSA9ICdJRCc7CiRsYW5nWydwYWdlX25hbWUnXSA9ICdQYWdlIG5hbWUnOwokbGFuZ1sncHJpb3JpdHknXSA9ICdTaXRlbWFwIFByaW9yaXR5JzsKJGxhbmdbJ29nX3R5cGUnXSA9ICdPcGVuR3JhcGggdHlwZSc7CiRsYW5nWydrZXl3b3JkcyddID0gJyMgS2V5d29yZHMnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWydpbmRleCddID0gJ0luZGV4YWJsZSc7CgokbGFuZ1snY2xpY2tfdG9fYWRkX2Rlc2NyaXB0aW9uJ10gPSAnQ2xpY2sgaGVyZSB0byBhZGQgYSBwYWdlIGRlc2NyaXB0aW9uJzsKJGxhbmdbJ3RvZ2dsZSddID0gJ3RvZ2dsZSc7CiRsYW5nWydyZXNldCddID0gJ3Jlc2V0JzsKJGxhbmdbJ3Jlc2V0X3RvX2RlZmF1bHQnXSA9ICdSZXNldCB0aGlzIHRvIHRoZSBkZWZhdWx0IHZhbHVlJzsKJGxhbmdbJ2VkaXRfdmFsdWUnXSA9ICdFZGl0IHRoaXMgdmFsdWUnOwoKJGxhbmdbJ2hlbHBfb3BlbmdyYXBoJ10gPSAnTG9vayA8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9vcGVuZ3JhcGgjdHlwZXMiIHRhZ2V0PSJfYmxhbmsiPmhlcmU8L2E+IGZvciBhIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMnOwokbGFuZ1snZW50ZXJfbmV3X29ndHlwZSddID0gJ0VudGVyIHRoZSBuZXcgdmFsdWUgZm9yIHRoaXMgcGFnZVwncyBPcGVuR3JhcGggdHlwZSc7CiRsYW5nWydoZWxwX25ld19vZ3R5cGUnXSA9ICdMZWF2ZSBibGFuayB0byByZXZlcnQgdG8gdGhlIGRlZmF1bHQgc2V0dGluZyc7CgokbGFuZ1snZW50ZXJfbmV3X2tleXdvcmRzJ10gPSAnRW50ZXIgdGhlIG5ldyBrZXl3b3JkcyBmb3IgdGhpcyBwYWdlJzsKJGxhbmdbJ2hlbHBfbmV3X2tleXdvcmRzJ10gPSAnV2hpdGVzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBrZXl3b3Jkcy4gTGVhdmUgYmxhbmsgdG8gcmV2ZXJ0IHRvIGF1dG8gZ2VuZXJhdGVkIGtleXdvcmRzJzsKCiRsYW5nWydncm91cHRpdGxlX29wZW5ncmFwaCddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgT3BlbkdyYXBoIHJlbGF0ZWQgcHJvYmxlbShzKSc7CiRsYW5nWydncm91cHRpdGxlX3N5c3RlbSddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgc3lzdGVtIGNvbmZpZ3VyYXRpb24nOwokbGFuZ1snZ3JvdXB0aXRsZV9wYWdlcyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSBvbiB5b3VyIGNvbnRlbnQgcGFnZXMnOwokbGFuZ1snZ3JvdXB0aXRsZV9zZXR0aW5ncyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgU0VPIFNldHRpbmdzJzsKJGxhbmdbJ2dyb3VwdGl0bGVfZGVzY3JpcHRpb25zJ10gPSAnV2UgaGF2ZSBkZXRlY3RlZCAlcyBwcm9ibGVtKHMpIHdpdGggeW91ciBwYWdlIGRlc2NyaXB0aW9ucyc7CiRsYW5nWydncm91cHRpdGxlX3RpdGxlcyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgcGFnZSB0aXRsZXMnOwoKJGxhbmdbJ3ZpZXdfYWxsJ10gPSAnVmlldyBhbGwnOwoKJGxhbmdbJ3RpdGxlX21ldGFzZXR0aW5ncyddID0gJ1BhZ2UgdGl0bGUgJiBNZXRhIGluZm9ybWF0aW9uJzsKJGxhbmdbJ3RpdGxlX3NpdGVtYXBzZXR0aW5ncyddID0gJ1NpdGVtYXAgJiBDcmF3bGVyIHNldHRpbmdzJzsKJGxhbmdbJ3RpdGxlX2tleXdvcmRzZXR0aW5ncyddID0gJ0tleXdvcmQgZ2VuZXJhdG9yIHNldHRpbmdzJzsKCiRsYW5nWydkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJ10gPSAnQXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIHBhZ2UgZGVzY3JpcHRpb24gd2hlcmUgbm9uZSBpcyBwcm92aWRlZCc7CiRsYW5nWydkZXNjcmlwdGlvbl9hdXRvX3RpdGxlJ10gPSAnVGV4dCBmb3IgYXV0by1nZW5lcmF0ZWQgZGVzY3JpcHRpb25zJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uX2F1dG9faGVscCddID0gJyhZb3UgPGI+bXVzdDwvYj4gaW5jbHVkZSB0aGUgdGFnIHtrZXl3b3Jkc30gaGVyZSknOwoKJGxhbmdbJ3NldF91cF9hdXRvX2Rlc2NyaXB0aW9uJ10gPSAnU2V0IHVwIHRoZSBkZXNjcmlwdGlvbiBhdXRvLWdlbmVyYXRvciBhbmQgZW5zdXJlIHRoZSB0ZXh0IGNvbnRhaW5zIHRoZSB0YWcge2tleXdvcmRzfSc7CiRsYW5nWydhdXRvX2dlbmVyYXRlZCddID0gJ0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkJzsKJGxhbmdbJ2FuZCddID0gJ2FuZCc7CgokbGFuZ1sndGl0bGVfa2V5d29yZF93ZWlnaHQnXSA9ICdLZXl3b3JkIHdlaWdodCBzZXR0aW5ncyc7CiRsYW5nWydrZXl3b3JkX21pbmxlbmd0aF90aXRsZSddID0gJ01pbmltdW0ga2V5d29yZCBsZW5ndGgnOwokbGFuZ1sna2V5d29yZF9taW5sZW5ndGhfaGVscCddID0gJyhUaGUgbWluaW11bSBsZW5ndGggb2YgYSB3b3JkIHRvIGJlIGNvbnNpZGVyZWQgYXMgYSBrZXl3b3JkKSc7CiRsYW5nWydrZXl3b3JkX3RpdGxlX3dlaWdodF90aXRsZSddID0gJ1dlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSB0aXRsZSc7CiRsYW5nWydrZXl3b3JkX3RpdGxlX3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgdGl0bGUuIFRoZSBoaWdoZXIgYSB3b3JkXCdzIHdlaWdodCwgdGhlIG1vcmUgbGlrZWx5IGl0IGlzIHRvIGJlY29tZSBhIGtleXdvcmQpJzsKJGxhbmdbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIHRoZSBwYWdlIGRlc2NyaXB0aW9uJzsKJGxhbmdbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIHdlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSBkZXNjcmlwdGlvbi4gVGhlIGhpZ2hlciBhIHdvcmRcJ3Mgd2VpZ2h0LCB0aGUgbW9yZSBsaWtlbHkgaXQgaXMgdG8gYmVjb21lIGEga2V5d29yZCknOwokbGFuZ1sna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gY29udGVudCBoZWFkbGluZXMnOwokbGFuZ1sna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfaGVscCddID0gJyhUaGUgd2VpZ2h0IG9mIHdvcmRzIGJldHdlZW4gJmx0O2gxJmd0OyB0byAmbHQ7aDYmZ3Q7IHRhZ3MuIFRoZSBoaWdoZXIgYSB3b3JkXCdzIHdlaWdodCwgdGhlIG1vcmUgbGlrZWx5IGl0IGlzIHRvIGJlY29tZSBhIGtleXdvcmQpJzsKJGxhbmdbJ2tleXdvcmRfY29udGVudF93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gcGxhaW4gY29udGVudCc7CiRsYW5nWydrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIHdlaWdodCBvZiB3b3JkcyBpbnNpZGUgdGhlIHBsYWluIGNvbnRlbnQuIFRoZSBoaWdoZXIgYSB3b3JkXCdzIHdlaWdodCwgdGhlIG1vcmUgbGlrZWx5IGl0IGlzIHRvIGJlY29tZSBhIGtleXdvcmQpJzsKCiRsYW5nWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0X3RpdGxlJ10gPSAnTWluaW11bSB0b3RhbCB3ZWlnaHQgb2YgYSBrZXl3b3JkJzsKJGxhbmdbJ2tleXdvcmRfbWluaW11bV93ZWlnaHRfaGVscCddID0gJyhUaGUgbWluaW11bSB0b3RhbCB3ZWlnaHQgb2YgYSB3b3JkIHRvIGJlY29tZSBhIGtleXdvcmQuIFNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIGhpZ2hlc3Qgd2VpZ2h0IGZyb20gYWJvdmUuIFRoZSBzbWFsbGVyIHRoZSBudW1iZXIsIHRoZSBtb3JlIGtleXdvcmRzIHlvdSBnZXQpJzsKCiRsYW5nWydoZWxwX2tleXdvcmRfZ2VuZXJhdG9yJ10gPSAnVGhlIHNldHRpbmdzIHlvdSBjaGFuZ2Ugb24gdGhpcyBwYWdlIHdpbGwgbm90IGFmZmVjdCBhbnkga2V5d29yZHMgeW91IGVudGVyIG1hbnVhbGx5LiBGZWVsIGZyZWUgdG8gcGxheSB3aXRoIGFsbCB2YWx1ZXMgdW50aWwgeW91IGdldCB0aGUgYmVzdCByZXN1bHRzIGZvciB5b3VyIHBhZ2UuJzsKCiRsYW5nWyd0aXRsZV9rZXl3b3JkX2V4Y2x1ZGUnXSA9ICdLZXl3b3JkIGV4Y2x1c2lvbiBsaXN0JzsKJGxhbmdbJ2tleXdvcmRfZXhjbHVkZV90aXRsZSddID0gJ1dvcmRzIHRvIG5ldmVyIGNvbnNpZGVyIGFzIGtleXdvcmRzJzsKJGxhbmdbJ2tleXdvcmRfZXhjbHVkZV9oZWxwJ10gPSAnKFByb3ZpZGUgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiB3b3JkcyB0aGF0IHNob3VsZCBuZXZlciBhcHBlYXIgaW4ga2V5d29yZCBsaXN0cyknOwoKJGxhbmdbJ2luY3JlYXNlX3ByaW9yaXR5J10gPSAnSW5jcmVhc2UgcHJpb3JpdHkgYnkgMTAlJzsKJGxhbmdbJ2RlY3JlYXNlX3ByaW9yaXR5J10gPSAnSW5jcmVhc2UgcHJpb3JpdHkgYnkgMTAlJzsKCiRsYW5nWyd0aXRsZV9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJSZWdlbmVyYXRlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQiOwokbGFuZ1snYnV0dG9uX3JlZ2VuZXJhdGVfc2l0ZW1hcCddID0gIlJlZ2VuZXJhdGUgc2l0ZW1hcCBhbmQgcm9ib3RzLnR4dCBub3ciOwokbGFuZ1sndGV4dF9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJJdCBjYW4gYmUgbmVjZXNzYXJ5IHRvIHJlZ2VuZXJhdGUgdGhlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQgZmlsZSBhZnRlciBleHRlbnNpdmUgY2hhbmdlcyB0byB0aGUgcGFnZSBzdHJ1Y3R1cmUiOwokbGFuZ1snc2l0ZW1hcF9yZWdlbmVyYXRlZCddID0gIkJvdGggdGhlIHNpdGVtYXAgYW5kIHRoZSByb2JvdHMudHh0IGZpbGVzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcmVnZW5lcmF0ZWQuIjsKCiRsYW5nWydpbnN0YWxsX2RhdGFiYXNlX2Vycm9yJ10gPSAiQW4gZXJyb3IgaGFzIG9jY3VyZWQgZHVyaW5nIGluc3RhbGxhdGlvbjogVGhlIGRhdGFiYXNlIHRhYmxlIGNvdWxkIG5vdCBiZSBjcmVhdGVkLiI7CiRsYW5nWydub191cmxfZm9wZW4nXSA9ICJOb3QgcG9zc2libGUgYXMgYWxsb3dfdXJsX2ZvcGVuIGhhcyBub3QgYmVlbiBzZXQgdG8gJnF1b3Q7b24mcXVvdDsgaW4geW91ciBwaHAgY29uZmlndXJhdGlvbi4iOwokbGFuZ1sndGl0bGVfYWRkaXRpb25hbF9tZXRhX3RhZ3MnXSA9ICJBZGRpdGlvbmFsIE1ldGEgdGFncyI7CiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc190aXRsZSddID0gIkFkZGl0aW9uYWwgTWV0YSB0YWdzIHRvIGJlIGluc2VydGVkIjsKJGxhbmdbJ2FkZGl0aW9uYWxfbWV0YV90YWdzX2hlbHAnXSA9ICJTcGVjaWZ5IGFkZGl0aW9uYWwgTWV0YSB0YWdzIGhlcmUgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgcGFnZSBoZWFkZXIuIFlvdSBjYW4gdXNlIGFsbCBzbWFydHkgdmFyaWFibGVzIGFuZCBVRFRzIGhlcmUuIjsKCiRsYW5nWydoZWxwX3Nob3diYXNlJ10gPSAiU2V0IHRoaXMgcGFyYW1ldGVyIHRvIDxjb2RlPmZhbHNlPC9jb2RlPiB0byBzdXBwcmVzcyB0aGUgb3V0cHV0IG9mIHRoZSBiYXNlIGhyZWYgdGFnLiI7CgokbGFuZ1snY2hhbmdlbG9nJ10gPSA8PDxFT1QKPHVsPgo8bGk+VmVyc2lvbiAxLjAgLSAyNSBKYW51YXJ5IDIwMTIuIEluaXRpYWwgcmVsZWFzZS4gVGhpcyBpcyBhIGZvcmsgb2YgdGhlIFNFT1Rvb2xzIG1vZHVsZSB3aXRoIENNU01TIDEuMTArIGNvbXBhdGliaWxpdHkuIENoYW5nZXMgaW5jbHVkZToKCTx1bD4KCQk8bGk+U2V0IHByZWZlcmVuY2VzIG9uIGluc3RhbGw8L2xpPgoJCTxsaT5SZW1vdmUgcHJlZmVyZW5jZXMgb24gdW5pbnN0YWxsPC9saT4KCQk8bGk+UmVwbGFjZSBhbGwgcmVmZXJlbmNlIHRvIEhpZXJhcmNoeU1hbmFnZXIgb2JqZWN0cyB3aXRoIENvbnRlbnRPcGVyYXRpb25zIG9iamVjdHM8L2xpPgoJCTxsaT5HZW5lcmF0ZSBhbGwga2V5d29yZHMsIGtleXdvcmQgc3VnZ2VzdGlvbnMsIGRlc2NyaXB0aW9ucyBhbmQgZGVmYXVsdCBkZXNjcmlwdGlvbnM8L2xpPgoJCTxsaT5HZW5lcmF0ZSBzaXRlbWFwLnhtbCBhbmQgcm9ib3RzLnR4dCBmaWxlczwvbGk+CgkJPGxpPlJldGFpbiBjaGVja2JveCBwcmVmZXJlbmNlIHNldHRpbmdzIGFmdGVyIHN1Ym1pdDwvbGk+CgkJPGxpPk9uIGZyb250ZW5kIHBhZ2UgbG9hZCwgZW5zdXJlIHRoYXQgYSBjb3JyZXNwb25kaW5nIHJlY29yZCBleGlzdHMgaW4gdGhlIHNlb3Rvb2xzMiBkYXRhYmFzZSB0YWJsZTwvbGk+Cgk8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMSAtIDI1IEphbnVhcnkgMjAxMi4gTWlub3IgYnVnIGZpeDwvbGk+CjxsaT5WZXJzaW9uIDEuMC4yIC0gMSBGZWJydWFyeSAyMDEyLiBCdWcgZml4PC9saT4KPGxpPlZlcnNpb24gMS4wLjMgLSAxIEZlYnJ1YXJ5IDIwMTIuIEJ1ZyBmaXg8L2xpPgo8bGk+VmVyc2lvbiAxLjAuNCAtIDEgRmVicnVhcnkgMjAxMi4gQ29ycmVjdGlvbjwvbGk+CjxsaT5WZXJzaW9uIDEuMC41IC0gNiBGZWJydWFyeSAyMDEyLiBBZGQgZXZlbnQgaGFuZGxlcnMgdG8gcHVzaCBzaXRlbWFwIHRvIEdvb2dsZSB3ZWJtYXN0ZXJzPC9saT4KPGxpPlZlcnNpb24gMS4wLjYgLSA1IE1hcmNoIDIwMTIuIEltcHJvdmVkIGhhbmRsaW5nIG9mIHNzbCB1cmxzIGFuZCBidWcgZml4IHdoZW4gdGhlcmUgYXJlIG5vIHNob3J0IG1ldGEgZGVzY3JpcHRpb25zPC9saT4KPGxpPlZlcnNpb24gMS4wLjcgLSA5IEFwcmlsIDIwMTIuIEJ1ZyBmaXg8L2xpPgo8bGk+VmVyc2lvbiAxLjAuOCAtIDkgQXByaWwgMjAxMi4gQnVnIGZpeDwvbGk+CjxsaT5WZXJzaW9uIDEuMC45IC0gMTEgQXByaWwgMjAxMi4KICAgIDx1bD4KICAgICAgICA8bGk+TW9yZSBpbXByb3ZlbWVudHMgdG8gc3NsIGhhbmRsaW5nIGVzcGVjaWFsbHkgaW4gdGhlIHNpdGVtYXAueG1sICh0aGFua3MgYW5kcmllc2luZm9zZXJ2KTwvbGk+CiAgICAgICAgPGxpPkFiaWxpdHkgdG8gc2hvdyBhbnkgQWN0aXZlIHBhZ2UsIG5vdCBqdXN0IHBhZ2VzIHdpdGggQWN0aXZlIGFuZCBTaG93IEluIE1lbnUgaW4gdGhlIHNpdGVtYXAueG1sICh0aGFua3MgTWF0dCk8L2xpPgogICAgPC91bD4KPGxpPlZlcnNpb24gMS4wLjEwIC0gMjQgTWF5IDIwMTIgLSBtb3N0bHkgaW1wcm92ZW1lbnRzIGluIHRoZSBzaXRlbWFwIGFyZWEsIGllOgogICAgPHVsPgogICAgICAgIDxsaT5BbGxvd3Mgc2l0ZW1hcCBpbmRleGluZyBvZiBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgVVJMIGxpbmtzPC9saT4KICAgICAgICA8bGk+RmlsdGVycyBvdXQgRXJyb3IgUGFnZSBmcm9tIHNpdGVtYXAueG1sPC9saT4KICAgIDwvdWw+CjxsaT5WZXJzaW9uIDEuMC4xMSAtIDE0IEF1Z3VzdCAyMDEyLiBDTVNNUyAxLjExIGNvbXBhdGliaWxpdHkgKHRoYW5rcyBsZWVyb3licnVuKTwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlNFT1Rvb2xzMiBoZWxwcyB5b3UgdG8gZ2V0IHlvdXIgU0VPIChTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbikgcmlnaHQuIFRoZSBtb2R1bGUgYWRkcyBzZXZlcmFsIFNFTyBjYXBhYmlsaXRpZXMgdG8geW91ciBDTVNNUyBpbnN0YWxsYXRpb24gYW5kIGFsZXJ0cyB5b3UgaWYgeW91IG1pc3NlZCBvdXQgb24gc29tZXRoaW5nIFNFTyByZWxhdGVkLiBDdXJyZW50bHksIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDo8L3A+Cjx1bD4KPGxpPi0gZ2VuZXJhdGVzIE1ldGEgdGFncyBpbiBzdGFuZGFyZCBodG1sLCBEdWJsaW4gQ29yZSBhbmQgT3BlbkdyYXBoIGZvcm1hdHM8L2xpPgo8bGk+LSBhdXRvbWF0aWNhbGx5IGV4dHJhY3RzIGtleXdvcmRzIGZyb20geW91ciBwYWdlcyBhbmQgYWRkcyB0aGVtIHRvIHRoZSBtZXRhIHRhZ3MgYW5kIHBhZ2UgdGl0bGU8L2xpPgo8bGk+LSBsZXRzIHlvdSBkZXRlcm1pbmUgd2l0aCBhIHNpbmdsZSBjbGljayB3aGV0aGVyIGNlcnRhaW4gcGFnZXMgc2hvdWxkIGJlIGluZGV4ZWQgYnkgc2VhcmNoIGVuZ2luZXMgb3Igbm90PC9saT4KPGxpPi0gZ2VuZXJhdGVzIGEgc2l0ZW1hcC54bWwgZmlsZSB3aXRoIHlvdXIgcGFnZXMgd2hpbGUgZ2l2aW5nIHlvdSBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgcHJpb3JpdGllcyBvZiB5b3VyIHBhZ2VzPC9saT4KPGxpPi0gZ2VuZXJhdGVzIGEgcm9ib3RzLnR4dCBmaWxlIGV4cGxpY2l0bHkgZGlzYWxsb3dpbmcgYWNjZXNzIHRvIHBhZ2VzIHlvdSBkb25cJ3Qgd2FudCB0byBiZSBpbmRleGVkPC9saT4KPGxpPi0gYWxlcnRzIHlvdSB3aGVuIHRoZXJlIGFyZSBzZXZlcmFsIHBhZ2VzIGZlYXR1cmluZyB0aGUgc2FtZSBwYWdlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zPC9saT4KPGxpPi0gYWxlcnRzIHlvdSB3aGVuIHZlcnkgc2hvcnQgcGFnZSBtZXRhIGRlc2NyaXB0aW9ucyBhcmUgZGV0ZWN0ZWQ8L2xpPgo8bGk+LSBhdXRvbWF0aWNhbGx5IHN1Ym1pdHMgeW91ciBzaXRlbWFwIGZpbGUgdG8gR29vZ2xlIHdoZW4geW91IGNoYW5nZSB5b3VyIGNvbnRlbnQ8L2xpPgo8L3VsPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+Rmlyc3QsIG9wZW4gYWxsIHRlbXBsYXRlcyB3aGVyZSB5b3Ugd2FudCBkbyB1c2UgU0VPVG9vbHMyLiBSZW1vdmUgdGhlIGNvbXBsZXRlICZsdDt0aXRsZSZndDsgdGFnIGFuZCB0aGUge21ldGFkYXRhfSB0YWcgKGV2ZW4gaWYgaXQgc2F5cyB0byBuZXZlciByZW1vdmUgaXQpIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgdGFnPC9wPgo8cHJlPgp7U0VPVG9vbHMyfQo8L3ByZT48YnIgLz4KPHA+TmV4dCwgYXQgdGhlIGJvdHRvbSBvZiB5b3VyIHRlbXBsYXRlIChhZnRlciB0aGUgY2xvc2luZyAmbHQ7L2JvZHkmZ3Q7IHRhZyksIGluc2VydCB0aGUgZm9sbG93aW5nIGNvZGU6PC9wPgo8cHJlPgp7Y2FwdHVyZSBhc3NpZ249Im1ldGFkZXNjcmlwdGlvbiJ9e2NvbnRlbnQgYmxvY2s9Im1ldGFkZXNjcmlwdGlvbiIgbGFiZWw9IlBhZ2UgRGVzY3JpcHRpb24iIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX0KPC9wcmU+PGJyIC8+CjxwPlRoaXMgaXMgd2hlcmUgeW91XCdsbCBlbnRlciBhIHNob3J0IHBhZ2UgZGVzY3JpcHRpb24gKG9uZSBvciB0d28gc2VudGVuY2VzKSB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZSBzZWFyY2ggZW5naW5lXCdzIHJlc3VsdHMgYW5kIGlmLCBmb3IgZXhhbXBsZSwgc29tZW9uZSBzaGFyZXMgYSBsaW5rIHRvIHlvdXIgcGFnZSBvbiBmYWNlYm9vay48L3A+CjxwPk5vdywgdmlzaXQgdGhlIHNldHRpbmdzIHRhYnMgZm9yIHBhZ2UgdGl0bGUgJiBtZXRhIGluZm9ybWF0aW9uLCB0aGUgc2l0ZW1hcCAmIGNyYXdsZXIgc2V0dGluZ3MgYW5kIHRoZSBrZXl3b3JkIGdlbmVyYXRvciBzZXR0aW5ncyBhbmQgZmlsbCBpbiBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIHlvdXIgcGFnZS4gVW5kZXIgIk5hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrIiB5b3UgbmVlZCB0byBlbnRlciB0aGUgbmFtZSBvZiB0aGUgY29udGVudCBibG9jayB5b3UganVzdCBhZGRlZCB0byB5b3VyIHRlbXBsYXRlcyAoIlBhZ2UgRGVzY3JpcHRpb24iIGluIG91ciBleGFtcGxlKS4gVGhlIHRhYiAiU0VPIEFsZXJ0cyIgd2lsbCBhbGVydCB5b3UgaWYgaXQgZGV0ZWN0cyBhbnl0aGluZyB0aGF0IGlzIHJlcXVpcmVkIGJ1dCBub3QgYWN0aXZhdGVkIG9yIGZpbGxlZCBpbi4gWW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIHNpZ25pbmcgdXAgeW91cgpzaXRlIHdpdGggR29vZ2xlIFdlYm1hc3RlciB0b29scy4gVGhlcmUsIHNlbGVjdCAiTWV0YSB0YWcgdmFsaWRhdGlvbiIgYW5kIHBhc3RlIHRoZSB2ZXJpZmljYXRpb24gY29kZSAocXVpdGUgYSBsb25nIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGFuZCBudW1iZXJzKSBpbnRvIHRoZSBib3ggIlZlcmlmaWNhdGlvbiBDb2RlIiBpbiAiU0VPIFNldHRpbmdzIiB0byBhdXRvbWF0aWNhbGx5IHZlcmlmeSB0aGF0IHlvdSBhcmUgcmVhbGx5CnRoZSBvd25lciBvZiB5b3VyIHBhZ2UgKG5vIG5lZWQgdG8gcGFzdGUgdGhlIEdvb2dsZSBNZXRhLWNvZGUgaW50byB5b3VyIHRlbXBsYXRlKS48L3A+CjxwPkFzIHNvb24gYXMgZXZlcnl0aGluZyBpcyBzZXQgdXAsIGxvb2sgYXQgdGhlICJTRU8gQWxlcnRzIiB0YWIgYW5kIGZpeCBhbGwgcHJvYmxlbXMgZGV0ZWN0ZWQgaGVyZS4gVGFrZSBjYXJlIHRvIGluc2VydCBhICh1bmlxdWUpIHBhZ2UgZGVzY3JpcHRpb24gb24gZXZlcnkgcGFnZSB5b3UgZWRpdCBpbiB0aGUgZmllbGQgIlBhZ2UgRGVzY3JpcHRpb24iIGF0IHRoZSBib3R0b20gb2YgeW91ciAiRWRpdCBQYWdlIiBmb3JtLjwvcD4KPHA+VG8gc2V0IHlvdXIgb3duIGtleXdvcmRzIChpbnN0ZWFkIG9mIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBvbmVzKSBvciBPcGVuR3JhcGggdHlwZSBmb3IgY2VydGFpbiBwYWdlcywgdmlzaXQgdGhlICJQYWdlIHNldHRpbmdzIiB0YWIgd2hlcmUgeW91XCdsbCBmaW5kIGEgbGlzdCBvZiBhbGwgcGFnZXMgeW91IGhhdmUgaW4geW91ciBzeXN0ZW0uIFRoZXJlLCB5b3UgY2FuIGFsc28gY2hhbmdlIHRoZSBzaXRlbWFwIHByaW9yaXR5ICh3aGljaCBpcyBhdXRvLWNhbGN1bGF0ZWQgYnkgZGVmYXVsdCkgb2YgYSBwYWdlIHRvIGluZGljYXRlIHRoYXQgaXQgc2hvdWxkCmJlIGNvbnNpZGVyZWQgbW9yZSBpbXBvcnRhbnQgZm9yIHNlYXJjaCBlbmdpbmUgbWF0Y2hlcyBvbiB5b3VyIHBhZ2Ugb3IgZXhjbHVkZSBjZXJ0YWluIHBhZ2VzIGZyb20gdGhlIHNlYXJjaCBpbmRleC48L3A+CjxwPlNFT1Rvb2xzMiB3aWxsIGFsc28gYXV0b21hdGljYWxseSBpbnNlcnQgYSBsaW5rIHRvIHRoZSBpbWFnZSB0byBiZSB1c2VkIGFzIHRoZSBtYWluIGltYWdlIG9mIHlvdXIgcGFnZSBpZiB5b3Ugc2VsZWN0IGFuICJJbWFnZSIgZm9yIHRoZSBwYWdlIGZyb20gd2l0aGluIHlvdXIgcGFnZVwncyAiT3B0aW9ucyIgdGFiICh0aGlzIGlzIGltcG9ydGFudCBmb3IgcGVvcGxlIHN1Ym1pdHRpbmcgYSBsaW5rIHRvIHlvdXIgcGFnZSBlLmcuIG9uIGZhY2Vib29rKS4gQWxzbywgaWYgeW91IGFyZSB1c2luZyBPcGVuR3JhcGgsIHRoZSBpbWFnZSBzZWxlY3RlZCBoZXJlCndpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgT3BlbkdyYXBoIGltYWdlIHlvdSBzcGVjaWZpZWQgZnJvbSB3aXRoaW4gIlNFTyBTZXR0aW5ncyIuIFBsZWFzZSBiZSBhd2FyZSB0aGF0IHlvdSBuZWVkIHRvIHVwbG9hZCB0aG9zZSBpbWFnZXMgdG8geW91ciAvdXBsb2Fkcy9pbWFnZXMgZGlyZWN0b3J5LjwvcD4KPGgzPkNhbiBJIHVzZSBzbWFydHkgdmFyaWFibGVzPzwvaDM+CjxwPllvdSBjYW4gdXNlIGFsbCBzbWFydHkgdmFyaWFibGVzIGFuZCBVRFRzIHdpdGhpbiB0aGUgc2V0dGluZ3MgZmllbGRzIDxpPlBhZ2UgdGl0bGU8L2k+LCA8aT5NZXRhIHBhZ2UgdGl0bGU8L2k+LCA8aT5BdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkZXNjcmlwdGlvbnM8L2k+IGFuZCA8aT5BZGRpdGlvbmFsIG1ldGEgdGFnczwvaT4uIEVudGVyIDxjb2RlPntkZWJ1Z308L2NvZGU+IHRvIHNlZSBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSB2YXJpYWJsZXMuPC9wPgo8aDM+V2hpY2ggc21hcnR5IHZhcmlhYmxlcyBhcmUgZXhwb3J0ZWQgYnkgU0VPVG9vbHMyPzwvaDM+Cjxjb2RlPnskc2VvX2tleXdvcmRzfTwvY29kZT46IEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGtleXdvcmRzIHNldCBmb3IgdGhlIHBhZ2UgKGluY2x1ZGluZyB0aGUgZGVmYXVsdCBrZXl3b3Jkcyk8YnIgLz4KPGNvZGU+eyR0aXRsZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlIChpbmNsdWRpbmcgdGhlIGRlZmF1bHQga2V5d29yZHMpPGJyIC8+Cjxjb2RlPnskZGVmYXVsdF9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBkZWZhdWx0IGtleXdvcmRzPGJyIC8+Cjxjb2RlPnskcGFnZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlICh3aXRob3V0IHRoZSBkZWZhdWx0IGtleXdvcmRzKQo8aDM+U3VwcG9ydDwvaDM+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTIsIENsaXAgTWFnaWMgPGEgaHJlZj0ibWFpbHRvOmFkbWluQGNsaXBtYWdpYy5jb20uYXUiPiZsdDthZG1pbkBjbGlwbWFnaWMuY29tLmF1Jmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEluc3RhbGwoKQoJICAgV2hlbiB5b3VyIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHlvdSBtYXkgbmVlZCB0byBkbyBzb21lCgkgICBzZXR1cC4gVHlwaWNhbCB0aGluZ3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIGNyZWF0aW9uCgkgICBhbmQgcHJlcG9wdWxhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsIGRhdGFiYXNlIHNlcXVlbmNlcywKCSAgIHBlcm1pc3Npb25zLCBwcmVmZXJlbmNlcywgZXRjLgoJICAgCSAgIAoJICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBjcmVhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsCgkgICBjaGVjayBvdXQgdGhlIEFET0RCIERhdGEgRGljdGlvbmFyeSBwYWdlIGF0CgkgICBodHRwOi8vcGhwbGVucy5jb20vbGVucy9hZG9kYi9kb2NzLWRhdGFkaWN0Lmh0bQoJICAgCgkgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYSBzdHJpbmcgaW4gY2FzZSBvZiBhbnkgZXJyb3IsCgkgICBhbmQgQ01TIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBtb2R1bGUgaW5zdGFsbGVkLgoJICAgU3VjY2Vzc2Z1bCBpbnN0YWxscyBzaG91bGQgcmV0dXJuIEZBTFNFIG9yIG5vdGhpbmcgYXQgYWxsLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJCQoJCS8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24KCQkkZGIgPWNtc21zKCktPkdldERiKCk7CgkJCgkJLy8gbXlzcWwtc3BlY2lmaWMsIGJ1dCBpZ25vcmVkIGJ5IG90aGVyIGRhdGFiYXNlCgkJJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJCiAgICAgICAgLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiAgICAgICAgJGZsZHMgPSAiCgkJCWNvbnRlbnRfaWQgSSBLRVksCgkJCWluZGV4YWJsZSBJKDEpLAoJCQlrZXl3b3JkcyBDKDI1NSksCgkJCXByaW9yaXR5IEkoMyksCgkJCW9ndHlwZSBDKDMyKQoJCQkiOwoKCQkvLyBjcmVhdGUgaXQuIFRoaXMgc2hvdWxkIGRvIGVycm9yIGNoZWNraW5nLCBidXQgSSdtIGEgbGF6eSBzb2QuCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiIsCgkJCQkkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJLy8gVGVzdCBpZiBpbnN0YWxsYXRpb24gd29ya2VkOgoJCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyJzsKCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJaWYgKCEkcmVzdWx0KSB7CgkJCXJldHVybiAkdGhpcy0+TGFuZygnaW5zdGFsbF9kYXRhYmFzZV9lcnJvcicpOwoJCX0KCQkKCQkvLyBwZXJtaXNzaW9ucwoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdFZGl0IFNFTyBTZXR0aW5ncycsJ0VkaXQgU0VPIFNldHRpbmdzJyk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ0VkaXQgcGFnZSBkZXNjcmlwdGlvbnMnLCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJyk7CgoJCS8vIGFkZCBzaXRlIHByZWZlcmVuY2VzCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FkZGl0aW9uYWxfbWV0YV90YWdzJywnJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCcnKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJ1RoaXMgcGFnZSBjb3ZlcnMgdGhlIHRvcGljcyB7a2V5d29yZHN9Jyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLDEpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywxKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLDQpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCdpLCBtZSwgbXksIG15c2VsZiwgd2UsIG91ciwgb3Vycywgb3Vyc2VsdmVzLCB5b3UsIHlvdXIsIHlvdXJzLCB5b3Vyc2VsZiwgeW91cnNlbHZlcywgaGUsIGhpbSwgaGlzLCBoaW1zZWxmLCBzaGUsIGhlciwgaGVycywgaGVyc2VsZiwgaXQsIGl0cywgaXRzZWxmLCB0aGV5LCB0aGVtLCB0aGVpciwgdGhlaXJzLCB0aGVtc2VsdmVzLCB3aGF0LCB3aGljaCwgd2hvLCB3aG9tLCB0aGlzLCB0aGF0LCB0aGVzZSwgdGhvc2UsIGFtLCBpcywgYXJlLCB3YXMsIHdlcmUsIGJlLCBiZWVuLCBiZWluZywgaGF2ZSwgaGFzLCBoYWQsIGhhdmluZywgZG8sIGRvZXMsIGRpZCwgZG9pbmcsIGEsIGFuLCB0aGUsIGFuZCwgYnV0LCBpZiwgb3IsIGJlY2F1c2UsIGFzLCB1bnRpbCwgd2hpbGUsIG9mLCBhdCwgYnksIGZvciwgd2l0aCwgYWJvdXQsIGFnYWluc3QsIGJldHdlZW4sIGludG8sIHRocm91Z2gsIGR1cmluZywgYmVmb3JlLCBhZnRlciwgYWJvdmUsIGJlbG93LCB0bywgZnJvbSwgdXAsIGRvd24sIGluLCBvdXQsIG9uLCBvZmYsIG92ZXIsIHVuZGVyLCBhZ2FpbiwgZnVydGhlciwgdGhlbiwgb25jZSwgaGVyZSwgdGhlcmUsIHdoZW4sIHdoZXJlLCB3aHksIGhvdywgYWxsLCBhbnksIGJvdGgsIGVhY2gsIGZldywgbW9yZSwgbW9zdCwgb3RoZXIsIHNvbWUsIHN1Y2gsIG5vLCBub3IsIG5vdCwgb25seSwgb3duLCBzYW1lLCBzbywgdGhhbiwgdG9vLCB2ZXJ5LCBsb3JlbSwgY29taW5nJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywyKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsNyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJyw1KTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLDYpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywnJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywnJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsMCk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsMCk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90aXRsZScsJ3t0aXRsZX0nKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndGl0bGUnLCd7dGl0bGV9IHwgeyRzaXRlbmFtZX0gLSB7JHRpdGxlX2tleXdvcmRzfScpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywne3RpdGxlfSB8IHskc2l0ZW5hbWV9Jyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ByZWZfdmVyaWZpY2F0aW9uJywnJyk7CgkJCgkJLy8gcmVnaXN0ZXIgZXZlbnRzIGFuZCBhZGQgZXZlbnQgaGFuZGxlcnMKICAgIAkkdGhpcy0+Q3JlYXRlRXZlbnQoICdQcmVmc1VwZGF0ZWQnICk7CiAgICAgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnRFZGl0UG9zdCcsZmFsc2UpOwogICAgICAgICR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCdDb250ZW50RGVsZXRlUG9zdCcsZmFsc2UpOwoJCQoJCQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywkdGhpcy0+R2V0VmVyc2lvbigpKSk7CgkJCj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVuaW5zdGFsbCgpCgkgICBTb21ldGltZXMsIGFuIGV4Y2VwdGlvbmFsbHkgdW5lbmxpZ2h0ZW5lZCBvciBpZ25vcmFudAoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQKCSAgIHdvdWxkIGJlIGJlc3QgdG8gbGF5IGludG8gdGhlc2UgaWRpb3RzIHdpdGggYSBjbHVlc3RpY2ssCgkgICB3ZSB3aWxsIGRvIHRoZSBtYWduYW5pbW91cyB0aGluZyBhbmQgcmVtb3ZlIHRoZSBtb2R1bGUKCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMKCSAgIHRoYXQgYXJlIHNwZWNpZmljIHRvIGl0LgoJICAgVGhpcyBpcyB0aGUgbWV0aG9kIHdoZXJlIHdlIGRvIHRoaXMuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoJCS8vIFR5cGljYWwgRGF0YWJhc2UgUmVtb3ZhbAoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkJCgkJLy8gcmVtb3ZlIHRoZSBkYXRhYmFzZSB0YWJsZQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJLy8gcmVtb3ZlIHRoZSBwZXJtaXNzaW9ucwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdFZGl0IFNFTyBTZXR0aW5ncycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJyk7CgkJCgkJLy8gcmVtb3ZlIHNpdGUgcHJlZmVyZW5jZXMKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfZXhjbHVkZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdrZXl3b3JkX2hlYWRsaW5lX3dlaWdodCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfY29udHJpYnV0b3InKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCd0aXRsZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3ByZWZfdmVyaWZpY2F0aW9uJyk7CgkJCgkJLy8gcmVtb3ZlIGV2ZW50cyBhbmQgZXZlbnQgaGFuZGxlcnMKCQkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCAnUHJlZnNVcGRhdGVkJyApOwogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudCggJ1ByZWZzVXBkYXRlZCcgKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudEVkaXRQb3N0JyxmYWxzZSk7CiAgICAgICAgJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnREZWxldGVQb3N0JyxmYWxzZSk7CiAgICAgICAgCgkJCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcpKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVwZ3JhZGUoKQoJICAgSWYgeW91ciBtb2R1bGUgdmVyc2lvbiBudW1iZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNpb24KCSAgIG51bWJlciBvZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSwgdGhlIENNUyBBZG1pbiB3aWxsIGdpdmUKCSAgIHlvdSBhIGNoYW5jZSB0byB1cGdyYWRlIHRoZSBtb2R1bGUuIFRoaXMgaXMgdGhlIGZ1bmN0aW9uCgkgICB0aGF0IGFjdHVhbGx5IGhhbmRsZXMgdGhlIHVwZ3JhZGUuCgkgICBJZGVhbGx5LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBoYW5kbGUgdXBncmFkZXMgaW5jcmVtZW50YWxseSwKCSAgIHNvIHlvdSBjb3VsZCB1cGdyYWRlIGZyb20gdmVyc2lvbiAwLjAuMSB0byAxMC41Ljcgd2l0aAoJICAgYSBzaW5nbGUgY2FsbC4gRm9yIGEgZ3JlYXQgZXhhbXBsZSBvZiB0aGlzLCBzZWUgdGhlIE5ld3MKCSAgIG1vZHVsZSBpbiB0aGUgc3RhbmRhcmQgQ01TIGluc3RhbGwuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICRvbGR2ZXJzaW9uOwoJCXN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQoJCXsKCQkJY2FzZSAiMS4wIjoKCQkJY2FzZSAiMS4wLjEiOgoJCQljYXNlICIxLjAuMiI6CgkJCWNhc2UgIjEuMC4zIjoKCQkJY2FzZSAiMS4wLjQiOgogICAgICAgIAkJLy8gcmVnaXN0ZXIgZXZlbnRzCiAgICAgICAgCQkkdGhpcy0+Q3JlYXRlRXZlbnQoICdQcmVmc1VwZGF0ZWQnICk7CiAgICAgICAgCQlicmVhazsKICAgICAgICAJCQoJCQljYXNlICIxLjAuNSI6CgkJCWNhc2UgIjEuMC42IjoKCQkJY2FzZSAiMS4wLjciOgoJCQljYXNlICIxLjAuOCI6CgkJCWNhc2UgIjEuMC45IjoKCQkJY2FzZSAiMS4wLjEwIjoKCQkJICBkZWZhdWx0OgoJCQkgICAgYnJlYWs7CgkJfQoJCQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndXBncmFkZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/SEOTools2.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNFT1Rvb2xzMiAtIFNldmVyYWwgdG9vbHMgdG8gaGVscCB3aXRoIFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uIGFuZCBjaGVjayBmb3Igc3Vib3B0aW1hbCBTRU8tcmVsYXRlZCB0aGluZ3MuCiMgVmVyc2lvbjogMS4wLjExLCBDbGlwIE1hZ2ljCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMTAgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIyBUaGlzIGZpbGUgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IE1vZHVsZU1ha2VyIG1vZHVsZSwgdmVyc2lvbiAwLjMuMgojIENvcHlyaWdodCAoYykgMjAxMCBieSBTYW11ZWwgR29sZHN0ZWluIChzamdAY21zbWFkZXNpbXBsZS5vcmcpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsKCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKJHJvb3RfdXJsID0gZW1wdHkoJF9TRVJWRVJbJ0hUVFBTJ10pID8gJGNvbmZpZ1sncm9vdF91cmwnXSA6ICRjb25maWdbJ3NzbF91cmwnXTsKCgoKY2xhc3MgU0VPVG9vbHMyIGV4dGVuZHMgQ01TTW9kdWxlCnsKCiAgZnVuY3Rpb24gR2V0TmFtZSgpCiAgewogICAgcmV0dXJuICdTRU9Ub29sczInOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0RnJpZW5kbHlOYW1lKCkKICAgVGhpcyBjYW4gcmV0dXJuIGFueSBzdHJpbmcsIHByZWZlcmFibHkgYSBsb2NhbGl6ZWQgbmFtZQogICBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQncyBzaG93biBpbiB0aGUKICAgQWRtaW4gTWVudXMgYW5kIHNlY3Rpb24gcGFnZXMgKGlmIHRoZSBtb2R1bGUgaGFzIGFuIGFkbWluCiAgIGNvbXBvbmVudCkuCgogICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRWZXJzaW9uKCkKICAgVGhpcyBjYW4gcmV0dXJuIGFueSBzdHJpbmcsIHByZWZlcmFibHkgYSBudW1iZXIgb3IKICAgc29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgZm9yIGRlc2lnbmF0aW5nIGEgdmVyc2lvbi4KICAgVGhlIENNUyB3aWxsIHVzZSB0aGlzIHRvIGlkZW50aWZ5IHdoZXRoZXIgb3Igbm90CiAgIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUgbW9kdWxlIGlzIGN1cnJlbnQsIGFuZAogICB0aGUgbW9kdWxlIHdpbGwgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHVwZ3JhZGUKICAgaXRzZWxmIGlmIHJlcXVlc3RlZC4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gJzEuMC4xMSc7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRIZWxwKCkKICAgVGhpcyByZXR1cm5zIEhUTUwgaW5mb3JtYXRpb24gb24gdGhlIG1vZHVsZS4KICAgVHlwaWNhbGx5LCB5b3UnbGwgd2FudCB0byBpbmNsdWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0bwogICB1c2UgdGhlIG1vZHVsZS4KCiAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0SGVscCgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3IoKQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQogICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBdXRob3IoKQogIHsKICAgIHJldHVybiAnQ2xpcCBNYWdpYyc7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3JFbWFpbCgpCiAgIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgTW9kdWxlCiAgIEFkbWluIGlmIHlvdSBjbGljayBvbiB0aGUgIkFib3V0IiBsaW5rLiBJdCBoZWxwcyB1c2VycwogICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywKICAgcXVlc3Rpb25zLCBjYXNlcyBvZiBiZWVyLCBhbmQvb3IgbGFyZ2Ugc3VtcyBvZiBtb25leS4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpCiAgewogICAgcmV0dXJuICdhZG1pbkBjbGlwbWFnaWMuY29tLmF1JzsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldENoYW5nZUxvZygpCiAgIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgbW9kdWxlCiAgIEFkbWluIGlmIHlvdSBjbGljayBvbiB0aGUgQWJvdXQgbGluay4gSXQgaGVscHMgdXNlcnMKICAgZmlndXJlIG91dCB3aGF0J3MgY2hhbmdlZCBiZXR3ZWVuIHJlbGVhc2VzLgogICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIElzUGx1Z2luTW9kdWxlKCkKICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyB1cG9uCiAgIHdoZXRoZXIgdXNlcnMgY2FuIGluY2x1ZGUgdGhlIG1vZHVsZSBpbiBhIHBhZ2Ugb3IKICAgdGVtcGxhdGUgdXNpbmcgYSBzbWFydHkgdGFnIG9mIHRoZSBmb3JtCiAgIHtjbXNfbW9kdWxlIG1vZHVsZT0nU0VPVG9vbHMyJyBwYXJhbTE9dmFsIHBhcmFtMj12YWwuLi59CgogICBJZiB5b3VyIG1vZHVsZSBkb2VzIG5vdCBnZXQgaW5jbHVkZWQgaW4gcGFnZXMgb3IKICAgdGVtcGxhdGVzLCByZXR1cm4gImZhbHNlIiBoZXJlLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEhhc0FkbWluKCkKICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSwgZGVwZW5kaW5nIG9uCiAgIHdoZXRoZXIgeW91ciBtb2R1bGUgYWRkcyBhbnl0aGluZyB0byB0aGUgQWRtaW4gYXJlYSBvZgogICB0aGUgc2l0ZS4gRm9yIHRoZSByZXN0IG9mIHRoZXNlIGNvbW1lbnRzLCBJJ2xsIGJlIGNhbGxpbmcKICAgdGhlIGFkbWluIHBhcnQgb2YgeW91ciBtb2R1bGUgdGhlICJBZG1pbiBQYW5lbCIgZm9yCiAgIHdhbnQgb2YgYSBiZXR0ZXIgdGVybS4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBIYXNBZG1pbigpCiAgewogICAgcmV0dXJuIHRydWU7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QWRtaW5TZWN0aW9uKCkKICAgSWYgeW91ciBtb2R1bGUgaGFzIGFuIEFkbWluIFBhbmVsLCB5b3UgY2FuIHNwZWNpZnkKICAgd2hpY2ggQWRtaW4gU2VjdGlvbiAob3IgdG9wLWxldmVsIEFkbWluIE1lbnUpIGl0IHNob3dzCiAgIHVwIGluLiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIHRvIHNwZWNpZnkgdGhhdAogICBzZWN0aW9uLiBWYWxpZCByZXR1cm4gdmFsdWVzIGFyZToKCiAgIG1haW4gICAgICAgIC0gdGhlIE1haW4gbWVudSB0YWIuCiAgIGNvbnRlbnQgICAgIC0gdGhlIENvbnRlbnQgbWVudQogICBsYXlvdXQgICAgICAtIHRoZSBMYXlvdXQgbWVudQogICB1c2Vyc2dyb3VwcyAtIHRoZSBVc2VycyBhbmQgR3JvdXBzIG1lbnUKICAgZXh0ZW5zaW9ucyAgLSB0aGUgRXh0ZW5zaW9ucyBtZW51ICh0aGlzIGlzIHRoZSBkZWZhdWx0KQogICBzaXRlYWRtaW4gICAtIHRoZSBTaXRlIEFkbWluIG1lbnUKICAgdmlld3NpdGUgICAgLSB0aGUgVmlldyBTaXRlIG1lbnUgdGFiCiAgIGxvZ291dCAgICAgIC0gdGhlIExvZ291dCBtZW51IHRhYgoKICAgTm90ZSB0aGF0IGlmIHlvdSBwbGFjZSB5b3VyIG1vZHVsZSBpbiB0aGUgbWFpbiwKICAgdmlld3NpdGUsIG9yIGxvZ291dCBzZWN0aW9ucywgaXQgd2lsbCBzaG93IHVwIGluIHRoZQogICBtZW51cywgYnV0IHdpbGwgbm90IGJlIHZpc2libGUgaW4gYW55IHRvcC1sZXZlbAogICBzZWN0aW9uIHBhZ2VzLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCiAgewogICAgcmV0dXJuICdjb250ZW50JzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKICAgY2FuIGhhdmUgaXQgcmV0dXJuIGEgZGVzY3JpcHRpb24gc3RyaW5nIHRoYXQgZ2V0cyBzaG93bgogICBpbiB0aGUgQWRtaW4gU2VjdGlvbiBwYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZS4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBWaXNpYmxlVG9BZG1pblVzZXIoKQogICBJZiB5b3VyIG1vZHVsZSBkb2VzIGhhdmUgYW4gQWRtaW4gUGFuZWwsIHlvdQogICBjYW4gY29udHJvbCB3aGV0aGVyIG9yIG5vdCBpdCdzIGRpc3BsYXllZCBieSB0aGUgYm9vbGVhbgogICB0aGF0IGlzIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kLiBUaGlzIGlzIHByaW1hcmlseSB1c2VkCiAgIHRvIGhpZGUgbW9kdWxlcyBmcm9tIGFkbWlucyB3aG8gbGFjayBwZXJtaXNzaW9uIHRvIHVzZQogICB0aGVtLgoKICAgVHlwaWNhbGx5LCB5b3UnbGwgdXNlIHNvbWUgcGVybWlzc2lvbiB0byBzZXQgdGhpcwogICAoZS5nLiwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU29tZSBQZXJtaXNzaW9uJyk7ICkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQogIHsKICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdFZGl0IFNFTyBTZXR0aW5ncycpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIENoZWNrQWNjZXNzKCkKICAgVGhpcyB3cmFwcGVyIGZ1bmN0aW9uIHdpbGwgY2hlY2sgYWdhaW5zdCB0aGUgc3BlY2lmaWVkIHBlcm1pc3Npb24sCiAgIGFuZCBkaXNwbGF5IGFuIGVycm9yIHBhZ2UgaWYgdGhlIHVzZXIgZG9lc24ndCBoYXZlIGFkZXF1YXRlIHBlcm1pc3Npb25zLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIENoZWNrQWNjZXNzKCRwZXJtID0gJ0VkaXQgU0VPIFNldHRpbmdzJykKICB7CiAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkcGVybSk7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBEaXNwbGF5RXJyb3JQYWdlKCkKICAgVGhpcyBpcyBhIHNpbXBsZSBmdW5jdGlvbiBmb3IgZ2VuZXJhdGluZyBlcnJvciBwYWdlcy4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBEaXNwbGF5RXJyb3JQYWdlKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5faWQsICRtZXNzYWdlPScnKQogIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfZXJyb3InLCAkdGhpcy0+TGFuZygnZXJyb3InKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdtZXNzYWdlJywgJG1lc3NhZ2UpOwoKICAgIC8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlcnJvci50cGwnKTsKICB9CgoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0RGVwZW5kZW5jaWVzKCkKICAgWW91ciBtb2R1bGUgbWF5IG5lZWQgYW5vdGhlciBtb2R1bGUgdG8gYWxyZWFkeSBiZSBpbnN0YWxsZWQKICAgYmVmb3JlIHlvdSBjYW4gaW5zdGFsbCBpdC4KICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIGFuZAogICBtaW5pbXVtIHZlcnNpb24gbnVtYmVycyB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLgoKICAgSXQgc2hvdWxkIHJldHVybiBhbiBoYXNoLCBlZy4KICAgcmV0dXJuIGFycmF5KCdzb21lbW9kdWxlJz0+JzEuMCcsICdvdGhlcm1vZHVsZSc9PicxLjEnKTsKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQogIHsKICAgIHJldHVybiBhcnJheSgpOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgTWluaW11bUNNU1ZlcnNpb24oKQogICBZb3VyIG1vZHVsZSBtYXkgcmVxdWlyZSBmdW5jdGlvbnMgb3Igb2JqZWN0cyBmcm9tCiAgIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBDTVMgTWFkZSBTaW1wbGUuCiAgIEV2ZXIgc2luY2UgdmVyc2lvbiAwLjExLCB5b3UgY2FuIHNwZWNpZnkgd2hpY2ggbWluaW11bQogICBDTVMgTVMgdmVyc2lvbiBpcyByZXF1aXJlZCBmb3IgeW91ciBtb2R1bGUsIHdoaWNoIHdpbGwKICAgcHJldmVudCBpdCBmcm9tIGJlaW5nIGluc3RhbGxlZCBieSBhIHZlcnNpb24gb2YgQ01TIHRoYXQKICAgY2FuJ3QgcnVuIGl0LgoKICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlCiAgIG1pbmltdW0gdmVyc2lvbiB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gIjEuOS4yIjsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBNYXhpbXVtQ01TVmVyc2lvbigpCiAgIFlvdSBtYXkgd2FudCB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIHVzaW5nIHlvdXIgbW9kdWxlIGluCiAgIGZ1dHVyZSB2ZXJzaW9ucyBvZiBDTVMgTWFkZSBTaW1wbGUsIGVzcGVjaWFsbHkgaWYgeW91CiAgIHRoaW5rIEFQSSBmZWF0dXJlcyB5b3UgdXNlIG1heSBjaGFuZ2UgLS0gYWZ0ZXIgYWxsLCB5b3UKICAgbmV2ZXIgcmVhbGx5IGtub3cgaG93IHRoZSBDTVMgTVMgQVBJIGNvdWxkIGV2b2x2ZS4KCiAgIFNvLCB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIGZsb29kaW5nIHlvdSB3aXRoIGJ1ZyByZXBvcnRzCiAgIHdoZW4gYSBuZXcgdmVyc2lvbiBvZiBDTVMgTVMgaXMgcmVsZWFzZWQsIHlvdSBjYW4gc2ltcGx5CiAgIHJlc3RyaWN0IHRoZSB2ZXJzaW9uLiBUaGVuLCBvZiBjb3Vyc2UsIHRoZSBvbnVzIGlzIG9uIHlvdQogICB0byByZWxlYXNlIGEgbmV3IHZlcnNpb24gb2YgeW91ciBtb2R1bGUgd2hlbiBhIG5ldyB2ZXJzaW9uCiAgIG9mIHRoZSBDTVMgaXMgcmVsZWFzZWQuLi4KCiAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQogICBtYXhpbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSBzdXBwb3J0cy4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAvKiBmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpCiAgIHsKICAgcmV0dXJuOwogICB9CiAgICovCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEluc3RhbGxQb3N0TWVzc2FnZSgpCiAgIEFmdGVyIGluc3RhbGxhdGlvbiwgdGhlcmUgbWF5IGJlIHRoaW5ncyB5b3Ugd2FudCB0bwogICBjb21tdW5pY2F0ZSB0byB5b3VyIGFkbWluLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYQogICBzdHJpbmcgd2hpY2ggd2lsbCBiZSBkaXNwbGF5ZWQuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgIEFmdGVyIHJlbW92aW5nIGEgbW9kdWxlLCB0aGVyZSBtYXkgYmUgdGhpbmdzIHlvdSB3YW50IHRvCiAgIGNvbW11bmljYXRlIHRvIHlvdXIgYWRtaW4uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhCiAgIHN0cmluZyB3aGljaCB3aWxsIGJlIGRpc3BsYXllZC4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7CiAgfQoKCiAgLyoqCiAgICogVW5pbnN0YWxsUHJlTWVzc2FnZSgpCiAgICogVGhpcyBhbGxvd3MgeW91IHRvIGRpc3BsYXkgYSBtZXNzYWdlIGFsb25nIHdpdGggYSBZZXMvTm8gZGlhbG9nIGJveC4gSWYgdGhlIHVzZXIgcmVzcG9uZHMKICAgKiBpbiB0aGUgYWZmaXJtYXRpdmUgdG8geW91ciBtZXNzYWdlLCB0aGUgdW5pbnN0YWxsIHdpbGwgcHJvY2VlZC4gSWYgdGhleSByZXNwb25kIGluIHRoZQogICAqIG5lZ2F0aXZlLCB0aGUgdW5pbnN0YWxsIHdpbGwgYmUgY2FuY2VsZWQuIFRodXMsIHlvdXIgbWVzc2FnZSBzaG91bGQgYmUgb2YgdGhlIGZvcm0KICAgKiAiQWxsIG1vZHVsZSBkYXRhIHdpbGwgYmUgZGVsZXRlZC4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIG1vZHVsZT8iCiAgICoKICAgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgZGlhbG9nLCBoYXZlIHRoaXMgbWV0aG9kIHJldHVybiBhIEZBTFNFLCB3aGljaCB3aWxsIGNhdXNlIHRoZQogICAqIG1vZHVsZSB0byB1bmluc3RhbGwgaW1tZWRpYXRlbHkgaWYgdGhlIHVzZXIgY2xpY2tzIHRoZSAidW5pbnN0YWxsIiBsaW5rLgogICAqLwogIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOwogIH0KCiAgZnVuY3Rpb24gR2V0Tm90aWZpY2F0aW9uT3V0cHV0KCRwcmlvcml0eSA9IDMpIHsKICAgIGlmIChjb3VudCgkdGhpcy0+Z2V0VXJnZW50QWxlcnRzKCkpID4gMCkgewogICAgICAkdGV4dCA9ICR0aGlzLT5MYW5nKCdwcm9ibGVtX2FsZXJ0JyxBcnJheSgkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICR0aGlzLT5MYW5nKCdwcm9ibGVtX2xpbmtfdGl0bGUnKSkpKTsKCiAgICAgICRvYmogPSBuZXcgU3RkQ2xhc3M7CiAgICAgICRvYmotPnByaW9yaXR5ID0gMzsKICAgICAgJG9iai0+aHRtbCA9ICR0ZXh0OwoKICAgICAgcmV0dXJuICRvYmo7CiAgICB9CiAgfQoKCiAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsKICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwoKICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3Nob3diYXNlJywgJ3RydWUnLCAkdGhpcy0+TGFuZygnaGVscF9zaG93YmFzZScpKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaG93YmFzZScsIENMRUFOX1NUUklORyk7CiAgICAKICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXModHJ1ZSk7CgogIH0KCgogIGZ1bmN0aW9uIGdldFVyZ2VudEFsZXJ0cygpIHsKICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAkcm9vdF91cmwgPSBlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgPyAkY29uZmlnWydyb290X3VybCddIDogJGNvbmZpZ1snc3NsX3VybCddOwoKICAgICRhbGVydHMgPSBBcnJheSgpOwogICAgLy8gRW5hYmxlIFByZXR0eSBVUkxzCiAgICBpZiAoKCRjb25maWdbJ3VybF9yZXdyaXRpbmcnXSAhPSAibW9kX3Jld3JpdGUiKSAmJiAoJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddICE9ICdpbnRlcm5hbCcpKSB7CiAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzeXN0ZW0nOwogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdhY3RpdmF0ZV9wcmV0dHlfdXJscycpOwogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5MYW5nKCdwcmV0dHlfdXJsc19oZWxwJyk7CiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgIH0KICAgIC8vIE5vIE1ldGEgdGFncyBhcmUgaW5zZXJ0ZWQKICAgIGlmICgoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLDApICE9IDEpICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywwKSAhPSAxKSkgewogICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc2V0dGluZ3MnOwogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCd1c2Vfc3RhbmRhcmRfb3JfZHVibGluY29yZV9tZXRhJyk7CiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfQoKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsMCkgIT0gMSkgewogICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykgIT0gJycpIHsKICAgICAgICAvLyBQYWdlcyB3aXRob3V0IGRlc2NyaXB0aW9uCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqLGMuY29udGVudF9pZCBBUyBjaWQsIGMudHlwZSBBUyBjdHlwZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IGMgTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAgT04gKGMuY29udGVudF9pZCA9IHAuY29udGVudF9pZCBBTkQgcC5wcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIikgV0hFUkUgKHAuY29udGVudCBJUyBOVUxMIE9SIHAuY29udGVudCA9ICIiKSBBTkQgYy50eXBlID0gImNvbnRlbnQiIExJTUlUIDAsMjEnOwogICAgICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewogICAJCSAgCSAgaWYgKCRwcm9ibGVtWydjdHlwZSddID09ICdjb250ZW50JykgewogICAJCSAgCSAgICAkYWxlcnQgPSBBcnJheSgpOwogICAJCSAgCSAgICAkYWxlcnRbJ2dyb3VwJ10gPSAncGFnZXMnOwogICAJCSAgCSAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdtZXRhX2Rlc2NyaXB0aW9uX21pc3NpbmcnLEFycmF5KCRwcm9ibGVtWydjb250ZW50X25hbWUnXSkpOwogICAJCSAgCSAgICBpZiAoaXNzZXQoJF9HRVRbJ3NwXyddKSkgewogICAJCSAgCSAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJHJvb3RfdXJsLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7CiAgIAkJICAJICAgIH1lbHNlewogICAJCSAgCSAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJHJvb3RfdXJsLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnY2lkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlX3RvX2ZpeCcpLic8L2E+JzsKICAgCQkgIAkgICAgfQogICAJCSAgCSAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgIAkJICAJICB9CiAgICAgICAgfQogICAgICB9ZWxzZXsKICAgICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7CiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnc2V0X3VwX2Rlc2NyaXB0aW9uX2Jsb2NrJyk7CiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgfQogICAgfWVsc2VpZihzdHJwb3MoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSwne2tleXdvcmRzfScpID09PSBmYWxzZSkgewogICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc2V0dGluZ3MnOwogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdzZXRfdXBfYXV0b19kZXNjcmlwdGlvbicpOwogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgIH0KCiAgICAvLyBzaXRlbWFwLnhtbCBub3Qgd3JpdGVhYmxlCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7CiAgICAgIGlmICghaXNfd3JpdGVhYmxlKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9zaXRlbWFwLnhtbCcpKSB7CiAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc3lzdGVtJzsKICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdzaXRlbWFwX25vdF93cml0ZWFibGUnKTsKICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5MYW5nKCdjaG1vZF9zaXRlbWFwJyk7CiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICB9CiAgICB9CgogICAgLy8gcm9ib3RzLnR4dCBub3Qgd3JpdGVhYmxlCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpID09IDEpIHsKICAgICAgJGZwID0gQGZvcGVuKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9yb2JvdHMudHh0JywiYSIpOwogICAgICBAZmNsb3NlKCRmcCk7CiAgICAgIGlmICghaXNfd3JpdGVhYmxlKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9yb2JvdHMudHh0JykpIHsKICAgICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzeXN0ZW0nOwogICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ3JvYm90c19ub3Rfd3JpdGVhYmxlJyk7CiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+TGFuZygnY2htb2Rfcm9ib3RzJyk7CiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICB9CiAgICB9CgogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsMCkgPT0gMSkgewogICAgICAvLyBObyBPcGVuR3JhcGggYWRtaW4gc2V0CiAgICAgIGlmICgoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJycpID09ICcnKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJykgPT0gJycpKSB7CiAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsKICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdub19vcGVuZ3JhcGhfYWRtaW5zJyk7CiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgfQogICAgICAvLyBObyBPcGVuR3JhcGggcGFnZSB0eXBlIHNldAogICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKSA9PSAnJykgewogICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnbm9fb3BlbmdyYXBoX3R5cGUnKTsKICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICB9CiAgICAgIC8vIE5vIE9wZW5HcmFwaCBzaXRlbmFtZSBzZXQKICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJycpID09ICcnKSB7CiAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsKICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdub19vcGVuZ3JhcGhfc2l0ZW5hbWUnKTsKICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICB9CiAgICAgIC8vIE5vIE9wZW5HcmFwaCBpbWFnZSBzZXQKICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpID09ICcnKSB7CiAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsKICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdub19vcGVuZ3JhcGhfaW1hZ2UnKTsKICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICB9CiAgICB9CgogICAgcmV0dXJuICRhbGVydHM7CiAgfQoKICBmdW5jdGlvbiBnZXRJbXBvcnRhbnRBbGVydHMoKSB7CiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgJGFsZXJ0cyA9IEFycmF5KCk7CiAgICAkcm9vdF91cmwgPSBlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgPyAkY29uZmlnWydyb290X3VybCddIDogJGNvbmZpZ1snc3NsX3VybCddOwoKICAgIC8vIFBhZ2VzIHdpdGggc2hvcnQgZGVzY3JpcHRpb24KICAgICRxdWVyeSA9ICdTRUxFQ1QgKixjLmNvbnRlbnRfaWQgQVMgY2lkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYyBJTk5FUiBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAgT04gKGMuY29udGVudF9pZCA9IHAuY29udGVudF9pZCBBTkQgcC5wcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIikgV0hFUkUgQ0hBUl9MRU5HVEgocC5jb250ZW50KSA8IDc1IEFORCBjLnR5cGUgPSAiY29udGVudCIgQU5EIHAuY29udGVudCA8PiAiIiBMSU1JVCAwLDIxJzsKICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICBpZiAoJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApIHsKICAgICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewogICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ2Rlc2NyaXB0aW9ucyc7CiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnbWV0YV9kZXNjcmlwdGlvbl9zaG9ydCcsQXJyYXkoJHByb2JsZW1bJ2NvbnRlbnRfbmFtZSddKSk7CiAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsKICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJHJvb3RfdXJsLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7CiAgICAgICAgfQogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgfQogICAgfQoKICAgIC8vIFBhZ2VzIHdpdGggZHVwbGljYXRlIHRpdGxlCiAgICAkcXVlcnkgPSAnU0VMRUNUIGMxLmNvbnRlbnRfYWxpYXMgQVMgYzFuYW1lLCBjMS5jb250ZW50X2lkIEFTIGMxaWQsIGMyLmNvbnRlbnRfYWxpYXMgQVMgYzJuYW1lLCBjMi5jb250ZW50X2lkIEFTIGMyaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBjMSBJTk5FUiBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IGMyIE9OIChjMS5jb250ZW50X25hbWUgPSBjMi5jb250ZW50X25hbWUgQU5EIGMxLmNvbnRlbnRfaWQgPCBjMi5jb250ZW50X2lkKSBXSEVSRSBjMS50eXBlID0gImNvbnRlbnQiIEFORCBjMi50eXBlID0gImNvbnRlbnQiIExJTUlUIDAsMjEnOwogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgIGlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgewoKICAgICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewogICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3RpdGxlcyc7CiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZHVwbGljYXRlX3RpdGxlcycsQXJyYXkoJHByb2JsZW1bJ2MxbmFtZSddLCRwcm9ibGVtWydjMm5hbWUnXSkpOwogICAgICAgIGlmIChpc3NldCgkX0dFVFsnc3BfJ10pKSB7CiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMWlkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzFuYW1lJ10pKS4nPC9hPic7CiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMmlkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzJuYW1lJ10pKS4nPC9hPic7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2MxaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRwcm9ibGVtWydjMW5hbWUnXSkpLic8L2E+JzsKICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJHJvb3RfdXJsLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnYzJpZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHByb2JsZW1bJ2MybmFtZSddKSkuJzwvYT4nOwogICAgICAgIH0KICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgIH0KICAgIH0KICAgIC8vIFBhZ2VzIHdpdGggZHVwbGljYXRlIGRlc2NyaXB0aW9uCiAgICAkcXVlcnkgPSAnU0VMRUNUIHAxLmNvbnRlbnRfaWQgQVMgYzFpZCwgcDIuY29udGVudF9pZCBBUyBjMmlkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcDEgSU5ORVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBwMiBPTiAocDEucHJvcF9uYW1lID0gcDIucHJvcF9uYW1lIEFORCBwMS5wcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIiBBTkQgcDEuY29udGVudF9pZCA8IHAyLmNvbnRlbnRfaWQgQU5EIHAxLmNvbnRlbnQgPD4gIiIgQU5EIHAyLmNvbnRlbnQgPD4gIiIpIFdIRVJFIHAxLmNvbnRlbnQgPSBwMi5jb250ZW50IExJTUlUIDAsMjEnOwogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgIGlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgewoKICAgICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgY29udGVudF9pZCwgY29udGVudF9uYW1lIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgY29udGVudF9pZCA9ICcuJHByb2JsZW1bJ2MxaWQnXS4nIE9SIGNvbnRlbnRfaWQgPSAnLiRwcm9ibGVtWydjMmlkJ107CiAgICAgICAgJHJlc3VsdDEgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgICAgJGZpcnN0ID0gJHJlc3VsdDEtPmZldGNoUm93KCk7CiAgICAgICAgJHNlY29uZCA9ICRyZXN1bHQxLT5mZXRjaFJvdygpOwogICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ2Rlc2NyaXB0aW9ucyc7CiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZHVwbGljYXRlX2Rlc2NyaXB0aW9ucycsQXJyYXkoJGZpcnN0Wydjb250ZW50X25hbWUnXSwkc2Vjb25kWydjb250ZW50X25hbWUnXSkpOwogICAgICAgIGlmIChpc3NldCgkX0dFVFsnc3BfJ10pKSB7CiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRmaXJzdFsnY29udGVudF9pZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJGZpcnN0Wydjb250ZW50X25hbWUnXSkpLic8L2E+JzsKICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJHJvb3RfdXJsLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHNlY29uZFsnY29udGVudF9pZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHNlY29uZFsnY29udGVudF9uYW1lJ10pKS4nPC9hPic7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJGZpcnN0Wydjb250ZW50X2lkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkZmlyc3RbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOwogICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kcm9vdF91cmwuJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRzZWNvbmRbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOwogICAgICAgIH0KICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgIH0KICAgIH0KICAgIC8vIE5vIGF1dGhvciBwcm92aWRlZAogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpID09ICcnKSB7CiAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7CiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ3Byb3ZpZGVfYW5fYXV0aG9yJyk7CiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfQogICAgcmV0dXJuICRhbGVydHM7CiAgfQoKICBmdW5jdGlvbiBnZXROb3RpY2VBbGVydHMoKSB7CiAgICAkYWxlcnRzID0gQXJyYXkoKTsKICAgIC8vIE5vIHN0YW5kYXJkIG1ldGEKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsMSkgIT0gMSkgewogICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCd1c2Vfc3RhbmRhcmRfbWV0YScpOwogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgIH0KICAgIC8vIFN1Ym1pdCBhIHNpdGVtYXAKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpICE9IDEpIHsKICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnY3JlYXRlX2Ffc2l0ZW1hcCcpOwogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7CiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgIH1lbHNlaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSkgIT0gMSkgewogICAgICAvLyBBdXRvbWF0aWNhbGx5IHN1Ym1pdCB0aGUgc2l0ZW1hcAogICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdhdXRvbWF0aWNhbGx5X3VwbG9hZF9zaXRlbWFwJyk7CiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsKICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfQogICAgLy8gQ3JlYXRlIGEgcm9ib3RzLnR4dCBmaWxlCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpICE9IDEpIHsKICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnY3JlYXRlX3JvYm90cycpOwogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7CiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgIH0KICAgIC8vIFNldCBhIGRlZmF1bHQgaW1hZ2UKICAgIHJldHVybiAkYWxlcnRzOwogIH0KCiAgZnVuY3Rpb24gZ2V0X2tleXdvcmRzKCRzb3VyY2UsICRtaW5sZW5ndGggPSA2KSB7CiAgICAkc291cmNlID0gcHJlZ19yZXBsYWNlKCcvXHtbXlx9XStcfS9pc1UnLCAnJywgdXRmOF9kZWNvZGUoJHNvdXJjZSkpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCJcbiIsIiAiLHN0cmlwX3RhZ3MoJHNvdXJjZSkpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCctJywnICcsJHNvdXJjZSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJy4nLCcgJywkc291cmNlKTsKICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnLCcsJyAnLCRzb3VyY2UpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCchJywnICcsJHNvdXJjZSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJz8nLCcgJywkc291cmNlKTsKICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnOicsJyAnLCRzb3VyY2UpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCcgICcsJyAnLCRzb3VyY2UpOwogICAgJGtleXdvcmRzID0gZXhwbG9kZSgnICcsJHNvdXJjZSk7CiAgICBmb3JlYWNoICgka2V5d29yZHMgYXMgJGtleT0+JHZhbHVlKSB7CiAgICAgIGlmIChzdHJsZW4oJHZhbHVlKSA8ICRtaW5sZW5ndGgpIHsKICAgICAgICB1bnNldCgka2V5d29yZHNbJGtleV0pOwogICAgICB9ZWxzZXsKICAgICAgICAka2V5d29yZHNbJGtleV0gPSBodG1sZW50aXRpZXModHJpbSgkdmFsdWUpKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuICRrZXl3b3JkczsKICB9CgogIGZ1bmN0aW9uIGdldF9oZWFkbGluZXMoJGZpbGUpewogICAgJGgxdGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoMS4qPikoXHcuKikoPFwvaDE+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsKICAgICRjb250ZW50ID0gIiI7CiAgICBmb3JlYWNoKCRwYXR0ZXJuc1syXSBhcyAkdGFnKSB7CiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOwogICAgfQogICAgJGgydGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoMi4qPikoXHcuKikoPFwvaDI+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsKICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsKICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7CiAgICB9CiAgICAkaDN0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgzLio+KShcdy4qKSg8XC9oMz4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOwogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgewogICAgICAkY29udGVudCAuPSAiICIuJHRhZzsKICAgIH0KICAgICRoNHRhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDQuKj4pKFx3LiopKDxcL2g0PikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7CiAgICBmb3JlYWNoKCRwYXR0ZXJuc1syXSBhcyAkdGFnKSB7CiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOwogICAgfQogICAgJGg1dGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoNS4qPikoXHcuKikoPFwvaDU+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsKICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsKICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7CiAgICB9CiAgICAkaDZ0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg2Lio+KShcdy4qKSg8XC9oNj4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOwogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgewogICAgICAkY29udGVudCAuPSAiICIuJHRhZzsKICAgIH0KICAgIHJldHVybiAkY29udGVudDsKICB9CgogIGZ1bmN0aW9uIGdldEtleXdvcmRTdWdnZXN0aW9ucygkY29udGVudF9pZCkgewogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiAgICBpZiAoISRjdXJjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkICgkY29udGVudF9pZCkpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgJGRlc2NyaXB0aW9uX2lkID0gc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSk7CgogICAgLyogR2VuZXJhdGUga2V5d29yZHMgZnJvbSBwYWdlIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgY29udGVudCAqLwogICAgJHRpdGxlX2tleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygkY3VyY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgnY29udGVudF9lbicpLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOwoKICAgICRkZXNjcmlwdGlvbl9rZXl3b3JkcyA9ICR0aGlzLT5nZXRfa2V5d29yZHMoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGRlc2NyaXB0aW9uX2lkKSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpKTsKCiAgICAkaGVhZGxpbmVfa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCR0aGlzLT5nZXRfaGVhZGxpbmVzKCRjdXJjb250ZW50LT5OYW1lKCkpLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOwoKICAgICRjb250ZW50X2tleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygkY3VyY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgnY29udGVudF9lbicpLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOwoKICAgICRvdGhlcl9rZXl3b3JkcyA9IEFycmF5KCk7CgogICAgZm9yZWFjaCgkdGl0bGVfa2V5d29yZHMgYXMgJGtleXdvcmQpIHsKICAgICAgaWYgKCFpc3NldCgkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdKSkgewogICAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAwOwogICAgICB9CiAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCc2Jyk7CiAgICB9CiAgICBmb3JlYWNoKCRkZXNjcmlwdGlvbl9rZXl3b3JkcyBhcyAka2V5d29yZCkgewogICAgICBpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7CiAgICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7CiAgICAgIH0KICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCc0Jyk7CiAgICB9CiAgICBmb3JlYWNoKCRoZWFkbGluZV9rZXl3b3JkcyBhcyAka2V5d29yZCkgewogICAgICBpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7CiAgICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7CiAgICAgIH0KICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCcyJyk7CiAgICB9CiAgICBmb3JlYWNoKCRjb250ZW50X2tleXdvcmRzIGFzICRrZXl3b3JkKSB7CiAgICAgIGlmICghaXNzZXQoJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSkpIHsKICAgICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gMDsKICAgICAgfQogICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdICs9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywnMScpOwogICAgfQoKICAgIGFyc29ydCgkb3RoZXJfa2V5d29yZHMpOwoKICAgICRleGNsdWRlX2xpc3QgPSBleHBsb2RlKCcgJyxzdHJ0b3VwcGVyKHV0ZjhfZGVjb2RlKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCcnKSkpKTsKCiAgICBmb3JlYWNoICgkb3RoZXJfa2V5d29yZHMgYXMgJGtleT0+JHZhbHVlKSB7CiAgICAgIGlmICgkdmFsdWUgPCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJzcnKSkgewogICAgICAgIHVuc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5XSk7CiAgICAgIH1lbHNlaWYgKGluX2FycmF5KHN0cnRvdXBwZXIoJGtleSksJGV4Y2x1ZGVfbGlzdCkpIHsKICAgICAgICB1bnNldCgkb3RoZXJfa2V5d29yZHNbJGtleV0pOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuICRvdGhlcl9rZXl3b3JkczsKICB9CgogIGZ1bmN0aW9uIGNyZWF0ZVJvYm90c1RYVCgpIHsKICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAkcm9vdF91cmwgPSBlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgPyAkY29uZmlnWydyb290X3VybCddIDogJGNvbmZpZ1snc3NsX3VybCddOwoKICAgICRmcCA9IEBmb3BlbigkY29uZmlnWydyb290X3BhdGgnXS4nL3JvYm90cy50eHQnLCd3Jyk7CgogICAgLy8gQ3JlYXRlIHJvYm90cy50eHQKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpID09IDEpIHsKICAgICAgZndyaXRlKCRmcCwgIlNpdGVtYXA6ICIuJHJvb3RfdXJsLiIvc2l0ZW1hcC54bWxcbiIpOwogICAgfQogICAgQGZ3cml0ZSgkZnAsICJVc2VyLWFnZW50OiAqXG4iKTsKICAgIEBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJHJvb3RfdXJsLiIvY29udHJpYi9cbiIpOwogICAgQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kcm9vdF91cmwuIi9kb2MvXG4iKTsKICAgIEBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJHJvb3RfdXJsLiIvbGliL1xuIik7CiAgICBAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRyb290X3VybC4iL21vZHVsZXMvXG4iKTsKICAgIEBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJHJvb3RfdXJsLiIvcGx1Z2lucy9cbiIpOwogICAgQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kcm9vdF91cmwuIi9zY3JpcHRzL1xuIik7CiAgICBAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRyb290X3VybC4iL3RtcC9cbiIpOwoKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGluZGV4YWJsZSA9IDAiOwogICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKICAgICRjb250ZW50b3BzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKICAgIHdoaWxlICgkcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsKCiAgICAgIGlmICgkY3VyY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCAoJHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIHsKICAgICAgICAkdXJsID0gJGN1cmNvbnRlbnQtPkdldFVSTCgpOwogICAgICAgIEBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJHVybC4iXG4iKTsKICAgICAgfQogICAgfQogICAgQGZjbG9zZSgkZnApOwogIH0KCiAgZnVuY3Rpb24gY3JlYXRlU2l0ZW1hcCgkcHVzaCA9IGZhbHNlKSB7CiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgJHJvb3RfdXJsID0gZW1wdHkoJF9TRVJWRVJbJ0hUVFBTJ10pID8gJGNvbmZpZ1sncm9vdF91cmwnXSA6ICRjb25maWdbJ3NzbF91cmwnXTsKICAgICRyb290X3BhdGggPSAkY29uZmlnWydyb290X3BhdGgnXTsKICAgICRtYXBfcGF0aCA9ICRyb290X3BhdGguRElSRUNUT1JZX1NFUEFSQVRPUi4nc2l0ZW1hcC54bWwnOwogICAgCiAgICAkZnAgPSBmb3BlbigkbWFwX3BhdGgsJ3cnKTsKICAgIC8vIENyZWF0ZSBzaXRlbWFwCgogICAgZndyaXRlKCRmcCwgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+XG4iKTsKICAgIGZ3cml0ZSgkZnAsICI8dXJsc2V0IHhtbG5zPSdodHRwOi8vd3d3LnNpdGVtYXBzLm9yZy9zY2hlbWFzL3NpdGVtYXAvMC45Jz5cblxuIik7CgogICAgJGNvbnRlbnRvcHMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwoKICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IFdIRVJFIGFjdGl2ZSA9IDEgQU5EIHR5cGUgIT0gImVycm9ycGFnZSIgT1JERVIgQlkgaGllcmFyY2h5IEFTQyc7CiAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgCiAgICBpZiAoJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDAgKSB7CiAgICAgIHdoaWxlICgkcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsKICAgICAgICAKICAgICAgICBpZiAoJGN1cmNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQgKCRwYWdlWydjb250ZW50X2lkJ10pKSB7CgovLyAgICAgICAgICBpZiAoJGN1cmNvbnRlbnQtPkFjdGl2ZSgpICYmICRjdXJjb250ZW50LT5TaG93SW5NZW51KCkpIHsKICAgICAgICAgIGlmICgkY3VyY29udGVudC0+QWN0aXZlKCkpIHsKICAgICAgICAgICAgJHVybCA9ICRjdXJjb250ZW50LT5HZXRVUkwoKTsKICAgICAgICAgICAgaWYgKCR1cmwgPT0gIiMiKSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCgovLyAgICAgICAgICAgIGlmIChzdHJwb3MoJHVybCwgJHJvb3RfdXJsKSA9PT0gZmFsc2UpIHsKLy8gICAgICAgICAgICAgIGNvbnRpbnVlOwovLyAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHN0cnBvcyhzdHJzdHIoJHVybCwnOicpLCBzdHJzdHIoJHJvb3RfdXJsLCc6JykpID09PSBmYWxzZSkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAkcHJpb3JpdHkgPSA4MDsKICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgc3Vic3RyX2NvdW50KCRwYWdlWydoaWVyYXJjaHknXSwnLicpOyAkaSsrKSB7CiAgICAgICAgICAgICAgJHByaW9yaXR5ICA9ICRwcmlvcml0eSAvIDI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRwYWdlWydkZWZhdWx0X2NvbnRlbnQnXSA9PSAxKSB7CiAgICAgICAgICAgICAgJHByaW9yaXR5ID0gMTAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gJy4kcGFnZVsnY29udGVudF9pZCddOwogICAgICAgICAgICAkcmVzdWx0MiA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAgICAgJGluZm8gPSAkcmVzdWx0Mi0+ZmV0Y2hSb3coKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRpbmZvWydwcmlvcml0eSddKSAmJiAoJGluZm9bJ3ByaW9yaXR5J10gIT0gMCkgJiYgKCRpbmZvWydwcmlvcml0eSddICE9ICIiKSkgewogICAgICAgICAgICAgICRwcmlvcml0eSA9ICRpbmZvWydwcmlvcml0eSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoIWlzc2V0KCRpbmZvWydpbmRleGFibGUnXSkgfHwgKCRpbmZvWydpbmRleGFibGUnXSA9PSAiIikgfHwgKCRpbmZvWydpbmRleGFibGUnXSA9PSAxKSkgewogICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8dXJsPlxuIik7CiAgICAgICAgICAgICAgZndyaXRlKCRmcCwgIjxsb2M+Ii4kdXJsLiI8L2xvYz5cbiIpOwogICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8bGFzdG1vZD4iLmRhdGUoIlktbS1kIiwgc3RydG90aW1lKCRwYWdlWydtb2RpZmllZF9kYXRlJ10pKS4iPC9sYXN0bW9kPlxuIik7CiAgICAgICAgICAgICAgZndyaXRlKCRmcCwgIjxjaGFuZ2VmcmVxPmFsd2F5czwvY2hhbmdlZnJlcT5cbiIpOwogICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8cHJpb3JpdHk+Ii5udW1iZXJfZm9ybWF0KCRwcmlvcml0eSAvIDEwMCwgMSkuIjwvcHJpb3JpdHk+XG4iKTsKICAgICAgICAgICAgICBmd3JpdGUoJGZwLCAiPC91cmw+XG5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgIGZ3cml0ZSgkZnAsICI8L3VybHNldD4iKTsKICAgIGZjbG9zZSgkZnApOwogICAgaWYgKCRwdXNoICE9IGZhbHNlICYmICRwdXNoICE9PTApIHsKICAgICAgLy8gUHVzaCBzaXRlbWFwIHRvIGdvb2dsZQogICAgICBpZiAoZmlsZV9leGlzdHMoJG1hcF9wYXRoKSkgewogICAgICAgICRnb29nbGUgPSAiaHR0cDovL3d3dy5nb29nbGUuY29tL3dlYm1hc3RlcnMvdG9vbHMvcGluZz9zaXRlbWFwPSIudXJsZW5jb2RlKCRtYXBfcGF0aCk7CiAgICAgICAgJGYgPSBAZm9wZW4oJGdvb2dsZSwiciIpOwogICAgICAgIGlmIChpc19yZXNvdXJjZSgkZikpCiAgICAgICAgZmNsb3NlKCRmKTsKICAgICAgfQoKICAgIH0KICB9Cgp9Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlIHR5cGU9J3RleHQvY3NzJz4Ke2xpdGVyYWx9CnAucGFnZXRleHQgewogIGNsZWFyOiBib3RoOwp9CmEgaW1nIHsKICBib3JkZXItc3R5bGU6IG5vbmUgIWltcG9ydGFudDsKfQp7L2xpdGVyYWx9Cjwvc3R5bGU+CgoKeyRtZXNzYWdlfQoKeyR0YWJfaGVhZGVyc30KCnskc3RhcnRfc2VvYWxlcnRzX3RhYn0KeyRhbGVydHN9CnskZW5kX3RhYn0KCnskc3RhcnRfcGFnZWRlc2NyaXB0aW9uc190YWJ9CnskcGFnZXNldHRpbmdzfQp7JGVuZF90YWJ9Cgp7JHN0YXJ0X21ldGFzZXR0aW5nc190YWJ9CnskbWV0YV9mb3JtfQp7JGVuZF90YWJ9Cgp7JHN0YXJ0X3NpdGVtYXBzZXR0aW5nc190YWJ9Cnskc2l0ZW1hcF9mb3JtfQp7JGVuZF90YWJ9Cgp7JHN0YXJ0X2tleXdvcmRzZXR0aW5nc190YWJ9Cnska2V5d29yZF9mb3JtfQp7JGVuZF90YWJ9Cgp7JHRhYl9mb290ZXJzfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4Ke2lmICRtZXNzYWdlIT0nJ308cD57JG1lc3NhZ2V9PC9wPnsvaWZ9]]></data>
	</file>
</module>
