<?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</version>
  <mincmsversion>1.9.2</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlNFT1Rvb2xzMiBoZWxwcyB5b3UgdG8gZ2V0IHlvdXIgU0VPIChTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbikgcmlnaHQuIFRoZSBtb2R1bGUgYWRkcyBzZXZlcmFsIFNFTyBjYXBhYmlsaXRpZXMgdG8geW91ciBDTVNNUyBpbnN0YWxsYXRpb24gYW5kIGFsZXJ0cyB5b3UgaWYgeW91IG1pc3NlZCBvdXQgb24gc29tZXRoaW5nIFNFTyByZWxhdGVkLiBDdXJyZW50bHksIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDo8L3A+Cjx1bD4KPGxpPi0gZ2VuZXJhdGVzIE1ldGEgdGFncyBpbiBzdGFuZGFyZCBodG1sLCBEdWJsaW4gQ29yZSBhbmQgT3BlbkdyYXBoIGZvcm1hdHM8L2xpPgo8bGk+LSBhdXRvbWF0aWNhbGx5IGV4dHJhY3RzIGtleXdvcmRzIGZyb20geW91ciBwYWdlcyBhbmQgYWRkcyB0aGVtIHRvIHRoZSBtZXRhIHRhZ3MgYW5kIHBhZ2UgdGl0bGU8L2xpPgo8bGk+LSBsZXRzIHlvdSBkZXRlcm1pbmUgd2l0aCBhIHNpbmdsZSBjbGljayB3aGV0aGVyIGNlcnRhaW4gcGFnZXMgc2hvdWxkIGJlIGluZGV4ZWQgYnkgc2VhcmNoIGVuZ2luZXMgb3Igbm90PC9saT4KPGxpPi0gZ2VuZXJhdGVzIGEgc2l0ZW1hcC54bWwgZmlsZSB3aXRoIHlvdXIgcGFnZXMgd2hpbGUgZ2l2aW5nIHlvdSBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgcHJpb3JpdGllcyBvZiB5b3VyIHBhZ2VzPC9saT4KPGxpPi0gZ2VuZXJhdGVzIGEgcm9ib3RzLnR4dCBmaWxlIGV4cGxpY2l0bHkgZGlzYWxsb3dpbmcgYWNjZXNzIHRvIHBhZ2VzIHlvdSBkb24ndCB3YW50IHRvIGJlIGluZGV4ZWQ8L2xpPgo8bGk+LSBhbGVydHMgeW91IHdoZW4gdGhlcmUgYXJlIHNldmVyYWwgcGFnZXMgZmVhdHVyaW5nIHRoZSBzYW1lIHBhZ2UgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnM8L2xpPgo8bGk+LSBhbGVydHMgeW91IHdoZW4gdmVyeSBzaG9ydCBwYWdlIG1ldGEgZGVzY3JpcHRpb25zIGFyZSBkZXRlY3RlZDwvbGk+CjxsaT4tIGF1dG9tYXRpY2FsbHkgc3VibWl0cyB5b3VyIHNpdGVtYXAgZmlsZSB0byBHb29nbGUgd2hlbiB5b3UgY2hhbmdlIHlvdXIgY29udGVudDwvbGk+IAo8L3VsPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+Rmlyc3QsIG9wZW4gYWxsIHRlbXBsYXRlcyB3aGVyZSB5b3Ugd2FudCBkbyB1c2UgU0VPVG9vbHMyLiBSZW1vdmUgdGhlIGNvbXBsZXRlICZsdDt0aXRsZSZndDsgdGFnIGFuZCB0aGUge21ldGFkYXRhfSB0YWcgKGV2ZW4gaWYgaXQgc2F5cyB0byBuZXZlciByZW1vdmUgaXQpIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgdGFnPC9wPgo8cHJlPgp7U0VPVG9vbHMyfQo8L3ByZT48YnIgLz4KPHA+TmV4dCwgYXQgdGhlIGJvdHRvbSBvZiB5b3VyIHRlbXBsYXRlIChhZnRlciB0aGUgY2xvc2luZyAmbHQ7L2JvZHkmZ3Q7IHRhZyksIGluc2VydCB0aGUgZm9sbG93aW5nIGNvZGU6PC9wPgo8cHJlPgp7Y2FwdHVyZSBhc3NpZ249bWV0YWRlc2NyaXB0aW9ufXtjb250ZW50IGJsb2NrPW1ldGFkZXNjcmlwdGlvbiBsYWJlbD0iUGFnZSBEZXNjcmlwdGlvbiIgb25lbGluZT0idHJ1ZSJ9ey9jYXB0dXJlfQo8L3ByZT48YnIgLz4KPHA+VGhpcyBpcyB3aGVyZSB5b3UnbGwgZW50ZXIgYSBzaG9ydCBwYWdlIGRlc2NyaXB0aW9uIChvbmUgb3IgdHdvIHNlbnRlbmNlcykgdGhhdCB3aWxsIGFwcGVhciBpbiB0aGUgc2VhcmNoIGVuZ2luZSdzIHJlc3VsdHMgYW5kIGlmLCBmb3IgZXhhbXBsZSwgc29tZW9uZSBzaGFyZXMgYSBsaW5rIHRvIHlvdXIgcGFnZSBvbiBmYWNlYm9vay48L3A+CjxwPk5vdywgdmlzaXQgdGhlIHNldHRpbmdzIHRhYnMgZm9yIHBhZ2UgdGl0bGUgJiBtZXRhIGluZm9ybWF0aW9uLCB0aGUgc2l0ZW1hcCAmIGNyYXdsZXIgc2V0dGluZ3MgYW5kIHRoZSBrZXl3b3JkIGdlbmVyYXRvciBzZXR0aW5ncyBhbmQgZmlsbCBpbiBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIHlvdXIgcGFnZS4gVW5kZXIgIk5hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrIiB5b3UgbmVlZCB0byBlbnRlciB0aGUgbmFtZSBvZiB0aGUgY29udGVudCBibG9jayB5b3UganVzdCBhZGRlZCB0byB5b3VyIHRlbXBsYXRlcyAoIlBhZ2UgRGVzY3JpcHRpb24iIGluIG91ciBleGFtcGxlKS4gVGhlIHRhYiAiU0VPIEFsZXJ0cyIgd2lsbCBhbGVydCB5b3UgaWYgaXQgZGV0ZWN0cyBhbnl0aGluZyB0aGF0IGlzIHJlcXVpcmVkIGJ1dCBub3QgYWN0aXZhdGVkIG9yIGZpbGxlZCBpbi4gWW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIHNpZ25pbmcgdXAgeW91cgpzaXRlIHdpdGggR29vZ2xlIFdlYm1hc3RlciB0b29scy4gVGhlcmUsIHNlbGVjdCAiTWV0YSB0YWcgdmFsaWRhdGlvbiIgYW5kIHBhc3RlIHRoZSB2ZXJpZmljYXRpb24gY29kZSAocXVpdGUgYSBsb25nIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGFuZCBudW1iZXJzKSBpbnRvIHRoZSBib3ggIlZlcmlmaWNhdGlvbiBDb2RlIiBpbiAiU0VPIFNldHRpbmdzIiB0byBhdXRvbWF0aWNhbGx5IHZlcmlmeSB0aGF0IHlvdSBhcmUgcmVhbGx5CnRoZSBvd25lciBvZiB5b3VyIHBhZ2UgKG5vIG5lZWQgdG8gcGFzdGUgdGhlIEdvb2dsZSBNZXRhLWNvZGUgaW50byB5b3VyIHRlbXBsYXRlKS48L3A+CjxwPkFzIHNvb24gYXMgZXZlcnl0aGluZyBpcyBzZXQgdXAsIGxvb2sgYXQgdGhlICJTRU8gQWxlcnRzIiB0YWIgYW5kIGZpeCBhbGwgcHJvYmxlbXMgZGV0ZWN0ZWQgaGVyZS4gVGFrZSBjYXJlIHRvIGluc2VydCBhICh1bmlxdWUpIHBhZ2UgZGVzY3JpcHRpb24gb24gZXZlcnkgcGFnZSB5b3UgZWRpdCBpbiB0aGUgZmllbGQgIlBhZ2UgRGVzY3JpcHRpb24iIGF0IHRoZSBib3R0b20gb2YgeW91ciAiRWRpdCBQYWdlIiBmb3JtLjwvcD4KPHA+VG8gc2V0IHlvdXIgb3duIGtleXdvcmRzIChpbnN0ZWFkIG9mIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBvbmVzKSBvciBPcGVuR3JhcGggdHlwZSBmb3IgY2VydGFpbiBwYWdlcywgdmlzaXQgdGhlICJQYWdlIHNldHRpbmdzIiB0YWIgd2hlcmUgeW91J2xsIGZpbmQgYSBsaXN0IG9mIGFsbCBwYWdlcyB5b3UgaGF2ZSBpbiB5b3VyIHN5c3RlbS4gVGhlcmUsIHlvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIHNpdGVtYXAgcHJpb3JpdHkgKHdoaWNoIGlzIGF1dG8tY2FsY3VsYXRlZCBieSBkZWZhdWx0KSBvZiBhIHBhZ2UgdG8gaW5kaWNhdGUgdGhhdCBpdCBzaG91bGQKYmUgY29uc2lkZXJlZCBtb3JlIGltcG9ydGFudCBmb3Igc2VhcmNoIGVuZ2luZSBtYXRjaGVzIG9uIHlvdXIgcGFnZSBvciBleGNsdWRlIGNlcnRhaW4gcGFnZXMgZnJvbSB0aGUgc2VhcmNoIGluZGV4LjwvcD4KPHA+U0VPVG9vbHMyIHdpbGwgYWxzbyBhdXRvbWF0aWNhbGx5IGluc2VydCBhIGxpbmsgdG8gdGhlIGltYWdlIHRvIGJlIHVzZWQgYXMgdGhlIG1haW4gaW1hZ2Ugb2YgeW91ciBwYWdlIGlmIHlvdSBzZWxlY3QgYW4gIkltYWdlIiBmb3IgdGhlIHBhZ2UgZnJvbSB3aXRoaW4geW91ciBwYWdlJ3MgIk9wdGlvbnMiIHRhYiAodGhpcyBpcyBpbXBvcnRhbnQgZm9yIHBlb3BsZSBzdWJtaXR0aW5nIGEgbGluayB0byB5b3VyIHBhZ2UgZS5nLiBvbiBmYWNlYm9vaykuIEFsc28sIGlmIHlvdSBhcmUgdXNpbmcgT3BlbkdyYXBoLCB0aGUgaW1hZ2Ugc2VsZWN0ZWQgaGVyZQp3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBpbWFnZSB5b3Ugc3BlY2lmaWVkIGZyb20gd2l0aGluICJTRU8gU2V0dGluZ3MiLiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB5b3UgbmVlZCB0byB1cGxvYWQgdGhvc2UgaW1hZ2VzIHRvIHlvdXIgL3VwbG9hZHMvaW1hZ2VzIGRpcmVjdG9yeS48L3A+CjxoMz5DYW4gSSB1c2Ugc21hcnR5IHZhcmlhYmxlcz88L2gzPgo8cD5Zb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyB3aXRoaW4gdGhlIHNldHRpbmdzIGZpZWxkcyA8aT5QYWdlIHRpdGxlPC9pPiwgPGk+TWV0YSBwYWdlIHRpdGxlPC9pPiwgPGk+QXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZGVzY3JpcHRpb25zPC9pPiBhbmQgPGk+QWRkaXRpb25hbCBtZXRhIHRhZ3M8L2k+LiBFbnRlciA8Y29kZT57ZGVidWd9PC9jb2RlPiB0byBzZWUgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdmFyaWFibGVzLjwvcD4KPGgzPldoaWNoIHNtYXJ0eSB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkIGJ5IFNFT1Rvb2xzMj88L2gzPgo8Y29kZT57JHNlb19rZXl3b3Jkc308L2NvZGU+OiBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlIChpbmNsdWRpbmcgdGhlIGRlZmF1bHQga2V5d29yZHMpPGJyIC8+Cjxjb2RlPnskdGl0bGVfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwga2V5d29yZHMgc2V0IGZvciB0aGUgcGFnZSAoaW5jbHVkaW5nIHRoZSBkZWZhdWx0IGtleXdvcmRzKTxiciAvPgo8Y29kZT57JGRlZmF1bHRfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwgZGVmYXVsdCBrZXl3b3JkczxiciAvPgo8Y29kZT57JHBhZ2Vfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwga2V5d29yZHMgc2V0IGZvciB0aGUgcGFnZSAod2l0aG91dCB0aGUgZGVmYXVsdCBrZXl3b3JkcykgCjxoMz5TdXBwb3J0PC9oMz4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMiwgQ2xpcCBNYWdpYyA8YSBocmVmPSJtYWlsdG86YWRtaW5AY2xpcG1hZ2ljLmNvbS5hdSI+Jmx0O2FkbWluQGNsaXBtYWdpYy5jb20uYXUmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNob3diYXNlPSJ0cnVlIiAtIFNldCB0aGlzIHBhcmFtZXRlciB0byA8Y29kZT5mYWxzZTwvY29kZT4gdG8gc3VwcHJlc3MgdGhlIG91dHB1dCBvZiB0aGUgYmFzZSBocmVmIHRhZy48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDbGlwIE1hZ2ljICZsdDthZG1pbkBjbGlwbWFnaWMuY29tLmF1Jmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMDxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjx1bD4KPGxpPlZlcnNpb24gMS4wIC0gMjUgSmFudWFyeSAyMDEyLiBJbml0aWFsIHJlbGVhc2UuIFRoaXMgaXMgYSBmb3JrIG9mIHRoZSBTRU9Ub29scyBtb2R1bGUgd2l0aCBDTVNNUyAxLjEwKyBjb21wYXRpYmlsaXR5LiBDaGFuZ2VzIGluY2x1ZGU6Cgk8dWw+CgkJPGxpPlNldCBwcmVmZXJlbmNlcyBvbiBpbnN0YWxsPC9saT4KCQk8bGk+UmVtb3ZlIHByZWZlcmVuY2VzIG9uIHVuaW5zdGFsbDwvbGk+CgkJPGxpPlJlcGxhY2UgYWxsIHJlZmVyZW5jZSB0byBIaWVyYXJjaHlNYW5hZ2VyIG9iamVjdHMgd2l0aCBDb250ZW50T3BlcmF0aW9ucyBvYmplY3RzPC9saT4KCQk8bGk+R2VuZXJhdGUgYWxsIGtleXdvcmRzLCBrZXl3b3JkIHN1Z2dlc3Rpb25zLCBkZXNjcmlwdGlvbnMgYW5kIGRlZmF1bHQgZGVzY3JpcHRpb25zPC9saT4KCQk8bGk+R2VuZXJhdGUgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQgZmlsZXM8L2xpPgoJCTxsaT5SZXRhaW4gY2hlY2tib3ggcHJlZmVyZW5jZSBzZXR0aW5ncyBhZnRlciBzdWJtaXQ8L2xpPgoJCTxsaT5PbiBmcm9udGVuZCBwYWdlIGxvYWQsIGVuc3VyZSB0aGF0IGEgY29ycmVzcG9uZGluZyByZWNvcmQgZXhpc3RzIGluIHRoZSBzZW90b29sczIgZGF0YWJhc2UgdGFibGU8L2xpPgoJPC91bD4JCjwvbGk+CjwvdWw+PGJyIC8+]]></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+Q2hlY2tBY2Nlc3MoIkVkaXQgU0VPIFNldHRpbmdzIikpCgl7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCX0KCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCgogICBDb2RlIGZvciBTRU9Ub29sczIgImNoYW5nZXNldHRpbmdzIiBhZG1pbiBhY3Rpb24KICAgCiAgIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCiAgIAogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUKICAgb3IgZG8gc29tZSBvdGhlciB0YXNrLgogICAKKi8KCi8vIFJlZ2VuZXJhdGUgU2l0ZW1hcCBhbmQgcm9ib3RzLnR4dAppZiAoaXNzZXQoJF9QT1NUWydkb19yZWdlbmVyYXRlJ10pKSB7CgkkdGhpcy0+Y3JlYXRlU2l0ZW1hcCgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKSA9PSAxKTsKICAgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsMSkgPT0gMSkgewogICAgICAgICR0aGlzLT5jcmVhdGVSb2JvdHNUWFQoKTsKICAgIH0KCSR0aGlzLT5hdWRpdCgiVGVzdCIsIlNFTyBUb29scyIsIk1hbnVhbGx5IHJlZ2VuZXJhdGVkIHNpdGVtYXAueG1sIGFuZCByb2JvdHMudHh0Iik7CiAgICAkdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NpdGVtYXBfcmVnZW5lcmF0ZWQnLCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOwp9CgkKaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZV9tZXRhX3NldHRpbmdzJ10pKSB7CiRtZXRhX3N0YW5kYXJkID0gaXNzZXQoJF9QT1NUWydtZXRhX3N0YW5kYXJkJ10pID8gMSA6IDA7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLCRtZXRhX3N0YW5kYXJkKTsKICAKJG1ldGFfZHVibGluY29yZSA9IGlzc2V0KCRfUE9TVFsnbWV0YV9kdWJsaW5jb3JlJ10pID8gMSA6IDA7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsJG1ldGFfZHVibGluY29yZSk7CgokbWV0YV9vcGVuZ3JhcGggPSBpc3NldCgkX1BPU1RbJ21ldGFfb3BlbmdyYXBoJ10pID8gMSA6IDA7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywkbWV0YV9vcGVuZ3JhcGgpOwogIAokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCRfUE9TVFsnYWRkaXRpb25hbF9tZXRhX3RhZ3MnXSk7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCRfUE9TVFsnbWV0YV9wdWJsaXNoZXInXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywkX1BPU1RbJ21ldGFfY29udHJpYnV0b3InXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcsJF9QT1NUWydtZXRhX2NvcHlyaWdodCddKTsKCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywkX1BPU1RbJ21ldGFfbG9jYXRpb24nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJF9QT1NUWydtZXRhX3JlZ2lvbiddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCRfUE9TVFsnbWV0YV9sYXRpdHVkZSddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywkX1BPU1RbJ21ldGFfbG9uZ2l0dWRlJ10pOwoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX3RpdGxlJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF90eXBlJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9pbWFnZSddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbiddKTsKCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZScsJF9QT1NUWyd0aXRsZSddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3RpdGxlX21ldGEnLCRfUE9TVFsndGl0bGVfbWV0YSddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywkX1BPU1RbJ2Rlc2NyaXB0aW9uX2Jsb2NrJ10pOwoKCiRkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlID0gaXNzZXQoJF9QT1NUWydkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJ10pID8gMSA6IDA7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsJGRlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUpOwoKCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywkX1BPU1RbJ2Rlc2NyaXB0aW9uX2F1dG8nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJywkX1BPU1RbJ2RlZmF1bHRfa2V5d29yZHMnXSk7CgokdGhpcy0+YXVkaXQoIlRlc3QiLCJTRU8gVG9vbHMiLCJFZGl0ZWQgTWV0YSBzZXR0aW5ncyIpOwokdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwp9CgppZiAoaXNzZXQoJF9QT1NUWydzYXZlX3NpdGVtYXBfc2V0dGluZ3MnXSkpIHsKICAKJGNyZWF0ZV9zaXRlbWFwID0gaXNzZXQoJF9QT1NUWydjcmVhdGVfc2l0ZW1hcCddKSA/IDEgOiAwOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsJGNyZWF0ZV9zaXRlbWFwKTsKCiRwdXNoX3NpdGVtYXAgPSBpc3NldCgkX1BPU1RbJ3B1c2hfc2l0ZW1hcCddKSA/IDEgOiAwOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLCRwdXNoX3NpdGVtYXApOwoKJGNyZWF0ZV9yb2JvdHMgPSBpc3NldCgkX1BPU1RbJ2NyZWF0ZV9yb2JvdHMnXSkgPyAxIDogMDsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsJGNyZWF0ZV9yb2JvdHMpOwogIAokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywkX1BPU1RbJ3ZlcmlmaWNhdGlvbiddKTsKCiR0aGlzLT5hdWRpdCgiVGVzdCIsIlNFTyBUb29scyIsIkVkaXRlZCBTaXRlbWFwIHNldHRpbmdzIik7CiR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2V0dGluZ3NfdXBkYXRlZCcsJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3NhdmVfa2V5d29yZF9zZXR0aW5ncyddKSkgewoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywkX1BPU1RbJ2tleXdvcmRfbWlubGVuZ3RoJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCRfUE9TVFsna2V5d29yZF90aXRsZV93ZWlnaHQnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodCcsJF9QT1NUWydrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodCddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0J10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9jb250ZW50X3dlaWdodCcsJF9QT1NUWydrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0J10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJF9QT1NUWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0J10pOwoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfZXhjbHVkZScsJF9QT1NUWydrZXl3b3JkX2V4Y2x1ZGUnXSk7CgoKJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIEtleXdvcmQgc2V0dGluZ3MiKTsKJHRoaXMtPlJlZGlyZWN0KCR0aGlzLT5pZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBBcnJheSgnbWVzc2FnZSc9PidzZXR0aW5nc191cGRhdGVkJywndGFiJz0+J2tleXdvcmRzZXR0aW5ncycpKTsKfQoKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQoKICAgQ29kZSBmb3IgU0VPVG9vbHMyICJkZWZhdWx0IiBhY3Rpb24KCiAgIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCiAgIAogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUKICAgb3IgZG8gc29tZSBvdGhlciB0YXNrLgogICAKKi8KCi8vIEdldCBwYWdlIGRhdGEKJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwokZGIgPSYgY21zbXMoKS0+R2V0RGIoKTsKCi8vIEZpcnN0IHVwLCB3ZSBkbyBzb21lIGRhdGFiYXNlIG1haW50ZW5hbmNlCi8vIEVuc3VyZSBhbGwgdGhlIGFjdGl2ZSBwYWdlcyBhcmUgaW4gdGhlIHNlb3Rvb2xzMiBkYXRhYmFzZQokcXVlcnkgPSAnU0VMRUNUIGBjb250ZW50X2lkYCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IFdIRVJFIGB0eXBlYCBMSUtFICIlY29udGVudCUiIEFORCBgY29udGVudF9pZGAgTk9UIElOIChTRUxFQ1QgYGNvbnRlbnRfaWRgIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKS4gJ21vZHVsZV9zZW90b29sczIpJzsKaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsKICBlY2hvICI8YnIgLz5Qcm9ibGVtIHdpdGggdGhlIGRhdGFiYXNlISBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuIjsKICBkaWU7Cn0KCmlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgewovLyBPSyB3ZSBoYXZlIHNvbWUgbmV3IHBhZ2VzCgkkcTIgPSAnSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgU0VUIGNvbnRlbnRfaWQgPSA/LCBpbmRleGFibGUgPSA/JzsKCXdoaWxlICgkb25lX3BhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7CgkJJGRiLT5FeGVjdXRlKCRxMixhcnJheSgkb25lX3BhZ2VbJ2NvbnRlbnRfaWQnXSwxKSk7Cgl9Cn0KCi8vIE5vdyBjaGVjayB0aGF0IHdlIGhhdmUgcmVtb3ZlZCBmcm9tIHNlb3Rvb2xzMiBhbnkgcGFnZXMgdGhhdCBoYXZlIGJlZW4gZGVsZXRlZAokcXVlcnkgPSAnU0VMRUNUIGBjb250ZW50X2lkYCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGBjb250ZW50X2lkYCBOT1QgSU4gKFNFTEVDVCBgY29udGVudF9pZGAgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpLiAnY29udGVudCknOwppZiAoISRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KSkgewoJcHJpbnRfcigkZGItPnNxbCk7CgllY2hvICI8YnIgLz5Qcm9ibGVtIHdpdGggdGhlIGRhdGFiYXNlISBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuIjsKCWRpZTsKfQppZiAoJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApIHsKLy8gT0sgd2UgaGF2ZSBzb21lIGRlbGV0ZWQgcGFnZXMKCSRxMyA9ICdERUxFVEUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gPyc7Cgl3aGlsZSAoJG9uZV9wYWdlID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewoJCSRkYi0+RXhlY3V0ZSgkcTMsYXJyYXkoJG9uZV9wYWdlWydjb250ZW50X2lkJ10sMSkpOwoJfQp9CgovLyBMYXN0bHksIGVuc3VyZSB0aGF0IGFsbCBpbmFjdGl2ZSBwYWdlcyBhcmUgbWFya2VkIGFzIG5vdCBpbmRleGFibGUgaW4gc2VvdG9vbHMyCiRxdWVyeSA9ICdTRUxFQ1QgY29udGVudF9pZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnY29udGVudCBXSEVSRSBhY3RpdmUgPSAwJzsKaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsKCXByaW50X3IoJGRiLT5zcWwpOwoJZWNobyAiPGJyIC8+UHJvYmxlbSB3aXRoIHRoZSBkYXRhYmFzZSEgUGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLiI7CglkaWU7Cn0gCgppZiAoJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApIHsKLy8gT0sgd2UgaGF2ZSB0byBwcmV2ZW50IHRoZSBpbmFjdGl2ZSBwYWdlcyBmcm9tIGJlaW5nIGluZGV4ZWQuCgkkcTQgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBpbmRleGFibGUgPSAwIFdIRVJFIGNvbnRlbnRfaWQgPSA/JzsKCXdoaWxlICgkb25lX3BhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7CgkJJGRiLT5FeGVjdXRlKCRxNCxhcnJheSgkb25lX3BhZ2VbJ2NvbnRlbnRfaWQnXSkpOwoJfQp9CgovLyBQaGV3LCB0aGF0J3MgYWxsIGRvbmUgc28gd2UgY2FuIG1vdmUgb24gdG8gdGhlIHJlYWwgYnVzaW5lc3Mgb2YgdGhlIGRheQoKJHRwbF92YXJzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoKTsKJGN1cmNvbnRlbnQgPSAkdHBsX3ZhcnNbJ2NvbnRlbnRfb2JqJ107CgokcGFnZV91cmwgPSAkY3VyY29udGVudC0+R2V0VVJMKCk7CiRwYWdlX2lkID0gJGN1cmNvbnRlbnQtPklkKCk7CgokbW9kaWZpZWRfZGF0ZSA9ICRjdXJjb250ZW50LT5nZXRNb2RpZmllZERhdGUoKTsKJG1vZGlmaWVkX2RhdGUgPSBkYXRlKCdZLW0tZFxUSDppOnNQJywkbW9kaWZpZWRfZGF0ZSk7CgovLyBLZXl3b3JkIGdlbmVyYXRvcgoka2V5d29yZHMgPSBleHBsb2RlKCcgJywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9rZXl3b3JkcycsJycpKTsKCgokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gPyc7CmlmICghJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHBhZ2VfaWQpKSkgewogIGVjaG8gIlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOwogIGRpZTsKfQoKJHBhZ2VfaW5mbyA9ICRyZXN1bHQtPmZldGNoUm93KCk7CgppZiAoJHBhZ2VfaW5mb1sna2V5d29yZHMnXSAhPSAiIikgewoJJG90aGVyX2tleXdvcmRzID0gYXJyYXlfZmxpcChleHBsb2RlKCcgJywkcGFnZV9pbmZvWydrZXl3b3JkcyddKSk7Cn1lbHNlewoJJG90aGVyX2tleXdvcmRzID0gJHRoaXMtPmdldEtleXdvcmRTdWdnZXN0aW9ucygkcGFnZV9pZCk7Cn0KCiRzZW9fa2V5d29yZHMgPSBpbXBsb2RlKCcsICcsYXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRrZXl3b3JkcywgYXJyYXlfZmxpcCgkb3RoZXJfa2V5d29yZHMpKSkpOwokc21hcnR5LT5hc3NpZ24oJ3Nlb19rZXl3b3JkcycsICRzZW9fa2V5d29yZHMpOwokdGl0bGVfa2V5d29yZHMgPSBpbXBsb2RlKCcgJyxhcnJheV91bmlxdWUoYXJyYXlfbWVyZ2UoJGtleXdvcmRzLCBhcnJheV9mbGlwKCRvdGhlcl9rZXl3b3JkcykpKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGVfa2V5d29yZHMnLCAkdGl0bGVfa2V5d29yZHMpOwokc21hcnR5LT5hc3NpZ24oJ2RlZmF1bHRfa2V5d29yZHMnLCBpbXBsb2RlKCcgJywgJGtleXdvcmRzKSk7CiRzbWFydHktPmFzc2lnbigncGFnZV9rZXl3b3JkcycsIGltcGxvZGUoJyAnLCBhcnJheV9mbGlwKCRvdGhlcl9rZXl3b3JkcykpKTsKCi8vIFBhZ2UgZGVzY3JpcHRpb24KJGRlc2NyaXB0aW9uX2lkID0gc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSk7CiRkZXNjcmlwdGlvbiA9IHN0cmlwX3RhZ3MoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGRlc2NyaXB0aW9uX2lkKSk7CgppZiAoKCRkZXNjcmlwdGlvbiA9PSAiIikgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywxKSA9PSAxKSkgewogICRrdyA9IGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKTsKICAkbGFzdF9rZXl3b3JkID0gYXJyYXlfcG9wKCRrdyk7CiAgJGtleXdvcmRzID0gaW1wbG9kZSgnLCAnLCRrdykgLiAiICIgLiAkdGhpcy0+bGFuZygnYW5kJykgLiAiICIgLiAkbGFzdF9rZXl3b3JkOwogICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCd7a2V5d29yZHN9Jywka2V5d29yZHMsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSk7CiAgJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJGRlc2NyaXB0aW9uKTsKICAkZGVzY3JpcHRpb24gPSAkdGhpcy0+cHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJGRlc2NyaXB0aW9uKTsKfQoKLy8gU2hvdyBiYXNlPwppZiAoJHBhcmFtc1snc2hvd2Jhc2UnXSAhPSAnZmFsc2UnKSB7CgllY2hvICI8YmFzZSBocmVmPSciLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uIi8nIC8+XG4iOwp9CgovLyBQYWdlIHRpdGxlCiR0aXRsZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aXRsZScsJ3t0aXRsZX0gfCB7c2l0ZW5hbWV9IC0ge3Nlb19rZXl3b3Jkc30nKTsKJHRpdGxlID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJHRpdGxlKTsKJHRpdGxlID0gc3RyX3JlcGxhY2UoJ3tzaXRlbmFtZX0nLCRnQ21zLT5zaXRlcHJlZnNbJ3NpdGVuYW1lJ10sJHRpdGxlKTsKJHRpdGxlID0gc3RyX3JlcGxhY2UoJ3tzZW9fa2V5d29yZHN9JywkdGl0bGVfa2V5d29yZHMsJHRpdGxlKTsKJHRpdGxlID0gJHRoaXMtPnByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aXRsZSk7CgokbWV0YV90aXRsZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywne3RpdGxlfSB8IHtzaXRlbmFtZX0nKTsKJG1ldGFfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPk5hbWUoKSwkbWV0YV90aXRsZSk7CiRtZXRhX3RpdGxlID0gc3RyX3JlcGxhY2UoJ3tzaXRlbmFtZX0nLCR0cGxfdmFyc1snc2l0ZW5hbWUnXSwkbWV0YV90aXRsZSk7CiRtZXRhX3RpdGxlID0gc3RyX3JlcGxhY2UoJ3tzZW9fa2V5d29yZHN9JywkdGl0bGVfa2V5d29yZHMsJG1ldGFfdGl0bGUpOwokbWV0YV90aXRsZSA9ICR0aGlzLT5wcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkbWV0YV90aXRsZSk7Cgokb3BlbmdyYXBoX3RpdGxlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJywne3RpdGxlfScpOwokb3BlbmdyYXBoX3RpdGxlID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJG9wZW5ncmFwaF90aXRsZSk7CiRvcGVuZ3JhcGhfdGl0bGUgPSAkdGhpcy0+cHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJG9wZW5ncmFwaF90aXRsZSk7CgplY2hvICI8dGl0bGU+Ii4kdGl0bGUuIjwvdGl0bGU+XG4iOwoKLy8gTUVUQSB0YWdzIGZvciBjb250ZW50IHR5cGUgZXRjLgplY2hvICI8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD0iLiRnQ21zLT5jb25maWdbJ2RlZmF1bHRfZW5jb2RpbmcnXS4iJyAvPlxuIjsKaWYgKCgkcGFnZV9pbmZvWydpbmRleGFibGUnXSA9PSAiIikgfHwgKCRwYWdlX2luZm9bJ2luZGV4YWJsZSddID09ICIxIikpIHsKCWVjaG8gIjxtZXRhIG5hbWU9J3JvYm90cycgY29udGVudD0naW5kZXgsIGZvbGxvdycgLz5cbiI7Cn1lbHNlewoJZWNobyAiPG1ldGEgbmFtZT0ncm9ib3RzJyBjb250ZW50PSdub2luZGV4JyAvPlxuIjsKfQoKaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd2ZXJpZmljYXRpb24nLCcnKSAhPSAnJykgewoJZWNobyAiPG1ldGEgbmFtZT0nZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCd2ZXJpZmljYXRpb24nLCcnKS4iJyAvPlxuIjsKfQoKLy8gU3RhbmRhcmQgTUVUQSB0YWdzCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsMSkgPT0gMSkgewoJZWNobyAiPG1ldGEgbmFtZT0ndGl0bGUnIGNvbnRlbnQ9JyRtZXRhX3RpdGxlJyAvPlxuIjsKCWVjaG8gIjxtZXRhIG5hbWU9J2Rlc2NyaXB0aW9uJyBjb250ZW50PSckZGVzY3JpcHRpb24nIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0na2V5d29yZHMnIGNvbnRlbnQ9JyRzZW9fa2V5d29yZHMnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nZGF0ZScgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nbGFzdHVwZGF0ZScgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0ncmV2aXNlZCcgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nYXV0aG9yJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpLiInIC8+XG4iOwogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywnJykgIT0gIiIpIHsKICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnBsYWNlbmFtZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpLiInIC8+XG4iOwogICAgfQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpICE9ICIiKSB7CiAgICAgIGVjaG8gIjxtZXRhIG5hbWU9J2dlby5yZWdpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykuIicgLz5cbiI7CiAgICB9CiAgICBpZiAoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykgIT0gIiIpICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKSAhPSAiIikpIHsKICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnBvc2l0aW9uJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIjsiLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOwogICAgICBlY2hvICI8bWV0YSBuYW1lPSdJQ0JNJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIiwgIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKS4iJyAvPlxuIjsKICAgIH0KfQoKaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycsJycpICE9ICcnKSB7CgllY2hvICR0aGlzLT5wcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSk7Cn0KCi8vIER1YmxpbkNvcmUgTUVUQSB0YWdzCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywwKSA9PSAxKSB7CiAgICBlY2hvICI8bGluayByZWw9J3NjaGVtYS5EQycgaHJlZj0naHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8nIC8+XG4iOwogICAgZWNobyAiPGxpbmsgcmVsPSdzY2hlbWEuRENURVJNUycgaHJlZj0naHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLycgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy50eXBlJyBjb250ZW50PSdUZXh0JyBzY2hlbWU9J0RDVEVSTVMuRENNSVR5cGUnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMuZm9ybWF0JyBjb250ZW50PSd0ZXh0L2h0bWwnIHNjaGVtZT0nRENURVJNUy5JTVQnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMucmVsYXRpb24nIGNvbnRlbnQ9J2h0dHA6Ly9kdWJsaW5jb3JlLm9yZy8nIHNjaGVtZT0nRENURVJNUy5VUkknIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMucHVibGlzaGVyJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpLiInIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMuY29udHJpYnV0b3InIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfY29udHJpYnV0b3InLCcnKS4iJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmxhbmd1YWdlJyBjb250ZW50PSciLiRnQ21zLT5zaXRlcHJlZnNbJ2Zyb250ZW5kbGFuZyddLiInIHNjaGVtZT0nRENURVJNUy5SRkMzMDY2JyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnJpZ2h0cycgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnLCcnKS4iJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnRpdGxlJyBjb250ZW50PSckbWV0YV90aXRsZScgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5kZXNjcmlwdGlvbicgY29udGVudD0nJGRlc2NyaXB0aW9uJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmRhdGUnIGNvbnRlbnQ9JyRtb2RpZmllZF9kYXRlJyBzY2hlbWU9J0RDVEVSTVMuVzNDRFRGJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmlkZW50aWZpZXInIGNvbnRlbnQ9JyRwYWdlX3VybCcgc2NoZW1lPSdEQ1RFUk1TLlVSSScgLz5cbiI7Cn0KCi8vIE9wZW5HcmFwaCBNRVRBIHRhZ3MKaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsMCkgPT0gMSkgewogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnRpdGxlJyBjb250ZW50PSckb3BlbmdyYXBoX3RpdGxlJyAvPlxuIjsKICAgIGlmICgkcGFnZV9pbmZvWydvZ3R5cGUnXSA9PSAiIikgewogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6dHlwZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpLiInIC8+XG4iOwogICAgfWVsc2V7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzp0eXBlJyBjb250ZW50PSciLiRwYWdlX2luZm9bJ29ndHlwZSddLiInIC8+XG4iOwogICAgfQogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnVybCcgY29udGVudD0nJHBhZ2VfdXJsJyAvPlxuIjsKICAgIAogICAgCQogICAgaWYgKCgkY3VyY29udGVudC0+UHJvcGVydGllcygpLT5HZXRQcm9wZXJ0eVZhbHVlKCdpbWFnZScpICE9IC0xKSAmJiAoJGN1cmNvbnRlbnQtPlByb3BlcnRpZXMoKS0+R2V0UHJvcGVydHlWYWx1ZSgnaW1hZ2UnKSAhPSAiIikpICB7CiAgICAJJGltYWdlID0gJGN1cmNvbnRlbnQtPlByb3BlcnRpZXMoKS0+R2V0UHJvcGVydHlWYWx1ZSgnaW1hZ2UnKTsKICAgIAkKICAgIH1lbHNlewogICAgCSRpbWFnZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpOwogICAgfQogICAgCiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6aW1hZ2UnIGNvbnRlbnQ9JyIuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4iL3VwbG9hZHMvaW1hZ2VzLyRpbWFnZScgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6c2l0ZV9uYW1lJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJGdDbXMtPkdldFByZWZlcmVuY2UoJ3NpdGVuYW1lJykpLiInIC8+XG4iOwogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOmRlc2NyaXB0aW9uJyBjb250ZW50PSckZGVzY3JpcHRpb24nIC8+XG4iOwogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpICE9ICIiKSB7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdmYjphcHBfaWQnIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJykuIicgLz5cbiI7CiAgICB9ZWxzZXsKICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J2ZiOmFkbWlucycgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywnJykuIicgLz5cbiI7CiAgICB9CiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKSAhPSAiIikgewogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6bG9jYWxpdHknIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKS4iJyAvPlxuIjsKICAgIH0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCcnKSAhPSAiIikgewogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6cmVnaW9uJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpLiInIC8+XG4iOwogICAgfQogICAgaWYgKCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpICE9ICIiKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJykgIT0gIiIpKSB7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpsYXRpdHVkZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpLiInIC8+XG4iOwogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6bG9uZ2l0dWRlJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOwogICAgfQp9CgovLyBJbWFnZS1MaW5rCgppZiAoKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCdpbWFnZScpICE9IC0xKSAmJiAoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJ2ltYWdlJykgIT0gIiIpKSAgewoJZWNobyAiPGxpbmsgcmVsPSdpbWFnZV9zcmMnIGhyZWY9JyIuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4iL3VwbG9hZHMvaW1hZ2VzLyIuJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJ2ltYWdlJykuIicgLz4iOwp9Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkKICAgIHsKICAgIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgfQoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZGVmYXVsdGFkbWluIiBhZG1pbiBhY3Rpb24KICAgCiAgIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCiAgIAogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUKICAgb3IgZG8gc29tZSBvdGhlciB0YXNrLgogICAKKi8KJGRiID0gJiRnQ21zLT5HZXREYigpOwovLyBEbyB0aGUgYWN0aW9uCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICd0b2dnbGVfaW5kZXgnKSB7CiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOwogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICRpbmZvID0gJHJlc3VsdC0+ZmV0Y2hSb3coKTsKICAgIGlmICgkaW5mb1snaW5kZXhhYmxlJ10gPT0gIjEiKSB7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQgaW5kZXhhYmxlID0gMCBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOwogICAgfWVsc2V7CiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddLicsIGluZGV4YWJsZSA9IDAgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgaW5kZXhhYmxlID0gMSc7CiAgICB9CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgIAogICAgCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpID09IDEpIHsKICAgICAgICAkdGhpcy0+Y3JlYXRlUm9ib3RzVFhUKCk7CiAgICB9CiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7CiAgICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSkgPT0gMSk7CiAgICB9CiAgICAkX0dFVFsndGFiJ10gPSAncGFnZWRlc2NyaXB0aW9ucyc7Cn0KCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICdzZXRfcHJpb3JpdHknKSB7CiAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgU0VUIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ10uJywgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddLicgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddOwogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkX0dFVFsndGFiJ10gPSAncGFnZWRlc2NyaXB0aW9ucyc7CiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7CiAgICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSkgPT0gMSk7CiAgICB9Cn0KCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICdyZXNldF9wcmlvcml0eScpIHsKICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgU0VUIHByaW9yaXR5ID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOwogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkX0dFVFsndGFiJ10gPSAncGFnZWRlc2NyaXB0aW9ucyc7CiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7CiAgICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSkgPT0gMSk7CiAgICB9Cn0KCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICdyZXNldF9vZ3R5cGUnKSB7CiAgICAkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBvZ3R5cGUgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsKfQoKaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3Jlc2V0X2tleXdvcmRzJykgewogICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQga2V5d29yZHMgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsKfQoKaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ2VkaXRfb2d0eXBlJykgewogICAgZWNobyAkdGhpcy0+UmVkaXJlY3QobnVsbCwgJ2VkaXRfb2d0eXBlJywgJHRoaXMtPnJldHVybmlkLCBBcnJheSgnY29udGVudF9pZCc9PiRfR0VUWydjb250ZW50X2lkJ10pKTsKfQoKaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ2VkaXRfa2V5d29yZHMnKSB7CiAgICBlY2hvICR0aGlzLT5SZWRpcmVjdChudWxsLCAnZWRpdF9rZXl3b3JkcycsICR0aGlzLT5yZXR1cm5pZCwgQXJyYXkoJ2NvbnRlbnRfaWQnPT4kX0dFVFsnY29udGVudF9pZCddKSk7Cn0KICAgIAogICAgCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGFiX2hlYWRlcnMnLCR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKS4KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3Nlb2FsZXJ0cycsJHRoaXMtPkxhbmcoJ3RpdGxlX3Nlb2FsZXJ0cycpKS4KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3BhZ2VkZXNjcmlwdGlvbnMnLCR0aGlzLT5MYW5nKCd0aXRsZV9wYWdlZGVzY3JpcHRpb25zJyksIChpc3NldCgkX0dFVFsndGFiJ10pICYmICRfR0VUWyd0YWInXSA9PSAncGFnZWRlc2NyaXB0aW9ucycpKS4KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ21ldGFzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3RpdGxlX21ldGFzZXR0aW5ncycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ21ldGFzZXR0aW5ncycpKS4KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NpdGVtYXBzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3RpdGxlX3NpdGVtYXBzZXR0aW5ncycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ3NpdGVtYXBzZXR0aW5ncycpKS4KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2tleXdvcmRzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3RpdGxlX2tleXdvcmRzZXR0aW5ncycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ2tleXdvcmRzZXR0aW5ncycpKS4KICAgICR0aGlzLT5FbmRUYWJIZWFkZXJzKCkuJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiJywkdGhpcy0+RW5kVGFiKCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RhYl9mb290ZXJzJywkdGhpcy0+RW5kVGFiQ29udGVudCgpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9zZW9hbGVydHNfdGFiJywkdGhpcy0+U3RhcnRUYWIoJ3Nlb2FsZXJ0cycpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9wYWdlZGVzY3JpcHRpb25zX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdwYWdlZGVzY3JpcHRpb25zJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X21ldGFzZXR0aW5nc190YWInLCR0aGlzLT5TdGFydFRhYignbWV0YXNldHRpbmdzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3NpdGVtYXBzZXR0aW5nc190YWInLCR0aGlzLT5TdGFydFRhYignc2l0ZW1hcHNldHRpbmdzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2tleXdvcmRzZXR0aW5nc190YWInLCR0aGlzLT5TdGFydFRhYigna2V5d29yZHNldHRpbmdzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX3NlY3Rpb24nLCdkZWZhdWx0YWRtaW4nKTsKCmlmIChpc3NldCgkX0dFVFsnbWVzc2FnZSddKSkgewogICR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZScsJHRoaXMtPnNob3dNZXNzYWdlKCR0aGlzLT5sYW5nKCRfR0VUWydtZXNzYWdlJ10pKSk7Cn0KCi8qIFNFTyBBbGVydHMgVGFiICovCgokYWxlcnRzICA9ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdhbGVydHNfdXJnZW50JywgJHRoaXMtPkxhbmcoJ3RpdGxlX2FsZXJ0c191cmdlbnQnKSk7CgokdXJnZW50X2FsZXJ0cyA9ICR0aGlzLT5nZXRVcmdlbnRBbGVydHMoKTsKCmlmIChjb3VudCgkdXJnZW50X2FsZXJ0cykgPT0gMCkgewogICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiAnLiR0aGlzLT5sYW5nKCdub3RoaW5nX3RvX2JlX2ZpeGVkJykuJzxiciAvPjxiciAvPic7Cn1lbHNlewogICRncm91cHMgPSBBcnJheSgpOwogIGZvcmVhY2ggKCR1cmdlbnRfYWxlcnRzIGFzICRhbGVydCkgewogICAgJGdyb3Vwc1skYWxlcnRbJ2dyb3VwJ11dW10gPSAkYWxlcnQ7CiAgfQogIGZvcmVhY2goJGdyb3VwcyBhcyAkZ3JvdXAgPT4gJGdhbGVydHMpIHsKICAJJGNvdW50ID0gY291bnQoJGdhbGVydHMpOwogICAgaWYgKGNvdW50KCRnYWxlcnRzKSA+IDIwKSB7CiAgICAgICAgJHBhcnRzID0gYXJyYXlfY2h1bmsoJGdhbGVydHMsIDIwKTsKICAgICAgICAkZ2FsZXJ0cyA9ICRwYXJ0c1swXTsKICAgICAgICAkY291bnQgPSAiPiAyMCI7CiAgICB9CiAgICBpZiAoY291bnQoJGdhbGVydHMpID09IDEpIHsKICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL05vdGlmaWNhdGlvbnMvMS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdhbGVydHNbMF1bJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRnYWxlcnRzWzBdWydsaW5rcyddKS4nXTxiciAvPjxiciAvPic7CiAgICB9ZWxzZXsKICAgICAgJGdyb3VwX3RpdGxlID0gJHRoaXMtPmxhbmcoJ2dyb3VwdGl0bGVfJy4kZ3JvdXAsIEFycmF5KCRjb3VudCkpOwogICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdyb3VwX3RpdGxlLic8L2I+IFs8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQobnVsbCkiIG9uQ2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwndXJnZW50X2dyb3VwXycuJGdyb3VwLidcJykuc3R5bGUuZGlzcGxheSA9IFwnYmxvY2tcJyI+Jy4kdGhpcy0+bGFuZygndmlld19hbGwnKS4nPC9hPl08YnIgLz48YnIgLz4nOwogICAgICAkYWxlcnRzIC49ICc8ZGl2IGlkPSJ1cmdlbnRfZ3JvdXBfJy4kZ3JvdXAuJyIgc3R5bGU9InBhZGRpbmctbGVmdDogMzBweDsgZGlzcGxheTogbm9uZTsiPic7CiAgICAgIGZvcmVhY2ggKCRnYWxlcnRzIGFzICRhbGVydCkgewogICAgICAgICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvTm90aWZpY2F0aW9ucy8xLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gPGI+Jy4kYWxlcnRbJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRhbGVydFsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOwogICAgICB9CiAgICAgICRhbGVydHMgLj0gJzwvZGl2Pic7CiAgICB9CiAgfQp9CgokYWxlcnRzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwoKJGFsZXJ0cyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnYWxlcnRzX2ltcG9ydGFudCcsICR0aGlzLT5MYW5nKCd0aXRsZV9hbGVydHNfaW1wb3J0YW50JykpOwoKJGltcG9ydGFudF9hbGVydHMgPSAkdGhpcy0+Z2V0SW1wb3J0YW50QWxlcnRzKCk7CmlmIChjb3VudCgkaW1wb3J0YW50X2FsZXJ0cykgPT0gMCkgewogICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiAnLiR0aGlzLT5sYW5nKCdub3RoaW5nX3RvX2JlX2ZpeGVkJykuJzxiciAvPjxiciAvPic7Cn1lbHNlewogICRncm91cHMgPSBBcnJheSgpOwogIGZvcmVhY2ggKCRpbXBvcnRhbnRfYWxlcnRzIGFzICRhbGVydCkgewogICAgJGdyb3Vwc1skYWxlcnRbJ2dyb3VwJ11dW10gPSAkYWxlcnQ7CiAgfQogIGZvcmVhY2goJGdyb3VwcyBhcyAkZ3JvdXAgPT4gJGdhbGVydHMpIHsKICAgICRjb3VudCA9IGNvdW50KCRnYWxlcnRzKTsKICAgIGlmIChjb3VudCgkZ2FsZXJ0cykgPiAyMCkgewogICAgICAgICRwYXJ0cyA9IGFycmF5X2NodW5rKCRnYWxlcnRzLCAyMCk7CiAgICAgICAgJGdhbGVydHMgPSAkcGFydHNbMF07CiAgICAgICAgJGNvdW50ID0gIj4gMjAiOwogICAgfQogICAgaWYgKGNvdW50KCRnYWxlcnRzKSA9PSAxKSB7CiAgICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzIuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRnYWxlcnRzWzBdWydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkZ2FsZXJ0c1swXVsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOwogICAgfWVsc2V7CiAgICAgICRncm91cF90aXRsZSA9ICR0aGlzLT5sYW5nKCdncm91cHRpdGxlXycuJGdyb3VwLCBBcnJheSgkY291bnQpKTsKICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzIuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRncm91cF90aXRsZS4nPC9iPiBbPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKG51bGwpIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ltcG9ydGFudF9ncm91cF8nLiRncm91cC4nXCcpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCciPicuJHRoaXMtPmxhbmcoJ3ZpZXdfYWxsJykuJzwvYT5dPGJyIC8+PGJyIC8+JzsKICAgICAgJGFsZXJ0cyAuPSAnPGRpdiBpZD0iaW1wb3J0YW50X2dyb3VwXycuJGdyb3VwLiciIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMwcHg7IGRpc3BsYXk6IG5vbmU7Ij4nOwogICAgICBmb3JlYWNoICgkZ2FsZXJ0cyBhcyAkYWxlcnQpIHsKICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMi5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGFsZXJ0WydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkYWxlcnRbJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsKICAgICAgfQogICAgICAkYWxlcnRzIC49ICc8L2Rpdj4nOwogICAgfQogIH0KfQoKJGFsZXJ0cyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsKCiRhbGVydHMgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FsZXJ0c19ub3RpY2VzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2FsZXJ0c19ub3RpY2VzJykpOwoKJG5vdGljZV9hbGVydHMgPSAkdGhpcy0+Z2V0Tm90aWNlQWxlcnRzKCk7CmlmIChjb3VudCgkbm90aWNlX2FsZXJ0cykgPT0gMCkgewogICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiAnLiR0aGlzLT5sYW5nKCdub3RoaW5nX3RvX2JlX2ZpeGVkJykuJzxiciAvPjxiciAvPic7Cn1lbHNlewogIGZvcmVhY2ggKCRub3RpY2VfYWxlcnRzIGFzICRhbGVydCkgewogICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzMuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRhbGVydFsnbWVzc2FnZSddLic8L2I+IFsnLmltcGxvZGUoJyB8ICcsJGFsZXJ0WydsaW5rcyddKS4nXTxiciAvPjxiciAvPic7CiAgfQp9CgokYWxlcnRzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwoKCgovKiBQYWdlIHNldHRpbmdzIFRhYiAqLwoKJHBhZ2VzZXR0aW5ncyAgPSAnPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0cj4nOwokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygncGFnZV9pZCcpLic8L3RoPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdwYWdlX25hbWUnKS4nPC90aD4nOwokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygncHJpb3JpdHknKS4nPC90aD4nOwokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygnb2dfdHlwZScpLic8L3RoPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkcycpLic8L3RoPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdkZXNjcmlwdGlvbicpLic8L3RoPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdpbmRleCcpLic8L3RoPic7CiRwYWdlc2V0dGluZ3MgLj0gJzwvdHI+JzsKCgokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBPUkRFUiBCWSBoaWVyYXJjaHkgQVNDJzsKJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCiRqID0gMDsKd2hpbGUgKCRwYWdlID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewoJCiAgICAkcHJlZml4ID0gIiI7CiAgICAkYXV0b19wcmlvcml0eSA9IDgwOwogICAgZm9yICgkaSA9IDA7ICRpIDwgc3Vic3RyX2NvdW50KCRwYWdlWydoaWVyYXJjaHknXSwnLicpOyAkaSsrKSB7CiAgICAgICAgJHByZWZpeCAuPSAnJnJhcXVvOyAnOwogICAgICAgICRhdXRvX3ByaW9yaXR5ICA9ICRhdXRvX3ByaW9yaXR5IC8gMjsKICAgIH0KICAgIGlmICgkcGFnZVsnZGVmYXVsdF9jb250ZW50J10gPT0gMSkgewogICAgICAgICRhdXRvX3ByaW9yaXR5ID0gMTAwOwogICAgfQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgV0hFUkUgY29udGVudF9pZCA9ICcuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nIEFORCBwcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIic7CiAgICAkcmVzdWx0MSA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICRkZXNjID0gJHJlc3VsdDEtPmZldGNoUm93KCk7CiAgICAkZGVzY3JpcHRpb24gPSAkZGVzY1snY29udGVudCddOwoKICAgICRrdyA9IGFycmF5X2ZsaXAoJHRoaXMtPmdldEtleXdvcmRTdWdnZXN0aW9ucygkcGFnZVsnY29udGVudF9pZCddKSk7CiAgICAKICAgICRkZXNjcmlwdGlvbl9hdXRvID0gZmFsc2U7CiAgICBpZiAoKCRkZXNjcmlwdGlvbiA9PSAiIikgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywnZmFsc2UnKSA9PSAndHJ1ZScpKSB7CiAgICAJJGxhc3Rfa2V5d29yZCA9IGFycmF5X3BvcCgka3cpOwogICAgCSRrZXl3b3JkcyA9IGltcGxvZGUoJywgJywka3cpIC4gIiAiIC4gJHRoaXMtPmxhbmcoJ2FuZCcpIC4gIiAiIC4gJGxhc3Rfa2V5d29yZDsKICAgIAkkZGVzY3JpcHRpb24gPSAkdGhpcy0+bGFuZygnYXV0b19nZW5lcmF0ZWQnKS4iOiAiLnN0cl9yZXBsYWNlKCd7a2V5d29yZHN9Jywka2V5d29yZHMsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSk7CiAgICAJJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRwYWdlWydjb250ZW50X25hbWUnXSwkZGVzY3JpcHRpb24pOwogICAgCSRkZXNjcmlwdGlvbl9hdXRvID0gdHJ1ZTsKICAgIH0KICAgIAogICAgJGRlZmF1bHRfb2d0eXBlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKTsKCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gJy4kcGFnZVsnY29udGVudF9pZCddOwogICAgJHJlc3VsdDIgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkaW5mbyA9ICRyZXN1bHQyLT5mZXRjaFJvdygpOwogICAgICAgIAogICAgJHByaW9yaXR5ID0gJyhhdXRvKSAnLiRhdXRvX3ByaW9yaXR5LiclICc7CiAgICAkb2d0eXBlID0gJyhkZWZhdWx0KSAnLiRkZWZhdWx0X29ndHlwZS4nICcuJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzMi9pbWcvZWRpdC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9vZ3R5cGUiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOwogICAgJGtleXdvcmRzID0gJyhhdXRvKSAnLmNvdW50KCRrdykuJyAnLiR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29sczIvaW1nL2VkaXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsIGltcGxvZGUoJywgJywka3cpLic7ICcuJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9rZXl3b3JkcyIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSk7CiAgICAkaW5kZXhhYmxlID0gJ3RydWUnOwogICAgaWYgKCRpbmZvWydjb250ZW50X2lkJ10gIT0gIiIpIHsKICAgICAgICBpZiAoJGluZm9bJ3ByaW9yaXR5J10gIT0gMCkgewogICAgICAgICAgJHByaW9yaXR5ID0gJzxiPicuJGluZm9bJ3ByaW9yaXR5J10gLiAnJSAnLiR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29sczIvaW1nL3Jlc2V0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygncmVzZXRfdG9fZGVmYXVsdCcpLCBBcnJheSgid2hhdCI9PiJyZXNldF9wcmlvcml0eSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkgLiAnPC9iPic7CiAgICAgICAgICAkYXV0b19wcmlvcml0eSA9ICRpbmZvWydwcmlvcml0eSddOwogICAgICAgIH0KICAgICAgICBpZiAoJGluZm9bJ29ndHlwZSddICE9ICIiKSB7CiAgICAgICAgICAkb2d0eXBlID0gJzxiPicuJGluZm9bJ29ndHlwZSddIC4gJyAnIC4gJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzMi9pbWcvcmVzZXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdyZXNldF90b19kZWZhdWx0JyksIEFycmF5KCJ3aGF0Ij0+InJlc2V0X29ndHlwZSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkgLiAkdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9lZGl0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnZWRpdF92YWx1ZScpLCBBcnJheSgid2hhdCI9PiJlZGl0X29ndHlwZSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvYj4nOwogICAgICAgIH0KICAgICAgICBpZiAoJGluZm9bJ2tleXdvcmRzJ10gIT0gIiIpIHsKICAgICAgICAgICAgJGtleXdvcmRzID0gJzxiPicuY291bnQoZXhwbG9kZSgnICcsJGluZm9bJ2tleXdvcmRzJ10pKSAuICR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29sczIvaW1nL3Jlc2V0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygncmVzZXRfdG9fZGVmYXVsdCcpLCBBcnJheSgid2hhdCI9PiJyZXNldF9rZXl3b3JkcyIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkgLiAkdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9lZGl0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnZWRpdF92YWx1ZScpLCBBcnJheSgid2hhdCI9PiJlZGl0X2tleXdvcmRzIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKS4nPC9iPic7CiAgICAgICAgfQogICAgICAgIGlmICgkaW5mb1snaW5kZXhhYmxlJ10gPT0gMCkgewogICAgICAgICAgJGluZGV4YWJsZSA9ICdmYWxzZSc7CiAgICAgICAgfQogICAgfQogICAgCiAgICAkdXBkb3duICA9ICR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS9hcnJvdy1kLmdpZiIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdkZWNyZWFzZV9wcmlvcml0eScpLCBBcnJheSgnd2hhdCc9PidzZXRfcHJpb3JpdHknLCdwcmlvcml0eSc9PiRhdXRvX3ByaW9yaXR5LTEwLCdjb250ZW50X2lkJz0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOwogICAgJHVwZG93biAuPSAkdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnaW5jcmVhc2VfcHJpb3JpdHknKSwgQXJyYXkoJ3doYXQnPT4nc2V0X3ByaW9yaXR5JywncHJpb3JpdHknPT4kYXV0b19wcmlvcml0eSsxMCwnY29udGVudF9pZCc9PiRwYWdlWydjb250ZW50X2lkJ10pKTsKICAgIAogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRyIGNsYXNzPSJyb3cnLigkaiAlIDIgKyAxKS4nIj4nOwogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nPC90ZD4nOwogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHByZWZpeCAuJyAnLiRwYWdlWydjb250ZW50X25hbWUnXS4nPC90ZD4nOwogICAgaWYgKCRwYWdlWyd0eXBlJ10gPT0gJ2NvbnRlbnQnIHx8ICRwYWdlWyd0eXBlJ10gPT0gJ2NvbnRlbnQyJyApIHsKICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHVwZG93bi4nICcuJHByaW9yaXR5Lic8L3RkPic7CiAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4nLiRvZ3R5cGUuJzwvdGQ+JzsKICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJGtleXdvcmRzLic8L3RkPic7CiAgICAgIGlmICgkZGVzY3JpcHRpb24gIT0gIiIpIHsKICAgICAgICBpZiAoJGRlc2NyaXB0aW9uX2F1dG8pIHsKICAgICAgCSAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPjxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3dhcm5pbmcuZ2lmIiB0aXRsZT0iJy5zdHJpcF90YWdzKCRkZXNjcmlwdGlvbikuJyIgLz48L3RkPic7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIHRpdGxlPSInLnN0cmlwX3RhZ3MoJGRlc2NyaXB0aW9uKS4nIiAvPjwvdGQ+JzsKICAgICAgICB9CiAgICAgIH1lbHNlewogICAgICAgIAogICAgICAgIGlmIChpc3NldCgkX0dFVFsnc3BfJ10pKQogICAgICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPjxhIGhyZWY9ImVkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nIj48aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS9mYWxzZS5naWYiIGJvcmRlcj0iMCIgdGl0bGU9IicuJHRoaXMtPmxhbmcoJ2NsaWNrX3RvX2FkZF9kZXNjcmlwdGlvbicpLiciIC8+PC9hPjwvdGQ+JzsKICAgICAgICBlbHNlCiAgICAgICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+PGEgaHJlZj0iZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwYWdlWydjb250ZW50X2lkJ10uJyI+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIiBib3JkZXI9IjAiIHRpdGxlPSInLiR0aGlzLT5sYW5nKCdjbGlja190b19hZGRfZGVzY3JpcHRpb24nKS4nIiAvPjwvYT48L3RkPic7CiAgICAgICAgCiAgICAgIH0KICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtLycuJGluZGV4YWJsZS4nLmdpZiIgLz4nLCAkdGhpcy0+bGFuZygndG9nZ2xlJyksIEFycmF5KCd3aGF0Jz0+J3RvZ2dsZV9pbmRleCcsJ2NvbnRlbnRfaWQnPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvdGQ+JzsKICAgIH1lbHNlewogICAgCSRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4tLS08L3RkPic7CiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsKICAgIAkkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOwogICAgCSRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4tLS08L3RkPic7CiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsKICAgIH0KICAgICRwYWdlc2V0dGluZ3MgLj0gJzwvdHI+JzsKICAgICRqKys7CiAgICAKfQoKJHBhZ2VzZXR0aW5ncyAuPSAnPC90YWJsZT4nOwoKLyogU0VPIFNldHRpbmdzIFRhYiAqLwoKLy8gR2V0IGltYWdlIGZpbGVzIGZyb20gL3VwbG9hZHMvaW1hZ2VzCiRmaWxlc19saXN0ID0gQXJyYXkoJHRoaXMtPmxhbmcoJ25vbmUnKT0+IiIpOwokZHAgPSBvcGVuZGlyKCRnQ21zLT5jb25maWdbJ3Jvb3RfcGF0aCddLicvdXBsb2Fkcy9pbWFnZXMnKTsKd2hpbGUgKCRmaWxlID0gcmVhZGRpcigkZHApKSB7CiAgICBpZiAoc3RycG9zKHN1YnN0cigkZmlsZSwgLTUpLCcuZ2lmJykgIT09IGZhbHNlKSB7CiAgICAgICAgJGZpbGVzX2xpc3RbJGZpbGVdID0gJGZpbGU7CiAgICB9CiAgICBpZiAoc3RycG9zKHN1YnN0cigkZmlsZSwgLTUpLCcucG5nJykgIT09IGZhbHNlKSB7CiAgICAgICAgJGZpbGVzX2xpc3RbJGZpbGVdID0gJGZpbGU7CiAgICB9CiAgICBpZiAoc3RycG9zKHN1YnN0cigkZmlsZSwgLTUpLCcuanBnJykgIT09IGZhbHNlKSB7CiAgICAgICAgJGZpbGVzX2xpc3RbJGZpbGVdID0gJGZpbGU7CiAgICB9CiAgICBpZiAoc3RycG9zKHN1YnN0cigkZmlsZSwgLTUpLCcuanBlZycpICE9PSBmYWxzZSkgewogICAgICAgICRmaWxlc19saXN0WyRmaWxlXSA9ICRmaWxlOwogICAgfQp9CmNsb3NlZGlyKCRkcCk7Cgokc2V0dGluZ3MgID0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydChudWxsLCAnY2hhbmdlc2V0dGluZ3MnKTsKCi8qIFBhZ2UgVGl0bGUgKi8KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICd0aXRsZV9kZXNjcmlwdGlvbicsICR0aGlzLT5MYW5nKCd0aXRsZV90aXRsZV9kZXNjcmlwdGlvbicpKTsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ3RpdGxlX3RpdGxlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ3RpdGxlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlJywne3RpdGxlfSB8IHskc2l0ZW5hbWV9IC0geyR0aXRsZV9rZXl3b3Jkc30nKSwgMzIpLicgJy4kdGhpcy0+bGFuZygndGl0bGVfdGl0bGVfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ3RpdGxlX21ldGFfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAndGl0bGVfbWV0YScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywne3RpdGxlfSB8IHskc2l0ZW5hbWV9JyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ3RpdGxlX21ldGFfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2Rlc2NyaXB0aW9uX2Jsb2NrX3RpdGxlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2Rlc2NyaXB0aW9uX2Jsb2NrJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ2Rlc2NyaXB0aW9uX2Jsb2NrX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywxKSkgLiAnPC9wPic7CgoKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2Rlc2NyaXB0aW9uX2F1dG9fdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnZGVzY3JpcHRpb25fYXV0bycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywnVGhpcyBwYWdlIGNvdmVycyB0aGUgdG9waWNzIHtrZXl3b3Jkc30nKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYXV0b19oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZGVmYXVsdF9rZXl3b3Jkc190aXRsZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdkZWZhdWx0X2tleXdvcmRzJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnZGVmYXVsdF9rZXl3b3Jkc19oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7CgovKiBNRVRBIFR5cGVzICovCiRzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnbWV0YV90eXBlJywgJHRoaXMtPkxhbmcoJ3RpdGxlX21ldGFfdHlwZScpKTsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnbWV0YV9jcmVhdGVfc3RhbmRhcmQnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnbWV0YV9zdGFuZGFyZCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKSkgLiAnPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ21ldGFfY3JlYXRlX2R1YmxpbmNvcmUnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnbWV0YV9kdWJsaW5jb3JlJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsMSkpIC4gJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdtZXRhX2NyZWF0ZV9vcGVuZ3JhcGgnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnbWV0YV9vcGVuZ3JhcGgnLCAxLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGgnLDEpKSAuICc8L3A+JzsKJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwoKLyogTUVUQSBEZWZhdWx0cyAqLwokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ21ldGFfZGVmYXVsdHMnLCAkdGhpcy0+TGFuZygndGl0bGVfbWV0YV9kZWZhdWx0cycpKTsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfcHVibGlzaGVyJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfcHVibGlzaGVyJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcHVibGlzaGVyJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfcHVibGlzaGVyX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX2NvbnRyaWJ1dG9yJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfY29udHJpYnV0b3InLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9jb250cmlidXRvcicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2NvbnRyaWJ1dG9yX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX2NvcHlyaWdodCcpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2NvcHlyaWdodCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcsJyhDKSAnLmRhdGUoJ1knKS4nLiBBbGwgcmlnaHRzIHJlc2VydmVkLicpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2NvcHlyaWdodF9oZWxwJykuJzwvcD48YnIgLz4nOwoKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPjxiPicuJHRoaXMtPmxhbmcoJ21ldGFfbG9jYXRpb25fZGVzY3JpcHRpb24nKS4nPC9iPjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9sb2NhdGlvbicpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2xvY2F0aW9uJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9sb2NhdGlvbl9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9yZWdpb24nKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9yZWdpb24nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCcnKSwgNSwgNSkuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX3JlZ2lvbl9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9sYXRpdHVkZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2xhdGl0dWRlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9sYXRpdHVkZV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9sb25naXR1ZGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9sb25naXR1ZGUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9sb25naXR1ZGVfaGVscCcpLic8L3A+PGJyIC8+JzsKCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij48Yj4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9kZXNjcmlwdGlvbicpLic8L2I+PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF90aXRsZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF90aXRsZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90aXRsZScsJ3t0aXRsZX0nKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfdGl0bGVfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3R5cGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfdHlwZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3R5cGVfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9pbWFnZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bihudWxsLCAnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnLCAkZmlsZXNfbGlzdCwgbnVsbCwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywnJykpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfaW1hZ2VfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2FkbWluc19oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb25faGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwoKLyogQWRkaXRpb25hbCBNZXRhIFRhZ3MgKi8KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdhZGRpdGlvbmFsX21ldGEnLCAkdGhpcy0+TGFuZygndGl0bGVfYWRkaXRpb25hbF9tZXRhX3RhZ3MnKSk7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdhZGRpdGlvbmFsX21ldGFfdGFnc190aXRsZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsIG51bGwsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycsJycpLCAnYWRkaXRpb25hbF9tZXRhX3RhZ3MnKS4nICcuJHRoaXMtPmxhbmcoJ2FkZGl0aW9uYWxfbWV0YV90YWdzX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsKCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NhdmVfbWV0YV9zZXR0aW5ncycsICR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsKJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7Cgokc2V0dGluZ3MgLj0gJzxiciAvPjxiciAvPicuJHRoaXMtPmxhbmcoJ2hlbHBfZGVzY3JpcHRpb25fY29udGVudCcpOwoKLyogU0lURU1BUCBTZXR0aW5ncyAqLwoKJHNzZXR0aW5ncyAgPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KG51bGwsICdjaGFuZ2VzZXR0aW5ncycpOwoKJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnc2l0ZW1hcF9kZXNjcmlwdGlvbicsICR0aGlzLT5MYW5nKCd0aXRsZV9zaXRlbWFwX2Rlc2NyaXB0aW9uJykpOwokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnY3JlYXRlX3NpdGVtYXBfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnY3JlYXRlX3NpdGVtYXAnLCAxLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpKSAuICc8L3A+JzsKaWYgKGluaV9nZXQoJ2FsbG93X3VybF9mb3BlbicpKSB7CiAgJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ3B1c2hfc2l0ZW1hcF90aXRsZScpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdwdXNoX3NpdGVtYXAnLCAwLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywwKSkgLiAnPC9wPic7Cn1lbHNlewogICRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdwdXNoX3NpdGVtYXBfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+TGFuZygnbm9fdXJsX2ZvcGVuJykgLiAnPC9wPic7Cn0KJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2NyZWF0ZV9yb2JvdHNfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnY3JlYXRlX3JvYm90cycsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywxKSkgLiAnPC9wPic7Cgokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ3ZlcmlmaWNhdGlvbl90aXRsZScpLic6PC9wPic7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAndmVyaWZpY2F0aW9uJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3ZlcmlmaWNhdGlvbicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCd2ZXJpZmljYXRpb25faGVscCcpLic8L3A+JzsKJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsKCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzYXZlX3NpdGVtYXBfc2V0dGluZ3MnLCAkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7Cgokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7Cgokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7CiRzc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ3JlZ2VuZXJhdGVfc2l0ZW1hcCcsICR0aGlzLT5MYW5nKCd0aXRsZV9yZWdlbmVyYXRlX3NpdGVtYXAnKSk7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdkb19yZWdlbmVyYXRlJywgJHRoaXMtPmxhbmcoJ2J1dHRvbl9yZWdlbmVyYXRlX3NpdGVtYXAnKSkuJzwvcD4nOwokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4nOwokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5sYW5nKCd0ZXh0X3JlZ2VuZXJhdGVfc2l0ZW1hcCcpLic8L3A+JzsKJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsKJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwoKJHNzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9zaXRlbWFwX3JvYm90cycpOwoKLyogS0VZV09SRCBTZXR0aW5ncyAqLwoKJGtzZXR0aW5ncyAgPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KG51bGwsICdjaGFuZ2VzZXR0aW5ncycpOwoKJGtzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAna2V5d29yZF93ZWlnaHRfZGVzY3JpcHRpb24nLCAkdGhpcy0+TGFuZygndGl0bGVfa2V5d29yZF93ZWlnaHQnKSk7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygna2V5d29yZF9taW5sZW5ndGhfdGl0bGUnKS4nOjwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfbWlubGVuZ3RoJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpLCAyKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfbWlubGVuZ3RoX2hlbHAnKS4nPC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygna2V5d29yZF90aXRsZV93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfdGl0bGVfd2VpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0JywnNicpLCAyKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0X2hlbHAnKS4nPC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywnNCcpLCAyKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0X2hlbHAnKS4nPC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywnMicpLCAyKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X2hlbHAnKS4nPC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygna2V5d29yZF9jb250ZW50X3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9jb250ZW50X3dlaWdodCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywnMScpLCAyKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfY29udGVudF93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0X3RpdGxlJykuJzo8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdrZXl3b3JkX21pbmltdW1fd2VpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnLCc3JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9taW5pbXVtX3dlaWdodF9oZWxwJykuJzwvcD4nOwoka3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOwoKJGtzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAna2V5d29yZF9leGNsdWRlX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2tleXdvcmRfZXhjbHVkZScpKTsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2V4Y2x1ZGVfdGl0bGUnKS4nOjwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgbnVsbCwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfZXhjbHVkZScsJycpLCAna2V5d29yZF9leGNsdWRlJykuJyAnLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2V4Y2x1ZGVfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsKCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzYXZlX2tleXdvcmRfc2V0dGluZ3MnLCAkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7CiRrc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCiRrc2V0dGluZ3MgLj0gJzxiciAvPjxiciAvPicuJHRoaXMtPmxhbmcoJ2hlbHBfa2V5d29yZF9nZW5lcmF0b3InKTsKCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FsZXJ0cycsJGFsZXJ0cyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigncGFnZXNldHRpbmdzJywkcGFnZXNldHRpbmdzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXRhX2Zvcm0nLCRzZXR0aW5ncyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc2l0ZW1hcF9mb3JtJywkc3NldHRpbmdzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdrZXl3b3JkX2Zvcm0nLCRrc2V0dGluZ3MpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbnBhbmVsLnRwbCcpOwoKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.edit_keywords.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZWRpdG1ldGEiIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCgppZiAoaXNzZXQoJF9QT1NUWydzZXRfa2V5d29yZHMnXSkpIHsKCWlmICgkX1BPU1RbJ2tleXdvcmRzJ10gIT0gIiIpIHsKCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIgU0VUIGNvbnRlbnRfaWQgPSAiLiRfUE9TVFsnY29udGVudF9pZCddLiIsIGtleXdvcmRzID0gJyIuJF9QT1NUWydrZXl3b3JkcyddLiInLCBpbmRleGFibGUgPSAxIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIGtleXdvcmRzID0gJyIuJF9QT1NUWydrZXl3b3JkcyddLiInIjsKCX1lbHNlewoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIgU0VUIGtleXdvcmRzID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXTsKCX0JCQoJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CQoJJHRoaXMtPnJlZGlyZWN0KG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCBBcnJheSgndGFiJz0+J3BhZ2VkZXNjcmlwdGlvbnMnKSk7Cn0KCiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOwoKaWYgKCRpbmZvWydrZXl3b3JkcyddID09ICIiKSB7CgkkaW5mb1sna2V5d29yZHMnXSA9IHN0cnRvbG93ZXIoaW1wbG9kZSgnICcsYXJyYXlfZmxpcCgkdGhpcy0+Z2V0S2V5d29yZFN1Z2dlc3Rpb25zKCRfR0VUWydjb250ZW50X2lkJ10pKSkpOwp9Cgokb3V0cHV0ICA9ICR0aGlzLT5jcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2VkaXRfa2V5d29yZHMnKTsKJG91dHB1dCAuPSAkdGhpcy0+Y3JlYXRlSW5wdXRIaWRkZW4obnVsbCwgJ2NvbnRlbnRfaWQnLCAkX0dFVFsnY29udGVudF9pZCddKTsKJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdlbnRlcl9uZXdfa2V5d29yZHMnKS4nOjwvcD4nOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVUZXh0QXJlYShmYWxzZSwgbnVsbCwgJGluZm9bJ2tleXdvcmRzJ10sICdrZXl3b3JkcycpLicgJy4kdGhpcy0+bGFuZygnaGVscF9uZXdfa2V5d29yZHMnKS4nPC9wPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzZXRfa2V5d29yZHMnLCR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsKCiRvdXRwdXQgLj0gJHRoaXMtPmNyZWF0ZUZvcm1FbmQoKTsKCmVjaG8gJG91dHB1dDsKCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.edit_ogtype.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZWRpdG1ldGEiIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCmlmIChpc3NldCgkX1BPU1RbJ3NldF9vZ3R5cGUnXSkpIHsKCWlmICgkX1BPU1RbJ29nX3R5cGUnXSAhPSAiIikgewoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgY29udGVudF9pZCA9ICIuJF9QT1NUWydjb250ZW50X2lkJ10uIiwgb2d0eXBlID0gJyIuJF9QT1NUWydvZ190eXBlJ10uIicsIGluZGV4YWJsZSA9IDEgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgb2d0eXBlID0gJyIuJF9QT1NUWydvZ190eXBlJ10uIiciOwoJfWVsc2V7CgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgb2d0eXBlID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXTsKCX0KCQoJZWNobyAkcXVlcnk7CgkKCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJJHRoaXMtPnJlZGlyZWN0KG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCBBcnJheSgndGFiJz0+J3BhZ2VkZXNjcmlwdGlvbnMnKSk7Cn0KCiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOwoKJG91dHB1dCAgPSAkdGhpcy0+Y3JlYXRlRm9ybVN0YXJ0KG51bGwsICdlZGl0X29ndHlwZScpOwokb3V0cHV0IC49ICR0aGlzLT5jcmVhdGVJbnB1dEhpZGRlbihudWxsLCAnY29udGVudF9pZCcsICRfR0VUWydjb250ZW50X2lkJ10pOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2VudGVyX25ld19vZ3R5cGUnKS4nOjwvcD4nOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ29nX3R5cGUnLCAkaW5mb1snb2d0eXBlJ10sIDMwLCAzMCkuJyAnLiR0aGlzLT5sYW5nKCdoZWxwX25ld19vZ3R5cGUnKS4nPC9wPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPjxiciAvPicuJHRoaXMtPmxhbmcoJ2hlbHBfb3BlbmdyYXBoJykuJzxiciAvPjxiciAvPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzZXRfb2d0eXBlJywkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7Cgokb3V0cHV0IC49ICR0aGlzLT5jcmVhdGVGb3JtRW5kKCk7CgplY2hvICRvdXRwdXQ7CgoKPz4=]]></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[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1NFT1Rvb2xzMic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1NFT1Rvb2xzMiBoYXMgYmVlbiBpbnN0YWxsZWQuIEJlIHN1cmUgdG8gcmVhZCB0aGUgbW9kdWxlIGhlbHAgdG8gbGVhcm4gaG93IHRvIHVzZSBpdC4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1NFT1Rvb2xzMiBoYXMgYmVlbiB1bmluc3RhbGxlZC4gUGxlYXNlIGJlIGF3YXJlIHRoYXQgeW91IGhhdmUganVzdCBsb3N0IGFsbCBtZXRhIGluZm9ybWF0aW9uIGZyb20geW91ciBwYWdlcyEnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byB1bmluc3RhbGwgU0VPVG9vbHMyPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0EgY29sbGVjdGlvbiBvZiB0b29scyB0byBoZWxwIHdpdGggU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24uJzsKCiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7CiRsYW5kWydhZG1pbl90aXRsZSddID0gJ1NFT1Rvb2xzMiBBZG1pbiBQYW5lbCc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnSGVscHMgd2l0aCBTRU8gaW4gZ2VuZXJhbCwgYXV0b21hdGljYWxseSBnZW5lcmF0aW5nIFhNTCBzaXRlbWFwcyBhbmQgY29tcHJlaGVuc2l2ZSBtZXRhIGRlc2NyaXB0aW9ucyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snU0VPQWxlcnRzJ10gPSAnU0VPIEFsZXJ0cyc7CiRsYW5nWydQYWdlZGVzY3JpcHRpb25zJ10gPSAnUGFnZSBzZXR0aW5ncyc7CiRsYW5nWydTaXRlbWFwJ10gPSAnU2l0ZW1hcCc7CiRsYW5nWydTRU9TZXR0aW5ncyddID0gJ1NFTyBTZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9zZW9hbGVydHMnXSA9ICdTRU8gQWxlcnRzJzsKJGxhbmdbJ3RpdGxlX3BhZ2VkZXNjcmlwdGlvbnMnXSA9ICdQYWdlIHNldHRpbmdzJzsKJGxhbmdbJ3RpdGxlX3NpdGVtYXAnXSA9ICdTaXRlbWFwJzsKJGxhbmdbJ3RpdGxlX3Nlb3NldHRpbmdzJ10gPSAnU0VPIFNldHRpbmdzJzsKCiRsYW5nWyd0aXRsZV9tZXRhX3R5cGUnXSA9ICdNZXRhIFRhZyBHZW5lcmF0b3InOwokbGFuZ1snbWV0YV9jcmVhdGVfc3RhbmRhcmQnXSA9ICdHZW5lcmF0ZSBzdGFuZGFyZCBNZXRhIFRhZ3MnOwokbGFuZ1snbWV0YV9jcmVhdGVfZHVibGluY29yZSddID0gJ0dlbmVyYXRlIER1YmxpbiBDb3JlIE1ldGEgVGFncyc7CiRsYW5nWydtZXRhX2NyZWF0ZV9vcGVuZ3JhcGgnXSA9ICdHZW5lcmF0ZSBPcGVuR3JhcGggTWV0YSBUYWdzIChlLmcuIGZvciBGYWNlYm9vayBMaWtlIEJ1dHRvbiknOwoKJGxhbmdbJ3RpdGxlX21ldGFfZGVmYXVsdHMnXSA9ICdNRVRBIFRhZyBWYWx1ZXMnOwokbGFuZ1snbWV0YV9wdWJsaXNoZXInXSA9ICdTaXRlIHB1Ymxpc2hlcic7CiRsYW5nWydtZXRhX3B1Ymxpc2hlcl9oZWxwJ10gPSAnKFRoaXMgaXMgdXN1YWxseSB0aGUgb3JnYW5pemF0aW9uIHlvdSBhcmUgYnVpbGRpbmcgdGhlIHdlYnNpdGUgZm9yKSc7CiRsYW5nWydtZXRhX2NvbnRyaWJ1dG9yJ10gPSAnU2l0ZSBjb250cmlidXRvcic7CiRsYW5nWydtZXRhX2NvbnRyaWJ1dG9yX2hlbHAnXSA9ICcoVXN1YWxseSwgdGhpcyB3b3VsZCBiZSB5b3Ugb3IgYW55IG90aGVyIGNvbnRlbnQgYXV0aG9yKSc7CiRsYW5nWydtZXRhX2NvcHlyaWdodCddID0gJ1NpdGUgY29weXJpZ2h0JzsKJGxhbmdbJ21ldGFfY29weXJpZ2h0X2hlbHAnXSA9ICcoU29tZXRoaW5nIGxpa2UgIihDKSBZb3VyIENvbXBhbnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQiKSc7CiRsYW5nWydtZXRhX2xvY2F0aW9uX2Rlc2NyaXB0aW9uJ10gPSAnSWYgeW91ciB3ZWJzaXRlIGlzIGFib3V0IGFuIGVudGl0aXkgdGhhdCBjYW4gYmUgbG9jYXRlZCBvbiBhIG1hcCwgeW91IHNob3VsZCBvcHRpb25hbGx5IGZpbGwgaW4gdGhlIGZvbGxvd2luZyB2YWx1ZXM6JzsKJGxhbmdbJ21ldGFfbG9jYXRpb24nXSA9ICdMb2NhdGlvbiBvZiB5b3VyIGVudGl0eSc7CiRsYW5nWydtZXRhX2xvY2F0aW9uX2hlbHAnXSA9ICcoVXN1YWxseSwgdGhpcyB3b3VsZCBiZSB0aGUgdG93biBuYW1lIG9mIHlvdXIgY29tcGFueSknOwokbGFuZ1snbWV0YV9yZWdpb24nXSA9ICdSZWdpb24gb2YgeW91ciBlbnRpdHknOwokbGFuZ1snbWV0YV9yZWdpb25faGVscCddID0gJyhFbnRlciBzb21ldGhpbmcgbGlrZSAiVVMtSUwiIGZvciBhbiBlbnRpdHkgbG9jYXRlZCBpbiBJbGxpbm9pcywgVVMpJzsKJGxhbmdbJ21ldGFfbGF0aXR1ZGUnXSA9ICdMYXRpdHVkZSBvZiB5b3VyIGVudGl0eSc7CiRsYW5nWydtZXRhX2xhdGl0dWRlX2hlbHAnXSA9ICcoRW50ZXIgdGhlIGRlY2ltYWwgbGF0aXR1ZGUgZ2VvIGNvb2RpbmF0ZSBvZiB5b3VyIGVudGl0aXkpJzsKJGxhbmdbJ21ldGFfbG9uZ2l0dWRlJ10gPSAnTG9uZ2l0dWRlIG9mIHlvdXIgZW50aXR5JzsKJGxhbmdbJ21ldGFfbG9uZ2l0dWRlX2hlbHAnXSA9ICcoRW50ZXIgdGhlIGRlY2ltYWwgbG9uZ2l0dWRlIGdlbyBjb29kaW5hdGUgb2YgeW91ciBlbnRpdGl5KSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9kZXNjcmlwdGlvbiddID0gJ0lmIHlvdSBhcmUgY3JlYXRpbmcgT3BlbkdyYXBoIE1FVEEgVGFncywgcGxlYXNlIGZpbGwgaW4gdGhlIGZvbGxvd2luZyB2YWx1ZXM6JzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3RpdGxlJ10gPSAnT3BlbkdyYXBoIHBhZ2UgdGl0bGUnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGVfaGVscCddID0gJyhZb3UgY2FuIHVzZSBhbGwgc21hcnR5IHRhZ3MgaGVyZSwgZS5nLiB0byByZXBsYWNlIHdpdGggdGhlIGFjdHVhbCBwYWdlIHRpdGxlKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF90eXBlJ10gPSAnT3BlbkdyYXBoIGRlZmF1bHQgcGFnZSB0eXBlJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3R5cGVfaGVscCddID0gJyhUaGUgZGVmYXVsdCBwYWdlIHR5cGUgZm9yIE9wZW5HcmFwaCwgY2FuIGJlIG92ZXJyaWRkZW4gZm9yIGVhY2ggcGFnZS4gTG9vayA8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9vcGVuZ3JhcGgjdHlwZXMiIHRhZ2V0PSJfYmxhbmsiPmhlcmU8L2E+IGZvciBhIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMpJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJ10gPSAnT3BlbkdyYXBoIHNpdGUgbmFtZSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9zaXRlbmFtZV9oZWxwJ10gPSAnKEEgc2hvcnQgdmVyc2lvbiBvZiB5b3VyIHNpdGUgbmFtZSwgZS5nLiAiWW91ciBDb21wYW55IiwgbWF4LiAyNSBjaGFycyknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnXSA9ICdPcGVuR3JhcGggZGVmYXVsdCBpbWFnZSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9pbWFnZV9oZWxwJ10gPSAnKFNlbGVjdCBhbiBpbWFnZSBmcm9tIHlvdXIgL3VwbG9hZHMvaW1hZ2VzIGRpcmVjdG9yeSB0byBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGZvciBPcGVuR3JhcGggcGFnZXMpJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FkbWlucyddID0gJ0ZhY2Vib29rIHNpdGUgYWRtaW5pc3RyYXRvcnMnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYWRtaW5zX2hlbHAnXSA9ICcoQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBmYWNlYm9vayBhY2NvdW50IElEcyB3aG8gYXJlIGFibGUgdG8gYWRtaW5pc3RyYXRlIHRoZSBzdHJlYW1zIG9mIHlvdXIgcGFnZXMpJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJ10gPSAnRmFjZWJvb2sgYXBwbGljYXRpb24nOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb25faGVscCddID0gJyhUaGUgSUQgb2YgYSBmYWNlYm9vayBhcHBsaWNhdGlvbiBhYmxlIHRvIGFkbWluaXN0cmF0ZSB0aGUgc3RyZWFtcyBvZiB5b3VyIHBhZ2VzKSc7CgokbGFuZ1sndGl0bGVfdGl0bGVfZGVzY3JpcHRpb24nXSA9ICdQYWdlIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQga2V5d29yZHMnOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdQYWdlIHRpdGxlJzsKJGxhbmdbJ3RpdGxlX3RpdGxlX2hlbHAnXSA9ICcoVGhlIHBhZ2UgdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBicm93c2VyXCdzIHRpdGxlIGJhci4gWW91IGNhbiB1c2UgdGhlIHRhZ3Mge3RpdGxlfSwge3BhZ2V0aXRsZX0sIHtzZW9fa2V5d29yZHN9IGFuZCBhbGwgc21hcnR5IHRhZ3MgYW5kIFVEVHMgaGVyZSknOwokbGFuZ1sndGl0bGVfbWV0YV90aXRsZSddID0gJ1BhZ2UgTWV0YSB0aXRsZSc7CiRsYW5nWyd0aXRsZV9tZXRhX2hlbHAnXSA9ICcoVGhlIHBhZ2UgdGl0bGUgdG8gYmUgdXNlZCBpbiB0aGUgTWV0YSB0aXRsZSB0YWdzLiBZb3UgY2FuIHVzZSB0aGUgdGFncyB7dGl0bGV9LCB7cGFnZXRpdGxlfSwge3Nlb19rZXl3b3Jkc30gYW5kIGFsbCBzbWFydHkgdGFncyBhbmQgVURUcyBoZXJlKSc7CiRsYW5nWydkZXNjcmlwdGlvbl9ibG9ja190aXRsZSddID0gJ05hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uX2Jsb2NrX2hlbHAnXSA9ICcoVGhlIG5hbWUgb2YgeW91ciBwYWdlIGRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2suIFBsZWFzZSBzZWUgYmVsb3cgZm9yIGFuIGV4cGxhbmF0aW9uKSc7CiRsYW5nWydkZWZhdWx0X2tleXdvcmRzX3RpdGxlJ10gPSAnS2V5d29yZHMgdG8gYWx3YXlzIGluY2x1ZGUnOwokbGFuZ1snZGVmYXVsdF9rZXl3b3Jkc19oZWxwJ10gPSAnKEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2Yga2V5d29yZHMgeW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBvbiBldmVyeSBwYWdlKSc7CgokbGFuZ1sndGl0bGVfc2l0ZW1hcF9kZXNjcmlwdGlvbiddID0gJ0dvb2dsZSBTaXRlbWFwIGFuZCBDcmF3bGVyIFNldHRpbmdzJzsKJGxhbmdbJ2NyZWF0ZV9zaXRlbWFwX3RpdGxlJ10gPSAnQ3JlYXRlIGFuIFhNTCBHb29nbGUgU2l0ZW1hcConOwokbGFuZ1sncHVzaF9zaXRlbWFwX3RpdGxlJ10gPSAnQXV0b21hdGljYWxseSBwdXNoIHRoZSBzaXRlbWFwIHRvIEdvb2dsZSBhZnRlciBjb250ZW50IGNoYW5nZXMnOwokbGFuZ1snY3JlYXRlX3JvYm90c190aXRsZSddID0gJ0NyZWF0ZSBhIHJvYm90cy50eHQgZmlsZSonOwokbGFuZ1sndmVyaWZpY2F0aW9uX3RpdGxlJ10gPSAnU2l0ZSB2ZXJpZmljYXRpb24gY29kZSc7CiRsYW5nWyd2ZXJpZmljYXRpb25faGVscCddID0gJyhUaGUgc2l0ZSB2ZXJpZmljYXRpb24gY29kZSB5b3Ugb2J0YWluIGZyb20gR29vZ2xlIFdlYm1hc3RlciBUb29scywganVzdCB0aGUgaGFzaCwgbm90IHRoZSBjb21wbGV0ZSBtZXRhIHRhZyknOwoKJGxhbmdbJ3RpdGxlX2FsZXJ0c191cmdlbnQnXSA9ICdUbyBiZSBmaXhlZCBpbW1lZGlhdGVseSc7CiRsYW5nWyd0aXRsZV9hbGVydHNfaW1wb3J0YW50J10gPSAnVG8gYmUgZml4ZWQgYXMgc29vbiBhcyBwb3NzaWJsZSc7CiRsYW5nWyd0aXRsZV9hbGVydHNfbm90aWNlcyddID0gJ1RoaW5ncyB5b3Ugc2hvdWxkIGNvbnNpZGVyIGZpeGluZyc7CiRsYW5nWydub3RoaW5nX3RvX2JlX2ZpeGVkJ10gPSAnVGhlcmUgYXJlIG5vIGFjdGlvbnMgeW91IG5lZWQgdG8gdGFrZSBpbiB0aGlzIGNhdGVnb3J5JzsKCiRsYW5nWydzYXZlJ10gPSAnU2F2ZSBzZXR0aW5ncyc7CiRsYW5nWydub25lJ10gPSAnKG5vbmUpJzsKJGxhbmdbJ3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdUaGUgU0VPIHNldHRpbmdzIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuJzsKJGxhbmdbJ3Byb2JsZW1fYWxlcnQnXSA9ICdoYXMgZGV0ZWN0ZWQgc2V2ZXJlIHByb2JsZW1zIHdpdGggeW91ciBTRU8uICVzJzsKJGxhbmdbJ3Byb2JsZW1fbGlua190aXRsZSddID0gJ0NsaWNrIGhlcmUgdG8gZml4IHRoZW0nOwoKJGxhbmdbJ2hlbHBfZGVzY3JpcHRpb25fY29udGVudCddID0gJzxiPkhvdyB0byB1c2UgdGhlICJkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrIjo8L2I+PGJyIC8+VG8gYmUgYWJsZSB0byBlbnRlciBhIHBhZ2UgZGVzY3JpcHRpb24gd2hlbiBlZGl0aW5nIGEgcGFnZSwgeW91IG11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGNvZGUgYW55d2hlcmUgb24gZXZlcnkgdGVtcGxhdGU6PGJyIC8+PGJyIC8+PHByZT57Y2FwdHVyZSBhc3NpZ249bWV0YWRlc2NyaXB0aW9ufXtjb250ZW50IGJsb2NrPSJtZXRhZGVzY3JpcHRpb24iIGxhYmVsPSJNRVRBIERlc2NyaXB0aW9uIiBvbmVsaW5lPSJ0cnVlIn17L2NhcHR1cmV9PC9wcmU+PGJyIC8+VGhlbiwgcHV0ICJtZXRhZGVzY3JpcHRpb24iIGludG8gdGhlIGZpZWxkICJOYW1lIG9mIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jazxiciAvPjxiciAvPkFsdGVybmF0aXZlbHksIGVuYWJsZSB0aGUgb3B0aW9uICZxdW90O0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgZGVzY3JpcHRpb25zIHdoZXJlIG5vbmUgaXMgZ2l2ZW4mcXVvdDsuIFRoaXMgaXMgbm90IGFzIGdvb2QgYnV0IHN0aWxsIGJldHRlciB0aGFuIG5vdGhpbmcuJzsKJGxhbmdbJ2hlbHBfc2l0ZW1hcF9yb2JvdHMnXSA9ICcqKSBUbyB1c2UgdGhlIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIGEgc2l0ZW1hcC0gYW5kIHJvYm90cy1maWxlLCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgeW91ciBDTVNNUyBpbnN0YWxsYXRpb24gbXVzdCBiZSB3cml0ZWFibGUgdG8gdGhlIHdlYiBzZXJ2ZXIuIElmIHlvdXIgYWxyZWFkeSBoYXZlIGEgc2l0ZW1hcC54bWwgYW5kL3ByIHJvYm90cy50eHQgZmlsZSwgYm90aCBvZiB0aGVtIG11c3QgYmUgd3JpdGVhYmxlIHRvIHRoZSB3ZWIgc2VydmVyLic7CgokbGFuZ1sndXNlX3N0YW5kYXJkX29yX2R1YmxpbmNvcmVfbWV0YSddID0gJ1VzZSBhdCBsZWFzdCBvbmUgb2YgdGhlIHN0YW5kYXJkIG9yIER1YmxpbiBDb3JlIE1ldGEgVGFnIGdlbmVyYXRvcnMnOwokbGFuZ1sndXNlX3N0YW5kYXJkX21ldGEnXSA9ICdZb3Ugc2hvdWxkIGFsd2F5cyBlbmFibGUgdGhlIHN0YW5kYXJkIE1ldGEgZ2VuZXJhdG9yJzsKJGxhbmdbJ21ldGFfZGVzY3JpcHRpb25fbWlzc2luZyddID0gJ1RoZSBwYWdlIDxpPiVzPC9pPiBpcyBsYWNraW5nIGEgTWV0YSBkZXNjcmlwdGlvbic7CiRsYW5nWydtZXRhX2Rlc2NyaXB0aW9uX3Nob3J0J10gPSAnVGhlIE1ldGEgZGVzY3JpcHRpb24gb2YgPGk+JXM8L2k+IGlzIHJhdGhlciBzaG9ydCAoIDwgNzUgY2hhcnMpJzsKJGxhbmdbJ2R1cGxpY2F0ZV90aXRsZXMnXSA9ICdUaGUgcGFnZXMgPGk+JXM8L2k+IGFuZCA8aT4lczwvaT4gaGF2ZSB0aGUgc2FtZSB0aXRsZSc7CiRsYW5nWydkdXBsaWNhdGVfZGVzY3JpcHRpb25zJ10gPSAnVGhlIHBhZ2VzIDxpPiVzPC9pPiBhbmQgPGk+JXM8L2k+IGhhdmUgdGhlIHNhbWUgTWV0YSBkZXNjcmlwdGlvbic7CiRsYW5nWydwcm92aWRlX2FuX2F1dGhvciddID0gJ1lvdSBzaG91bGQgcHJvdmlkZSB0aGUgbmFtZSBvZiB0aGUgcGFnZSBwdWJsaXNoZXInOwokbGFuZ1snc2V0X3VwX2Rlc2NyaXB0aW9uX2Jsb2NrJ10gPSAnU2V0IHVwIGEgY29udGVudCBibG9jayBmb3IgTWV0YSBkZXNjcmlwdGlvbnMnOwokbGFuZ1snYWN0aXZhdGVfcHJldHR5X3VybHMnXSA9ICdBY3RpdmF0ZSB0aGUgcHJldHR5IFVSTHMgZmVhdHVyZSBvZiBDTVNNUyc7CiRsYW5nWydwcmV0dHlfdXJsc19oZWxwJ10gPSAnPGEgaHJlZj0iaHR0cDovL3dpa2kuY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL1VzZXJfSGFuZGJvb2svSW5zdGFsbGF0aW9uL09wdGlvbmFsX1NldHRpbmdzIiB0YXJnZXQ9Il9ibGFuayI+R2V0IGhlbHA8L2E+JzsKJGxhbmdbJ2NyZWF0ZV9hX3NpdGVtYXAnXSA9ICdIYXZlIGEgR29vZ2xlIFhNTCBTaXRlbWFwIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmb3IgeW91JzsKJGxhbmdbJ2F1dG9tYXRpY2FsbHlfdXBsb2FkX3NpdGVtYXAnXSA9ICdIYXZlIHlvdXIgWE1MIFNpdGVtYXAgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byBHb29nbGUnOwokbGFuZ1snY3JlYXRlX3JvYm90cyddID0gJ0hhdmUgYSByb2JvdHMudHh0IGZpbGUgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB5b3UnOwokbGFuZ1snc2l0ZW1hcF9ub3Rfd3JpdGVhYmxlJ10gPSAnWW91ciBzaXRlbWFwLnhtbCBmaWxlIGlzIG5vdCB3cml0ZWFibGUnOwokbGFuZ1snY2htb2Rfc2l0ZW1hcCddID0gJ1NldCB5b3VyIC9zaXRlbWFwLnhtbCBmaWxlIHRvIGJlIHdyaXRlYWJsZSBieSB0aGUgd2ViIHNlcnZlcic7CiRsYW5nWydyb2JvdHNfbm90X3dyaXRlYWJsZSddID0gJ1lvdXIgcm9ib3RzLnR4dCBmaWxlIGlzIG5vdCB3cml0ZWFibGUnOwokbGFuZ1snbm9fb3BlbmdyYXBoX2FkbWlucyddID0gJ1lvdSBoYXZlIG5vdCBzZXQgYW4gT3BlbkdyYXBoIGFkbWluIGFwcGxpY2F0aW9uIHJlc3AuIGFkbWluIGxpc3QnOwokbGFuZ1snbm9fb3BlbmdyYXBoX3R5cGUnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBwYWdlIHR5cGUnOwokbGFuZ1snbm9fb3BlbmdyYXBoX3NpdGVuYW1lJ10gPSAnWW91IGhhdmUgbm90IHNldCB0aGUgT3BlbkdyYXBoIHNpdGUgbmFtZSc7CiRsYW5nWydub19vcGVuZ3JhcGhfaW1hZ2UnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IGFuIE9wZW5HcmFwaCBkZWZhdWx0IGltYWdlJzsKJGxhbmdbJ2NobW9kX3JvYm90cyddID0gJ1NldCB5b3VyIC9yb2JvdHMudHh0IGZpbGUgdG8gYmUgd3JpdGVhYmxlIGJ5IHRoZSB3ZWIgc2VydmVyJzsKJGxhbmdbJ2VkaXRfcGFnZSddID0gJ0VkaXQgJXMnOwokbGFuZ1snZWRpdF9wYWdlX3RvX2ZpeCddID0gJ0NsaWNrIGhlcmUgdG8gZWRpdCB0aGUgcGFnZSBhbmQgZml4IHRoZSBwcm9ibGVtJzsKJGxhbmdbJ3Zpc2l0X3NldHRpbmdzJ10gPSAnQ2hhbmdlIHNldHRpbmdzJzsKCiRsYW5nWydwYWdlX2lkJ10gPSAnSUQnOwokbGFuZ1sncGFnZV9uYW1lJ10gPSAnUGFnZSBuYW1lJzsKJGxhbmdbJ3ByaW9yaXR5J10gPSAnU2l0ZW1hcCBQcmlvcml0eSc7CiRsYW5nWydvZ190eXBlJ10gPSAnT3BlbkdyYXBoIHR5cGUnOwokbGFuZ1sna2V5d29yZHMnXSA9ICcjIEtleXdvcmRzJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snaW5kZXgnXSA9ICdJbmRleGFibGUnOwoKJGxhbmdbJ2NsaWNrX3RvX2FkZF9kZXNjcmlwdGlvbiddID0gJ0NsaWNrIGhlcmUgdG8gYWRkIGEgcGFnZSBkZXNjcmlwdGlvbic7CiRsYW5nWyd0b2dnbGUnXSA9ICd0b2dnbGUnOwokbGFuZ1sncmVzZXQnXSA9ICdyZXNldCc7CiRsYW5nWydyZXNldF90b19kZWZhdWx0J10gPSAnUmVzZXQgdGhpcyB0byB0aGUgZGVmYXVsdCB2YWx1ZSc7CiRsYW5nWydlZGl0X3ZhbHVlJ10gPSAnRWRpdCB0aGlzIHZhbHVlJzsKCiRsYW5nWydoZWxwX29wZW5ncmFwaCddID0gJ0xvb2sgPGEgaHJlZj0iaHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3Mvb3BlbmdyYXBoI3R5cGVzIiB0YWdldD0iX2JsYW5rIj5oZXJlPC9hPiBmb3IgYSBsaXN0IG9mIGFsbG93ZWQgdmFsdWVzJzsKJGxhbmdbJ2VudGVyX25ld19vZ3R5cGUnXSA9ICdFbnRlciB0aGUgbmV3IHZhbHVlIGZvciB0aGlzIHBhZ2VcJ3MgT3BlbkdyYXBoIHR5cGUnOwokbGFuZ1snaGVscF9uZXdfb2d0eXBlJ10gPSAnTGVhdmUgYmxhbmsgdG8gcmV2ZXJ0IHRvIHRoZSBkZWZhdWx0IHNldHRpbmcnOwoKJGxhbmdbJ2VudGVyX25ld19rZXl3b3JkcyddID0gJ0VudGVyIHRoZSBuZXcga2V5d29yZHMgZm9yIHRoaXMgcGFnZSc7CiRsYW5nWydoZWxwX25ld19rZXl3b3JkcyddID0gJ1doaXRlc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Yga2V5d29yZHMuIExlYXZlIGJsYW5rIHRvIHJldmVydCB0byBhdXRvIGdlbmVyYXRlZCBrZXl3b3Jkcyc7CgokbGFuZ1snZ3JvdXB0aXRsZV9vcGVuZ3JhcGgnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIE9wZW5HcmFwaCByZWxhdGVkIHByb2JsZW0ocyknOwokbGFuZ1snZ3JvdXB0aXRsZV9zeXN0ZW0nXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIHN5c3RlbSBjb25maWd1cmF0aW9uJzsKJGxhbmdbJ2dyb3VwdGl0bGVfcGFnZXMnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgb24geW91ciBjb250ZW50IHBhZ2VzJzsKJGxhbmdbJ2dyb3VwdGl0bGVfc2V0dGluZ3MnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIFNFTyBTZXR0aW5ncyc7CiRsYW5nWydncm91cHRpdGxlX2Rlc2NyaXB0aW9ucyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgcGFnZSBkZXNjcmlwdGlvbnMnOwokbGFuZ1snZ3JvdXB0aXRsZV90aXRsZXMnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIHBhZ2UgdGl0bGVzJzsKCiRsYW5nWyd2aWV3X2FsbCddID0gJ1ZpZXcgYWxsJzsKCiRsYW5nWyd0aXRsZV9tZXRhc2V0dGluZ3MnXSA9ICdQYWdlIHRpdGxlICYgTWV0YSBpbmZvcm1hdGlvbic7CiRsYW5nWyd0aXRsZV9zaXRlbWFwc2V0dGluZ3MnXSA9ICdTaXRlbWFwICYgQ3Jhd2xlciBzZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9rZXl3b3Jkc2V0dGluZ3MnXSA9ICdLZXl3b3JkIGdlbmVyYXRvciBzZXR0aW5ncyc7CgokbGFuZ1snZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZSddID0gJ0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBwYWdlIGRlc2NyaXB0aW9uIHdoZXJlIG5vbmUgaXMgcHJvdmlkZWQnOwokbGFuZ1snZGVzY3JpcHRpb25fYXV0b190aXRsZSddID0gJ1RleHQgZm9yIGF1dG8tZ2VuZXJhdGVkIGRlc2NyaXB0aW9ucyc7CiRsYW5nWydkZXNjcmlwdGlvbl9hdXRvX2hlbHAnXSA9ICcoWW91IDxiPm11c3Q8L2I+IGluY2x1ZGUgdGhlIHRhZyB7a2V5d29yZHN9IGhlcmUpJzsKCiRsYW5nWydzZXRfdXBfYXV0b19kZXNjcmlwdGlvbiddID0gJ1NldCB1cCB0aGUgZGVzY3JpcHRpb24gYXV0by1nZW5lcmF0b3IgYW5kIGVuc3VyZSB0aGUgdGV4dCBjb250YWlucyB0aGUgdGFnIHtrZXl3b3Jkc30nOwokbGFuZ1snYXV0b19nZW5lcmF0ZWQnXSA9ICdBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCc7CiRsYW5nWydhbmQnXSA9ICdhbmQnOwoKJGxhbmdbJ3RpdGxlX2tleXdvcmRfd2VpZ2h0J10gPSAnS2V5d29yZCB3ZWlnaHQgc2V0dGluZ3MnOwokbGFuZ1sna2V5d29yZF9taW5sZW5ndGhfdGl0bGUnXSA9ICdNaW5pbXVtIGtleXdvcmQgbGVuZ3RoJzsKJGxhbmdbJ2tleXdvcmRfbWlubGVuZ3RoX2hlbHAnXSA9ICcoVGhlIG1pbmltdW0gbGVuZ3RoIG9mIGEgd29yZCB0byBiZSBjb25zaWRlcmVkIGFzIGEga2V5d29yZCknOwokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgdGl0bGUnOwokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfaGVscCddID0gJyhUaGUgd2VpZ2h0IG9mIHdvcmRzIGluIHRoZSBwYWdlIHRpdGxlLiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7CiRsYW5nWydrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF90aXRsZSddID0gJ1dlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSBkZXNjcmlwdGlvbic7CiRsYW5nWydrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgZGVzY3JpcHRpb24uIFRoZSBoaWdoZXIgYSB3b3JkXCdzIHdlaWdodCwgdGhlIG1vcmUgbGlrZWx5IGl0IGlzIHRvIGJlY29tZSBhIGtleXdvcmQpJzsKJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIGNvbnRlbnQgaGVhZGxpbmVzJzsKJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIHdlaWdodCBvZiB3b3JkcyBiZXR3ZWVuICZsdDtoMSZndDsgdG8gJmx0O2g2Jmd0OyB0YWdzLiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7CiRsYW5nWydrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIHBsYWluIGNvbnRlbnQnOwokbGFuZ1sna2V5d29yZF9jb250ZW50X3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW5zaWRlIHRoZSBwbGFpbiBjb250ZW50LiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7CgokbGFuZ1sna2V5d29yZF9taW5pbXVtX3dlaWdodF90aXRsZSddID0gJ01pbmltdW0gdG90YWwgd2VpZ2h0IG9mIGEga2V5d29yZCc7CiRsYW5nWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIG1pbmltdW0gdG90YWwgd2VpZ2h0IG9mIGEgd29yZCB0byBiZWNvbWUgYSBrZXl3b3JkLiBTaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBoaWdoZXN0IHdlaWdodCBmcm9tIGFib3ZlLiBUaGUgc21hbGxlciB0aGUgbnVtYmVyLCB0aGUgbW9yZSBrZXl3b3JkcyB5b3UgZ2V0KSc7CgokbGFuZ1snaGVscF9rZXl3b3JkX2dlbmVyYXRvciddID0gJ1RoZSBzZXR0aW5ncyB5b3UgY2hhbmdlIG9uIHRoaXMgcGFnZSB3aWxsIG5vdCBhZmZlY3QgYW55IGtleXdvcmRzIHlvdSBlbnRlciBtYW51YWxseS4gRmVlbCBmcmVlIHRvIHBsYXkgd2l0aCBhbGwgdmFsdWVzIHVudGlsIHlvdSBnZXQgdGhlIGJlc3QgcmVzdWx0cyBmb3IgeW91ciBwYWdlLic7CgokbGFuZ1sndGl0bGVfa2V5d29yZF9leGNsdWRlJ10gPSAnS2V5d29yZCBleGNsdXNpb24gbGlzdCc7CiRsYW5nWydrZXl3b3JkX2V4Y2x1ZGVfdGl0bGUnXSA9ICdXb3JkcyB0byBuZXZlciBjb25zaWRlciBhcyBrZXl3b3Jkcyc7CiRsYW5nWydrZXl3b3JkX2V4Y2x1ZGVfaGVscCddID0gJyhQcm92aWRlIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgdGhhdCBzaG91bGQgbmV2ZXIgYXBwZWFyIGluIGtleXdvcmQgbGlzdHMpJzsKCiRsYW5nWydpbmNyZWFzZV9wcmlvcml0eSddID0gJ0luY3JlYXNlIHByaW9yaXR5IGJ5IDEwJSc7CiRsYW5nWydkZWNyZWFzZV9wcmlvcml0eSddID0gJ0luY3JlYXNlIHByaW9yaXR5IGJ5IDEwJSc7CgokbGFuZ1sndGl0bGVfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiUmVnZW5lcmF0ZSBzaXRlbWFwIGFuZCByb2JvdHMudHh0IjsKJGxhbmdbJ2J1dHRvbl9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJSZWdlbmVyYXRlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQgbm93IjsKJGxhbmdbJ3RleHRfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiSXQgY2FuIGJlIG5lY2Vzc2FyeSB0byByZWdlbmVyYXRlIHRoZSBzaXRlbWFwIGFuZCByb2JvdHMudHh0IGZpbGUgYWZ0ZXIgZXh0ZW5zaXZlIGNoYW5nZXMgdG8gdGhlIHBhZ2Ugc3RydWN0dXJlIjsKJGxhbmdbJ3NpdGVtYXBfcmVnZW5lcmF0ZWQnXSA9ICJCb3RoIHRoZSBzaXRlbWFwIGFuZCB0aGUgcm9ib3RzLnR4dCBmaWxlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlZ2VuZXJhdGVkLiI7CgokbGFuZ1snaW5zdGFsbF9kYXRhYmFzZV9lcnJvciddID0gIkFuIGVycm9yIGhhcyBvY2N1cmVkIGR1cmluZyBpbnN0YWxsYXRpb246IFRoZSBkYXRhYmFzZSB0YWJsZSBjb3VsZCBub3QgYmUgY3JlYXRlZC4iOwokbGFuZ1snbm9fdXJsX2ZvcGVuJ10gPSAiTm90IHBvc3NpYmxlIGFzIGFsbG93X3VybF9mb3BlbiBoYXMgbm90IGJlZW4gc2V0IHRvICZxdW90O29uJnF1b3Q7IGluIHlvdXIgcGhwIGNvbmZpZ3VyYXRpb24uIjsKJGxhbmdbJ3RpdGxlX2FkZGl0aW9uYWxfbWV0YV90YWdzJ10gPSAiQWRkaXRpb25hbCBNZXRhIHRhZ3MiOwokbGFuZ1snYWRkaXRpb25hbF9tZXRhX3RhZ3NfdGl0bGUnXSA9ICJBZGRpdGlvbmFsIE1ldGEgdGFncyB0byBiZSBpbnNlcnRlZCI7CiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc19oZWxwJ10gPSAiU3BlY2lmeSBhZGRpdGlvbmFsIE1ldGEgdGFncyBoZXJlIHRvIGJlIGluc2VydGVkIGludG8gdGhlIHBhZ2UgaGVhZGVyLiBZb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyBoZXJlLiI7CgokbGFuZ1snaGVscF9zaG93YmFzZSddID0gIlNldCB0aGlzIHBhcmFtZXRlciB0byA8Y29kZT5mYWxzZTwvY29kZT4gdG8gc3VwcHJlc3MgdGhlIG91dHB1dCBvZiB0aGUgYmFzZSBocmVmIHRhZy4iOwoKJGxhbmdbJ2NoYW5nZWxvZyddID0gPDw8RU9UCjx1bD4KPGxpPlZlcnNpb24gMS4wIC0gMjUgSmFudWFyeSAyMDEyLiBJbml0aWFsIHJlbGVhc2UuIFRoaXMgaXMgYSBmb3JrIG9mIHRoZSBTRU9Ub29scyBtb2R1bGUgd2l0aCBDTVNNUyAxLjEwKyBjb21wYXRpYmlsaXR5LiBDaGFuZ2VzIGluY2x1ZGU6Cgk8dWw+CgkJPGxpPlNldCBwcmVmZXJlbmNlcyBvbiBpbnN0YWxsPC9saT4KCQk8bGk+UmVtb3ZlIHByZWZlcmVuY2VzIG9uIHVuaW5zdGFsbDwvbGk+CgkJPGxpPlJlcGxhY2UgYWxsIHJlZmVyZW5jZSB0byBIaWVyYXJjaHlNYW5hZ2VyIG9iamVjdHMgd2l0aCBDb250ZW50T3BlcmF0aW9ucyBvYmplY3RzPC9saT4KCQk8bGk+R2VuZXJhdGUgYWxsIGtleXdvcmRzLCBrZXl3b3JkIHN1Z2dlc3Rpb25zLCBkZXNjcmlwdGlvbnMgYW5kIGRlZmF1bHQgZGVzY3JpcHRpb25zPC9saT4KCQk8bGk+R2VuZXJhdGUgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQgZmlsZXM8L2xpPgoJCTxsaT5SZXRhaW4gY2hlY2tib3ggcHJlZmVyZW5jZSBzZXR0aW5ncyBhZnRlciBzdWJtaXQ8L2xpPgoJCTxsaT5PbiBmcm9udGVuZCBwYWdlIGxvYWQsIGVuc3VyZSB0aGF0IGEgY29ycmVzcG9uZGluZyByZWNvcmQgZXhpc3RzIGluIHRoZSBzZW90b29sczIgZGF0YWJhc2UgdGFibGU8L2xpPgoJPC91bD4JCjwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlNFT1Rvb2xzMiBoZWxwcyB5b3UgdG8gZ2V0IHlvdXIgU0VPIChTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbikgcmlnaHQuIFRoZSBtb2R1bGUgYWRkcyBzZXZlcmFsIFNFTyBjYXBhYmlsaXRpZXMgdG8geW91ciBDTVNNUyBpbnN0YWxsYXRpb24gYW5kIGFsZXJ0cyB5b3UgaWYgeW91IG1pc3NlZCBvdXQgb24gc29tZXRoaW5nIFNFTyByZWxhdGVkLiBDdXJyZW50bHksIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDo8L3A+Cjx1bD4KPGxpPi0gZ2VuZXJhdGVzIE1ldGEgdGFncyBpbiBzdGFuZGFyZCBodG1sLCBEdWJsaW4gQ29yZSBhbmQgT3BlbkdyYXBoIGZvcm1hdHM8L2xpPgo8bGk+LSBhdXRvbWF0aWNhbGx5IGV4dHJhY3RzIGtleXdvcmRzIGZyb20geW91ciBwYWdlcyBhbmQgYWRkcyB0aGVtIHRvIHRoZSBtZXRhIHRhZ3MgYW5kIHBhZ2UgdGl0bGU8L2xpPgo8bGk+LSBsZXRzIHlvdSBkZXRlcm1pbmUgd2l0aCBhIHNpbmdsZSBjbGljayB3aGV0aGVyIGNlcnRhaW4gcGFnZXMgc2hvdWxkIGJlIGluZGV4ZWQgYnkgc2VhcmNoIGVuZ2luZXMgb3Igbm90PC9saT4KPGxpPi0gZ2VuZXJhdGVzIGEgc2l0ZW1hcC54bWwgZmlsZSB3aXRoIHlvdXIgcGFnZXMgd2hpbGUgZ2l2aW5nIHlvdSBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgcHJpb3JpdGllcyBvZiB5b3VyIHBhZ2VzPC9saT4KPGxpPi0gZ2VuZXJhdGVzIGEgcm9ib3RzLnR4dCBmaWxlIGV4cGxpY2l0bHkgZGlzYWxsb3dpbmcgYWNjZXNzIHRvIHBhZ2VzIHlvdSBkb25cJ3Qgd2FudCB0byBiZSBpbmRleGVkPC9saT4KPGxpPi0gYWxlcnRzIHlvdSB3aGVuIHRoZXJlIGFyZSBzZXZlcmFsIHBhZ2VzIGZlYXR1cmluZyB0aGUgc2FtZSBwYWdlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zPC9saT4KPGxpPi0gYWxlcnRzIHlvdSB3aGVuIHZlcnkgc2hvcnQgcGFnZSBtZXRhIGRlc2NyaXB0aW9ucyBhcmUgZGV0ZWN0ZWQ8L2xpPgo8bGk+LSBhdXRvbWF0aWNhbGx5IHN1Ym1pdHMgeW91ciBzaXRlbWFwIGZpbGUgdG8gR29vZ2xlIHdoZW4geW91IGNoYW5nZSB5b3VyIGNvbnRlbnQ8L2xpPiAKPC91bD4KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+CjxwPkZpcnN0LCBvcGVuIGFsbCB0ZW1wbGF0ZXMgd2hlcmUgeW91IHdhbnQgZG8gdXNlIFNFT1Rvb2xzMi4gUmVtb3ZlIHRoZSBjb21wbGV0ZSAmbHQ7dGl0bGUmZ3Q7IHRhZyBhbmQgdGhlIHttZXRhZGF0YX0gdGFnIChldmVuIGlmIGl0IHNheXMgdG8gbmV2ZXIgcmVtb3ZlIGl0KSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIHRhZzwvcD4KPHByZT4Ke1NFT1Rvb2xzMn0KPC9wcmU+PGJyIC8+CjxwPk5leHQsIGF0IHRoZSBib3R0b20gb2YgeW91ciB0ZW1wbGF0ZSAoYWZ0ZXIgdGhlIGNsb3NpbmcgJmx0Oy9ib2R5Jmd0OyB0YWcpLCBpbnNlcnQgdGhlIGZvbGxvd2luZyBjb2RlOjwvcD4KPHByZT4Ke2NhcHR1cmUgYXNzaWduPW1ldGFkZXNjcmlwdGlvbn17Y29udGVudCBibG9jaz1tZXRhZGVzY3JpcHRpb24gbGFiZWw9IlBhZ2UgRGVzY3JpcHRpb24iIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX0KPC9wcmU+PGJyIC8+CjxwPlRoaXMgaXMgd2hlcmUgeW91XCdsbCBlbnRlciBhIHNob3J0IHBhZ2UgZGVzY3JpcHRpb24gKG9uZSBvciB0d28gc2VudGVuY2VzKSB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZSBzZWFyY2ggZW5naW5lXCdzIHJlc3VsdHMgYW5kIGlmLCBmb3IgZXhhbXBsZSwgc29tZW9uZSBzaGFyZXMgYSBsaW5rIHRvIHlvdXIgcGFnZSBvbiBmYWNlYm9vay48L3A+CjxwPk5vdywgdmlzaXQgdGhlIHNldHRpbmdzIHRhYnMgZm9yIHBhZ2UgdGl0bGUgJiBtZXRhIGluZm9ybWF0aW9uLCB0aGUgc2l0ZW1hcCAmIGNyYXdsZXIgc2V0dGluZ3MgYW5kIHRoZSBrZXl3b3JkIGdlbmVyYXRvciBzZXR0aW5ncyBhbmQgZmlsbCBpbiBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIHlvdXIgcGFnZS4gVW5kZXIgIk5hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrIiB5b3UgbmVlZCB0byBlbnRlciB0aGUgbmFtZSBvZiB0aGUgY29udGVudCBibG9jayB5b3UganVzdCBhZGRlZCB0byB5b3VyIHRlbXBsYXRlcyAoIlBhZ2UgRGVzY3JpcHRpb24iIGluIG91ciBleGFtcGxlKS4gVGhlIHRhYiAiU0VPIEFsZXJ0cyIgd2lsbCBhbGVydCB5b3UgaWYgaXQgZGV0ZWN0cyBhbnl0aGluZyB0aGF0IGlzIHJlcXVpcmVkIGJ1dCBub3QgYWN0aXZhdGVkIG9yIGZpbGxlZCBpbi4gWW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIHNpZ25pbmcgdXAgeW91cgpzaXRlIHdpdGggR29vZ2xlIFdlYm1hc3RlciB0b29scy4gVGhlcmUsIHNlbGVjdCAiTWV0YSB0YWcgdmFsaWRhdGlvbiIgYW5kIHBhc3RlIHRoZSB2ZXJpZmljYXRpb24gY29kZSAocXVpdGUgYSBsb25nIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGFuZCBudW1iZXJzKSBpbnRvIHRoZSBib3ggIlZlcmlmaWNhdGlvbiBDb2RlIiBpbiAiU0VPIFNldHRpbmdzIiB0byBhdXRvbWF0aWNhbGx5IHZlcmlmeSB0aGF0IHlvdSBhcmUgcmVhbGx5CnRoZSBvd25lciBvZiB5b3VyIHBhZ2UgKG5vIG5lZWQgdG8gcGFzdGUgdGhlIEdvb2dsZSBNZXRhLWNvZGUgaW50byB5b3VyIHRlbXBsYXRlKS48L3A+CjxwPkFzIHNvb24gYXMgZXZlcnl0aGluZyBpcyBzZXQgdXAsIGxvb2sgYXQgdGhlICJTRU8gQWxlcnRzIiB0YWIgYW5kIGZpeCBhbGwgcHJvYmxlbXMgZGV0ZWN0ZWQgaGVyZS4gVGFrZSBjYXJlIHRvIGluc2VydCBhICh1bmlxdWUpIHBhZ2UgZGVzY3JpcHRpb24gb24gZXZlcnkgcGFnZSB5b3UgZWRpdCBpbiB0aGUgZmllbGQgIlBhZ2UgRGVzY3JpcHRpb24iIGF0IHRoZSBib3R0b20gb2YgeW91ciAiRWRpdCBQYWdlIiBmb3JtLjwvcD4KPHA+VG8gc2V0IHlvdXIgb3duIGtleXdvcmRzIChpbnN0ZWFkIG9mIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBvbmVzKSBvciBPcGVuR3JhcGggdHlwZSBmb3IgY2VydGFpbiBwYWdlcywgdmlzaXQgdGhlICJQYWdlIHNldHRpbmdzIiB0YWIgd2hlcmUgeW91XCdsbCBmaW5kIGEgbGlzdCBvZiBhbGwgcGFnZXMgeW91IGhhdmUgaW4geW91ciBzeXN0ZW0uIFRoZXJlLCB5b3UgY2FuIGFsc28gY2hhbmdlIHRoZSBzaXRlbWFwIHByaW9yaXR5ICh3aGljaCBpcyBhdXRvLWNhbGN1bGF0ZWQgYnkgZGVmYXVsdCkgb2YgYSBwYWdlIHRvIGluZGljYXRlIHRoYXQgaXQgc2hvdWxkCmJlIGNvbnNpZGVyZWQgbW9yZSBpbXBvcnRhbnQgZm9yIHNlYXJjaCBlbmdpbmUgbWF0Y2hlcyBvbiB5b3VyIHBhZ2Ugb3IgZXhjbHVkZSBjZXJ0YWluIHBhZ2VzIGZyb20gdGhlIHNlYXJjaCBpbmRleC48L3A+CjxwPlNFT1Rvb2xzMiB3aWxsIGFsc28gYXV0b21hdGljYWxseSBpbnNlcnQgYSBsaW5rIHRvIHRoZSBpbWFnZSB0byBiZSB1c2VkIGFzIHRoZSBtYWluIGltYWdlIG9mIHlvdXIgcGFnZSBpZiB5b3Ugc2VsZWN0IGFuICJJbWFnZSIgZm9yIHRoZSBwYWdlIGZyb20gd2l0aGluIHlvdXIgcGFnZVwncyAiT3B0aW9ucyIgdGFiICh0aGlzIGlzIGltcG9ydGFudCBmb3IgcGVvcGxlIHN1Ym1pdHRpbmcgYSBsaW5rIHRvIHlvdXIgcGFnZSBlLmcuIG9uIGZhY2Vib29rKS4gQWxzbywgaWYgeW91IGFyZSB1c2luZyBPcGVuR3JhcGgsIHRoZSBpbWFnZSBzZWxlY3RlZCBoZXJlCndpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgT3BlbkdyYXBoIGltYWdlIHlvdSBzcGVjaWZpZWQgZnJvbSB3aXRoaW4gIlNFTyBTZXR0aW5ncyIuIFBsZWFzZSBiZSBhd2FyZSB0aGF0IHlvdSBuZWVkIHRvIHVwbG9hZCB0aG9zZSBpbWFnZXMgdG8geW91ciAvdXBsb2Fkcy9pbWFnZXMgZGlyZWN0b3J5LjwvcD4KPGgzPkNhbiBJIHVzZSBzbWFydHkgdmFyaWFibGVzPzwvaDM+CjxwPllvdSBjYW4gdXNlIGFsbCBzbWFydHkgdmFyaWFibGVzIGFuZCBVRFRzIHdpdGhpbiB0aGUgc2V0dGluZ3MgZmllbGRzIDxpPlBhZ2UgdGl0bGU8L2k+LCA8aT5NZXRhIHBhZ2UgdGl0bGU8L2k+LCA8aT5BdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkZXNjcmlwdGlvbnM8L2k+IGFuZCA8aT5BZGRpdGlvbmFsIG1ldGEgdGFnczwvaT4uIEVudGVyIDxjb2RlPntkZWJ1Z308L2NvZGU+IHRvIHNlZSBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSB2YXJpYWJsZXMuPC9wPgo8aDM+V2hpY2ggc21hcnR5IHZhcmlhYmxlcyBhcmUgZXhwb3J0ZWQgYnkgU0VPVG9vbHMyPzwvaDM+Cjxjb2RlPnskc2VvX2tleXdvcmRzfTwvY29kZT46IEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGtleXdvcmRzIHNldCBmb3IgdGhlIHBhZ2UgKGluY2x1ZGluZyB0aGUgZGVmYXVsdCBrZXl3b3Jkcyk8YnIgLz4KPGNvZGU+eyR0aXRsZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlIChpbmNsdWRpbmcgdGhlIGRlZmF1bHQga2V5d29yZHMpPGJyIC8+Cjxjb2RlPnskZGVmYXVsdF9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBkZWZhdWx0IGtleXdvcmRzPGJyIC8+Cjxjb2RlPnskcGFnZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlICh3aXRob3V0IHRoZSBkZWZhdWx0IGtleXdvcmRzKSAKPGgzPlN1cHBvcnQ8L2gzPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBDbGlwIE1hZ2ljIDxhIGhyZWY9Im1haWx0bzphZG1pbkBjbGlwbWFnaWMuY29tLmF1Ij4mbHQ7YWRtaW5AY2xpcG1hZ2ljLmNvbS5hdSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEluc3RhbGwoKQoJICAgV2hlbiB5b3VyIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHlvdSBtYXkgbmVlZCB0byBkbyBzb21lCgkgICBzZXR1cC4gVHlwaWNhbCB0aGluZ3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIGNyZWF0aW9uCgkgICBhbmQgcHJlcG9wdWxhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsIGRhdGFiYXNlIHNlcXVlbmNlcywKCSAgIHBlcm1pc3Npb25zLCBwcmVmZXJlbmNlcywgZXRjLgoJICAgCSAgIAoJICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBjcmVhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsCgkgICBjaGVjayBvdXQgdGhlIEFET0RCIERhdGEgRGljdGlvbmFyeSBwYWdlIGF0CgkgICBodHRwOi8vcGhwbGVucy5jb20vbGVucy9hZG9kYi9kb2NzLWRhdGFkaWN0Lmh0bQoJICAgCgkgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYSBzdHJpbmcgaW4gY2FzZSBvZiBhbnkgZXJyb3IsCgkgICBhbmQgQ01TIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBtb2R1bGUgaW5zdGFsbGVkLgoJICAgU3VjY2Vzc2Z1bCBpbnN0YWxscyBzaG91bGQgcmV0dXJuIEZBTFNFIG9yIG5vdGhpbmcgYXQgYWxsLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJCQoJCS8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24KCQkkZGIgPWNtc21zKCktPkdldERiKCk7CgkJCgkJLy8gbXlzcWwtc3BlY2lmaWMsIGJ1dCBpZ25vcmVkIGJ5IG90aGVyIGRhdGFiYXNlCgkJJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJCiAgICAgICAgLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiAgICAgICAgJGZsZHMgPSAiCgkJCWNvbnRlbnRfaWQgSSBLRVksCgkJCWluZGV4YWJsZSBJKDEpLAoJCQlrZXl3b3JkcyBDKDI1NSksCgkJCXByaW9yaXR5IEkoMyksCgkJCW9ndHlwZSBDKDMyKQoJCQkiOwoKCQkvLyBjcmVhdGUgaXQuIFRoaXMgc2hvdWxkIGRvIGVycm9yIGNoZWNraW5nLCBidXQgSSdtIGEgbGF6eSBzb2QuCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiIsCgkJCQkkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJLy8gVGVzdCBpZiBpbnN0YWxsYXRpb24gd29ya2VkOgoJCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyJzsKCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJaWYgKCEkcmVzdWx0KSB7CgkJCXJldHVybiAkdGhpcy0+TGFuZygnaW5zdGFsbF9kYXRhYmFzZV9lcnJvcicpOwoJCX0KCQkKCQkvLyBwZXJtaXNzaW9ucwoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdFZGl0IFNFTyBTZXR0aW5ncycsJ0VkaXQgU0VPIFNldHRpbmdzJyk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ0VkaXQgcGFnZSBkZXNjcmlwdGlvbnMnLCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJyk7CgoJCS8vIGFkZCBzaXRlIHByZWZlcmVuY2VzCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FkZGl0aW9uYWxfbWV0YV90YWdzJywnJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCcnKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJ1RoaXMgcGFnZSBjb3ZlcnMgdGhlIHRvcGljcyB7a2V5d29yZHN9Jyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLDEpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywxKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLDQpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCdpLCBtZSwgbXksIG15c2VsZiwgd2UsIG91ciwgb3Vycywgb3Vyc2VsdmVzLCB5b3UsIHlvdXIsIHlvdXJzLCB5b3Vyc2VsZiwgeW91cnNlbHZlcywgaGUsIGhpbSwgaGlzLCBoaW1zZWxmLCBzaGUsIGhlciwgaGVycywgaGVyc2VsZiwgaXQsIGl0cywgaXRzZWxmLCB0aGV5LCB0aGVtLCB0aGVpciwgdGhlaXJzLCB0aGVtc2VsdmVzLCB3aGF0LCB3aGljaCwgd2hvLCB3aG9tLCB0aGlzLCB0aGF0LCB0aGVzZSwgdGhvc2UsIGFtLCBpcywgYXJlLCB3YXMsIHdlcmUsIGJlLCBiZWVuLCBiZWluZywgaGF2ZSwgaGFzLCBoYWQsIGhhdmluZywgZG8sIGRvZXMsIGRpZCwgZG9pbmcsIGEsIGFuLCB0aGUsIGFuZCwgYnV0LCBpZiwgb3IsIGJlY2F1c2UsIGFzLCB1bnRpbCwgd2hpbGUsIG9mLCBhdCwgYnksIGZvciwgd2l0aCwgYWJvdXQsIGFnYWluc3QsIGJldHdlZW4sIGludG8sIHRocm91Z2gsIGR1cmluZywgYmVmb3JlLCBhZnRlciwgYWJvdmUsIGJlbG93LCB0bywgZnJvbSwgdXAsIGRvd24sIGluLCBvdXQsIG9uLCBvZmYsIG92ZXIsIHVuZGVyLCBhZ2FpbiwgZnVydGhlciwgdGhlbiwgb25jZSwgaGVyZSwgdGhlcmUsIHdoZW4sIHdoZXJlLCB3aHksIGhvdywgYWxsLCBhbnksIGJvdGgsIGVhY2gsIGZldywgbW9yZSwgbW9zdCwgb3RoZXIsIHNvbWUsIHN1Y2gsIG5vLCBub3IsIG5vdCwgb25seSwgb3duLCBzYW1lLCBzbywgdGhhbiwgdG9vLCB2ZXJ5LCBsb3JlbSwgY29taW5nJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywyKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsNyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJyw1KTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLDYpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywnJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywnJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsMCk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsMCk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90aXRsZScsJ3t0aXRsZX0nKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndGl0bGUnLCd7dGl0bGV9IHwgeyRzaXRlbmFtZX0gLSB7JHRpdGxlX2tleXdvcmRzfScpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywne3RpdGxlfSB8IHskc2l0ZW5hbWV9Jyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ByZWZfdmVyaWZpY2F0aW9uJywnJyk7CgkJCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKCQkKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVuaW5zdGFsbCgpCgkgICBTb21ldGltZXMsIGFuIGV4Y2VwdGlvbmFsbHkgdW5lbmxpZ2h0ZW5lZCBvciBpZ25vcmFudAoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQKCSAgIHdvdWxkIGJlIGJlc3QgdG8gbGF5IGludG8gdGhlc2UgaWRpb3RzIHdpdGggYSBjbHVlc3RpY2ssCgkgICB3ZSB3aWxsIGRvIHRoZSBtYWduYW5pbW91cyB0aGluZyBhbmQgcmVtb3ZlIHRoZSBtb2R1bGUKCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMKCSAgIHRoYXQgYXJlIHNwZWNpZmljIHRvIGl0LgoJICAgVGhpcyBpcyB0aGUgbWV0aG9kIHdoZXJlIHdlIGRvIHRoaXMuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoJCS8vIFR5cGljYWwgRGF0YWJhc2UgUmVtb3ZhbAoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkJCgkJLy8gcmVtb3ZlIHRoZSBkYXRhYmFzZSB0YWJsZQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CQkKCQkKCQkvLyByZW1vdmUgdGhlIHBlcm1pc3Npb25zCgkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0VkaXQgU0VPIFNldHRpbmdzJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0VkaXQgcGFnZSBkZXNjcmlwdGlvbnMnKTsKCQkKCQkvLyByZW1vdmUgc2l0ZSBwcmVmZXJlbmNlcwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9jb250cmlidXRvcicpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90aXRsZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfcHVibGlzaGVyJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3RpdGxlJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3RpdGxlX21ldGEnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncHJlZl92ZXJpZmljYXRpb24nKTsKCQkKCQkvLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKCQkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVwZ3JhZGUoKQoJICAgSWYgeW91ciBtb2R1bGUgdmVyc2lvbiBudW1iZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNpb24KCSAgIG51bWJlciBvZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSwgdGhlIENNUyBBZG1pbiB3aWxsIGdpdmUKCSAgIHlvdSBhIGNoYW5jZSB0byB1cGdyYWRlIHRoZSBtb2R1bGUuIFRoaXMgaXMgdGhlIGZ1bmN0aW9uCgkgICB0aGF0IGFjdHVhbGx5IGhhbmRsZXMgdGhlIHVwZ3JhZGUuCgkgICBJZGVhbGx5LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBoYW5kbGUgdXBncmFkZXMgaW5jcmVtZW50YWxseSwKCSAgIHNvIHlvdSBjb3VsZCB1cGdyYWRlIGZyb20gdmVyc2lvbiAwLjAuMSB0byAxMC41Ljcgd2l0aAoJICAgYSBzaW5nbGUgY2FsbC4gRm9yIGEgZ3JlYXQgZXhhbXBsZSBvZiB0aGlzLCBzZWUgdGhlIE5ld3MKCSAgIG1vZHVsZSBpbiB0aGUgc3RhbmRhcmQgQ01TIGluc3RhbGwuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICRvbGR2ZXJzaW9uOwoJCXN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQoJCXsKCQkJY2FzZSAiMS4wIjoKCQkJICAgICBicmVhazsKCQl9CgkJCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1cGdyYWRlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/SEOTools2.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNFT1Rvb2xzMiAtIFNldmVyYWwgdG9vbHMgdG8gaGVscCB3aXRoIFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uIGFuZCBjaGVjayBmb3Igc3Vib3B0aW1hbCBTRU8tcmVsYXRlZCB0aGluZ3MuCiMgVmVyc2lvbjogMS4wLCBDbGlwIE1hZ2ljCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMTAgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIyBUaGlzIGZpbGUgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IE1vZHVsZU1ha2VyIG1vZHVsZSwgdmVyc2lvbiAwLjMuMgojIENvcHlyaWdodCAoYykgMjAxMCBieSBTYW11ZWwgR29sZHN0ZWluIChzamdAY21zbWFkZXNpbXBsZS5vcmcpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy9lcnJvcl9yZXBvcnRpbmcoRV9BTEwpOwoKJGNvbmZpZyA9IGNtc21zKCktPmdldENvbmZpZygpOwoKCmNsYXNzIFNFT1Rvb2xzMiBleHRlbmRzIENNU01vZHVsZQp7CgogIGZ1bmN0aW9uIEdldE5hbWUoKQogIHsKICAgIHJldHVybiAnU0VPVG9vbHMyJzsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEZyaWVuZGx5TmFtZSgpCiAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUKICAgb2YgdGhlIG1vZHVsZS4gVGhpcyBpcyB0aGUgbmFtZSB0aGF0J3Mgc2hvd24gaW4gdGhlCiAgIEFkbWluIE1lbnVzIGFuZCBzZWN0aW9uIHBhZ2VzIChpZiB0aGUgbW9kdWxlIGhhcyBhbiBhZG1pbgogICBjb21wb25lbnQpLgoKICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0VmVyc2lvbigpCiAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yCiAgIHNvbWV0aGluZyB0aGF0IG1ha2VzIHNlbnNlIGZvciBkZXNpZ25hdGluZyBhIHZlcnNpb24uCiAgIFRoZSBDTVMgd2lsbCB1c2UgdGhpcyB0byBpZGVudGlmeSB3aGV0aGVyIG9yIG5vdAogICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQKICAgdGhlIG1vZHVsZSB3aWxsIHVzZSBpdCB0byBmaWd1cmUgb3V0IGhvdyB0byB1cGdyYWRlCiAgIGl0c2VsZiBpZiByZXF1ZXN0ZWQuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpCiAgewogICAgcmV0dXJuICcxLjAnOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0SGVscCgpCiAgIFRoaXMgcmV0dXJucyBIVE1MIGluZm9ybWF0aW9uIG9uIHRoZSBtb2R1bGUuCiAgIFR5cGljYWxseSwgeW91J2xsIHdhbnQgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8KICAgdXNlIHRoZSBtb2R1bGUuCgogICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEhlbHAoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QXV0aG9yKCkKICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUKICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QXV0aG9yKCkKICB7CiAgICByZXR1cm4gJ0NsaXAgTWFnaWMnOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QXV0aG9yRW1haWwoKQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQogICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4gSXQgaGVscHMgdXNlcnMKICAgb2YgeW91ciBtb2R1bGUgZ2V0IGluIHRvdWNoIHdpdGggeW91IHRvIHNlbmQgYnVnIHJlcG9ydHMsCiAgIHF1ZXN0aW9ucywgY2FzZXMgb2YgYmVlciwgYW5kL29yIGxhcmdlIHN1bXMgb2YgbW9uZXkuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogIHsKICAgIHJldHVybiAnYWRtaW5AY2xpcG1hZ2ljLmNvbS5hdSc7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRDaGFuZ2VMb2coKQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIG1vZHVsZQogICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlIEFib3V0IGxpbmsuIEl0IGhlbHBzIHVzZXJzCiAgIGZpZ3VyZSBvdXQgd2hhdCdzIGNoYW5nZWQgYmV0d2VlbiByZWxlYXNlcy4KICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBJc1BsdWdpbk1vZHVsZSgpCiAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIG9yIGZhbHNlLCBkZXBlbmRpbmcgdXBvbgogICB3aGV0aGVyIHVzZXJzIGNhbiBpbmNsdWRlIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yCiAgIHRlbXBsYXRlIHVzaW5nIGEgc21hcnR5IHRhZyBvZiB0aGUgZm9ybQogICB7Y21zX21vZHVsZSBtb2R1bGU9J1NFT1Rvb2xzMicgcGFyYW0xPXZhbCBwYXJhbTI9dmFsLi4ufQoKICAgSWYgeW91ciBtb2R1bGUgZG9lcyBub3QgZ2V0IGluY2x1ZGVkIGluIHBhZ2VzIG9yCiAgIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpCiAgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBIYXNBZG1pbigpCiAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUsIGRlcGVuZGluZyBvbgogICB3aGV0aGVyIHlvdXIgbW9kdWxlIGFkZHMgYW55dGhpbmcgdG8gdGhlIEFkbWluIGFyZWEgb2YKICAgdGhlIHNpdGUuIEZvciB0aGUgcmVzdCBvZiB0aGVzZSBjb21tZW50cywgSSdsbCBiZSBjYWxsaW5nCiAgIHRoZSBhZG1pbiBwYXJ0IG9mIHlvdXIgbW9kdWxlIHRoZSAiQWRtaW4gUGFuZWwiIGZvcgogICB3YW50IG9mIGEgYmV0dGVyIHRlcm0uCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEFkbWluU2VjdGlvbigpCiAgIElmIHlvdXIgbW9kdWxlIGhhcyBhbiBBZG1pbiBQYW5lbCwgeW91IGNhbiBzcGVjaWZ5CiAgIHdoaWNoIEFkbWluIFNlY3Rpb24gKG9yIHRvcC1sZXZlbCBBZG1pbiBNZW51KSBpdCBzaG93cwogICB1cCBpbi4gVGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyB0byBzcGVjaWZ5IHRoYXQKICAgc2VjdGlvbi4gVmFsaWQgcmV0dXJuIHZhbHVlcyBhcmU6CgogICBtYWluICAgICAgICAtIHRoZSBNYWluIG1lbnUgdGFiLgogICBjb250ZW50ICAgICAtIHRoZSBDb250ZW50IG1lbnUKICAgbGF5b3V0ICAgICAgLSB0aGUgTGF5b3V0IG1lbnUKICAgdXNlcnNncm91cHMgLSB0aGUgVXNlcnMgYW5kIEdyb3VwcyBtZW51CiAgIGV4dGVuc2lvbnMgIC0gdGhlIEV4dGVuc2lvbnMgbWVudSAodGhpcyBpcyB0aGUgZGVmYXVsdCkKICAgc2l0ZWFkbWluICAgLSB0aGUgU2l0ZSBBZG1pbiBtZW51CiAgIHZpZXdzaXRlICAgIC0gdGhlIFZpZXcgU2l0ZSBtZW51IHRhYgogICBsb2dvdXQgICAgICAtIHRoZSBMb2dvdXQgbWVudSB0YWIKCiAgIE5vdGUgdGhhdCBpZiB5b3UgcGxhY2UgeW91ciBtb2R1bGUgaW4gdGhlIG1haW4sCiAgIHZpZXdzaXRlLCBvciBsb2dvdXQgc2VjdGlvbnMsIGl0IHdpbGwgc2hvdyB1cCBpbiB0aGUKICAgbWVudXMsIGJ1dCB3aWxsIG5vdCBiZSB2aXNpYmxlIGluIGFueSB0b3AtbGV2ZWwKICAgc2VjdGlvbiBwYWdlcy4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQogIHsKICAgIHJldHVybiAnY29udGVudCc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgIElmIHlvdXIgbW9kdWxlIGRvZXMgaGF2ZSBhbiBBZG1pbiBQYW5lbCwgeW91CiAgIGNhbiBoYXZlIGl0IHJldHVybiBhIGRlc2NyaXB0aW9uIHN0cmluZyB0aGF0IGdldHMgc2hvd24KICAgaW4gdGhlIEFkbWluIFNlY3Rpb24gcGFnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdhZG1pbmRlc2NyaXB0aW9uJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKICAgY2FuIGNvbnRyb2wgd2hldGhlciBvciBub3QgaXQncyBkaXNwbGF5ZWQgYnkgdGhlIGJvb2xlYW4KICAgdGhhdCBpcyByZXR1cm5lZCBieSB0aGlzIG1ldGhvZC4gVGhpcyBpcyBwcmltYXJpbHkgdXNlZAogICB0byBoaWRlIG1vZHVsZXMgZnJvbSBhZG1pbnMgd2hvIGxhY2sgcGVybWlzc2lvbiB0byB1c2UKICAgdGhlbS4KCiAgIFR5cGljYWxseSwgeW91J2xsIHVzZSBzb21lIHBlcm1pc3Npb24gdG8gc2V0IHRoaXMKICAgKGUuZy4sICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1NvbWUgUGVybWlzc2lvbicpOyApCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBTRU8gU2V0dGluZ3MnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBDaGVja0FjY2VzcygpCiAgIFRoaXMgd3JhcHBlciBmdW5jdGlvbiB3aWxsIGNoZWNrIGFnYWluc3QgdGhlIHNwZWNpZmllZCBwZXJtaXNzaW9uLAogICBhbmQgZGlzcGxheSBhbiBlcnJvciBwYWdlIGlmIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSBhZGVxdWF0ZSBwZXJtaXNzaW9ucy4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBDaGVja0FjY2VzcygkcGVybSA9ICdFZGl0IFNFTyBTZXR0aW5ncycpCiAgewogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHBlcm0pOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgRGlzcGxheUVycm9yUGFnZSgpCiAgIFRoaXMgaXMgYSBzaW1wbGUgZnVuY3Rpb24gZm9yIGdlbmVyYXRpbmcgZXJyb3IgcGFnZXMuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gRGlzcGxheUVycm9yUGFnZSgkaWQsICYkcGFyYW1zLCAkcmV0dXJuX2lkLCAkbWVzc2FnZT0nJykKICB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Vycm9yJywgJHRoaXMtPkxhbmcoJ2Vycm9yJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignbWVzc2FnZScsICRtZXNzYWdlKTsKCiAgICAvLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZXJyb3IudHBsJyk7CiAgfQoKCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldERlcGVuZGVuY2llcygpCiAgIFlvdXIgbW9kdWxlIG1heSBuZWVkIGFub3RoZXIgbW9kdWxlIHRvIGFscmVhZHkgYmUgaW5zdGFsbGVkCiAgIGJlZm9yZSB5b3UgY2FuIGluc3RhbGwgaXQuCiAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIHRob3NlIGRlcGVuZGVuY2llcyBhbmQKICAgbWluaW11bSB2ZXJzaW9uIG51bWJlcnMgdGhhdCB0aGlzIG1vZHVsZSByZXF1aXJlcy4KCiAgIEl0IHNob3VsZCByZXR1cm4gYW4gaGFzaCwgZWcuCiAgIHJldHVybiBhcnJheSgnc29tZW1vZHVsZSc9PicxLjAnLCAnb3RoZXJtb2R1bGUnPT4nMS4xJyk7CiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKICB7CiAgICByZXR1cm4gYXJyYXkoKTsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIE1pbmltdW1DTVNWZXJzaW9uKCkKICAgWW91ciBtb2R1bGUgbWF5IHJlcXVpcmUgZnVuY3Rpb25zIG9yIG9iamVjdHMgZnJvbQogICBhIHNwZWNpZmljIHZlcnNpb24gb2YgQ01TIE1hZGUgU2ltcGxlLgogICBFdmVyIHNpbmNlIHZlcnNpb24gMC4xMSwgeW91IGNhbiBzcGVjaWZ5IHdoaWNoIG1pbmltdW0KICAgQ01TIE1TIHZlcnNpb24gaXMgcmVxdWlyZWQgZm9yIHlvdXIgbW9kdWxlLCB3aGljaCB3aWxsCiAgIHByZXZlbnQgaXQgZnJvbSBiZWluZyBpbnN0YWxsZWQgYnkgYSB2ZXJzaW9uIG9mIENNUyB0aGF0CiAgIGNhbid0IHJ1biBpdC4KCiAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQogICBtaW5pbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSByZXF1aXJlcy4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpCiAgewogICAgcmV0dXJuICIxLjkuMiI7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgTWF4aW11bUNNU1ZlcnNpb24oKQogICBZb3UgbWF5IHdhbnQgdG8gcHJldmVudCBwZW9wbGUgZnJvbSB1c2luZyB5b3VyIG1vZHVsZSBpbgogICBmdXR1cmUgdmVyc2lvbnMgb2YgQ01TIE1hZGUgU2ltcGxlLCBlc3BlY2lhbGx5IGlmIHlvdQogICB0aGluayBBUEkgZmVhdHVyZXMgeW91IHVzZSBtYXkgY2hhbmdlIC0tIGFmdGVyIGFsbCwgeW91CiAgIG5ldmVyIHJlYWxseSBrbm93IGhvdyB0aGUgQ01TIE1TIEFQSSBjb3VsZCBldm9sdmUuCgogICBTbywgdG8gcHJldmVudCBwZW9wbGUgZnJvbSBmbG9vZGluZyB5b3Ugd2l0aCBidWcgcmVwb3J0cwogICB3aGVuIGEgbmV3IHZlcnNpb24gb2YgQ01TIE1TIGlzIHJlbGVhc2VkLCB5b3UgY2FuIHNpbXBseQogICByZXN0cmljdCB0aGUgdmVyc2lvbi4gVGhlbiwgb2YgY291cnNlLCB0aGUgb251cyBpcyBvbiB5b3UKICAgdG8gcmVsZWFzZSBhIG5ldyB2ZXJzaW9uIG9mIHlvdXIgbW9kdWxlIHdoZW4gYSBuZXcgdmVyc2lvbgogICBvZiB0aGUgQ01TIGlzIHJlbGVhc2VkLi4uCgogICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUKICAgbWF4aW11bSB2ZXJzaW9uIHRoYXQgdGhpcyBtb2R1bGUgc3VwcG9ydHMuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpCiAgewogICAgcmV0dXJuOwogIH0KKi8KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgQWZ0ZXIgaW5zdGFsbGF0aW9uLCB0aGVyZSBtYXkgYmUgdGhpbmdzIHlvdSB3YW50IHRvCiAgIGNvbW11bmljYXRlIHRvIHlvdXIgYWRtaW4uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhCiAgIHN0cmluZyB3aGljaCB3aWxsIGJlIGRpc3BsYXllZC4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgQWZ0ZXIgcmVtb3ZpbmcgYSBtb2R1bGUsIHRoZXJlIG1heSBiZSB0aGluZ3MgeW91IHdhbnQgdG8KICAgY29tbXVuaWNhdGUgdG8geW91ciBhZG1pbi4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEKICAgc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsKICB9CgoKICAvKioKICAgKiBVbmluc3RhbGxQcmVNZXNzYWdlKCkKICAgKiBUaGlzIGFsbG93cyB5b3UgdG8gZGlzcGxheSBhIG1lc3NhZ2UgYWxvbmcgd2l0aCBhIFllcy9ObyBkaWFsb2cgYm94LiBJZiB0aGUgdXNlciByZXNwb25kcwogICAqIGluIHRoZSBhZmZpcm1hdGl2ZSB0byB5b3VyIG1lc3NhZ2UsIHRoZSB1bmluc3RhbGwgd2lsbCBwcm9jZWVkLiBJZiB0aGV5IHJlc3BvbmQgaW4gdGhlCiAgICogbmVnYXRpdmUsIHRoZSB1bmluc3RhbGwgd2lsbCBiZSBjYW5jZWxlZC4gVGh1cywgeW91ciBtZXNzYWdlIHNob3VsZCBiZSBvZiB0aGUgZm9ybQogICAqICJBbGwgbW9kdWxlIGRhdGEgd2lsbCBiZSBkZWxldGVkLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIHRoaXMgbW9kdWxlPyIKICAgKgogICAqIElmIHlvdSBkb24ndCB3YW50IHRoZSBkaWFsb2csIGhhdmUgdGhpcyBtZXRob2QgcmV0dXJuIGEgRkFMU0UsIHdoaWNoIHdpbGwgY2F1c2UgdGhlCiAgICogbW9kdWxlIHRvIHVuaW5zdGFsbCBpbW1lZGlhdGVseSBpZiB0aGUgdXNlciBjbGlja3MgdGhlICJ1bmluc3RhbGwiIGxpbmsuCiAgICovCiAgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7CiAgfQoKICBmdW5jdGlvbiBHZXROb3RpZmljYXRpb25PdXRwdXQoJHByaW9yaXR5ID0gMykgewogICAgaWYgKGNvdW50KCR0aGlzLT5nZXRVcmdlbnRBbGVydHMoKSkgPiAwKSB7CiAgICAgICR0ZXh0ID0gJHRoaXMtPmxhbmcoJ3Byb2JsZW1fYWxlcnQnLEFycmF5KCR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJHRoaXMtPmxhbmcoJ3Byb2JsZW1fbGlua190aXRsZScpKSkpOwoKICAgICAgJG9iaiA9IG5ldyBTdGRDbGFzczsKICAgICAgJG9iai0+cHJpb3JpdHkgPSAzOwogICAgICAkb2JqLT5odG1sID0gJHRleHQ7CgogICAgICByZXR1cm4gJG9iajsKICAgIH0KICB9CgoKICBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkgewogICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAkdGhpcy0+YWRkRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudEVkaXRQb3N0JyxmYWxzZSk7CiAgICAkdGhpcy0+YWRkRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudERlbGV0ZVBvc3QnLGZhbHNlKTsKCiAgICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKHRydWUpOwoKICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3Nob3diYXNlJywgJ3RydWUnLCAkdGhpcy0+TGFuZygnaGVscF9zaG93YmFzZScpKTsKICB9CgogIGZ1bmN0aW9uIERvRXZlbnQoJG9yaWdpbiwgJG5hbWUsICRwYXJhbXMpIHsKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnKSA9PSAxKSB7CiAgICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnKSA9PSAxKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGdldFVyZ2VudEFsZXJ0cygpIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgJGFsZXJ0cyA9IEFycmF5KCk7CiAgICAvLyBFbmFibGUgUHJldHR5IFVSTHMKICAgIGlmICgoJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddICE9ICJtb2RfcmV3cml0ZSIpICYmICgkY29uZmlnWyd1cmxfcmV3cml0aW5nJ10gIT0gJ2ludGVybmFsJykpIHsKICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3N5c3RlbSc7CiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ2FjdGl2YXRlX3ByZXR0eV91cmxzJyk7CiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmxhbmcoJ3ByZXR0eV91cmxzX2hlbHAnKTsKICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfQogICAgLy8gTm8gTWV0YSB0YWdzIGFyZSBpbnNlcnRlZAogICAgaWYgKCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsMCkgIT0gMSkgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnLDApICE9IDEpKSB7CiAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7CiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3VzZV9zdGFuZGFyZF9vcl9kdWJsaW5jb3JlX21ldGEnKTsKICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICB9CgogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywwKSAhPSAxKSB7CiAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSAhPSAnJykgewogICAgICAgIC8vIFBhZ2VzIHdpdGhvdXQgZGVzY3JpcHRpb24KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICosYy5jb250ZW50X2lkIEFTIGNpZCwgYy50eXBlIEFTIGN0eXBlIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYyBMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcCBPTiAoYy5jb250ZW50X2lkID0gcC5jb250ZW50X2lkIEFORCBwLnByb3BfbmFtZSA9ICInLnN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpLiciKSBXSEVSRSAocC5jb250ZW50IElTIE5VTEwgT1IgcC5jb250ZW50ID0gIiIpIEFORCBjLnR5cGUgPSAiY29udGVudCIgTElNSVQgMCwyMSc7CiAgICAgICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICB3aGlsZSAoJHByb2JsZW0gPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7CiAgIAkJICAJICBpZiAoJHByb2JsZW1bJ2N0eXBlJ10gPT0gJ2NvbnRlbnQnKSB7CiAgIAkJICAJICAgICRhbGVydCA9IEFycmF5KCk7CiAgIAkJICAJICAgICRhbGVydFsnZ3JvdXAnXSA9ICdwYWdlcyc7CiAgIAkJICAJICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ21ldGFfZGVzY3JpcHRpb25fbWlzc2luZycsQXJyYXkoJHByb2JsZW1bJ2NvbnRlbnRfbmFtZSddKSk7CiAgIAkJICAJICAgIGlmIChpc3NldCgkX0dFVFsnc3BfJ10pKSB7CiAgIAkJICAJICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7CiAgIAkJICAJICAgIH1lbHNlewogICAJCSAgCSAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7CiAgIAkJICAJICAgIH0KICAgCQkgIAkgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAJCSAgCSAgfQogICAgICAgIH0KICAgICAgfWVsc2V7CiAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc2V0dGluZ3MnOwogICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3NldF91cF9kZXNjcmlwdGlvbl9ibG9jaycpOwogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgIH0KICAgIH1lbHNlaWYoc3RycG9zKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywnJyksJ3trZXl3b3Jkc30nKSA9PT0gZmFsc2UpIHsKICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3NldHRpbmdzJzsKICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnc2V0X3VwX2F1dG9fZGVzY3JpcHRpb24nKTsKICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICB9CgogICAgLy8gc2l0ZW1hcC54bWwgbm90IHdyaXRlYWJsZQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSkgPT0gMSkgewogICAgICBpZiAoIWlzX3dyaXRlYWJsZSgkY29uZmlnWydyb290X3BhdGgnXSAuICcvc2l0ZW1hcC54bWwnKSkgewogICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3N5c3RlbSc7CiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnc2l0ZW1hcF9ub3Rfd3JpdGVhYmxlJyk7CiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+bGFuZygnY2htb2Rfc2l0ZW1hcCcpOwogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgfQogICAgfQoKICAgIC8vIHJvYm90cy50eHQgbm90IHdyaXRlYWJsZQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywxKSA9PSAxKSB7CiAgICAgICRmcCA9IEBmb3BlbigkY29uZmlnWydyb290X3BhdGgnXSAuICcvcm9ib3RzLnR4dCcsImEiKTsKICAgICAgQGZjbG9zZSgkZnApOwogICAgICBpZiAoIWlzX3dyaXRlYWJsZSgkY29uZmlnWydyb290X3BhdGgnXSAuICcvcm9ib3RzLnR4dCcpKSB7CiAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc3lzdGVtJzsKICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdyb2JvdHNfbm90X3dyaXRlYWJsZScpOwogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmxhbmcoJ2NobW9kX3JvYm90cycpOwogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgfQogICAgfQoKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGgnLDApID09IDEpIHsKICAgICAgLy8gTm8gT3BlbkdyYXBoIGFkbWluIHNldAogICAgICBpZiAoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCcnKSA9PSAnJykgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpID09ICcnKSkgewogICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbm9fb3BlbmdyYXBoX2FkbWlucycpOwogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgIH0KICAgICAgLy8gTm8gT3BlbkdyYXBoIHBhZ2UgdHlwZSBzZXQKICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywnJykgPT0gJycpIHsKICAgICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdvcGVuZ3JhcGgnOwogICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ25vX29wZW5ncmFwaF90eXBlJyk7CiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgfQogICAgICAvLyBObyBPcGVuR3JhcGggc2l0ZW5hbWUgc2V0CiAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCcnKSA9PSAnJykgewogICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbm9fb3BlbmdyYXBoX3NpdGVuYW1lJyk7CiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgfQogICAgICAvLyBObyBPcGVuR3JhcGggaW1hZ2Ugc2V0CiAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnLCcnKSA9PSAnJykgewogICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbm9fb3BlbmdyYXBoX2ltYWdlJyk7CiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiAkYWxlcnRzOwogIH0KCiAgZnVuY3Rpb24gZ2V0SW1wb3J0YW50QWxlcnRzKCkgewogICAgZ2xvYmFsICRnQ21zOwoKICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAkYWxlcnRzID0gQXJyYXkoKTsKCiAgICAvLyBQYWdlcyB3aXRoIHNob3J0IGRlc2NyaXB0aW9uCiAgICAkcXVlcnkgPSAnU0VMRUNUICosYy5jb250ZW50X2lkIEFTIGNpZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IGMgSU5ORVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBwIE9OIChjLmNvbnRlbnRfaWQgPSBwLmNvbnRlbnRfaWQgQU5EIHAucHJvcF9uYW1lID0gIicuc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSkuJyIpIFdIRVJFIENIQVJfTEVOR1RIKHAuY29udGVudCkgPCA3NSBBTkQgYy50eXBlID0gImNvbnRlbnQiIEFORCBwLmNvbnRlbnQgPD4gIiIgTElNSVQgMCwyMSc7CiAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewogICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnZGVzY3JpcHRpb25zJzsKICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbWV0YV9kZXNjcmlwdGlvbl9zaG9ydCcsQXJyYXkoJHByb2JsZW1bJ2NvbnRlbnRfbmFtZSddKSk7CiAgICAgIGlmIChpc3NldCgkX0dFVFsnc3BfJ10pKSB7CiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7CiAgICAgIH1lbHNlewogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7CiAgICAgIH0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfQoKICAgIC8vIFBhZ2VzIHdpdGggZHVwbGljYXRlIHRpdGxlCiAgICAkcXVlcnkgPSAnU0VMRUNUIGMxLmNvbnRlbnRfYWxpYXMgQVMgYzFuYW1lLCBjMS5jb250ZW50X2lkIEFTIGMxaWQsIGMyLmNvbnRlbnRfYWxpYXMgQVMgYzJuYW1lLCBjMi5jb250ZW50X2lkIEFTIGMyaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBjMSBJTk5FUiBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IGMyIE9OIChjMS5jb250ZW50X25hbWUgPSBjMi5jb250ZW50X25hbWUgQU5EIGMxLmNvbnRlbnRfaWQgPCBjMi5jb250ZW50X2lkKSBXSEVSRSBjMS50eXBlID0gImNvbnRlbnQiIEFORCBjMi50eXBlID0gImNvbnRlbnQiIExJTUlUIDAsMjEnOwogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsKICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3RpdGxlcyc7CiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ2R1cGxpY2F0ZV90aXRsZXMnLEFycmF5KCRwcm9ibGVtWydjMW5hbWUnXSwkcHJvYmxlbVsnYzJuYW1lJ10pKTsKICAgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsKICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnYzFpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHByb2JsZW1bJ2MxbmFtZSddKSkuJzwvYT4nOwogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMmlkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzJuYW1lJ10pKS4nPC9hPic7CiAgICAgIH1lbHNlewogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2MxaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRwcm9ibGVtWydjMW5hbWUnXSkpLic8L2E+JzsKICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMmlkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzJuYW1lJ10pKS4nPC9hPic7CiAgICAgIH0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfQoKICAgIC8vIFBhZ2VzIHdpdGggZHVwbGljYXRlIGRlc2NyaXB0aW9uCiAgICAkcXVlcnkgPSAnU0VMRUNUIHAxLmNvbnRlbnRfaWQgQVMgYzFpZCwgcDIuY29udGVudF9pZCBBUyBjMmlkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcDEgSU5ORVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBwMiBPTiAocDEucHJvcF9uYW1lID0gcDIucHJvcF9uYW1lIEFORCBwMS5wcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIiBBTkQgcDEuY29udGVudF9pZCA8IHAyLmNvbnRlbnRfaWQgQU5EIHAxLmNvbnRlbnQgPD4gIiIgQU5EIHAyLmNvbnRlbnQgPD4gIiIpIFdIRVJFIHAxLmNvbnRlbnQgPSBwMi5jb250ZW50IExJTUlUIDAsMjEnOwogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsKICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjb250ZW50X2lkLCBjb250ZW50X25hbWUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBXSEVSRSBjb250ZW50X2lkID0gJy4kcHJvYmxlbVsnYzFpZCddLicgT1IgY29udGVudF9pZCA9ICcuJHByb2JsZW1bJ2MyaWQnXTsKICAgICAgJHJlc3VsdDEgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgICRmaXJzdCA9ICRyZXN1bHQxLT5mZXRjaFJvdygpOwogICAgICAkc2Vjb25kID0gJHJlc3VsdDEtPmZldGNoUm93KCk7CiAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdkZXNjcmlwdGlvbnMnOwogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdkdXBsaWNhdGVfZGVzY3JpcHRpb25zJyxBcnJheSgkZmlyc3RbJ2NvbnRlbnRfbmFtZSddLCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSk7CiAgICAgIGlmIChpc3NldCgkX0dFVFsnc3BfJ10pKSB7CiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJGZpcnN0Wydjb250ZW50X2lkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlJyxBcnJheSgkZmlyc3RbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOwogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRzZWNvbmRbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOwogICAgICB9ZWxzZXsKICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRmaXJzdFsnY29udGVudF9pZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJGZpcnN0Wydjb250ZW50X25hbWUnXSkpLic8L2E+JzsKICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRzZWNvbmRbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOwogICAgICB9CiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgIH0KICAgIC8vIE5vIGF1dGhvciBwcm92aWRlZAogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpID09ICcnKSB7CiAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7CiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3Byb3ZpZGVfYW5fYXV0aG9yJyk7CiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfQogICAgcmV0dXJuICRhbGVydHM7CiAgfQoKICBmdW5jdGlvbiBnZXROb3RpY2VBbGVydHMoKSB7CiAgICBnbG9iYWwgJGdDbXM7CiAgICAKICAgICRhbGVydHMgPSBBcnJheSgpOwogICAgLy8gTm8gc3RhbmRhcmQgbWV0YQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKSAhPSAxKSB7CiAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3VzZV9zdGFuZGFyZF9tZXRhJyk7CiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfQogICAgLy8gU3VibWl0IGEgc2l0ZW1hcAogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSkgIT0gMSkgewogICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdjcmVhdGVfYV9zaXRlbWFwJyk7CiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsKICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfWVsc2VpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKSAhPSAxKSB7CiAgICAgIC8vIEF1dG9tYXRpY2FsbHkgc3VibWl0IHRoZSBzaXRlbWFwCiAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ2F1dG9tYXRpY2FsbHlfdXBsb2FkX3NpdGVtYXAnKTsKICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOwogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICB9CiAgICAvLyBDcmVhdGUgYSByb2JvdHMudHh0IGZpbGUKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsMSkgIT0gMSkgewogICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdjcmVhdGVfcm9ib3RzJyk7CiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsKICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgfQogICAgLy8gU2V0IGEgZGVmYXVsdCBpbWFnZQogICAgcmV0dXJuICRhbGVydHM7CiAgfQoKICBmdW5jdGlvbiBnZXRfa2V5d29yZHMoJHNvdXJjZSwgJG1pbmxlbmd0aCA9IDYpIHsKICAgICRzb3VyY2UgPSBwcmVnX3JlcGxhY2UoJy9ce1teXH1dK1x9L2lzVScsICcnLCB1dGY4X2RlY29kZSgkc291cmNlKSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoIlxuIiwiICIsc3RyaXBfdGFncygkc291cmNlKSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJy0nLCcgJywkc291cmNlKTsKICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnLicsJyAnLCRzb3VyY2UpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCcsJywnICcsJHNvdXJjZSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyEnLCcgJywkc291cmNlKTsKICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnPycsJyAnLCRzb3VyY2UpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCc6JywnICcsJHNvdXJjZSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyAgJywnICcsJHNvdXJjZSk7CiAgICAka2V5d29yZHMgPSBleHBsb2RlKCcgJywkc291cmNlKTsKICAgIGZvcmVhY2ggKCRrZXl3b3JkcyBhcyAka2V5PT4kdmFsdWUpIHsKICAgICAgaWYgKHN0cmxlbigkdmFsdWUpIDwgJG1pbmxlbmd0aCkgewogICAgICAgIHVuc2V0KCRrZXl3b3Jkc1ska2V5XSk7CiAgICAgIH1lbHNlewogICAgICAgICRrZXl3b3Jkc1ska2V5XSA9IGh0bWxlbnRpdGllcyh0cmltKCR2YWx1ZSkpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gJGtleXdvcmRzOwogIH0KCiAgZnVuY3Rpb24gZ2V0X2hlYWRsaW5lcygkZmlsZSl7CiAgICAkaDF0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgxLio+KShcdy4qKSg8XC9oMT4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOwogICAgJGNvbnRlbnQgPSAiIjsKICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsKICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7CiAgICB9CiAgICAkaDJ0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgyLio+KShcdy4qKSg8XC9oMj4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOwogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgewogICAgICAkY29udGVudCAuPSAiICIuJHRhZzsKICAgIH0KICAgICRoM3RhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDMuKj4pKFx3LiopKDxcL2gzPikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7CiAgICBmb3JlYWNoKCRwYXR0ZXJuc1syXSBhcyAkdGFnKSB7CiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOwogICAgfQogICAgJGg0dGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoNC4qPikoXHcuKikoPFwvaDQ+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsKICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsKICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7CiAgICB9CiAgICAkaDV0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg1Lio+KShcdy4qKSg8XC9oNT4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOwogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgewogICAgICAkY29udGVudCAuPSAiICIuJHRhZzsKICAgIH0KICAgICRoNnRhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDYuKj4pKFx3LiopKDxcL2g2PikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7CiAgICBmb3JlYWNoKCRwYXR0ZXJuc1syXSBhcyAkdGFnKSB7CiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOwogICAgfQogICAgcmV0dXJuICRjb250ZW50OwogIH0KCiAgZnVuY3Rpb24gZ2V0S2V5d29yZFN1Z2dlc3Rpb25zKCRjb250ZW50X2lkKSB7CiAgICBnbG9iYWwgJGdDbXM7CiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgICRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiAgICBpZiAoISRjdXJjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkICgkY29udGVudF9pZCkpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgJGRlc2NyaXB0aW9uX2lkID0gc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSk7CgogICAgLyogR2VuZXJhdGUga2V5d29yZHMgZnJvbSBwYWdlIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgY29udGVudCAqLwogICAgJHRpdGxlX2tleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygkY3VyY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgnY29udGVudF9lbicpLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOwoKICAgICRkZXNjcmlwdGlvbl9rZXl3b3JkcyA9ICR0aGlzLT5nZXRfa2V5d29yZHMoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGRlc2NyaXB0aW9uX2lkKSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpKTsKCiAgICAkaGVhZGxpbmVfa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCR0aGlzLT5nZXRfaGVhZGxpbmVzKCRjdXJjb250ZW50LT5OYW1lKCkpLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOwoKICAgICRjb250ZW50X2tleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygkY3VyY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgnY29udGVudF9lbicpLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOwoKICAgICRvdGhlcl9rZXl3b3JkcyA9IEFycmF5KCk7CgogICAgZm9yZWFjaCgkdGl0bGVfa2V5d29yZHMgYXMgJGtleXdvcmQpIHsKICAgICAgaWYgKCFpc3NldCgkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdKSkgewogICAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAwOwogICAgICB9CiAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCc2Jyk7CiAgICB9CiAgICBmb3JlYWNoKCRkZXNjcmlwdGlvbl9rZXl3b3JkcyBhcyAka2V5d29yZCkgewogICAgICBpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7CiAgICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7CiAgICAgIH0KICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCc0Jyk7CiAgICB9CiAgICBmb3JlYWNoKCRoZWFkbGluZV9rZXl3b3JkcyBhcyAka2V5d29yZCkgewogICAgICBpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7CiAgICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7CiAgICAgIH0KICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCcyJyk7CiAgICB9CiAgICBmb3JlYWNoKCRjb250ZW50X2tleXdvcmRzIGFzICRrZXl3b3JkKSB7CiAgICAgIGlmICghaXNzZXQoJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSkpIHsKICAgICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gMDsKICAgICAgfQogICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdICs9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywnMScpOwogICAgfQoKICAgIGFyc29ydCgkb3RoZXJfa2V5d29yZHMpOwoKICAgICRleGNsdWRlX2xpc3QgPSBleHBsb2RlKCcgJyxzdHJ0b3VwcGVyKHV0ZjhfZGVjb2RlKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCcnKSkpKTsKCiAgICBmb3JlYWNoICgkb3RoZXJfa2V5d29yZHMgYXMgJGtleT0+JHZhbHVlKSB7CiAgICAgIGlmICgkdmFsdWUgPCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJzcnKSkgewogICAgICAgIHVuc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5XSk7CiAgICAgIH1lbHNlaWYgKGluX2FycmF5KHN0cnRvdXBwZXIoJGtleSksJGV4Y2x1ZGVfbGlzdCkpIHsKICAgICAgICB1bnNldCgkb3RoZXJfa2V5d29yZHNbJGtleV0pOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuICRvdGhlcl9rZXl3b3JkczsKICB9CgogIGZ1bmN0aW9uIGNyZWF0ZVJvYm90c1RYVCgpIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgJGZwID0gQGZvcGVuKCRjb25maWdbJ3Jvb3RfcGF0aCddLicvcm9ib3RzLnR4dCcsJ3cnKTsKICAgIAogICAgLy8gQ3JlYXRlIHJvYm90cy50eHQKICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpID09IDEpIHsKICAgICAgZndyaXRlKCRmcCwgIlNpdGVtYXA6ICIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL3NpdGVtYXAueG1sXG4iKTsKICAgIH0KCUBmd3JpdGUoJGZwLCAiVXNlci1hZ2VudDogKlxuIik7CglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9jb250cmliL1xuIik7CglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9kb2MvXG4iKTsKCUBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL2xpYi9cbiIpOwoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvbW9kdWxlcy9cbiIpOwoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvcGx1Z2lucy9cbiIpOwoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvc2NyaXB0cy9cbiIpOwoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvdG1wL1xuIik7CgogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIgV0hFUkUgaW5kZXhhYmxlID0gMCI7CiAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgogICAgJGNvbnRlbnRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKICAgIHdoaWxlICgkcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsKCiAgICAgIGlmICgkY3VyY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCAoJHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIHsKICAgICAgICAkdXJsID0gJGN1cmNvbnRlbnQtPkdldFVSTCgpOwogICAgICAgIEBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJHVybC4iXG4iKTsKICAgICAgfQogICAgfQogICAgQGZjbG9zZSgkZnApOwogIH0KCiAgZnVuY3Rpb24gY3JlYXRlU2l0ZW1hcCgkcHVzaCA9IGZhbHNlKSB7CiAgICBnbG9iYWwgJGdDbXM7CiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgCgogICAgJGZwID0gQGZvcGVuKCRjb25maWdbJ3Jvb3RfcGF0aCddLicvc2l0ZW1hcC54bWwnLCd3Jyk7CiAgICAvLyBDcmVhdGUgc2l0ZW1hcAoKICAgIGZ3cml0ZSgkZnAsICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/PlxuIik7CiAgICBmd3JpdGUoJGZwLCAiPHVybHNldCB4bWxucz0naHR0cDovL3d3dy5zaXRlbWFwcy5vcmcvc2NoZW1hcy9zaXRlbWFwLzAuOSc+XG5cbiIpOwoKICAgICRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgYWN0aXZlID0gMSBPUkRFUiBCWSBoaWVyYXJjaHkgQVNDJzsKICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgogICAgd2hpbGUgKCRwYWdlID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewogICAgICBpZiAoJGN1cmNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQgKCRwYWdlWydjb250ZW50X2lkJ10pKSB7CgogICAgICAgIGlmICgkY3VyY29udGVudC0+QWN0aXZlKCkgJiYgJGN1cmNvbnRlbnQtPlNob3dJbk1lbnUoKSkgewogICAgICAgICAgJHVybCA9ICRjdXJjb250ZW50LT5HZXRVUkwoKTsKICAgICAgICAgIGlmICgkdXJsID09ICIjIikgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoc3RycG9zKCR1cmwsICRjb25maWdbJ3Jvb3RfdXJsJ10pID09PSBmYWxzZSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KCiAgICAgICAgICAkcHJpb3JpdHkgPSA4MDsKICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IHN1YnN0cl9jb3VudCgkcGFnZVsnaGllcmFyY2h5J10sJy4nKTsgJGkrKykgewogICAgICAgICAgICAkcHJpb3JpdHkgID0gJHByaW9yaXR5IC8gMjsKICAgICAgICAgIH0KICAgICAgICAgIGlmICgkcGFnZVsnZGVmYXVsdF9jb250ZW50J10gPT0gMSkgewogICAgICAgICAgICAkcHJpb3JpdHkgPSAxMDA7CiAgICAgICAgICB9CgogICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ICcuJHBhZ2VbJ2NvbnRlbnRfaWQnXTsKICAgICAgICAgICRyZXN1bHQyID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAgICAgJGluZm8gPSAkcmVzdWx0Mi0+ZmV0Y2hSb3coKTsKICAgICAgICAgIGlmIChpc3NldCgkaW5mb1sncHJpb3JpdHknXSkgJiYgKCRpbmZvWydwcmlvcml0eSddICE9IDApICYmICgkaW5mb1sncHJpb3JpdHknXSAhPSAiIikpIHsKICAgICAgICAgICAgJHByaW9yaXR5ID0gJGluZm9bJ3ByaW9yaXR5J107CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIWlzc2V0KCRpbmZvWydpbmRleGFibGUnXSkgfHwgKCRpbmZvWydpbmRleGFibGUnXSA9PSAiIikgfHwgKCRpbmZvWydpbmRleGFibGUnXSA9PSAxKSkgewogICAgICAgICAgICBmd3JpdGUoJGZwLCAiPHVybD5cbiIpOwogICAgICAgICAgICBmd3JpdGUoJGZwLCAiPGxvYz4iLiR1cmwuIjwvbG9jPlxuIik7CiAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8bGFzdG1vZD4iLmRhdGUoIlktbS1kIiwgc3RydG90aW1lKCRwYWdlWydtb2RpZmllZF9kYXRlJ10pKS4iPC9sYXN0bW9kPlxuIik7CiAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8Y2hhbmdlZnJlcT5hbHdheXM8L2NoYW5nZWZyZXE+XG4iKTsKICAgICAgICAgICAgZndyaXRlKCRmcCwgIjxwcmlvcml0eT4iLm51bWJlcl9mb3JtYXQoJHByaW9yaXR5IC8gMTAwLCAxKS4iPC9wcmlvcml0eT5cbiIpOwogICAgICAgICAgICBmd3JpdGUoJGZwLCAiPC91cmw+XG5cbiIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogICAgZndyaXRlKCRmcCwgIjwvdXJsc2V0PiIpOwogICAgZmNsb3NlKCRmcCk7CiAgICBpZiAoJHB1c2gpIHsKICAgICAgLy8gUHVzaCBzaXRlbWFwIHRvIGdvb2dsZQogICAgICAkZnAgPSBAZm9wZW4oImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL3Rvb2xzL3Bpbmc/c2l0ZW1hcD0iLnVybGVuY29kZSgkY29uZmlnWydyb290X3VybCddLiIvc2l0ZW1hcC54bWwiKSwiciIpOwogICAgICBmY2xvc2UoJGZwKTsKICAgIH0KICB9Cgp9Cgo/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>
