<?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>SEOTools</name>
	<version>1.2</version>
  <mincmsversion>1.6.0</mincmsversion>
	<help><![CDATA[PGgzPldhcyB0dXQgZGllc2VzIE1vZHVsPzwvaDM+CjxwPkRpZSBTRU8gVG9vbHMgaGVsZmVuIElobmVuLCBJaHJlIFNFTyAoU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24sIFN1Y2htYXNjaGluZW5vcHRpbWllcnVuZykgaW4gZGVuIEdyaWZmIHp1IGJla29tbWVuLiBEYXMgTW9kdWwgZiZ1dW1sO2d0IHZlcnNjaGllZGVuZSBTRU8tRiZhdW1sO2hpZ2tlaXRlbiB6dSBDTVNNUyBoaW56dSB1bmQgd2FybnQgU2llLCBmYWxscyBTaWUgaXJnZW5kZXR3YXMgU0VPLWJlem9nZW5lcyAmdXVtbDtiZXJzZWhlbiBoYWJlbi4gQWt0dWVsbCB3ZXJkZW4gZGllIGZvbGdlbmRlbiBGZWF0dXJlcyB1bnRlcnN0JnV1bWw7dHp0OjwvcD4KPHVsPgo8bGk+LSBhdXRvbWF0aXNjaGUgRXJ6ZXVndW5nIHZvbiBNZXRhLVRhZ3MgaW0gU3RhbmRhcmQtSFRNTC1Gb3JtYXQsIG5hY2ggZGVyIER1YmxpbiBDb3JlLVNwZXppZmlrYXRpb24gdW5kIE9wZW5HcmFwaDwvbGk+CjxsaT4tIGF1dG9tYXRpc2NoZSBFeHRyYWt0aW9uIHZvbiBLZXl3b3JkcyBhdXMgSWhyZW4gU2VpdGVuLCBkaWUgenVtIFNlaXRlbnRpdGVsIHVuZCBkZW4gTWV0YS1UYWdzIGhpbnp1Z2VmJnV1bWw7Z3Qgd2VyZGVuPC9saT4KPGxpPi0gRmVzdGxlZ2VuIG1pdCBlaW5lbSBLbGljaywgb2IgYmVzdGltbXRlIFNlaXRlbiB2b24gU3VjaG1hc2NoaW5lbiBpbmRpemllcnQgd2VyZGVuIHNvbGxlbiBvZGVyIG5pY2h0PC9saT4KPGxpPi0gRXJ6ZXVndW5nIGVpbmVyIHNpdGVtYXAueG1sLURhdGVpIG1pdCBJaHJlbiBTZWl0ZW4gdyZhdW1sO2hyZW5kIFNpZSBkaWUgdm9sbGUgS29udHJvbGxlIGRhciZ1dW1sO2JlciBoYWJlbiwgd2llIGRpZSBQcmlvcml0JmF1bWw7dCBlaW56ZWxuZXIgU2VpdGVuIGJld2VydGV0IHdlcmRlbiBzb2xsPC9saT4KPGxpPi0gRXJ6ZXVndW5nIGVpbmVyIHJvYm90cy50eHQtRGF0ZWkgbWl0IGRlciBNJm91bWw7Z2xpY2hrZWl0LCBleHBsaXppdCBkZW4gWnVncmlmZiBhdWYgU2VpdGVuLCBkaWUgbmljaHQgaW5kaXppZXJ0IHdlcmRlbiBzb2xsZW4sIHp1IHZlcmJpZXRlbjwvbGk+CjxsaT4tIEF1c2dhYmUgdm9uIFdhcm51bmdlbiwgd2VubiBtZWhyZXJlIFNlaXRlbiBkZW4gZ2xlaWNoZW4gVGl0ZWwgb2RlciBkaWUgZ2xlaWNoZSBCZXNjaHJlaWJ1bmcgaGFiZW48L2xpPgo8bGk+LSBBdXNnYWJlIHZvbiBXYXJudW5nZW4gd2VubiBzZWhyIGt1cnplIFNlaXRlbmJlc2NocmVpYnVuZ2VuIGdlZnVuZGVuIHd1cmRlbjwvbGk+CjxsaT4tIEF1dG9tYXRpc2NoZXMgRWluc2VuZGVuIGRlciBha3R1YWxpc2llcnRlbiBTaXRlbWFwLURhdGVpIHp1IEdvb2dsZSwgd2VubiBJbmhhbHRlIGdlJmF1bWw7bmRlcnQgd2VyZGVuPC9saT4gCjwvdWw+CjxoMz5XaWUgd2lyZCBkYXMgTW9kdWwgdmVyd2VuZGV0PzwvaDM+CjxwPiZPdW1sO2ZmbmVuIFNpZSB6dW4mYXVtbDtjaHN0IGFsbGUgVGVtcGxhdGVzLCBhdWYgZGVuZW4gU2llIFNFTyBUb29scyB2ZXJ3ZW5kZW4gbSZvdW1sO2NodGVuLiBFbnRmZXJuZW4gU2llIGRhcyBrb21wbGV0dGUgJmx0O3RpdGxlJmd0Oy1UYWcgdW5kIGRhcyB7bWV0YWRhdGF9LVRhZyAoYXVjaCB3ZW5uIGRhIHN0ZWh0LCBkYSZzemxpZzsgU2llIGxldHp0ZXJlcyBuaWUgZW50ZmVybmVuIHNvbGx0ZW4pIHVuZCBlcnNldHplbiBTaWUgYmVpZGUgZHVyY2ggZGFzIFRhZzwvcD4KPHByZT4Ke1NFT1Rvb2xzfQo8L3ByZT48YnIgLz4KPHA+RiZ1dW1sO2dlbiBTaWUgYWxzIG4mYXVtbDtjaHN0ZXMgYW0gRW5kZSBJaHJlcyBUZW1wbGF0ZXMgKG5hY2ggZGVtIHNjaGxpZSZzemxpZztlbmRlbiAmbHQ7L2JvZHkmZ3Q7LVRhZykgZGVuIGZvbGdlbmRlbiBDb2RlIGVpbjo8L3A+CjxwcmU+CntjYXB0dXJlfXtjb250ZW50IGJsb2NrPSJTZWl0ZW5iZXNjaHJlaWJ1bmciIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX0KPC9wcmU+PGJyIC8+CjxwPkluIGRpZXNlcyBGZWxkIHdlcmRlbiBTaWUgc3AmYXVtbDt0ZXIgZWluZSBrdXJ6ZSBTZWl0ZW5iZXNjaHJlaWJ1bmcgKGVpbiBvZGVyIHp3ZWkgUyZhdW1sO3R6ZSkgZWluZ2ViZW4sIGRpZSBpbiBkZW4gRXJnZWJuaXNzZW4gZGVyIFN1Y2htYXNjaGluZW4gYW5nZXplaWd0IHdpcmQgdW5kIHdlbm4gei5CLiBqZW1hbmQgZGVuIExpbmsgenUgSWhyZXIgU2VpdGUgYmVpIEZhY2Vib29rIHRlaWx0LjwvcD4KPHA+UnVmZW4gU2llIG51biBkaWUgTW9kdWwtQWRtaW5pc3RyYXRpb24gYXVmIHVuZCBmJnV1bWw7bGxlbiBTaWUgYXVmIGRlbiBFaW5zdGVsbHVuZ3MtVGFicyBhbGxlIEluZm9ybWF0aW9uZW4gZWluLCBkaWUgZiZ1dW1sO3IgSWhyZSBTZWl0ZSByZWxldmFudCBzaW5kLiBVbnRlciAiTmFtZSBkZXMgU2VpdGVuYmVzY2hyZWlidW5ncy1Db250ZW50YmxvY2siIHRyYWdlbiBTaWUgZGVuIE5hbWVuIGRlcyBzb2ViZW4gaW0gVGVtcGxhdGUgYW5nZWxlZ3RlbiBDb250ZW50LUJsb2NrcyAoIlNlaXRlbmJlc2NocmVpYnVuZyIgaW4gdW5zZXJlbSBCZWlzcGllbCkgZWluLiBEZXIgVGFiICJTRU8tV2FybnVuZ2VuIiBiZW5hY2hpY2h0aWd0IFNpZSBhdXRvbWF0aXNjaCwgd2VubiBpcmdlbmRlaW5lIEVpbnN0ZWxsdW5nIGdlZnVuZGVuIHd1cmRlLCBkaWUgbmljaHQgb3B0aW1hbCBpc3QuCkF1JnN6bGlnO2VyZGVtIHNvbGx0ZW4gU2llIGluIEVydyZhdW1sO2d1bmcgemllaGVuLCBJaHJlIFNlaXRlIGJlaSBHb29nbGUgV2VibWFzdGVyIFRvb2xzIGFuenVtZWxkZW4uIFcmYXVtbDtobGVuIFNpZSBkb3J0ICJNZXRhIHRhZyB2YWxpZGF0aW9uIiB1bmQgZiZ1dW1sO2dlbiBTaWUgZGVuIEJlc3QmYXVtbDt0aWd1bmdzY29kZSwgZGVuIFNpZSBkb3J0IGVyaGFsdGVuLCBpbiBkYXMgRmVsZCAiQmVzdCZhdW1sO3RpZ3VuZ3Njb2RlIGYmdXVtbDtyIGRpZSBTZWl0ZW52ZXJpZml6aWVydW5nIiBlaW4gKG51ciBkZW4gbGFuZ2VuIENvZGUgYXVzIFphaGxlbiB1bmQgQnVjaHN0YWJlbiwgbmljaHQgZGFzIGtvbXBsZXR0ZSBNZXRhLVRhZykgdW0gYXV0b21hdGlzY2ggenUgYmVzdCZhdW1sO3RpZ2VuLCBkYSZzemxpZzsgU2llIHRhdHMmYXVtbDtjaGxpY2ggZGVyIEluaGFiZXIgSWhyZXIgU2VpdGUgc2luZC48L3A+CjxwPlNvYmFsZCBhbGxlcyBlaW5nZXJpY2h0ZXQgaXN0LCBzY2hhdWVuIFNpZSBhdWYgZGFzICJTRU8tV2FybnVuZ2VuIi1UYWIgdW5kIGJlaGViZW4gU2llIGFsbGUgUHJvYmxlbWUsIGRpZSBJaG5lbiBkb3J0IGFuZ2V6ZWlndCB3ZXJkZW4uIERlbmtlbiBTaWUgdW5iZWRpbmd0IGRhcmFuLCBhdWYgamVkZXIgU2VpdGUsIGRpZSBTaWUgdW50ZXIgIkluaGFsdGUvU2VpdGVuIiBiZWFyYmVpdGVuLCBlaW5lIGt1cnplICh1bmQgZWluZGV1dGlnZSkgQmVzY2hyZWlidW5nIGlucyBGZWxkICJTZWl0ZW5iZXNjaHJlaWJ1bmciIHVudGVuIGF1ZiBkZW0gU2VpdGVuYmVhcmJlaXR1bmdzLUZvcm11bGFyIGVpbnp1Z2ViZW4uPC9wPgo8cD5XZW5uIFNpZSBJaHJlIGVpZ2VuZW4gS2V5d29yZHMgZmVzdGxlZ2VuIChhbnN0ZWxsZSBkZXIgYXV0b21hdGlzY2ggZ2VuZXJpZXJ0ZW4gS2V5d29yZHMpIG9kZXIgZGVuIE9wZW5HcmFwaC1UeXAgYmVzdGltbXRlciBTZWl0ZW4gJmF1bWw7bmRlcm4gbSZvdW1sO2NodGVuLCBiZXN1Y2hlbiBTaWUgZGVuIFRhYiAiU2VpdGVuZWluc3RlbGx1bmdlbiIgYXVmIGRlbSBTaWUgZWluZSBMaXN0ZSBhbGxlciBpbSBTeXN0ZW0gdm9yaGFuZGVuZW4gU2VpdGVuIHNlaGVuLiBEb3J0IGsmb3VtbDtubmVuIFNpZSBhdWNoIGRpZSBQcmlvcml0JmF1bWw7dGVuIGRlciBTZWl0ZW4gZiZ1dW1sO3IgZGllIFhNTC1TaXRlbWFwICZhdW1sO25kZXJuIChkaWUgYW5kZXJuZmFsbHMgYXV0b21hdGlzY2ggYmVyZWNobmV0IHdpcmQpIHVtIGZlc3R6dWxlZ2VuLCBkYSZzemxpZzsgYmVzdGltbXRlIFNlaXRlbiBhbHMgd2ljaHRpZ2VyCmVpbmdlc3R1ZnQgd2VyZGVuIHNvbGxlbiBhbHMgYW5kZXJlIGJlaSBTdWNobWFzY2hpbmVuLVRyZWZmZXJuLCBvZGVyIHdlbm4gU2llIGVpbnplbG5lIFNlaXRlbiB2b24gZGVyIEluZGl6aWVydW5nIGR1cmNoIFN1Y2htYXNjaGluZW4gYXVzc2NobGllJnN6bGlnO2VuIG0mb3VtbDtjaHRlbi48L3A+CjxwPlNFTyBUb29scyBmJnV1bWw7Z3QgYXUmc3psaWc7ZXJkZW0gZWluZW4gVmVyd2VpcyBhdWYgZGFzIEJpbGQsIGRhcyBhbHMgSGF1cHRiaWxkIGYmdXVtbDtyIElocmUgU2VpdGUgdmVyd2VuZGV0IHdlcmRlbiBzb2xsICh3aWNodGlnIGYmdXVtbDtyIExpbmtzLCBkaWUgYmVpIEZhY2Vib29rIGdldGVpbHQgd2VyZGVuKSB3ZW5uIFNpZSBlaW4gIkJpbGQiIGYmdXVtbDtyIGRpZSBTZWl0ZSBhdWYgZGVtIE9wdGlvbnMtVGFiIElocmVyIFNlaXRlIGZlc3RsZWdlbi4gV2VubiBTaWUgT3BlbkdyYXBoIHZlcndlbmRlbiwgZXJzZXR6dCBkaWVzZXMgQmlsZCBhdSZzemxpZztlcmRlbSBkYXMgU3RhbmRhcmQtQmlsZApmJnV1bWw7ciBPcGVuR3JhcGgtU2VpdGVuIGRhcyBTaWUgaW4gZGVuIEVpbnN0ZWxsdW5nZW4gdm9uIFNFTyBUb29scyBmZXN0Z2VsZWd0IGhhYmVuLiBBY2h0ZW4gU2llIGRhcmF1ZiwgZGEmc3psaWc7IFNpZSBkaWVzZSBCaWxkZXIgaW4gSWhyIC91cGxvYWRzL2ltYWdlcyAtIFZlcnplaWNobmlzIGhvY2hsYWRlbiwgZGFtaXQgc2llIHZvbiBDTVNNUyBlcmthbm50IHdlcmRlbi48L3A+IAo8aDM+S2FubiBpY2ggU21hcnR5LVZhcmlhYmxlbiB2ZXJ3ZW5kZW4/PC9oMz4KPHA+SW4gZGVuIEVpbnN0ZWxsdW5ncy1GZWxkZXJuIDxpPlNlaXRlbnRpdGVsPC9pPiwgPGk+U2VpdGVudGl0ZWwgZiZ1dW1sO3IgZGllIE1ldGEtRGF0ZW48L2k+LCA8aT5UZXh0IGYmdXVtbDtyIGF1dG9tYXRpc2NoIGdlbmVyaWVydGUgQmVzY2hyZWlidW5nZW48L2k+IHVuZCA8aT5adXMmYXVtbDt0emxpY2hlIE1ldGEtVGFnczwvaT4gayZvdW1sO25uZW4gYWxsZSBhdWYgZGVyIFNlaXRlIHZlcndlbmRldGVuIFNtYXJ0eS1UYWdzIHVuZCBVRFRzIHZlcndlbmRldCB3ZXJkZW4uIEdlYmVuIFNpZSA8Y29kZT57ZGVidWd9PC9jb2RlPiBlaW4sIHVtIGVpbmUgTGlzdGUgYWxsZXIgenVyIFZlcmYmdXVtbDtndW5nIHN0ZWhlbmRlbiBUYWdzIHp1IHNlaGVuLjwvcD4KPGgzPldlbGNoZSBTbWFydHktVmFyaWFibGVuIHdlcmRlbiB2b24gU0VPVG9vbHMgZGVmaW5pZXJ0PzwvaDM+Cjxjb2RlPnskc2VvX2tleXdvcmRzfTwvY29kZT46IEVpbmUga29tbWFnZXRyZW5udGUgTGlzdGUgYWxsZXIgZiZ1dW1sO3IgZGllIFNlaXRlIGdlc2V0enRlbiBLZXl3b3JkcyAoZWluc2NobGllJnN6bGlnO2xpY2ggZGVyIFN0YW5kYXJkLUtleXdvcmRzKTxiciAvPgo8Y29kZT57JHRpdGxlX2tleXdvcmRzfTwvY29kZT46IEVpbmUgbGVlcnplaWNoZW4tZ2V0cmVubnRlIExpc3RlIGFsbGVyIGYmdXVtbDtyIGRpZSBTZWl0ZSBnZXNldHp0ZW4gS2V5d29yZHMgKGVpbnNjaGxpZSZzemxpZztsaWNoIGRlciBTdGFuZGFyZC1LZXl3b3Jkcyk8YnIgLz4KPGNvZGU+eyRkZWZhdWx0X2tleXdvcmRzfTwvY29kZT46IEVpbmUgbGVlcnplaWNoZW4tZ2V0cmVubnRlIExpc3RlIGFsbGVyIFN0YW5kYXJkLUtleXdvcmRzPGJyIC8+Cjxjb2RlPnskcGFnZV9rZXl3b3Jkc308L2NvZGU+OiBFaW5lIGxlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSBhbGxlciBmJnV1bWw7ciBkaWUgU2VpdGUgZ2VzZXR6dGVuIEtleXdvcmRzIChvaG5lIGRpZSBTdGFuZGFyZC1LZXl3b3JkcykKPGgzPlN1cHBvcnQ8L2gzPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLTIwMTEsIEhlbm5pbmcgU2NoYWVmZXIgPGEgaHJlZj0ibWFpbHRvOmhlbm5pbmcuc2NoYWVmZXJAZ21haWwuY29tIj4mbHQ7aGVubmluZy5zY2hhZWZlckBnbWFpbC5jb20mZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPjxoMz5QYXJhbWV0ZXI8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZGllIFNwcmFjaGUgZmVzdCwgZGllIHZvbSBNb2R1bCBmJnV1bWw7ciBkaWUgQXVzZ2FiZSBhdWYgZGVyIFdlYnNlaXRlIHZlcndlbmRldCB3aXJkLiBEaWVzIHdpcmQgamVkb2NoIG5pY2h0IHZvbiBhbGxlbiBNb2R1bGVuIHVudGVyc3QmdXVtbDt0enQgYnp3LiBiZW4mb3VtbDt0aWd0LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc2hvd2Jhc2U9InRydWUiIC0gU2V0emVuIFNpZSBkaWVzZW4gUGFyYW1ldGVyIGF1ZiA8Y29kZT5mYWxzZTwvY29kZT4sIHVtIGRhcyAmcXVvdDtiYXNlIGhyZWYmcXVvdDstVGFnIG5pY2h0IGFuemVpZ2VuIHp1IGxhc3Nlbi48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IEhlbm5pbmcgU2NoYWVmZXIgJmx0O2luZm9Ac2NoYWVmZXItaW5mb3JtYXRpay5iaXomZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbiA6IDEuMjxiciAvPjxiciAvPiZBdW1sO25kZXJ1bmdzdmVybGF1Zjo8YnIgLz48dWw+CjxsaT5WZXJzaW9uIDEuMiAtIDA2LiBKYW51YXIgMjAxMS4gVmVyc2NoaWVkZW5lIEJ1Z2ZpeGVzIHVuZCBFcndlaXRlcnVuZ2VuLjwvbGk+CjxsaT5WZXJzaW9uIDEuMSAtIDAyLiBOb3ZlbWJlciAyMDEwLiBWZXJzY2hpZWRlbmUgQnVnZml4ZXMuPC9saT4KPGxpPlZlcnNpb24gMS4wIC0gMjQuIEF1Z3VzdCAyMDEwLiBJbml0aWFsIFJlbGVhc2UuPC9saT4KPC91bD48YnIgLz4=]]></about>
	<description><![CDATA[Hilft bei der allgemeinen SEO, erzeugt XML-Sitemaps und umfangreiche Meta-Beschreibungen]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.changesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoIkVkaXQgU0VPIFNldHRpbmdzIikpCgl7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCX0KCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCgogICBDb2RlIGZvciBTRU9Ub29scyAiY2hhbmdlc2V0dGluZ3MiIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKLy8gUmVnZW5lcmF0ZSBTaXRlbWFwIGFuZCByb2JvdHMudHh0CmlmIChpc3NldCgkX1BPU1RbJ2RvX3JlZ2VuZXJhdGUnXSkpIHsKCSR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLCd0cnVlJykgPT0gdHJ1ZSk7CiAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLCd0cnVlJykgPT0gJ3RydWUnKSB7CiAgICAgICAgJHRoaXMtPmNyZWF0ZVJvYm90c1RYVCgpOwogICAgfQoJJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiTWFudWFsbHkgcmVnZW5lcmF0ZWQgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQiKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2l0ZW1hcF9yZWdlbmVyYXRlZCcsJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7Cn0JCgkKaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZV9tZXRhX3NldHRpbmdzJ10pKSB7CQoJCiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywkX1BPU1RbJ21ldGFfc3RhbmRhcmQnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnLCRfUE9TVFsnbWV0YV9kdWJsaW5jb3JlJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGgnLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGgnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycsJF9QT1NUWydhZGRpdGlvbmFsX21ldGFfdGFncyddKTsKCiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJF9QT1NUWydtZXRhX3B1Ymxpc2hlciddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfY29udHJpYnV0b3InLCRfUE9TVFsnbWV0YV9jb250cmlidXRvciddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywkX1BPU1RbJ21ldGFfY29weXJpZ2h0J10pOwoKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCRfUE9TVFsnbWV0YV9sb2NhdGlvbiddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywkX1BPU1RbJ21ldGFfcmVnaW9uJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJF9QT1NUWydtZXRhX2xhdGl0dWRlJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCRfUE9TVFsnbWV0YV9sb25naXR1ZGUnXSk7CgokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX3R5cGUnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9zaXRlbmFtZSddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX2ltYWdlJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX2FkbWlucyddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJ10pOwoKJHRoaXMtPnNldFByZWZlcmVuY2UoJ3RpdGxlJywkX1BPU1RbJ3RpdGxlJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgndGl0bGVfbWV0YScsJF9QT1NUWyd0aXRsZV9tZXRhJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCRfUE9TVFsnZGVzY3JpcHRpb25fYmxvY2snXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywkX1BPU1RbJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywkX1BPU1RbJ2Rlc2NyaXB0aW9uX2F1dG8nXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJywkX1BPU1RbJ2RlZmF1bHRfa2V5d29yZHMnXSk7CgokdGhpcy0+YXVkaXQoIlRlc3QiLCJTRU8gVG9vbHMiLCJFZGl0ZWQgTWV0YSBzZXR0aW5ncyIpOwokdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwp9CgppZiAoaXNzZXQoJF9QT1NUWydzYXZlX3NpdGVtYXBfc2V0dGluZ3MnXSkpIHsKCiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsJF9QT1NUWydjcmVhdGVfc2l0ZW1hcCddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsJF9QT1NUWydwdXNoX3NpdGVtYXAnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywkX1BPU1RbJ2NyZWF0ZV9yb2JvdHMnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCd2ZXJpZmljYXRpb24nLCRfUE9TVFsndmVyaWZpY2F0aW9uJ10pOwoKJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIFNpdGVtYXAgc2V0dGluZ3MiKTsKJHRoaXMtPlJlZGlyZWN0KCR0aGlzLT5pZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBBcnJheSgnbWVzc2FnZSc9PidzZXR0aW5nc191cGRhdGVkJywndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsKfQoKaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZV9rZXl3b3JkX3NldHRpbmdzJ10pKSB7CgokdGhpcy0+c2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCRfUE9TVFsna2V5d29yZF9taW5sZW5ndGgnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdrZXl3b3JkX3RpdGxlX3dlaWdodCcsJF9QT1NUWydrZXl3b3JkX3RpdGxlX3dlaWdodCddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0J10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCRfUE9TVFsna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfY29udGVudF93ZWlnaHQnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnXSk7CgokdGhpcy0+c2V0UHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJywkX1BPU1RbJ2tleXdvcmRfZXhjbHVkZSddKTsKCgokdGhpcy0+YXVkaXQoIlRlc3QiLCJTRU8gVG9vbHMiLCJFZGl0ZWQgS2V5d29yZCBzZXR0aW5ncyIpOwokdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4na2V5d29yZHNldHRpbmdzJykpOwp9CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQoKICAgQ29kZSBmb3IgU0VPVG9vbHMgImRlZmF1bHQiIGFjdGlvbgoKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKLy8gR2V0IHBhZ2UgZGF0YQpnbG9iYWwgJGdDbXM7CgokdHBsX3ZhcnMgPSAkZ0Ntcy0+c21hcnR5LT5nZXRfdGVtcGxhdGVfdmFycygpOwokcGFydHMgPSBleHBsb2RlKCcuJywkdHBsX3ZhcnNbJ2NvbnRlbnRfb2JqJ10tPm1JZEhpZXJhcmNoeSk7CiRwYWdlX2lkID0gJHBhcnRzW2NvdW50KCRwYXJ0cykgLSAxXTsKCiRobSA9JiAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwppZiAoaXNfaW50KCRwYWdlX2lkKSkgewogICRjdXJub2RlID0mICRobS0+Z2V0Tm9kZUJ5SWQoJHBhZ2VfaWQpOwp9ZWxzZXsKICAkY3Vybm9kZSA9JiAkaG0tPmdldE5vZGVCeUFsaWFzKCRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VfbmFtZSddKTsKfQokY3VyY29udGVudCA9JiAkY3Vybm9kZS0+R2V0Q29udGVudCgpOwokcGFnZV91cmwgPSAkY3VyY29udGVudC0+R2V0VVJMKCk7CgokbW9kaWZpZWRfZGF0ZSA9ICRjdXJjb250ZW50LT5tTW9kaWZpZWREYXRlOwokbW9kaWZpZWRfZGF0ZSA9IGRhdGUoJ1ktbS1kXFRIOmk6c1AnLHN0cnRvdGltZSgkbW9kaWZpZWRfZGF0ZSkpOwoKLy8gS2V5d29yZCBnZW5lcmF0b3IKCiRrZXl3b3JkcyA9IGV4cGxvZGUoJyAnLCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJywnJykpOwoKJGRiID0mICRnQ21zLT5kYjsKJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBXSEVSRSBjb250ZW50X2lkID0gJy4kcGFnZV9pZDsKJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokcGFnZV9pbmZvID0gJHJlc3VsdC0+ZmV0Y2hSb3coKTsKCmlmICgkcGFnZV9pbmZvWydrZXl3b3JkcyddICE9ICIiKSB7Cgkkb3RoZXJfa2V5d29yZHMgPSBhcnJheV9mbGlwKGV4cGxvZGUoJyAnLCRwYWdlX2luZm9bJ2tleXdvcmRzJ10pKTsKfWVsc2V7Cgkkb3RoZXJfa2V5d29yZHMgPSAkdGhpcy0+Z2V0S2V5d29yZFN1Z2dlc3Rpb25zKCRwYWdlX2lkKTsKfQoKJHNlb19rZXl3b3JkcyA9IGltcGxvZGUoJywgJyxhcnJheV91bmlxdWUoYXJyYXlfbWVyZ2UoJGtleXdvcmRzLCBhcnJheV9mbGlwKCRvdGhlcl9rZXl3b3JkcykpKSk7CiRzbWFydHktPmFzc2lnbignc2VvX2tleXdvcmRzJywgJHNlb19rZXl3b3Jkcyk7CiR0aXRsZV9rZXl3b3JkcyA9IGltcGxvZGUoJyAnLGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgka2V5d29yZHMsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpKTsKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9rZXl3b3JkcycsICR0aXRsZV9rZXl3b3Jkcyk7CiRzbWFydHktPmFzc2lnbignZGVmYXVsdF9rZXl3b3JkcycsIGltcGxvZGUoJyAnLCAka2V5d29yZHMpKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlX2tleXdvcmRzJywgaW1wbG9kZSgnICcsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpOwoKLy8gUGFnZSBkZXNjcmlwdGlvbgoKJGRlc2NyaXB0aW9uX2lkID0gc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSk7CiRkZXNjcmlwdGlvbiA9IHN0cmlwX3RhZ3MoJGN1cmNvbnRlbnQtPm1Qcm9wZXJ0aWVzLT5tUHJvcGVydHlWYWx1ZXNbJGRlc2NyaXB0aW9uX2lkXSk7CgppZiAoKCRkZXNjcmlwdGlvbiA9PSAiIikgJiYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywnZmFsc2UnKSA9PSAndHJ1ZScpKSB7CiAgJGt3ID0gYXJyYXlfZmxpcCgkb3RoZXJfa2V5d29yZHMpOwogICRsYXN0X2tleXdvcmQgPSBhcnJheV9wb3AoJGt3KTsKICAka2V5d29yZHMgPSBpbXBsb2RlKCcsICcsJGt3KSAuICIgIiAuICR0aGlzLT5sYW5nKCdhbmQnKSAuICIgIiAuICRsYXN0X2tleXdvcmQ7CiAgJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJ3trZXl3b3Jkc30nLCRrZXl3b3JkcywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJycpKTsKICAkZGVzY3JpcHRpb24gPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPm1OYW1lLCRkZXNjcmlwdGlvbik7CiAgJGRlc2NyaXB0aW9uID0gJHRoaXMtPnByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRkZXNjcmlwdGlvbik7Cn0KCi8vIFNob3cgYmFzZT8KaWYgKCRwYXJhbXNbJ3Nob3diYXNlJ10gIT0gJ2ZhbHNlJykgewoJZWNobyAiPGJhc2UgaHJlZj0nIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvJz48L2Jhc2U+XG4iOwp9CgovLyBQYWdlIHRpdGxlCiR0aXRsZSA9ICR0aGlzLT5nZXRQcmVmZXJlbmNlKCd0aXRsZScsJ3t0aXRsZX0gfCB7c2l0ZW5hbWV9IC0ge3Nlb19rZXl3b3Jkc30nKTsKJHRpdGxlID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5tTmFtZSwkdGl0bGUpOwokdGl0bGUgPSBzdHJfcmVwbGFjZSgne3NpdGVuYW1lfScsJGdDbXMtPnNpdGVwcmVmc1snc2l0ZW5hbWUnXSwkdGl0bGUpOwokdGl0bGUgPSBzdHJfcmVwbGFjZSgne3Nlb19rZXl3b3Jkc30nLCR0aXRsZV9rZXl3b3JkcywkdGl0bGUpOwokdGl0bGUgPSAkdGhpcy0+cHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRpdGxlKTsKCiRtZXRhX3RpdGxlID0gJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfdGl0bGUnLCd7dGl0bGV9IHwge3NpdGVuYW1lfScpOwokbWV0YV90aXRsZSA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkY3VyY29udGVudC0+bU5hbWUsJG1ldGFfdGl0bGUpOwokbWV0YV90aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2l0ZW5hbWV9JywkZ0Ntcy0+c2l0ZXByZWZzWydzaXRlbmFtZSddLCRtZXRhX3RpdGxlKTsKJG1ldGFfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3Nlb19rZXl3b3Jkc30nLCR0aXRsZV9rZXl3b3JkcywkbWV0YV90aXRsZSk7CiRtZXRhX3RpdGxlID0gJHRoaXMtPnByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRtZXRhX3RpdGxlKTsKCiRvcGVuZ3JhcGhfdGl0bGUgPSAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCd7dGl0bGV9Jyk7CiRvcGVuZ3JhcGhfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPm1OYW1lLCRvcGVuZ3JhcGhfdGl0bGUpOwokb3BlbmdyYXBoX3RpdGxlID0gJHRoaXMtPnByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRvcGVuZ3JhcGhfdGl0bGUpOwoKZWNobyAiPHRpdGxlPiIuJHRpdGxlLiI8L3RpdGxlPlxuIjsKCi8vIE1FVEEgdGFncyBmb3IgY29udGVudCB0eXBlIGV0Yy4KZWNobyAiPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9Ii4kZ0Ntcy0+Y29uZmlnWydkZWZhdWx0X2VuY29kaW5nJ10uIicgLz5cbiI7CmlmICgoJHBhZ2VfaW5mb1snaW5kZXhhYmxlJ10gPT0gIiIpIHx8ICgkcGFnZV9pbmZvWydpbmRleGFibGUnXSA9PSAiMSIpKSB7CgllY2hvICI8bWV0YSBuYW1lPSdyb2JvdHMnIGNvbnRlbnQ9J2luZGV4LCBmb2xsb3cnIC8+XG4iOwp9ZWxzZXsKCWVjaG8gIjxtZXRhIG5hbWU9J3JvYm90cycgY29udGVudD0nbm9pbmRleCcgLz5cbiI7Cn0KCmlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywnJykgIT0gJycpIHsKCWVjaG8gIjxtZXRhIG5hbWU9J2dvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbicgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywnJykuIicgLz5cbiI7Cn0KCi8vIFN0YW5kYXJkIE1FVEEgdGFncwppZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLCd0cnVlJykgPT0gJ3RydWUnKSB7CgllY2hvICI8bWV0YSBuYW1lPSd0aXRsZScgY29udGVudD0nJG1ldGFfdGl0bGUnIC8+XG4iOwoJZWNobyAiPG1ldGEgbmFtZT0nZGVzY3JpcHRpb24nIGNvbnRlbnQ9JyRkZXNjcmlwdGlvbicgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBuYW1lPSdrZXl3b3JkcycgY29udGVudD0nJHNlb19rZXl3b3JkcycgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBuYW1lPSdkYXRlJyBjb250ZW50PSckbW9kaWZpZWRfZGF0ZScgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBuYW1lPSdsYXN0dXBkYXRlJyBjb250ZW50PSckbW9kaWZpZWRfZGF0ZScgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBuYW1lPSdyZXZpc2VkJyBjb250ZW50PSckbW9kaWZpZWRfZGF0ZScgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBuYW1lPSdhdXRob3InIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfcHVibGlzaGVyJywnJykuIicgLz5cbiI7CiAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKSAhPSAiIikgewogICAgICBlY2hvICI8bWV0YSBuYW1lPSdnZW8ucGxhY2VuYW1lJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywnJykuIicgLz5cbiI7CiAgICB9CiAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykgIT0gIiIpIHsKICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnJlZ2lvbicgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCcnKS4iJyAvPlxuIjsKICAgIH0KICAgIGlmICgoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKSAhPSAiIikgJiYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpICE9ICIiKSkgewogICAgICBlY2hvICI8bWV0YSBuYW1lPSdnZW8ucG9zaXRpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKS4iOyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJykuIicgLz5cbiI7CiAgICAgIGVjaG8gIjxtZXRhIG5hbWU9J0lDQk0nIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKS4iLCAiLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOwogICAgfSAgICAKfQoKaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycsJycpICE9ICcnKSB7CgllY2hvICR0aGlzLT5wcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSk7CQp9CgovLyBEdWJsaW5Db3JlIE1FVEEgdGFncwppZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsJ2ZhbHNlJykgPT0gJ3RydWUnKSB7CiAgICBlY2hvICI8bGluayByZWw9J3NjaGVtYS5EQycgaHJlZj0naHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8nIC8+XG4iOwogICAgZWNobyAiPGxpbmsgcmVsPSdzY2hlbWEuRENURVJNUycgaHJlZj0naHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLycgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy50eXBlJyBjb250ZW50PSdUZXh0JyBzY2hlbWU9J0RDVEVSTVMuRENNSVR5cGUnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMuZm9ybWF0JyBjb250ZW50PSd0ZXh0L2h0bWwnIHNjaGVtZT0nRENURVJNUy5JTVQnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMucmVsYXRpb24nIGNvbnRlbnQ9J2h0dHA6Ly9kdWJsaW5jb3JlLm9yZy8nIHNjaGVtZT0nRENURVJNUy5VUkknIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMucHVibGlzaGVyJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpLiInIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMuY29udHJpYnV0b3InIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfY29udHJpYnV0b3InLCcnKS4iJyAvPlxuIjsgICAgCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5sYW5ndWFnZScgY29udGVudD0nIi4kZ0Ntcy0+c2l0ZXByZWZzWydmcm9udGVuZGxhbmcnXS4iJyBzY2hlbWU9J0RDVEVSTVMuUkZDMzA2NicgLz5cbiI7ICAgIAogICAgZWNobyAiPG1ldGEgbmFtZT0nREMucmlnaHRzJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcsJycpLiInIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMudGl0bGUnIGNvbnRlbnQ9JyRtZXRhX3RpdGxlJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmRlc2NyaXB0aW9uJyBjb250ZW50PSckZGVzY3JpcHRpb24nIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMuZGF0ZScgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIHNjaGVtZT0nRENURVJNUy5XM0NEVEYnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMuaWRlbnRpZmllcicgY29udGVudD0nJHBhZ2VfdXJsJyBzY2hlbWU9J0RDVEVSTVMuVVJJJyAvPlxuIjsJCn0KCi8vIE9wZW5HcmFwaCBNRVRBIHRhZ3MKaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsJ2ZhbHNlJykgPT0gJ3RydWUnKSB7CiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6dGl0bGUnIGNvbnRlbnQ9JyRvcGVuZ3JhcGhfdGl0bGUnIC8+XG4iOwogICAgaWYgKCRwYWdlX2luZm9bJ29ndHlwZSddID09ICIiKSB7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzp0eXBlJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywnJykuIicgLz5cbiI7CiAgICB9ZWxzZXsKICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnR5cGUnIGNvbnRlbnQ9JyIuJHBhZ2VfaW5mb1snb2d0eXBlJ10uIicgLz5cbiI7CiAgICB9CiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6dXJsJyBjb250ZW50PSckcGFnZV91cmwnIC8+XG4iOwogICAgCiAgICBpZiAoKCRjdXJjb250ZW50LT5tUHJvcGVydGllcy0+bVByb3BlcnR5VmFsdWVzWydpbWFnZSddICE9IC0xKSAmJiAoJGN1cmNvbnRlbnQtPm1Qcm9wZXJ0aWVzLT5tUHJvcGVydHlWYWx1ZXNbJ2ltYWdlJ10gIT0gIiIpKSAgewogICAgCSRpbWFnZSA9ICRjdXJjb250ZW50LT5tUHJvcGVydGllcy0+bVByb3BlcnR5VmFsdWVzWydpbWFnZSddOwogICAgfWVsc2V7CiAgICAJJGltYWdlID0gJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywnJyk7CiAgICB9CiAgICAKICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzppbWFnZScgY29udGVudD0nIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvdXBsb2Fkcy9pbWFnZXMvJGltYWdlJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpzaXRlX25hbWUnIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJywkZ0Ntcy0+c2l0ZXByZWZzWydzaXRlbmFtZSddKS4iJyAvPlxuIjsgICAgCiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6ZGVzY3JpcHRpb24nIGNvbnRlbnQ9JyRkZXNjcmlwdGlvbicgLz5cbiI7CiAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJykgIT0gIiIpIHsKICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J2ZiOmFkbWlucycgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nLCcnKS4iJyAvPlxuIjsKICAgIH1lbHNlewogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nZmI6YXBwX2lkJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCcnKS4iJyAvPlxuIjsKICAgIH0KICAgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpICE9ICIiKSB7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpsb2NhbGl0eScgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpLiInIC8+XG4iOwogICAgfQogICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpICE9ICIiKSB7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpyZWdpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykuIicgLz5cbiI7CiAgICB9CiAgICBpZiAoKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykgIT0gIiIpICYmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKSAhPSAiIikpIHsKICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOmxhdGl0dWRlJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIicgLz5cbiI7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpsb25naXR1ZGUnIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJykuIicgLz5cbiI7CiAgICB9ICAgICAgICAgICAKfQoKLy8gSW1hZ2UtTGluawoKaWYgKCgkY3VyY29udGVudC0+bVByb3BlcnRpZXMtPm1Qcm9wZXJ0eVZhbHVlc1snaW1hZ2UnXSAhPSAtMSkgJiYgKCRjdXJjb250ZW50LT5tUHJvcGVydGllcy0+bVByb3BlcnR5VmFsdWVzWydpbWFnZSddICE9ICIiKSkgIHsKCWVjaG8gIjxsaW5rIHJlbD0naW1hZ2Vfc3JjJyBocmVmPSciLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uIi91cGxvYWRzL2ltYWdlcy8iLiRjdXJjb250ZW50LT5tUHJvcGVydGllcy0+bVByb3BlcnR5VmFsdWVzWydpbWFnZSddLiInIC8+IjsKfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkKICAgIHsKICAgIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgfQoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzICJkZWZhdWx0YWRtaW4iIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKLy8gRG8gdGhlIGFjdGlvbgppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAndG9nZ2xlX2luZGV4JykgewogICAgJGRiID0mICRnQ21zLT5kYjsKICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMgV0hFUkUgY29udGVudF9pZCA9ICcuJF9HRVRbJ2NvbnRlbnRfaWQnXTsKICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkaW5mbyA9ICRyZXN1bHQtPmZldGNoUm93KCk7CiAgICBpZiAoJGluZm9bJ2luZGV4YWJsZSddID09ICIxIikgewogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBTRVQgaW5kZXhhYmxlID0gMCBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOwogICAgfWVsc2V7CiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMgU0VUIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ10uJywgaW5kZXhhYmxlID0gMCBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBpbmRleGFibGUgPSAxJzsKICAgIH0KICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywndHJ1ZScpID09ICd0cnVlJykgewogICAgICAgICR0aGlzLT5jcmVhdGVSb2JvdHNUWFQoKTsKICAgIH0KICAgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLCd0cnVlJykgPT0gJ3RydWUnKSB7CiAgICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsJ3RydWUnKSA9PSB0cnVlKTsKICAgIH0KICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsKfSAgIAoKaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3NldF9wcmlvcml0eScpIHsKICAgICRkYiA9JiAkZ0Ntcy0+ZGI7ICAgIAogICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMgU0VUIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ10uJywgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddLicgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddOyAgICAKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOwogICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsJ3RydWUnKSA9PSAndHJ1ZScpIHsKICAgICAgICAkdGhpcy0+Y3JlYXRlU2l0ZW1hcCgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywndHJ1ZScpID09IHRydWUpOwogICAgfQp9CgppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAncmVzZXRfcHJpb3JpdHknKSB7CiAgICAkZGIgPSYgJGdDbXMtPmRiOyAgICAKICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBTRVQgcHJpb3JpdHkgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107ICAgIAogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkX0dFVFsndGFiJ10gPSAncGFnZWRlc2NyaXB0aW9ucyc7CiAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywndHJ1ZScpID09ICd0cnVlJykgewogICAgICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLCd0cnVlJykgPT0gdHJ1ZSk7CiAgICB9Cn0KCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICdyZXNldF9vZ3R5cGUnKSB7CiAgICAkZGIgPSYgJGdDbXMtPmRiOyAgICAKICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBTRVQgb2d0eXBlID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOyAgICAKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOwp9CgppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAncmVzZXRfa2V5d29yZHMnKSB7CiAgICAkZGIgPSYgJGdDbXMtPmRiOyAgICAKICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBTRVQga2V5d29yZHMgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107ICAgIAogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkX0dFVFsndGFiJ10gPSAncGFnZWRlc2NyaXB0aW9ucyc7Cn0KCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICdlZGl0X29ndHlwZScpIHsKICAgIGVjaG8gJHRoaXMtPlJlZGlyZWN0KG51bGwsICdlZGl0X29ndHlwZScsICR0aGlzLT5yZXR1cm5pZCwgQXJyYXkoJ2NvbnRlbnRfaWQnPT4kX0dFVFsnY29udGVudF9pZCddKSk7Cn0KCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICdlZGl0X2tleXdvcmRzJykgewogICAgZWNobyAkdGhpcy0+UmVkaXJlY3QobnVsbCwgJ2VkaXRfa2V5d29yZHMnLCAkdGhpcy0+cmV0dXJuaWQsIEFycmF5KCdjb250ZW50X2lkJz0+JF9HRVRbJ2NvbnRlbnRfaWQnXSkpOwp9CiAgICAKICAgIAokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RhYl9oZWFkZXJzJywkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCkuCiAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdzZW9hbGVydHMnLCR0aGlzLT5MYW5nKCd0aXRsZV9zZW9hbGVydHMnKSkuCiAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwYWdlZGVzY3JpcHRpb25zJywkdGhpcy0+TGFuZygndGl0bGVfcGFnZWRlc2NyaXB0aW9ucycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ3BhZ2VkZXNjcmlwdGlvbnMnKSkuICAKICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ21ldGFzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3RpdGxlX21ldGFzZXR0aW5ncycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ21ldGFzZXR0aW5ncycpKS4KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NpdGVtYXBzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3RpdGxlX3NpdGVtYXBzZXR0aW5ncycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ3NpdGVtYXBzZXR0aW5ncycpKS4KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2tleXdvcmRzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3RpdGxlX2tleXdvcmRzZXR0aW5ncycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ2tleXdvcmRzZXR0aW5ncycpKS4KICAgICR0aGlzLT5FbmRUYWJIZWFkZXJzKCkuJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiJywkdGhpcy0+RW5kVGFiKCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RhYl9mb290ZXJzJywkdGhpcy0+RW5kVGFiQ29udGVudCgpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9zZW9hbGVydHNfdGFiJywkdGhpcy0+U3RhcnRUYWIoJ3Nlb2FsZXJ0cycpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9wYWdlZGVzY3JpcHRpb25zX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdwYWdlZGVzY3JpcHRpb25zJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X21ldGFzZXR0aW5nc190YWInLCR0aGlzLT5TdGFydFRhYignbWV0YXNldHRpbmdzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3NpdGVtYXBzZXR0aW5nc190YWInLCR0aGlzLT5TdGFydFRhYignc2l0ZW1hcHNldHRpbmdzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2tleXdvcmRzZXR0aW5nc190YWInLCR0aGlzLT5TdGFydFRhYigna2V5d29yZHNldHRpbmdzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX3NlY3Rpb24nLCdkZWZhdWx0YWRtaW4nKTsKCmlmIChpc3NldCgkX0dFVFsnbWVzc2FnZSddKSkgewogICR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZScsJHRoaXMtPnNob3dNZXNzYWdlKCR0aGlzLT5sYW5nKCRfR0VUWydtZXNzYWdlJ10pKSk7Cn0KCi8qIFNFTyBBbGVydHMgVGFiICovCgokYWxlcnRzICA9ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdhbGVydHNfdXJnZW50JywgJHRoaXMtPkxhbmcoJ3RpdGxlX2FsZXJ0c191cmdlbnQnKSk7CgokdXJnZW50X2FsZXJ0cyA9ICR0aGlzLT5nZXRVcmdlbnRBbGVydHMoKTsKCmlmIChjb3VudCgkdXJnZW50X2FsZXJ0cykgPT0gMCkgewogICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiAnLiR0aGlzLT5sYW5nKCdub3RoaW5nX3RvX2JlX2ZpeGVkJykuJzxiciAvPjxiciAvPic7Cn1lbHNlewogICRncm91cHMgPSBBcnJheSgpOwogIGZvcmVhY2ggKCR1cmdlbnRfYWxlcnRzIGFzICRhbGVydCkgeyAgICAgICAgICAKICAgICRncm91cHNbJGFsZXJ0Wydncm91cCddXVtdID0gJGFsZXJ0OyAgICAKICB9ICAgIAogIGZvcmVhY2goJGdyb3VwcyBhcyAkZ3JvdXAgPT4gJGdhbGVydHMpIHsKICAJJGNvdW50ID0gY291bnQoJGdhbGVydHMpOyAKICAgIGlmIChjb3VudCgkZ2FsZXJ0cykgPiAyMCkgewogICAgICAgICRwYXJ0cyA9IGFycmF5X2NodW5rKCRnYWxlcnRzLCAyMCk7CiAgICAgICAgJGdhbGVydHMgPSAkcGFydHNbMF07CiAgICAgICAgJGNvdW50ID0gIj4gMjAiOwogICAgfQogICAgaWYgKGNvdW50KCRnYWxlcnRzKSA9PSAxKSB7CiAgICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9Ob3RpZmljYXRpb25zLzEuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRnYWxlcnRzWzBdWydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkZ2FsZXJ0c1swXVsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOwogICAgfWVsc2V7CiAgICAgICRncm91cF90aXRsZSA9ICR0aGlzLT5sYW5nKCdncm91cHRpdGxlXycuJGdyb3VwLCBBcnJheSgkY291bnQpKTsKICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzEuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRncm91cF90aXRsZS4nPC9iPiBbPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKG51bGwpIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3VyZ2VudF9ncm91cF8nLiRncm91cC4nXCcpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCciPicuJHRoaXMtPmxhbmcoJ3ZpZXdfYWxsJykuJzwvYT5dPGJyIC8+PGJyIC8+JzsKICAgICAgJGFsZXJ0cyAuPSAnPGRpdiBpZD0idXJnZW50X2dyb3VwXycuJGdyb3VwLiciIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMwcHg7IGRpc3BsYXk6IG5vbmU7Ij4nOwogICAgICBmb3JlYWNoICgkZ2FsZXJ0cyBhcyAkYWxlcnQpIHsKICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL05vdGlmaWNhdGlvbnMvMS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGFsZXJ0WydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkYWxlcnRbJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsKICAgICAgfQogICAgICAkYWxlcnRzIC49ICc8L2Rpdj4nOwogICAgfQogIH0KfQoKJGFsZXJ0cyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRFbmQoKTsgCgokYWxlcnRzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdhbGVydHNfaW1wb3J0YW50JywgJHRoaXMtPkxhbmcoJ3RpdGxlX2FsZXJ0c19pbXBvcnRhbnQnKSk7CgokaW1wb3J0YW50X2FsZXJ0cyA9ICR0aGlzLT5nZXRJbXBvcnRhbnRBbGVydHMoKTsKaWYgKGNvdW50KCRpbXBvcnRhbnRfYWxlcnRzKSA9PSAwKSB7CiAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+ICcuJHRoaXMtPmxhbmcoJ25vdGhpbmdfdG9fYmVfZml4ZWQnKS4nPGJyIC8+PGJyIC8+JzsKfWVsc2V7CiAgJGdyb3VwcyA9IEFycmF5KCk7CiAgZm9yZWFjaCAoJGltcG9ydGFudF9hbGVydHMgYXMgJGFsZXJ0KSB7ICAgICAgICAgIAogICAgJGdyb3Vwc1skYWxlcnRbJ2dyb3VwJ11dW10gPSAkYWxlcnQ7ICAgIAogIH0gICAgCiAgZm9yZWFjaCgkZ3JvdXBzIGFzICRncm91cCA9PiAkZ2FsZXJ0cykgewogICAgJGNvdW50ID0gY291bnQoJGdhbGVydHMpOyAKICAgIGlmIChjb3VudCgkZ2FsZXJ0cykgPiAyMCkgewogICAgICAgICRwYXJ0cyA9IGFycmF5X2NodW5rKCRnYWxlcnRzLCAyMCk7CiAgICAgICAgJGdhbGVydHMgPSAkcGFydHNbMF07CiAgICAgICAgJGNvdW50ID0gIj4gMjAiOwogICAgfQogICAgaWYgKGNvdW50KCRnYWxlcnRzKSA9PSAxKSB7CiAgICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzIuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRnYWxlcnRzWzBdWydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkZ2FsZXJ0c1swXVsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOwogICAgfWVsc2V7CiAgICAgICRncm91cF90aXRsZSA9ICR0aGlzLT5sYW5nKCdncm91cHRpdGxlXycuJGdyb3VwLCBBcnJheSgkY291bnQpKTsKICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzIuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRncm91cF90aXRsZS4nPC9iPiBbPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKG51bGwpIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ltcG9ydGFudF9ncm91cF8nLiRncm91cC4nXCcpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCciPicuJHRoaXMtPmxhbmcoJ3ZpZXdfYWxsJykuJzwvYT5dPGJyIC8+PGJyIC8+JzsKICAgICAgJGFsZXJ0cyAuPSAnPGRpdiBpZD0iaW1wb3J0YW50X2dyb3VwXycuJGdyb3VwLiciIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMwcHg7IGRpc3BsYXk6IG5vbmU7Ij4nOwogICAgICBmb3JlYWNoICgkZ2FsZXJ0cyBhcyAkYWxlcnQpIHsKICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMi5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGFsZXJ0WydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkYWxlcnRbJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsKICAgICAgfQogICAgICAkYWxlcnRzIC49ICc8L2Rpdj4nOwogICAgfQogIH0KfQoKJGFsZXJ0cyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRFbmQoKTsKCiRhbGVydHMgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FsZXJ0c19ub3RpY2VzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2FsZXJ0c19ub3RpY2VzJykpOwoKJG5vdGljZV9hbGVydHMgPSAkdGhpcy0+Z2V0Tm90aWNlQWxlcnRzKCk7CmlmIChjb3VudCgkbm90aWNlX2FsZXJ0cykgPT0gMCkgewogICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiAnLiR0aGlzLT5sYW5nKCdub3RoaW5nX3RvX2JlX2ZpeGVkJykuJzxiciAvPjxiciAvPic7Cn1lbHNlewogIGZvcmVhY2ggKCRub3RpY2VfYWxlcnRzIGFzICRhbGVydCkgewogICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzMuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRhbGVydFsnbWVzc2FnZSddLic8L2I+IFsnLmltcGxvZGUoJyB8ICcsJGFsZXJ0WydsaW5rcyddKS4nXTxiciAvPjxiciAvPic7CiAgfSAgCn0KCiRhbGVydHMgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0RW5kKCk7CgoKCi8qIFBhZ2Ugc2V0dGluZ3MgVGFiICovCgokcGFnZXNldHRpbmdzICA9ICc8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRyPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdwYWdlX2lkJykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ3BhZ2VfbmFtZScpLic8L3RoPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdwcmlvcml0eScpLic8L3RoPic7CiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdvZ190eXBlJykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRzJykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ2Rlc2NyaXB0aW9uJykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ2luZGV4JykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPC90cj4nOwoKJGRiID0mICRnQ21zLT5kYjsKCiRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IE9SREVSIEJZIGhpZXJhcmNoeSBBU0MnOwokcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKJGogPSAwOwp3aGlsZSAoJHBhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7CQkJCQoJCiAgICAkcHJlZml4ID0gIiI7CiAgICAkYXV0b19wcmlvcml0eSA9IDgwOwogICAgZm9yICgkaSA9IDA7ICRpIDwgc3Vic3RyX2NvdW50KCRwYWdlWydoaWVyYXJjaHknXSwnLicpOyAkaSsrKSB7CiAgICAgICAgJHByZWZpeCAuPSAnJnJhcXVvOyAnOwogICAgICAgICRhdXRvX3ByaW9yaXR5ICA9ICRhdXRvX3ByaW9yaXR5IC8gMjsKICAgIH0KICAgIGlmICgkcGFnZVsnZGVmYXVsdF9jb250ZW50J10gPT0gMSkgewogICAgICAgICRhdXRvX3ByaW9yaXR5ID0gMTAwOwogICAgfQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgV0hFUkUgY29udGVudF9pZCA9ICcuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nIEFORCBwcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIic7ICAgICAgICAgCiAgICAkcmVzdWx0MSA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICRkZXNjID0gJHJlc3VsdDEtPmZldGNoUm93KCk7ICAgCiAgICAkZGVzY3JpcHRpb24gPSAkZGVzY1snY29udGVudCddOwoKICAgICRrdyA9IGFycmF5X2ZsaXAoJHRoaXMtPmdldEtleXdvcmRTdWdnZXN0aW9ucygkcGFnZVsnY29udGVudF9pZCddKSk7CiAgICAKICAgICRkZXNjcmlwdGlvbl9hdXRvID0gZmFsc2U7CiAgICBpZiAoKCRkZXNjcmlwdGlvbiA9PSAiIikgJiYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywnZmFsc2UnKSA9PSAndHJ1ZScpKSB7CiAgICAJJGxhc3Rfa2V5d29yZCA9IGFycmF5X3BvcCgka3cpOwogICAgCSRrZXl3b3JkcyA9IGltcGxvZGUoJywgJywka3cpIC4gIiAiIC4gJHRoaXMtPmxhbmcoJ2FuZCcpIC4gIiAiIC4gJGxhc3Rfa2V5d29yZDsKICAgIAkkZGVzY3JpcHRpb24gPSAkdGhpcy0+bGFuZygnYXV0b19nZW5lcmF0ZWQnKS4iOiAiLnN0cl9yZXBsYWNlKCd7a2V5d29yZHN9Jywka2V5d29yZHMsJHRoaXMtPmdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSk7CiAgICAJJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRwYWdlWydjb250ZW50X25hbWUnXSwkZGVzY3JpcHRpb24pOwogICAgCSRkZXNjcmlwdGlvbl9hdXRvID0gdHJ1ZTsKICAgIH0KICAgIAogICAgJGRlZmF1bHRfb2d0eXBlID0gJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKTsKCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRwYWdlWydjb250ZW50X2lkJ107CiAgICAkcmVzdWx0MiA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICRpbmZvID0gJHJlc3VsdDItPmZldGNoUm93KCk7ICAgICAgIAogICAgICAgIAogICAgJHByaW9yaXR5ID0gJyhhdXRvKSAnLiRhdXRvX3ByaW9yaXR5LiclICc7CiAgICAkb2d0eXBlID0gJyhkZWZhdWx0KSAnLiRkZWZhdWx0X29ndHlwZS4nICcuJHRoaXMtPmNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzL2ltZy9lZGl0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnZWRpdF92YWx1ZScpLCBBcnJheSgid2hhdCI9PiJlZGl0X29ndHlwZSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSk7ICAgIAogICAgJGtleXdvcmRzID0gJyhhdXRvKSAnLmNvdW50KCRrdykuJyAnLiR0aGlzLT5jcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29scy9pbWcvZWRpdC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgaW1wbG9kZSgnLCAnLCRrdykuJzsgJy4kdGhpcy0+bGFuZygnZWRpdF92YWx1ZScpLCBBcnJheSgid2hhdCI9PiJlZGl0X2tleXdvcmRzIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKTsKICAgICRpbmRleGFibGUgPSAndHJ1ZSc7CiAgICBpZiAoJGluZm9bJ2NvbnRlbnRfaWQnXSAhPSAiIikgewogICAgICAgIGlmICgkaW5mb1sncHJpb3JpdHknXSAhPSAwKSB7CiAgICAgICAgICAkcHJpb3JpdHkgPSAnPGI+Jy4kaW5mb1sncHJpb3JpdHknXSAuICclICcuJHRoaXMtPmNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzL2ltZy9yZXNldC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ3Jlc2V0X3RvX2RlZmF1bHQnKSwgQXJyYXkoIndoYXQiPT4icmVzZXRfcHJpb3JpdHkiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIC4gJzwvYj4nOwogICAgICAgICAgJGF1dG9fcHJpb3JpdHkgPSAkaW5mb1sncHJpb3JpdHknXTsKICAgICAgICB9CiAgICAgICAgaWYgKCRpbmZvWydvZ3R5cGUnXSAhPSAiIikgewogICAgICAgICAgJG9ndHlwZSA9ICc8Yj4nLiRpbmZvWydvZ3R5cGUnXSAuICcgJyAuICR0aGlzLT5jcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29scy9pbWcvcmVzZXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdyZXNldF90b19kZWZhdWx0JyksIEFycmF5KCJ3aGF0Ij0+InJlc2V0X29ndHlwZSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkgLiAkdGhpcy0+Y3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMvaW1nL2VkaXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdlZGl0X3ZhbHVlJyksIEFycmF5KCJ3aGF0Ij0+ImVkaXRfb2d0eXBlIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKS4nPC9iPic7CiAgICAgICAgfQogICAgICAgIGlmICgkaW5mb1sna2V5d29yZHMnXSAhPSAiIikgewogICAgICAgICAgICAka2V5d29yZHMgPSAnPGI+Jy5jb3VudChleHBsb2RlKCcgJywkaW5mb1sna2V5d29yZHMnXSkpIC4gJHRoaXMtPmNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzL2ltZy9yZXNldC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ3Jlc2V0X3RvX2RlZmF1bHQnKSwgQXJyYXkoIndoYXQiPT4icmVzZXRfa2V5d29yZHMiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIC4gJHRoaXMtPmNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzL2ltZy9lZGl0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnZWRpdF92YWx1ZScpLCBBcnJheSgid2hhdCI9PiJlZGl0X2tleXdvcmRzIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKS4nPC9iPic7CiAgICAgICAgfQogICAgICAgIGlmICgkaW5mb1snaW5kZXhhYmxlJ10gPT0gMCkgeyAgICAgICAgCiAgICAgICAgICAkaW5kZXhhYmxlID0gJ2ZhbHNlJzsKICAgICAgICB9CiAgICB9CiAgICAKICAgICR1cGRvd24gID0gJHRoaXMtPmNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmIiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2RlY3JlYXNlX3ByaW9yaXR5JyksIEFycmF5KCd3aGF0Jz0+J3NldF9wcmlvcml0eScsJ3ByaW9yaXR5Jz0+JGF1dG9fcHJpb3JpdHktMTAsJ2NvbnRlbnRfaWQnPT4kcGFnZVsnY29udGVudF9pZCddKSk7CiAgICAkdXBkb3duIC49ICR0aGlzLT5jcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS9hcnJvdy11LmdpZiIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdpbmNyZWFzZV9wcmlvcml0eScpLCBBcnJheSgnd2hhdCc9PidzZXRfcHJpb3JpdHknLCdwcmlvcml0eSc9PiRhdXRvX3ByaW9yaXR5KzEwLCdjb250ZW50X2lkJz0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOwogICAgCiAgICAkcGFnZXNldHRpbmdzIC49ICc8dHIgY2xhc3M9InJvdycuKCRqICUgMiArIDEpLiciPic7CiAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+Jy4kcGFnZVsnY29udGVudF9pZCddLic8L3RkPic7CiAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+Jy4kcHJlZml4IC4nICcuJHBhZ2VbJ2NvbnRlbnRfbmFtZSddLic8L3RkPic7CiAgICBpZiAoJHBhZ2VbJ3R5cGUnXSA9PSAnY29udGVudCcpIHsKICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHVwZG93bi4nICcuJHByaW9yaXR5Lic8L3RkPic7CiAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4nLiRvZ3R5cGUuJzwvdGQ+JzsKICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJGtleXdvcmRzLic8L3RkPic7CiAgICAgIGlmICgkZGVzY3JpcHRpb24gIT0gIiIpIHsKICAgICAgICBpZiAoJGRlc2NyaXB0aW9uX2F1dG8pIHsKICAgICAgCSAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPjxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3dhcm5pbmcuZ2lmIiB0aXRsZT0iJy5zdHJpcF90YWdzKCRkZXNjcmlwdGlvbikuJyIgLz48L3RkPic7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIHRpdGxlPSInLnN0cmlwX3RhZ3MoJGRlc2NyaXB0aW9uKS4nIiAvPjwvdGQ+JzsKICAgICAgICB9CiAgICAgIH1lbHNlewogICAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD48YSBocmVmPSJlZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwYWdlWydjb250ZW50X2lkJ10uJyI+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIiBib3JkZXI9IjAiIHRpdGxlPSInLiR0aGlzLT5sYW5nKCdjbGlja190b19hZGRfZGVzY3JpcHRpb24nKS4nIiAvPjwvYT48L3RkPic7CiAgICAgIH0KICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHRoaXMtPmNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtLycuJGluZGV4YWJsZS4nLmdpZiIgLz4nLCAkdGhpcy0+bGFuZygndG9nZ2xlJyksIEFycmF5KCd3aGF0Jz0+J3RvZ2dsZV9pbmRleCcsJ2NvbnRlbnRfaWQnPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvdGQ+JzsKICAgIH1lbHNlewogICAgCSRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4tLS08L3RkPic7CiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsKICAgIAkkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOwogICAgCSRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4tLS08L3RkPic7CiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsKICAgIH0KICAgICRwYWdlc2V0dGluZ3MgLj0gJzwvdHI+JzsKICAgICRqKys7CiAgICAKfQoKJHBhZ2VzZXR0aW5ncyAuPSAnPC90YWJsZT4nOwoKLyogU0VPIFNldHRpbmdzIFRhYiAqLwoKLy8gR2V0IGltYWdlIGZpbGVzIGZyb20gL3VwbG9hZHMvaW1hZ2VzCiRmaWxlc19saXN0ID0gQXJyYXkoJHRoaXMtPmxhbmcoJ25vbmUnKT0+IiIpOwokZHAgPSBvcGVuZGlyKCRnQ21zLT5jb25maWdbJ3Jvb3RfcGF0aCddLicvdXBsb2Fkcy9pbWFnZXMnKTsKd2hpbGUgKCRmaWxlID0gcmVhZGRpcigkZHApKSB7ICAKICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5naWYnKSAhPT0gZmFsc2UpIHsKICAgICAgICAkZmlsZXNfbGlzdFskZmlsZV0gPSAkZmlsZTsKICAgIH0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5wbmcnKSAhPT0gZmFsc2UpIHsKICAgICAgICAkZmlsZXNfbGlzdFskZmlsZV0gPSAkZmlsZTsKICAgIH0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5qcGcnKSAhPT0gZmFsc2UpIHsKICAgICAgICAkZmlsZXNfbGlzdFskZmlsZV0gPSAkZmlsZTsKICAgIH0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5qcGVnJykgIT09IGZhbHNlKSB7CiAgICAgICAgJGZpbGVzX2xpc3RbJGZpbGVdID0gJGZpbGU7CiAgICB9Cn0KY2xvc2VkaXIoJGRwKTsKCiRzZXR0aW5ncyAgPSAkdGhpcy0+Y3JlYXRlRm9ybVN0YXJ0KG51bGwsICdjaGFuZ2VzZXR0aW5ncycpOwoKLyogUGFnZSBUaXRsZSAqLwokc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ3RpdGxlX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3RpdGxlX2Rlc2NyaXB0aW9uJykpOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygndGl0bGVfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAndGl0bGUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgndGl0bGUnLCd7dGl0bGV9IHwgeyRzaXRlbmFtZX0gLSB7JHRpdGxlX2tleXdvcmRzfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCd0aXRsZV90aXRsZV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygndGl0bGVfbWV0YV90aXRsZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICd0aXRsZV9tZXRhJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ3RpdGxlX21ldGEnLCd7dGl0bGV9IHwgeyRzaXRlbmFtZX0nKSwgMzIpLicgJy4kdGhpcy0+bGFuZygndGl0bGVfbWV0YV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYmxvY2tfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnZGVzY3JpcHRpb25fYmxvY2snLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYmxvY2tfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScpIC4gJzogJyAuICR0aGlzLT5jcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywgJ3RydWUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsJ2ZhbHNlJykpIC4gJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYXV0b190aXRsZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdkZXNjcmlwdGlvbl9hdXRvJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCdUaGlzIHBhZ2UgY292ZXJzIHRoZSB0b3BpY3Mge2tleXdvcmRzfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdkZXNjcmlwdGlvbl9hdXRvX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdkZWZhdWx0X2tleXdvcmRzX3RpdGxlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ2RlZmF1bHRfa2V5d29yZHMnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9rZXl3b3JkcycsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdkZWZhdWx0X2tleXdvcmRzX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRFbmQoKTsKCi8qIE1FVEEgVHlwZXMgKi8KJHNldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdtZXRhX3R5cGUnLCAkdGhpcy0+TGFuZygndGl0bGVfbWV0YV90eXBlJykpOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdtZXRhX2NyZWF0ZV9zdGFuZGFyZCcpIC4gJzogJyAuICR0aGlzLT5jcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdtZXRhX3N0YW5kYXJkJywgJ3RydWUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsJ3RydWUnKSkgLiAnPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ21ldGFfY3JlYXRlX2R1YmxpbmNvcmUnKSAuICc6ICcgLiAkdGhpcy0+Y3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnbWV0YV9kdWJsaW5jb3JlJywgJ3RydWUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywnZmFsc2UnKSkgLiAnPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ21ldGFfY3JlYXRlX29wZW5ncmFwaCcpIC4gJzogJyAuICR0aGlzLT5jcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdtZXRhX29wZW5ncmFwaCcsICd0cnVlJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywnZmFsc2UnKSkgLiAnPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRFbmQoKTsKCi8qIE1FVEEgRGVmYXVsdHMgKi8KJHNldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdtZXRhX2RlZmF1bHRzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX21ldGFfZGVmYXVsdHMnKSk7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX3B1Ymxpc2hlcicpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX3B1Ymxpc2hlcicsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX3B1Ymxpc2hlcl9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9jb250cmlidXRvcicpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2NvbnRyaWJ1dG9yJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfY29udHJpYnV0b3InLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9jb250cmlidXRvcl9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9jb3B5cmlnaHQnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9jb3B5cmlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnLCcoQykgJy5kYXRlKCdZJykuJy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4nKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9jb3B5cmlnaHRfaGVscCcpLic8L3A+PGJyIC8+JzsKCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij48Yj4nLiR0aGlzLT5sYW5nKCdtZXRhX2xvY2F0aW9uX2Rlc2NyaXB0aW9uJykuJzwvYj48L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfbG9jYXRpb24nKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9sb2NhdGlvbicsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfbG9jYXRpb25faGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfcmVnaW9uJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfcmVnaW9uJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJyksIDUsIDUpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9yZWdpb25faGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfbGF0aXR1ZGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9sYXRpdHVkZScsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfbGF0aXR1ZGVfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfbG9uZ2l0dWRlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfbG9uZ2l0dWRlJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfbG9uZ2l0dWRlX2hlbHAnKS4nPC9wPjxiciAvPic7Cgokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfZGVzY3JpcHRpb24nKS4nPC9iPjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCd7dGl0bGV9JyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3RpdGxlX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF90eXBlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF90eXBlX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0RHJvcGRvd24obnVsbCwgJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywgJGZpbGVzX2xpc3QsIG51bGwsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2ltYWdlX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9hZG1pbnNfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRFbmQoKTsKCi8qIEFkZGl0aW9uYWwgTWV0YSBUYWdzICovCiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnYWRkaXRpb25hbF9tZXRhJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2FkZGl0aW9uYWxfbWV0YV90YWdzJykpOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnYWRkaXRpb25hbF9tZXRhX3RhZ3NfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZVRleHRBcmVhKGZhbHNlLCBudWxsLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSwgJ2FkZGl0aW9uYWxfbWV0YV90YWdzJykuJyAnLiR0aGlzLT5sYW5nKCdhZGRpdGlvbmFsX21ldGFfdGFnc19oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0RW5kKCk7Cgokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzYXZlX21ldGFfc2V0dGluZ3MnLCAkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRm9ybUVuZCgpOyAKCiRzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9kZXNjcmlwdGlvbl9jb250ZW50Jyk7CgovKiBTSVRFTUFQIFNldHRpbmdzICovCgokc3NldHRpbmdzICA9ICR0aGlzLT5jcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7Cgokc3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdzaXRlbWFwX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3NpdGVtYXBfZGVzY3JpcHRpb24nKSk7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdjcmVhdGVfc2l0ZW1hcF90aXRsZScpIC4gJzogJyAuICR0aGlzLT5jcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdjcmVhdGVfc2l0ZW1hcCcsICd0cnVlJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywnZmFsc2UnKSkgLiAnPC9wPic7CmlmIChpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSkgewogICRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdwdXNoX3NpdGVtYXBfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+Y3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAncHVzaF9zaXRlbWFwJywgJ3RydWUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywnZmFsc2UnKSkgLiAnPC9wPic7Cn1lbHNlewogICRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdwdXNoX3NpdGVtYXBfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+TGFuZygnbm9fdXJsX2ZvcGVuJykgLiAnPC9wPic7Cn0KJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2NyZWF0ZV9yb2JvdHNfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+Y3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnY3JlYXRlX3JvYm90cycsICd0cnVlJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLCdmYWxzZScpKSAuICc8L3A+JzsKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCd2ZXJpZmljYXRpb25fdGl0bGUnKS4nOjwvcD4nOwokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ3ZlcmlmaWNhdGlvbicsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCd2ZXJpZmljYXRpb24nLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygndmVyaWZpY2F0aW9uX2hlbHAnKS4nPC9wPic7CiRzc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0RW5kKCk7Cgokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFN1Ym1pdChudWxsLCAnc2F2ZV9zaXRlbWFwX3NldHRpbmdzJywgJHRoaXMtPmxhbmcoJ3NhdmUnKSkuJzwvcD4nOwoKJHNzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRm9ybUVuZCgpOyAKCiRzc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZvcm1TdGFydChudWxsLCAnY2hhbmdlc2V0dGluZ3MnKTsKJHNzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAncmVnZW5lcmF0ZV9zaXRlbWFwJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3JlZ2VuZXJhdGVfc2l0ZW1hcCcpKTsKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ2RvX3JlZ2VuZXJhdGUnLCAkdGhpcy0+bGFuZygnYnV0dG9uX3JlZ2VuZXJhdGVfc2l0ZW1hcCcpKS4nPC9wPic7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmxhbmcoJ3RleHRfcmVnZW5lcmF0ZV9zaXRlbWFwJykuJzwvcD4nOwokc3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldEVuZCgpOwokc3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGb3JtRW5kKCk7Cgokc3NldHRpbmdzIC49ICc8YnIgLz48YnIgLz4nLiR0aGlzLT5sYW5nKCdoZWxwX3NpdGVtYXBfcm9ib3RzJyk7CgovKiBLRVlXT1JEIFNldHRpbmdzICovCgoka3NldHRpbmdzICA9ICR0aGlzLT5jcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7Cgoka3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdrZXl3b3JkX3dlaWdodF9kZXNjcmlwdGlvbicsICR0aGlzLT5MYW5nKCd0aXRsZV9rZXl3b3JkX3dlaWdodCcpKTsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX21pbmxlbmd0aF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9taW5sZW5ndGgnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9taW5sZW5ndGhfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX3RpdGxlX3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF90aXRsZV93ZWlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCc2JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF90aXRsZV93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCc0JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2hlYWRsaW5lX3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCcyJyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0X3RpdGxlJykuJzo8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLCcxJyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9jb250ZW50X3dlaWdodF9oZWxwJykuJzwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfbWluaW11bV93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJzcnKSwgMikuJyAnLiR0aGlzLT5sYW5nKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0X2hlbHAnKS4nPC9wPic7CiRrc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0RW5kKCk7Cgoka3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdrZXl3b3JkX2V4Y2x1ZGVfZGVzY3JpcHRpb24nLCAkdGhpcy0+TGFuZygndGl0bGVfa2V5d29yZF9leGNsdWRlJykpOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZXhjbHVkZV90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZVRleHRBcmVhKGZhbHNlLCBudWxsLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJywnJyksICdrZXl3b3JkX2V4Y2x1ZGUnKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZXhjbHVkZV9oZWxwJykuJzwvcD4nOwoka3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldEVuZCgpOwoKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NhdmVfa2V5d29yZF9zZXR0aW5ncycsICR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRm9ybUVuZCgpOwoKJGtzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9rZXl3b3JkX2dlbmVyYXRvcicpOwoKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWxlcnRzJywkYWxlcnRzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlc2V0dGluZ3MnLCRwYWdlc2V0dGluZ3MpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21ldGFfZm9ybScsJHNldHRpbmdzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzaXRlbWFwX2Zvcm0nLCRzc2V0dGluZ3MpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2tleXdvcmRfZm9ybScsJGtzZXR0aW5ncyk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWlucGFuZWwudHBsJyk7CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.edit_keywords.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzICJlZGl0bWV0YSIgYWRtaW4gYWN0aW9uCiAgIAogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQogICAKICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgZGlzcGxheSBzb21ldGhpbmcgZnJvbSBhIHRlbXBsYXRlCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4KICAgCiovCgokZGIgPSYgJGdDbXMtPmRiOwoKaWYgKGlzc2V0KCRfUE9TVFsnc2V0X2tleXdvcmRzJ10pKSB7CglpZiAoJF9QT1NUWydrZXl3b3JkcyddICE9ICIiKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMgU0VUIGNvbnRlbnRfaWQgPSAiLiRfUE9TVFsnY29udGVudF9pZCddLiIsIGtleXdvcmRzID0gJyIuJF9QT1NUWydrZXl3b3JkcyddLiInLCBpbmRleGFibGUgPSAxIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIGtleXdvcmRzID0gJyIuJF9QT1NUWydrZXl3b3JkcyddLiInIjsKCX1lbHNlewoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29scyBTRVQga2V5d29yZHMgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAiLiRfUE9TVFsnY29udGVudF9pZCddOwoJfQkJCgkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsJCgkkdGhpcy0+cmVkaXJlY3QobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsIEFycmF5KCd0YWInPT4ncGFnZWRlc2NyaXB0aW9ucycpKTsKfQoKJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOwokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiRpbmZvID0gJHJlc3VsdC0+ZmV0Y2hSb3coKTsKCmlmICgkaW5mb1sna2V5d29yZHMnXSA9PSAiIikgewoJJGluZm9bJ2tleXdvcmRzJ10gPSBzdHJ0b2xvd2VyKGltcGxvZGUoJyAnLGFycmF5X2ZsaXAoJHRoaXMtPmdldEtleXdvcmRTdWdnZXN0aW9ucygkX0dFVFsnY29udGVudF9pZCddKSkpKTsKfQoKJG91dHB1dCAgPSAkdGhpcy0+Y3JlYXRlRm9ybVN0YXJ0KG51bGwsICdlZGl0X2tleXdvcmRzJyk7CiRvdXRwdXQgLj0gJHRoaXMtPmNyZWF0ZUlucHV0SGlkZGVuKG51bGwsICdjb250ZW50X2lkJywgJF9HRVRbJ2NvbnRlbnRfaWQnXSk7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZW50ZXJfbmV3X2tleXdvcmRzJykuJzo8L3A+JzsKJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlVGV4dEFyZWEoZmFsc2UsIG51bGwsICRpbmZvWydrZXl3b3JkcyddLCAna2V5d29yZHMnKS4nICcuJHRoaXMtPmxhbmcoJ2hlbHBfbmV3X2tleXdvcmRzJykuJzwvcD4nOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4nOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFN1Ym1pdChudWxsLCAnc2V0X2tleXdvcmRzJywkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7Cgokb3V0cHV0IC49ICR0aGlzLT5jcmVhdGVGb3JtRW5kKCk7CgplY2hvICRvdXRwdXQ7CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.edit_ogtype.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzICJlZGl0bWV0YSIgYWRtaW4gYWN0aW9uCiAgIAogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQogICAKICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgZGlzcGxheSBzb21ldGhpbmcgZnJvbSBhIHRlbXBsYXRlCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4KICAgCiovCgokZGIgPSYgJGdDbXMtPmRiOwoKaWYgKGlzc2V0KCRfUE9TVFsnc2V0X29ndHlwZSddKSkgewoJaWYgKCRfUE9TVFsnb2dfdHlwZSddICE9ICIiKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMgU0VUIGNvbnRlbnRfaWQgPSAiLiRfUE9TVFsnY29udGVudF9pZCddLiIsIG9ndHlwZSA9ICciLiRfUE9TVFsnb2dfdHlwZSddLiInLCBpbmRleGFibGUgPSAxIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIG9ndHlwZSA9ICciLiRfUE9TVFsnb2dfdHlwZSddLiInIjsKCX1lbHNlewoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29scyBTRVQgb2d0eXBlID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXTsKCX0KCQoJZWNobyAkcXVlcnk7CgkKCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJJHRoaXMtPnJlZGlyZWN0KG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCBBcnJheSgndGFiJz0+J3BhZ2VkZXNjcmlwdGlvbnMnKSk7Cn0KCiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMgV0hFUkUgY29udGVudF9pZCA9ICcuJF9HRVRbJ2NvbnRlbnRfaWQnXTsKJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokaW5mbyA9ICRyZXN1bHQtPmZldGNoUm93KCk7Cgokb3V0cHV0ICA9ICR0aGlzLT5jcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2VkaXRfb2d0eXBlJyk7CiRvdXRwdXQgLj0gJHRoaXMtPmNyZWF0ZUlucHV0SGlkZGVuKG51bGwsICdjb250ZW50X2lkJywgJF9HRVRbJ2NvbnRlbnRfaWQnXSk7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZW50ZXJfbmV3X29ndHlwZScpLic6PC9wPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnb2dfdHlwZScsICRpbmZvWydvZ3R5cGUnXSwgMzAsIDMwKS4nICcuJHRoaXMtPmxhbmcoJ2hlbHBfbmV3X29ndHlwZScpLic8L3A+JzsKJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9vcGVuZ3JhcGgnKS4nPGJyIC8+PGJyIC8+JzsKJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NldF9vZ3R5cGUnLCR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsKCiRvdXRwdXQgLj0gJHRoaXMtPmNyZWF0ZUZvcm1FbmQoKTsKCmVjaG8gJG91dHB1dDsKCgo/Pg==]]></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/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1NFTyBUb29scyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1NFTyBUb29scyB3dXJkZSBpbnN0YWxsaWVydC4gQml0dGUgbGVzZW4gU2llIGRpZSBNb2R1bGhpbGZlIHVtIHp1IGVyZmFocmVuLCB3aWUgZGFzIE1vZHVsIGJlbnV0enQgd2lyZC4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1NFTyBUb29scyB3dXJkZSBkZWluc3RhbGxpZXJ0LiBEZW5rZW4gU2llIGRhcmFuLCBkYSZzemxpZzsgYXVmIElocmVuIFNlaXRlbiBudW4ga2VpbmUgTWV0YS1JbmZvcm1hdGlvbmVuIG1laHIgYW5nZXplaWd0IHdlcmRlbiEnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ00mb3VtbDtjaHRlbiBTaWUgU0VPIFRvb2xzIHdpcmtsaWNoIGRlaW5zdGFsbGllcmVuPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBkZWluc3RhbGxpZXJ0Lic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bHZlcnNpb24gJXMgaW5zdGFsbGllcnQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWwgYXVmIFZlcnNpb24gJXMgYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0VpbmlnZSBUb29scyBkaWUgYmVpIGRlciBTdWNobWFzY2hpbmVub3B0aW1pZXJ1bmcgaGVsZmVuIHVuZCBTaWUgYXVmIHN1Ym9wdGltYWxlIEVpbnN0ZWxsdW5nZW4gaGlud2Vpc2VuLic7CgokbGFuZ1snZXJyb3InXSA9ICdGZWhsZXIhJzsKJGxhbmRbJ2FkbWluX3RpdGxlJ10gPSAnU0VPIFRvb2xzIEFkbWluc3RyYXRpb24nOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0hpbGZ0IGJlaSBkZXIgYWxsZ2VtZWluZW4gU0VPLCBlcnpldWd0IFhNTC1TaXRlbWFwcyB1bmQgdW1mYW5ncmVpY2hlIE1ldGEtQmVzY2hyZWlidW5nZW4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnWnVncmlmZiB2ZXJ3ZWlnZXJ0LiBCaXR0ZSBwciZ1dW1sO2ZlbiBTaWUgSWhyZSBCZXJlY2h0aWd1bmdlbi4nOwokbGFuZ1snU0VPQWxlcnRzJ10gPSAnU0VPLVdhcm51bmdlbic7CiRsYW5nWydQYWdlZGVzY3JpcHRpb25zJ10gPSAnU2VpdGVuZWluc3RlbGx1bmdlbic7CiRsYW5nWydTaXRlbWFwJ10gPSAnU2l0ZW1hcCc7CiRsYW5nWydTRU9TZXR0aW5ncyddID0gJ1NFTy1FaW5zdGVsbHVuZ2VuJzsKJGxhbmdbJ3RpdGxlX3Nlb2FsZXJ0cyddID0gJ1NFTy1XYXJudW5nZW4nOwokbGFuZ1sndGl0bGVfcGFnZWRlc2NyaXB0aW9ucyddID0gJ1NlaXRlbmVpbnN0ZWxsdW5nZW4nOwokbGFuZ1sndGl0bGVfc2l0ZW1hcCddID0gJ1NpdGVtYXAnOwokbGFuZ1sndGl0bGVfc2Vvc2V0dGluZ3MnXSA9ICdTRU8tRWluc3RlbGx1bmdlbic7CgokbGFuZ1sndGl0bGVfbWV0YV90eXBlJ10gPSAnTWV0YS1UYWctR2VuZXJhdG9yJzsKJGxhbmdbJ21ldGFfY3JlYXRlX3N0YW5kYXJkJ10gPSAnU3RhbmRhcmQtTWV0YXRhZ3MgZXJ6ZXVnZW4nOwokbGFuZ1snbWV0YV9jcmVhdGVfZHVibGluY29yZSddID0gJ0R1YmxpbiBDb3JlLU1ldGF0YWdzIGVyemV1Z2VuJzsKJGxhbmdbJ21ldGFfY3JlYXRlX29wZW5ncmFwaCddID0gJ09wZW5HcmFwaC1NZXRhdGFncyBlcnpldWdlbiAoei5CLiBmJnV1bWw7ciBkZW4gRmFjZWJvb2stR2VmJmF1bWw7bGx0LW1pci1CdXR0b24pJzsKCiRsYW5nWyd0aXRsZV9tZXRhX2RlZmF1bHRzJ10gPSAnTUVUQS1UYWctV2VydGUnOwokbGFuZ1snbWV0YV9wdWJsaXNoZXInXSA9ICdIZXJhdXNnZWJlciBkZXIgU2VpdGUnOwokbGFuZ1snbWV0YV9wdWJsaXNoZXJfaGVscCddID0gJygmVXVtbDtibGljaGVyd2Vpc2UgaGFuZGVsdCBlcyBzaWNoIHVtIGRpZSBGaXJtYSBmJnV1bWw7ciBkaWUgU2llIGRpZSBTZWl0ZSBlcnN0ZWxsZW4pJzsKJGxhbmdbJ21ldGFfY29udHJpYnV0b3InXSA9ICdNaXR3aXJrZW5kZSBkZXIgU2VpdGUnOwokbGFuZ1snbWV0YV9jb250cmlidXRvcl9oZWxwJ10gPSAnKCZVdW1sO2JsaWNoZXJ3ZWlzZSBzaW5kIFNpZSBkYXMsIG9kZXIgYmVsaWViaWdlIGFuZGVyZSBJbmhhbHRzLUF1dG9yZW4pJzsKJGxhbmdbJ21ldGFfY29weXJpZ2h0J10gPSAnQ29weXJpZ2h0IGRlciBTZWl0ZSc7CiRsYW5nWydtZXRhX2NvcHlyaWdodF9oZWxwJ10gPSAnKElyZ2VuZHdhcyBpbiBkZXIgRm9ybSAiKEMpIElocmUgRmlybWEuIEFsbGUgUmVjaHRlIHZvcmJlaGFsdGVuIiknOwokbGFuZ1snbWV0YV9sb2NhdGlvbl9kZXNjcmlwdGlvbiddID0gJ1dlbm4gSWhyZSBXZWJzZWl0ZSBlaW5lIEVudGl0JmF1bWw7dCBiZWhhbmRlbHQgZGllIGF1ZiBlaW5lciBLYXJ0ZSBsb2thbGlzaWVydCB3ZXJkZW4ga2Fubiwgc29sbHRlbiBTaWUgb3B0aW9uYWwgZGllIGZvbGdlbmRlbiBXZXJ0ZSBlaW50cmFnZW46JzsKJGxhbmdbJ21ldGFfbG9jYXRpb24nXSA9ICdPcnQgSWhyZXIgRW50aXQmYXVtbDt0JzsKJGxhbmdbJ21ldGFfbG9jYXRpb25faGVscCddID0gJyhOb3JtYWxlcndlaXNlIGlzdCBkaWVzIGRlciBOYW1lIGRlcyBPcnRzLCBhbiBkZW0gSWhyZSBGaXJtYSBzaXR6dCknOwokbGFuZ1snbWV0YV9yZWdpb24nXSA9ICdSZWdpb24gSWhyZXIgRW50aXQmYXVtbDt0JzsKJGxhbmdbJ21ldGFfcmVnaW9uX2hlbHAnXSA9ICcoR2ViZW4gU2llIHouQi4gIkRFLUJXIiBlaW4gZiZ1dW1sO3IgZWluZSBFbnRpdCZhdW1sO3QsIGRpZSBpbiBCYWRlbi1XJnV1bWw7cnR0ZW1iZXJnLCBEZXV0c2NobGFuZCwgc2l0enQuKSc7CiRsYW5nWydtZXRhX2xhdGl0dWRlJ10gPSAnQnJlaXRlbmdyYWQgSWhyZXIgRW50aXQmYXVtbDt0JzsKJGxhbmdbJ21ldGFfbGF0aXR1ZGVfaGVscCddID0gJyhHZWJlbiBTaWUgZGllIERlemltYWxrb29yZGluYXRlIGRlcyBCcmVpdGVuZ3JhZHMgSWhyZXIgRW50aXQmYXVtbDt0IGVpbiknOwokbGFuZ1snbWV0YV9sb25naXR1ZGUnXSA9ICdMJmF1bWw7bmdlbmdyYWQgSWhyZXIgRW50aXQmYXVtbDt0JzsKJGxhbmdbJ21ldGFfbG9uZ2l0dWRlX2hlbHAnXSA9ICcoR2ViZW4gU2llIGRpZSBEZXppbWFsa29vcmRpbmF0ZSBkZXMgTCZhdW1sO25nZW5ncmFkcyBJaHJlciBFbnRpdCZhdW1sO3QgZWluKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9kZXNjcmlwdGlvbiddID0gJ1dlbm4gU2llIE9wZW5HcmFwaC1NZXRhdGFncyBlcnpldWdlbiBsYXNzZW4sIGYmdXVtbDtsbGVuIFNpZSBiaXR0ZSBkaWUgZm9sZ2VuZGVuIFdlcnRlIGF1czonOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGUnXSA9ICdPcGVuR3JhcGgtU2VpdGVudGl0ZWwnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGVfaGVscCddID0gJyhTaWUgayZvdW1sO25uZW4gaGllciBhbGxlIFNtYXJ0eS1UYWdzIHZlcndlbmRlbiwgdW0gZGVuIHRhdHMmYXVtbDtjaGxpY2hlbiBTZWl0ZW50aXRlbCBhbnplaWdlbiB6dSBsYXNzZW4pJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3R5cGUnXSA9ICdTdGFuZGFyZCBPcGVuR3JhcGgtU2VpdGVudHlwJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3R5cGVfaGVscCddID0gJyhEZXIgU3RhbmRhcmQtU2VpdGVudHlwIGYmdXVtbDtyIE9wZW5HcmFwaCwga2FubiBmJnV1bWw7ciBqZWRlIFNlaXRlICZ1dW1sO2JlcnNjaHJpZWJlbiB3ZXJkZW4uIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL29wZW5ncmFwaCN0eXBlcyIgdGFnZXQ9Il9ibGFuayI+SGllcjwvYT4gZmluZGVuIFNpZSBlaW5lIExpc3RlIGVybGF1YnRlciBXZXJ0ZSknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnXSA9ICdPcGVuR3JhcGgtU2VpdGVubmFtZSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9zaXRlbmFtZV9oZWxwJ10gPSAnKEVpbmUga3VyemUgVmVyc2lvbiBJaHJlcyBTZWl0ZW5uYW1lbnMsIHouQi4gIklocmUgRmlybWEiLCBtYXguIDI1IFplaWNoZW4pJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2ltYWdlJ10gPSAnU3RhbmRhcmQtT3BlbkdyYXBoLUJpbGQnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfaW1hZ2VfaGVscCddID0gJyhXJmF1bWw7aGxlbiBTaWUgZWluIEJpbGQgYXVzIElocmVtIC91cGxvYWRzL2ltYWdlcyBWZXJ6ZWljaG5pcyBhdXMgdW0gZXMgYWxzIFN0YW5kYXJkIGYmdXVtbDtyIE9wZW5HcmFwaC1TZWl0ZW4genUgdmVyd2VuZGVuKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSA9ICdGYWNlYm9vay1TZWl0ZW5hZG1pbmlzdHJhdG9yZW4nOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYWRtaW5zX2hlbHAnXSA9ICcoRWluZSBrb21tYWdldHJlbm50ZSBMaXN0ZSB2b24gRmFjZWJvb2stS29udG8tSURzIGRpZSBpbiBkZXIgTGFnZSBzaW5kLCBkaWUgU3RyZWFtcyBJaHJlciBTZWl0ZW4genUgYmVhcmJlaXRlbiknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nXSA9ICdGYWNlYm9vay1BbndlbmR1bmcnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb25faGVscCddID0gJyhEaWUgSUQgZWluZXIgRmFjZWJvb2stQW53ZW5kdW5nLCBkaWUgaW4gZGVyIExhZ2UgaXN0LCBkaWUgU3RyZWFtcyBJaHJlciBTZWl0ZW4genUgYmVhcmJlaXRlbiknOwoKJGxhbmdbJ3RpdGxlX3RpdGxlX2Rlc2NyaXB0aW9uJ10gPSAnU2VpdGVudGl0ZWwsIEJlc2NocmVpYnVuZyB1bmQgS2V5d29yZHMnOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdTZWl0ZW50aXRlbCc7CiRsYW5nWyd0aXRsZV90aXRsZV9oZWxwJ10gPSAnKERlciBTZWl0ZW50aXRlbCB3aWUgZXIgaW4gZGVyIEJyb3dzZXItVGl0ZWx6ZWlsZSBlcnNjaGVpbmVuIHNvbGwuIFNpZSBrJm91bWw7bm5lbiBkaWUgVGFncyB7dGl0bGV9LCB7cGFnZXRpdGxlfSwge3Nlb19rZXl3b3Jkc30gdW5kIGFsbGUgU21hcnR5LVRhZ3Mgc293aWUgVURUcyBiZW51dHplbiknOwokbGFuZ1sndGl0bGVfbWV0YV90aXRsZSddID0gJ1NlaXRlbnRpdGVsIGYmdXVtbDtyIGRpZSBNZXRhLURhdGVuJzsKJGxhbmdbJ3RpdGxlX21ldGFfaGVscCddID0gJyhEZXIgU2VpdGVudGl0ZWwsIHdpZSBlciBpbiBkZW4gTWV0YS1UaXRlbC1UYWdzIGVyc2NoZWluZW4gc29sbC4gU2llIGsmb3VtbDtubmVuIGRpZSBUYWdzIHt0aXRsZX0sIHtwYWdldGl0bGV9LCB7c2VvX2tleXdvcmRzfSB1bmQgYWxsZSBTbWFydHktVGFncyBzb3dpZSBVRFRzIGJlbnV0emVuKSc7CiRsYW5nWydkZXNjcmlwdGlvbl9ibG9ja190aXRsZSddID0gJ05hbWUgZGVzIFNlaXRlbmJlc2NocmVpYnVuZ3MtQ29udGVudGJsb2Nrcyc7CiRsYW5nWydkZXNjcmlwdGlvbl9ibG9ja19oZWxwJ10gPSAnKERlciBOYW1lIElocmVzIFNlaXRlbmJlc2NocmVpYnVuZ3MtQ29udGVudGJsb2Nrcy4gVW50ZW4gZmluZGVuIFNpZSBlaW5lIEVya2wmYXVtbDtydW5nIGhpZXJ6dSknOwokbGFuZ1snZGVmYXVsdF9rZXl3b3Jkc190aXRsZSddID0gJ0tleXdvcmRzLCBkaWUgYXVmIGplZGVyIFNlaXRlIGVyc2NoZWluZW4gc29sbGVuJzsKJGxhbmdbJ2RlZmF1bHRfa2V5d29yZHNfaGVscCddID0gJyhFaW5lIExlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSB2b24gS2V5d29yZHMgZGllIFNpZSBhdWYgamVkZXIgU2VpdGUgZWluYmluZGVuIGxhc3NlbiBtJm91bWw7Y2h0ZW4pJzsKCiRsYW5nWyd0aXRsZV9zaXRlbWFwX2Rlc2NyaXB0aW9uJ10gPSAnR29vZ2xlLVNpdGVtYXAgdW5kIENyYXdsZXItRWluc3RlbGx1bmdlbic7CiRsYW5nWydjcmVhdGVfc2l0ZW1hcF90aXRsZSddID0gJ0VpbmUgR29vZ2xlLVNpdGVtYXAgaW0gWE1MLUZvcm1hdCBlcnpldWdlbionOwokbGFuZ1sncHVzaF9zaXRlbWFwX3RpdGxlJ10gPSAnRGllIFNpdGVtYXAgYXV0b21hdGlzY2ggYmVpICZhdW1sO25kZXJ1bmdlbiBhbSBTZWl0ZW5pbmhhbHQgenUgR29vZ2xlIHNlbmRlbic7CiRsYW5nWydjcmVhdGVfcm9ib3RzX3RpdGxlJ10gPSAnRWluZSByb2JvdHMudHh0IC0gRGF0ZWkgZXJ6ZXVnZW4qJzsKJGxhbmdbJ3ZlcmlmaWNhdGlvbl90aXRsZSddID0gJ0Jlc3QmYXVtbDt0aWd1bmdzY29kZSBmJnV1bWw7ciBkaWUgU2VpdGVudmVyaWZpemllcnVuZyc7CiRsYW5nWyd2ZXJpZmljYXRpb25faGVscCddID0gJyhEZXIgQmVzdCZhdW1sO3RpZ3VuZ3Njb2RlLCBkZW4gU2llIHZvbiBkZW4gR29vZ2xlIFdlYm1hc3RlciBUb29scyBlcmhhbHRlbi4gTnVyIGRlbiBIYXNoLCBuaWNodCBkYXMga29tcGxldHRlIE1ldGEtVGFnKSc7CgokbGFuZ1sndGl0bGVfYWxlcnRzX3VyZ2VudCddID0gJ011c3Mgc29mb3J0IGJlaG9iZW4gd2VyZGVuJzsKJGxhbmdbJ3RpdGxlX2FsZXJ0c19pbXBvcnRhbnQnXSA9IHV0ZjhfZW5jb2RlKCdTb2xsdGUgc2NobmVsbHN0bfZnbGljaCBiZWhvYmVuIHdlcmRlbicpOwokbGFuZ1sndGl0bGVfYWxlcnRzX25vdGljZXMnXSA9IHV0ZjhfZW5jb2RlKCdLYW5uIHVudGVyIFVtc3TkbmRlbiBiZWhvYmVuIHdlcmRlbicpOwokbGFuZ1snbm90aGluZ190b19iZV9maXhlZCddID0gdXRmOF9lbmNvZGUoJ0luIGRpZXNlciBLYXRlZ29yaWUgbfxzc2VuIFNpZSBrZWluZSBBa3Rpb25lbiB2b3JuZWhtZW4nKTsKCiRsYW5nWydzYXZlJ10gPSAnRWluc3RlbGx1bmdlbiBzcGVpY2hlcm4nOwokbGFuZ1snbm9uZSddID0gJyhuaWNodCBhdXNnZXcmYXVtbDtobHQpJzsKJGxhbmdbJ3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdEaWUgU0VPLUVpbnN0ZWxsdW5nZW4gd3VyZGVuIGVyZm9sZ3JlaWNoIGFrdHVhbGlzaWVydC4nOwokbGFuZ1sncHJvYmxlbV9hbGVydCddID0gJ2hhdCBlcmhlYmxpY2hlIFByb2JsZW1lIG1pdCBJaHJlciBTRU8gZmVzdGdlc3RlbGx0LiAlcyc7CiRsYW5nWydwcm9ibGVtX2xpbmtfdGl0bGUnXSA9ICdadW0gQmVoZWJlbiBoaWVyIGtsaWNrZW4nOwoKJGxhbmdbJ2hlbHBfZGVzY3JpcHRpb25fY29udGVudCddID0gJzxiPkFubGVpdHVuZyBmJnV1bWw7ciBkZW4gIlNlaXRlbmJlc2NocmVpYnVuZ3MtQ29udGVudGJsb2NrIjo8L2I+PGJyIC8+VW0gZGlyZWt0IGJlaW0gQmVhcmJlaXRlbiBlaW5lciBTZWl0ZSBlaW5lIFNlaXRlbmJlc2NocmVpYnVuZyBlaW5nZWJlbiB6dSBrJm91bWw7bm5lbiBtJnV1bWw7c3NlbiBTaWUgZGVuIGZvbGdlbmRlbiBDb2RlIGlyZ2VuZHdvIGluIGFsbCBJaHJlIFRlbXBsYXRlcyBlaW5iaW5kZW46PGJyIC8+PGJyIC8+PHByZT57Y2FwdHVyZX17Y29udGVudCBibG9jaz0iTWV0YS1CZXNjaHJlaWJ1bmciIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX08L3ByZT48YnIgLz5TZXR6ZW4gU2llIGRhbm4gZGVuIFdlcnQgZiZ1dW1sO3IgZGVuICJOYW1lbiBkZXMgU2VpdGVuYmVzY2hyZWlidW5ncy1Db250ZW50YmxvY2tzIiBhdWYgIk1ldGEtQmVzY2hyZWlidW5nIi4gQWx0ZXJuYXRpdiBrJm91bWw7bm5lbiBTaWUgYXVjaCBkaWUgT3B0aW9uICJBdXRvbWF0aXNjaGUgU2VpdGVuYmVzY2hyZWlidW5nIGVyemV1Z2VuIiBha3RpdmllcmVuLiBEaWVzZSBPcHRpb24gbGVpc3RldCB6d2FyIG5pY2h0IHNvIHZpZWwsIGlzdCBhYmVyIGJlc3NlciBhbHMgZ2FyIG5pY2h0cy4nOwokbGFuZ1snaGVscF9zaXRlbWFwX3JvYm90cyddID0gJyopIFVtIGRpZSBhdXRvbWF0aXNjaGUgRXJ6ZXVndW5nIGVpbmVyIFNpdGVtYXAtIHVuZCBSb2JvdHMtRGF0ZWkgenUgdmVyd2VuZGVuIG11JnN6bGlnOyBkYXMgU3RhbW12ZXJ6ZWljaG5pcyBJaHJlciBDTVNNUy1JbnN0YWxsYXRpb24gZiZ1dW1sO3IgZGVuIFdlYnNlcnZlciBiZXNjaHJlaWJiYXIgc2Vpbi4gRmFsbHMgU2llIGJlcmVpdHMgZWluZSBzaXRlbWFwLnhtbCB1bmQvb2RlciByb2JvdHMudHh0LURhdGVpIGhhYmVuIG0mdXVtbDtzc2VuIGJlaWRlIGYmdXVtbDtyIGRlbiBXZWJzZXJ2ZXIgYmVzY2hyZWliYmFyIHNlaW4uJzsKCiRsYW5nWyd1c2Vfc3RhbmRhcmRfb3JfZHVibGluY29yZV9tZXRhJ10gPSAnVmVyd2VuZGVuIFNpZSBtaW5kZXN0ZW5zIGVudHdlZGVyIGRpZSBTdGFuZGFyZC1NZXRhLVRhZ3Mgb2RlciBEdWJsaW4gQ29yZSBNZXRhLVRhZ3MnOwokbGFuZ1sndXNlX3N0YW5kYXJkX21ldGEnXSA9ICdTaWUgc29sbHRlbiBkZW4gU3RhbmRhcmQtTWV0YS1HZW5lcmF0b3IgaW1tZXIgYWt0aXZpZXJlbic7CiRsYW5nWydtZXRhX2Rlc2NyaXB0aW9uX21pc3NpbmcnXSA9ICdEaWUgU2VpdGUgPGk+JXM8L2k+IGJlc2l0enQga2VpbmUgTWV0YS1CZXNjaHJlaWJ1bmcnOwokbGFuZ1snbWV0YV9kZXNjcmlwdGlvbl9zaG9ydCddID0gJ0RpZSBNZXRhLUJlc2NocmVpYnVuZyBkZXIgU2VpdGUgPGk+JXM8L2k+IGlzdCBzZWhyIGt1cnogKCA8IDc1IFplaWNoZW4pJzsKJGxhbmdbJ2R1cGxpY2F0ZV90aXRsZXMnXSA9ICdEaWUgU2VpdGVuIDxpPiVzPC9pPiB1bmQgPGk+JXM8L2k+IGhhYmVuIGRlbiBnbGVpY2hlbiBUaXRlbCc7CiRsYW5nWydkdXBsaWNhdGVfZGVzY3JpcHRpb25zJ10gPSAnRGllIFNlaXRlbiA8aT4lczwvaT4gdW5kIDxpPiVzPC9pPiBoYWJlbiBkaWUgZ2xlaWNoZSBNZXRhLUJlc2NocmVpYnVuZyc7CiRsYW5nWydwcm92aWRlX2FuX2F1dGhvciddID0gJ1NpZSBzb2xsdGVuIGRlbiBOYW1lbiBkZXMgU2VpdGVuaGVyYXVzZ2ViZXJzIGVpbnRyYWdlbic7CiRsYW5nWydzZXRfdXBfZGVzY3JpcHRpb25fYmxvY2snXSA9ICdTZXR6ZW4gU2llIGVpbmVuIENvbnRlbnQtQmxvY2sgZiZ1dW1sO3IgTWV0YS1CZXNjaHJlaWJ1bmdlbiBhdWYnOwokbGFuZ1snYWN0aXZhdGVfcHJldHR5X3VybHMnXSA9ICdBa3RpdmllcmVuIFNpZSBkYXMgIlByZXR0eSBVUkxzIi1GZWF0dXJlIHZvbiBDTVNNUyc7CiRsYW5nWydwcmV0dHlfdXJsc19oZWxwJ10gPSAnPGEgaHJlZj0iaHR0cDovL3dpa2kuY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL1VzZXJfSGFuZGJvb2svSW5zdGFsbGF0aW9uL09wdGlvbmFsX1NldHRpbmdzIiB0YXJnZXQ9Il9ibGFuayI+SGlsZmUgZXJoYWx0ZW48L2E+JzsKJGxhbmdbJ2NyZWF0ZV9hX3NpdGVtYXAnXSA9ICdMYXNzZW4gU2llIGF1dG9tYXRpc2NoIGVpbmUgR29vZ2xlLVhNTC1TaXRlbWFwIGVyc3RlbGxlbic7CiRsYW5nWydhdXRvbWF0aWNhbGx5X3VwbG9hZF9zaXRlbWFwJ10gPSAnTGFzc2VuIFNpZSBJaHJlIFhNTC1TaXRlbWFwIGF1dG9tYXRpc2NoIHp1IEdvb2dsZSBob2NobGFkZW4nOwokbGFuZ1snY3JlYXRlX3JvYm90cyddID0gJ0xhc3NlbiBTaWUgYXV0b21hdGlzY2ggZWluZSByb2JvdHMudHh0LURhdGVpIGVyc3RlbGxlbic7CiRsYW5nWydzaXRlbWFwX25vdF93cml0ZWFibGUnXSA9ICdJaHJlIHNpdGVtYXAueG1sIC0gRGF0ZWkgaXN0IG5pY2h0IGJlc2NocmVpYmJhcic7CiRsYW5nWydjaG1vZF9zaXRlbWFwJ10gPSAnU2V0emVuIFNpZSBJaHJlIC9zaXRlbWFwLnhtbCAtIERhdGVpIGF1ZiBiZXNjaHJlaWJiYXIgZiZ1dW1sO3IgZGVuIFdlYnNlcnZlcic7CiRsYW5nWydyb2JvdHNfbm90X3dyaXRlYWJsZSddID0gJ0locmUgcm9ib3RzLnR4dCAtIERhdGVpIGlzdCBuaWNodCBiZXNjaHJlaWJiYXInOwokbGFuZ1snbm9fb3BlbmdyYXBoX2FkbWlucyddID0gJ1NpZSBoYWJlbiBrZWluZSBPcGVuR3JhcGgtQWRtaW5pc3RyYXRpb25zYW53ZW5kdW5nIGJ6dy4gQWRtaW5pc3RyYXRvcmVuLUxpc3RlIGZlc3RnZWxlZ3QuJzsKJGxhbmdbJ25vX29wZW5ncmFwaF90eXBlJ10gPSAnU2llIGhhYmVuIGRlbiBTdGFuZGFyZC1PcGVuR3JhcGgtU2VpdGVudHlwIG5pY2h0IGZlc3RnZWxlZ3QuJzsKJGxhbmdbJ25vX29wZW5ncmFwaF9zaXRlbmFtZSddID0gJ1NpZSBoYWJlbiBkZW4gT3BlbkdyYXBoLVNlaXRlbm5hbWVuIG5pY2h0IGZlc3RnZWxlZ3QnOwokbGFuZ1snbm9fb3BlbmdyYXBoX2ltYWdlJ10gPSAnU2llIGhhYmVuIGtlaW4gT3BlbkdyYXBoLVN0YW5kYXJkYmlsZCBmZXN0Z2VsZWd0JzsKJGxhbmdbJ2NobW9kX3JvYm90cyddID0gJ1NldHplbiBTaWUgSWhyZSAvcm9ib3RzLnR4dCAtIERhdGVpIGF1ZiBiZXNjaHJlaWJiYXIgZiZ1dW1sO3IgZGVuIFdlYnNlcnZlcic7CiRsYW5nWydlZGl0X3BhZ2UnXSA9ICclcyBiZWFyYmVpdGVuJzsKJGxhbmdbJ2VkaXRfcGFnZV90b19maXgnXSA9ICdLbGlja2VuIFNpZSBoaWVyIHp1bSBCZWFyYmVpdGVuIGRlciBTZWl0ZSB1bmQgQmVoZWJlbiBkZXMgUHJvYmxlbXMnOwokbGFuZ1sndmlzaXRfc2V0dGluZ3MnXSA9ICdFaW5zdGVsbHVuZ2VuIGJlYXJiZWl0ZW4nOwoKJGxhbmdbJ3BhZ2VfaWQnXSA9ICdJRCc7CiRsYW5nWydwYWdlX25hbWUnXSA9ICdTZWl0ZW5uYW1lJzsKJGxhbmdbJ3ByaW9yaXR5J10gPSAnU2l0ZW1hcC1Qcmlvcml0JmF1bWw7dCc7CiRsYW5nWydvZ190eXBlJ10gPSAnT3BlbkdyYXBoLVR5cCc7CiRsYW5nWydrZXl3b3JkcyddID0gJyMgS2V5d29yZHMnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdCZXNjaHJlaWJ1bmcnOwokbGFuZ1snaW5kZXgnXSA9ICdJbmRpemllcmJhcic7CgokbGFuZ1snY2xpY2tfdG9fYWRkX2Rlc2NyaXB0aW9uJ10gPSAnSGllciBrbGlja2VuIHVtIGVpbmUgU2VpdGVuYmVzY2hyZWlidW5nIGhpbnp1enVmJnV1bWw7Z2VuJzsKJGxhbmdbJ3RvZ2dsZSddID0gJ3Vtc2NoYWx0ZW4nOwokbGFuZ1sncmVzZXQnXSA9ICd6dXImdXVtbDtja3NldHplbic7CiRsYW5nWydyZXNldF90b19kZWZhdWx0J10gPSAnRGllc2VuIFdlcnQgYXVmIGRlbiBTdGFuZGFyZCB6dXImdXVtbDtja3NldHplbic7CiRsYW5nWydlZGl0X3ZhbHVlJ10gPSAnRGllc2VuIFdlcnQgYmVhcmJlaXRlbic7CgokbGFuZ1snaGVscF9vcGVuZ3JhcGgnXSA9ICc8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9vcGVuZ3JhcGgjdHlwZXMiIHRhZ2V0PSJfYmxhbmsiPkhpZXI8L2E+IGZpbmRlbiBTaWUgZWluZSBMaXN0ZSBlcmxhdWJ0ZXIgV2VydGUnOwokbGFuZ1snZW50ZXJfbmV3X29ndHlwZSddID0gJ0dlYmVuIFNpZSBkZW4gbmV1ZW4gV2VydCBmJnV1bWw7ciBkZW4gT3BlbkdyYXBoLVR5cCBkaWVzZXIgU2VpdGUgZWluJzsKJGxhbmdbJ2hlbHBfbmV3X29ndHlwZSddID0gJ0xhc3NlbiBTaWUgZGFzIEZlbGQgbGVlciwgdW0genVyIFN0YW5kYXJkLUVpbnN0ZWxsdW5nIHp1ciZ1dW1sO2NrenVrZWhyZW4nOwoKJGxhbmdbJ2VudGVyX25ld19rZXl3b3JkcyddID0gJ0dlYmVuIFNpZSBkaWUgbmV1ZW4gS2V5d29yZHMgZiZ1dW1sO3IgZGllc2UgU2VpdGUgZWluJzsKJGxhbmdbJ2hlbHBfbmV3X2tleXdvcmRzJ10gPSAnTGVlcnplaWNoZW4tZ2V0cmVubnRlIExpc3RlIHZvbiBLZXl3b3Jkcy4gTGFzc2VuIFNpZSBkYXMgRmVsZCBsZWVyLCB1bSB6dXIgU3RhbmRhcmQtRWluc3RlbGx1bmcgenVyJnV1bWw7Y2t6dWtlaHJlbic7CgokbGFuZ1snZ3JvdXB0aXRsZV9vcGVuZ3JhcGgnXSA9ICdXaXIgaGFiZW4gJXMgT3BlbkdyYXBoLWJlem9nZW5lIFByb2JsZW1lIGZlc3RnZXN0ZWxsdCc7CiRsYW5nWydncm91cHRpdGxlX3N5c3RlbSddID0gJ1dpciBoYWJlbiAlcyBQcm9ibGVtZSBtaXQgSWhyZXIgU3lzdGVta29uZmlndXJhdGlvbiBmZXN0Z2VzdGVsbHQnOwokbGFuZ1snZ3JvdXB0aXRsZV9wYWdlcyddID0gJ1dpciBoYWJlbiAlcyBQcm9ibGVtZSBhdWYgSWhyZW4gSW5oYWx0c3NlaXRlbiBmZXN0Z2VzdGVsbHQnOwokbGFuZ1snZ3JvdXB0aXRsZV9zZXR0aW5ncyddID0gJ1dpciBoYWJlbiAlcyBQcm9ibGVtZSBtaXQgSWhyZW4gU0VPLUVpbnN0ZWxsdW5nZW4gZmVzdGdlc3RlbGx0JzsKJGxhbmdbJ2dyb3VwdGl0bGVfZGVzY3JpcHRpb25zJ10gPSAnV2lyIGhhYmVuICVzIFByb2JsZW1lIG1pdCBJaHJlbiBTZWl0ZW5iZXNjaHJlaWJ1bmdlbiBmZXN0Z2VzdGVsbHQnOwokbGFuZ1snZ3JvdXB0aXRsZV90aXRsZXMnXSA9ICdXaXIgaGFiZW4gJXMgUHJvYmxlbWUgbWl0IElocmVuIFNlaXRlbnRpdGVsbiBmZXN0Z2VzdGVsbHQnOwoKJGxhbmdbJ3ZpZXdfYWxsJ10gPSAnQWxsZSBhbnplaWdlbic7CgokbGFuZ1sndGl0bGVfbWV0YXNldHRpbmdzJ10gPSAnU2VpdGVudGl0ZWwgdW5kIE1ldGEtSW5mb3JtYXRpb25lbic7CiRsYW5nWyd0aXRsZV9zaXRlbWFwc2V0dGluZ3MnXSA9ICdTaXRlbWFwICYgQ3Jhd2xlci1FaW5zdGVsbHVuZ2VuJzsKJGxhbmdbJ3RpdGxlX2tleXdvcmRzZXR0aW5ncyddID0gJ0tleXdvcmQtR2VuZXJhdG9yJzsKCiRsYW5nWydkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJ10gPSAnRWluZSBhdXRvbWF0aXNjaGUgU2VpdGVuYmVzY2hyZWlidW5nIGVyemV1Z2VuIHdvIGtlaW5lIHZvcmdlZ2ViZW4gaXN0JzsKJGxhbmdbJ2Rlc2NyaXB0aW9uX2F1dG9fdGl0bGUnXSA9ICdUZXh0IGYmdXVtbDtyIGF1dG9tYXRpc2NoIGdlbmVyaWVydGUgQmVzY2hyZWlidW5nZW4nOwokbGFuZ1snZGVzY3JpcHRpb25fYXV0b19oZWxwJ10gPSAnKFNpZSA8Yj5tJnV1bWw7c3NlbjwvYj4gZGFzIHtrZXl3b3Jkc30tVGFnIGhpZXIgdmVyd2VuZGVuLCBvcHRpb25hbCBpc3QgZGFzIHt0aXRsZX0tVGFnKSc7CgokbGFuZ1snc2V0X3VwX2F1dG9fZGVzY3JpcHRpb24nXSA9ICdTZXR6ZW4gU2llIGRlbiBHZW5lcmF0b3IgZvxyIGF1dG9tYXRpc2NoZSBCZXNjaHJlaWJ1bmdlbiBhdWYgdW5kIHN0ZWxsZW4gU2llIHNpY2hlciwgZGEmc3psaWc7IGRlciBUZXh0IGRhcyBUYWcge2tleXdvcmRzfSBlbnRoJmF1bWw7bHQnOwokbGFuZ1snYXV0b19nZW5lcmF0ZWQnXSA9ICdBdXRvbWF0aXNjaCBlcnpldWd0JzsKJGxhbmdbJ2FuZCddID0gJ3VuZCc7CgokbGFuZ1sndGl0bGVfa2V5d29yZF93ZWlnaHQnXSA9ICdLZXl3b3JkLUdld2ljaHRzZWluc3RlbGx1bmdlbic7CiRsYW5nWydrZXl3b3JkX21pbmxlbmd0aF90aXRsZSddID0gJ01pbmRlc3RsJmF1bWw7bmdlIGYmdXVtbDtyIEtleXdvcmRzJzsKJGxhbmdbJ2tleXdvcmRfbWlubGVuZ3RoX2hlbHAnXSA9ICcoRGllIE1pbmRlc3RsJmF1bWw7bmdlIGYmdXVtbDtyIGVpbiBXb3J0LCBkYW1pdCBlcyBhbHMgS2V5d29yZCBpbiBGcmFnZSBrb21tdCknOwokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfdGl0bGUnXSA9ICdHZXdpY2h0IGRlciBXb3J0ZSBpbSBTZWl0ZW50aXRlbCc7CiRsYW5nWydrZXl3b3JkX3RpdGxlX3dlaWdodF9oZWxwJ10gPSAnKERhcyBHZXdpY2h0IGRlciBXb3J0ZSBpbSBTZWl0ZW50aXRlbC4gSmUgaCZvdW1sO2hlciBkYXMgR2V3aWNodCBlaW5lcyBXb3J0ZXMsIGRlc3RvIGgmdW1sO2hlciBkaWUgV2FocnNjaGVpbmxpY2hrZWl0LCBkYSZzemxpZzsgZXMgenVtIEtleXdvcmQgd2lyZCknOwokbGFuZ1sna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHRfdGl0bGUnXSA9ICdHZXdpY2h0IGRlciBXb3J0ZSBpbiBkZXIgU2VpdGVuYmVzY2hyZWlidW5nJzsKJGxhbmdbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0X2hlbHAnXSA9ICcoRGFzIEdld2ljaHQgZGVyIFdvcnRlIGluIGRlciBTZWl0ZW5iZXNjaHJlaWJ1bmcuIEplIGgmb3VtbDtoZXIgZGFzIEdld2ljaHQgZWluZXMgV29ydGVzLCBkZXN0byBoJnVtbDtoZXIgZGllIFdhaHJzY2hlaW5saWNoa2VpdCwgZGEmc3psaWc7IGVzIHp1bSBLZXl3b3JkIHdpcmQpJzsKJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X3RpdGxlJ10gPSAnR2V3aWNodCBkZXIgV29ydGUgaW4gSW5oYWx0cy0mVXVtbDtiZXJzY2hyaWZ0ZW4nOwokbGFuZ1sna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfaGVscCddID0gJyhEYXMgR2V3aWNodCBkZXIgV29ydGUgendpc2NoZW4gZGVuIFRhZ3MgJmx0O2gxJmd0OyBiaXMgJmx0O2g2Jmd0Oy4gSmUgaCZvdW1sO2hlciBkYXMgR2V3aWNodCBlaW5lcyBXb3J0ZXMsIGRlc3RvIGgmdW1sO2hlciBkaWUgV2FocnNjaGVpbmxpY2hrZWl0LCBkYSZzemxpZzsgZXMgenVtIEtleXdvcmQgd2lyZCknOwokbGFuZ1sna2V5d29yZF9jb250ZW50X3dlaWdodF90aXRsZSddID0gJ0dld2ljaHQgdm9uIFdvcnRlbiBpbSByZWluZW4gSW5oYWx0JzsKJGxhbmdbJ2tleXdvcmRfY29udGVudF93ZWlnaHRfaGVscCddID0gJyhEYXMgR2V3aWNodCBkZXIgV29ydGUgaW5uZXJoYWxiIGRlcyByZWluZW4gSW5oYWx0cy4gSmUgaCZvdW1sO2hlciBkYXMgR2V3aWNodCBlaW5lcyBXb3J0ZXMsIGRlc3RvIGgmdW1sO2hlciBkaWUgV2FocnNjaGVpbmxpY2hrZWl0LCBkYSZzemxpZzsgZXMgenVtIEtleXdvcmQgd2lyZCknOwoKJGxhbmdbJ2tleXdvcmRfbWluaW11bV93ZWlnaHRfdGl0bGUnXSA9ICdNaW5kZXN0LUdlc2FtdGdld2ljaHQgZiZ1dW1sO3IgZWluIEtleXdvcmQnOwokbGFuZ1sna2V5d29yZF9taW5pbXVtX3dlaWdodF9oZWxwJ10gPSAnKERhcyBNaW5kZXN0LUdlc2FtdGdld2ljaHQgZWluZXMgV29ydGVzLCBkYW1pdCBlcyB6dW0gS2V5d29yZCB3aXJkLiBEaWVzZXIgV2VydCBzb2xsdGUgZ3Imb3VtbDsmc3psaWc7ZXIgYWxzIGRlciBoJm91bWw7Y2hzdGUgV2VydCB2b24gb2JlbiBzZWluLiBKZSBrbGVpbmVyIGRpZXNlIFphaGwsIGRlc3RvIG1laHIgS2V5d29yZHMgZXJoYWx0ZW4gU2llKSc7CgokbGFuZ1snaGVscF9rZXl3b3JkX2dlbmVyYXRvciddID0gJ0RpZSBFaW5zdGVsbHVuZ2VuIGF1ZiBkaWVzZXIgU2VpdGUgYmVlaW5mbHVzc2VuIGtlaW5lIEtleXdvcmRzLCBkaWUgU2llIG1hbnVlbGwgdm9yZ2ViZW4uIEV4cGVyaW1lbnRpZXJlbiBTaWUgbWl0IHZlcnNjaGllZGVuZW4gV2VydGVuLCB1bSBkYXMgT3B0aW11bSBmJnV1bWw7ciBJaHJlIFNlaXRlIHp1IGVycmVpY2hlbi4nOwoKJGxhbmdbJ3RpdGxlX2tleXdvcmRfZXhjbHVkZSddID0gJ0tleXdvcmQtQXVzc2NobHUmc3psaWc7bGlzdGUnOwokbGFuZ1sna2V5d29yZF9leGNsdWRlX3RpdGxlJ10gPSAnV29ydGUsIGRpZSBuaWUgYWxzIEtleXdvcmQgaW4gRnJhZ2Uga29tbWVuJzsKJGxhbmdbJ2tleXdvcmRfZXhjbHVkZV9oZWxwJ10gPSAnKEdlYmVuIFNpZSBlaW5lIExlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSB2b24gV29ydGVuIGFuLCBkaWUgbmllIGluIGRlbiBLZXl3b3JkLUxpc3RlbiBhdWZ0YXVjaGVuIHNvbGx0ZW4pJzsKCiRsYW5nWydpbmNyZWFzZV9wcmlvcml0eSddID0gJ1ByaW9yaXTkdCB1bSAxMCUgZXJo9mhlbic7CiRsYW5nWydkZWNyZWFzZV9wcmlvcml0eSddID0gJ1ByaW9yaXTkdCB1bSAxMCUgdmVycmluZ2Vybic7CgokbGFuZ1sndGl0bGVfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiU2l0ZW1hcCB1bmQgcm9ib3RzLnR4dCBuZXUgZXJ6ZXVnZW4iOwokbGFuZ1snYnV0dG9uX3JlZ2VuZXJhdGVfc2l0ZW1hcCddID0gIlNpdGVtYXAgdW5kIHJvYm90cy50eHQgamV0enQgbmV1IGVyemV1Z2VuIjsKJGxhbmdbJ3RleHRfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSB1dGY4X2VuY29kZSgiSW5zYmVzb25kZXJlIG5hY2ggZ3L232VyZW4gxG5kZXJ1bmdlbiBkZXIgU2VpdGVuc3RydWt0dXIga2FubiBlcyBzaW5udm9sbCBzZWluLCBkaWUgU2l0ZW1hcCB1bmQgZGllIHJvYm90cy50eHQgRGF0ZWkgbmV1IHp1IGVyemV1Z2VuLiIpOwokbGFuZ1snc2l0ZW1hcF9yZWdlbmVyYXRlZCddID0gIkRpZSBTaXRlbWFwIHVuZCBkaWUgcm9ib3RzLnR4dCAtIERhdGVpIHd1cmRlbiBlcmZvbGdyZWljaCBuZXUgZXJzdGVsbHQuIjsKCiRsYW5nWydpbnN0YWxsX2RhdGFiYXNlX2Vycm9yJ10gPSAiQmVpIGRlciBJbnN0YWxsYXRpb24gaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW46IERpZSBEYXRlbmJhbmstVGFiZWxsZSBrb25udGUgbmljaHQgYW5nZWxlZ3Qgd2VyZGVuLiI7CiRsYW5nWydub191cmxfZm9wZW4nXSA9ICJOaWNodCBtJm91bWw7Z2xpY2gsIGRhIGFsbG93X3VybF9mb3BlbiBpbiBkZXIgUEhQLUtvbmZpZ3VyYXRpb24gbmljaHQgYXVmICZxdW90O29uJnF1b3Q7IGdlc2V0enQgd3VyZGUuIjsKJGxhbmdbJ3RpdGxlX2FkZGl0aW9uYWxfbWV0YV90YWdzJ10gPSB1dGY4X2VuY29kZSgiWnVz5HR6bGljaGUgTUVUQS1UYWdzIik7CiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc190aXRsZSddID0gIldlaXRlcmUgTWV0YS1UYWdzLCBkaWUgZWluZ2VmJnV1bWw7Z3Qgd2VyZGVuIHNvbGxlbiI7CiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc19oZWxwJ10gPSAiR2ViZW4gU2llIGhpZXIgd2VpdGVyZSBNRVRBLVRhZ3MgZWluLCBkaWUgaW4gZGVuIFNlaXRlbmtvcGYgZWluZ2VidW5kZW4gd2VyZGVuIHNvbGxlbi4gU2llIGsmb3VtbDtubmVuIGFsbGUgU21hcnR5LVZhcmlhYmxlbiB2ZXJ3ZW5kZW4uIjsKCiRsYW5nWydoZWxwX3Nob3diYXNlJ10gPSAiU2V0emVuIFNpZSBkaWVzZW4gUGFyYW1ldGVyIGF1ZiA8Y29kZT5mYWxzZTwvY29kZT4sIHVtIGRhcyAmcXVvdDtiYXNlIGhyZWYmcXVvdDstVGFnIG5pY2h0IGFuemVpZ2VuIHp1IGxhc3Nlbi4iOwoKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4yIC0gMDYuIEphbnVhciAyMDExLiBWZXJzY2hpZWRlbmUgQnVnZml4ZXMgdW5kIEVyd2VpdGVydW5nZW4uPC9saT4KPGxpPlZlcnNpb24gMS4xIC0gMDIuIE5vdmVtYmVyIDIwMTAuIFZlcnNjaGllZGVuZSBCdWdmaXhlcy48L2xpPgo8bGk+VmVyc2lvbiAxLjAgLSAyNC4gQXVndXN0IDIwMTAuIEluaXRpYWwgUmVsZWFzZS48L2xpPgo8L3VsPic7CgokbGFuZ1snaGVscCddID0gJzxoMz5XYXMgdHV0IGRpZXNlcyBNb2R1bD88L2gzPgo8cD5EaWUgU0VPIFRvb2xzIGhlbGZlbiBJaG5lbiwgSWhyZSBTRU8gKFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uLCBTdWNobWFzY2hpbmVub3B0aW1pZXJ1bmcpIGluIGRlbiBHcmlmZiB6dSBiZWtvbW1lbi4gRGFzIE1vZHVsIGYmdXVtbDtndCB2ZXJzY2hpZWRlbmUgU0VPLUYmYXVtbDtoaWdrZWl0ZW4genUgQ01TTVMgaGluenUgdW5kIHdhcm50IFNpZSwgZmFsbHMgU2llIGlyZ2VuZGV0d2FzIFNFTy1iZXpvZ2VuZXMgJnV1bWw7YmVyc2VoZW4gaGFiZW4uIEFrdHVlbGwgd2VyZGVuIGRpZSBmb2xnZW5kZW4gRmVhdHVyZXMgdW50ZXJzdCZ1dW1sO3R6dDo8L3A+Cjx1bD4KPGxpPi0gYXV0b21hdGlzY2hlIEVyemV1Z3VuZyB2b24gTWV0YS1UYWdzIGltIFN0YW5kYXJkLUhUTUwtRm9ybWF0LCBuYWNoIGRlciBEdWJsaW4gQ29yZS1TcGV6aWZpa2F0aW9uIHVuZCBPcGVuR3JhcGg8L2xpPgo8bGk+LSBhdXRvbWF0aXNjaGUgRXh0cmFrdGlvbiB2b24gS2V5d29yZHMgYXVzIElocmVuIFNlaXRlbiwgZGllIHp1bSBTZWl0ZW50aXRlbCB1bmQgZGVuIE1ldGEtVGFncyBoaW56dWdlZiZ1dW1sO2d0IHdlcmRlbjwvbGk+CjxsaT4tIEZlc3RsZWdlbiBtaXQgZWluZW0gS2xpY2ssIG9iIGJlc3RpbW10ZSBTZWl0ZW4gdm9uIFN1Y2htYXNjaGluZW4gaW5kaXppZXJ0IHdlcmRlbiBzb2xsZW4gb2RlciBuaWNodDwvbGk+CjxsaT4tIEVyemV1Z3VuZyBlaW5lciBzaXRlbWFwLnhtbC1EYXRlaSBtaXQgSWhyZW4gU2VpdGVuIHcmYXVtbDtocmVuZCBTaWUgZGllIHZvbGxlIEtvbnRyb2xsZSBkYXImdXVtbDtiZXIgaGFiZW4sIHdpZSBkaWUgUHJpb3JpdCZhdW1sO3QgZWluemVsbmVyIFNlaXRlbiBiZXdlcnRldCB3ZXJkZW4gc29sbDwvbGk+CjxsaT4tIEVyemV1Z3VuZyBlaW5lciByb2JvdHMudHh0LURhdGVpIG1pdCBkZXIgTSZvdW1sO2dsaWNoa2VpdCwgZXhwbGl6aXQgZGVuIFp1Z3JpZmYgYXVmIFNlaXRlbiwgZGllIG5pY2h0IGluZGl6aWVydCB3ZXJkZW4gc29sbGVuLCB6dSB2ZXJiaWV0ZW48L2xpPgo8bGk+LSBBdXNnYWJlIHZvbiBXYXJudW5nZW4sIHdlbm4gbWVocmVyZSBTZWl0ZW4gZGVuIGdsZWljaGVuIFRpdGVsIG9kZXIgZGllIGdsZWljaGUgQmVzY2hyZWlidW5nIGhhYmVuPC9saT4KPGxpPi0gQXVzZ2FiZSB2b24gV2FybnVuZ2VuIHdlbm4gc2VociBrdXJ6ZSBTZWl0ZW5iZXNjaHJlaWJ1bmdlbiBnZWZ1bmRlbiB3dXJkZW48L2xpPgo8bGk+LSBBdXRvbWF0aXNjaGVzIEVpbnNlbmRlbiBkZXIgYWt0dWFsaXNpZXJ0ZW4gU2l0ZW1hcC1EYXRlaSB6dSBHb29nbGUsIHdlbm4gSW5oYWx0ZSBnZSZhdW1sO25kZXJ0IHdlcmRlbjwvbGk+IAo8L3VsPgo8aDM+V2llIHdpcmQgZGFzIE1vZHVsIHZlcndlbmRldD88L2gzPgo8cD4mT3VtbDtmZm5lbiBTaWUgenVuJmF1bWw7Y2hzdCBhbGxlIFRlbXBsYXRlcywgYXVmIGRlbmVuIFNpZSBTRU8gVG9vbHMgdmVyd2VuZGVuIG0mb3VtbDtjaHRlbi4gRW50ZmVybmVuIFNpZSBkYXMga29tcGxldHRlICZsdDt0aXRsZSZndDstVGFnIHVuZCBkYXMge21ldGFkYXRhfS1UYWcgKGF1Y2ggd2VubiBkYSBzdGVodCwgZGEmc3psaWc7IFNpZSBsZXR6dGVyZXMgbmllIGVudGZlcm5lbiBzb2xsdGVuKSB1bmQgZXJzZXR6ZW4gU2llIGJlaWRlIGR1cmNoIGRhcyBUYWc8L3A+CjxwcmU+CntTRU9Ub29sc30KPC9wcmU+PGJyIC8+CjxwPkYmdXVtbDtnZW4gU2llIGFscyBuJmF1bWw7Y2hzdGVzIGFtIEVuZGUgSWhyZXMgVGVtcGxhdGVzIChuYWNoIGRlbSBzY2hsaWUmc3psaWc7ZW5kZW4gJmx0Oy9ib2R5Jmd0Oy1UYWcpIGRlbiBmb2xnZW5kZW4gQ29kZSBlaW46PC9wPgo8cHJlPgp7Y2FwdHVyZX17Y29udGVudCBibG9jaz0iU2VpdGVuYmVzY2hyZWlidW5nIiBvbmVsaW5lPSJ0cnVlIn17L2NhcHR1cmV9CjwvcHJlPjxiciAvPgo8cD5JbiBkaWVzZXMgRmVsZCB3ZXJkZW4gU2llIHNwJmF1bWw7dGVyIGVpbmUga3VyemUgU2VpdGVuYmVzY2hyZWlidW5nIChlaW4gb2RlciB6d2VpIFMmYXVtbDt0emUpIGVpbmdlYmVuLCBkaWUgaW4gZGVuIEVyZ2Vibmlzc2VuIGRlciBTdWNobWFzY2hpbmVuIGFuZ2V6ZWlndCB3aXJkIHVuZCB3ZW5uIHouQi4gamVtYW5kIGRlbiBMaW5rIHp1IElocmVyIFNlaXRlIGJlaSBGYWNlYm9vayB0ZWlsdC48L3A+CjxwPlJ1ZmVuIFNpZSBudW4gZGllIE1vZHVsLUFkbWluaXN0cmF0aW9uIGF1ZiB1bmQgZiZ1dW1sO2xsZW4gU2llIGF1ZiBkZW4gRWluc3RlbGx1bmdzLVRhYnMgYWxsZSBJbmZvcm1hdGlvbmVuIGVpbiwgZGllIGYmdXVtbDtyIElocmUgU2VpdGUgcmVsZXZhbnQgc2luZC4gVW50ZXIgIk5hbWUgZGVzIFNlaXRlbmJlc2NocmVpYnVuZ3MtQ29udGVudGJsb2NrIiB0cmFnZW4gU2llIGRlbiBOYW1lbiBkZXMgc29lYmVuIGltIFRlbXBsYXRlIGFuZ2VsZWd0ZW4gQ29udGVudC1CbG9ja3MgKCJTZWl0ZW5iZXNjaHJlaWJ1bmciIGluIHVuc2VyZW0gQmVpc3BpZWwpIGVpbi4gRGVyIFRhYiAiU0VPLVdhcm51bmdlbiIgYmVuYWNoaWNodGlndCBTaWUgYXV0b21hdGlzY2gsIHdlbm4gaXJnZW5kZWluZSBFaW5zdGVsbHVuZyBnZWZ1bmRlbiB3dXJkZSwgZGllIG5pY2h0IG9wdGltYWwgaXN0LgpBdSZzemxpZztlcmRlbSBzb2xsdGVuIFNpZSBpbiBFcncmYXVtbDtndW5nIHppZWhlbiwgSWhyZSBTZWl0ZSBiZWkgR29vZ2xlIFdlYm1hc3RlciBUb29scyBhbnp1bWVsZGVuLiBXJmF1bWw7aGxlbiBTaWUgZG9ydCAiTWV0YSB0YWcgdmFsaWRhdGlvbiIgdW5kIGYmdXVtbDtnZW4gU2llIGRlbiBCZXN0JmF1bWw7dGlndW5nc2NvZGUsIGRlbiBTaWUgZG9ydCBlcmhhbHRlbiwgaW4gZGFzIEZlbGQgIkJlc3QmYXVtbDt0aWd1bmdzY29kZSBmJnV1bWw7ciBkaWUgU2VpdGVudmVyaWZpemllcnVuZyIgZWluIChudXIgZGVuIGxhbmdlbiBDb2RlIGF1cyBaYWhsZW4gdW5kIEJ1Y2hzdGFiZW4sIG5pY2h0IGRhcyBrb21wbGV0dGUgTWV0YS1UYWcpIHVtIGF1dG9tYXRpc2NoIHp1IGJlc3QmYXVtbDt0aWdlbiwgZGEmc3psaWc7IFNpZSB0YXRzJmF1bWw7Y2hsaWNoIGRlciBJbmhhYmVyIElocmVyIFNlaXRlIHNpbmQuPC9wPgo8cD5Tb2JhbGQgYWxsZXMgZWluZ2VyaWNodGV0IGlzdCwgc2NoYXVlbiBTaWUgYXVmIGRhcyAiU0VPLVdhcm51bmdlbiItVGFiIHVuZCBiZWhlYmVuIFNpZSBhbGxlIFByb2JsZW1lLCBkaWUgSWhuZW4gZG9ydCBhbmdlemVpZ3Qgd2VyZGVuLiBEZW5rZW4gU2llIHVuYmVkaW5ndCBkYXJhbiwgYXVmIGplZGVyIFNlaXRlLCBkaWUgU2llIHVudGVyICJJbmhhbHRlL1NlaXRlbiIgYmVhcmJlaXRlbiwgZWluZSBrdXJ6ZSAodW5kIGVpbmRldXRpZ2UpIEJlc2NocmVpYnVuZyBpbnMgRmVsZCAiU2VpdGVuYmVzY2hyZWlidW5nIiB1bnRlbiBhdWYgZGVtIFNlaXRlbmJlYXJiZWl0dW5ncy1Gb3JtdWxhciBlaW56dWdlYmVuLjwvcD4KPHA+V2VubiBTaWUgSWhyZSBlaWdlbmVuIEtleXdvcmRzIGZlc3RsZWdlbiAoYW5zdGVsbGUgZGVyIGF1dG9tYXRpc2NoIGdlbmVyaWVydGVuIEtleXdvcmRzKSBvZGVyIGRlbiBPcGVuR3JhcGgtVHlwIGJlc3RpbW10ZXIgU2VpdGVuICZhdW1sO25kZXJuIG0mb3VtbDtjaHRlbiwgYmVzdWNoZW4gU2llIGRlbiBUYWIgIlNlaXRlbmVpbnN0ZWxsdW5nZW4iIGF1ZiBkZW0gU2llIGVpbmUgTGlzdGUgYWxsZXIgaW0gU3lzdGVtIHZvcmhhbmRlbmVuIFNlaXRlbiBzZWhlbi4gRG9ydCBrJm91bWw7bm5lbiBTaWUgYXVjaCBkaWUgUHJpb3JpdCZhdW1sO3RlbiBkZXIgU2VpdGVuIGYmdXVtbDtyIGRpZSBYTUwtU2l0ZW1hcCAmYXVtbDtuZGVybiAoZGllIGFuZGVybmZhbGxzIGF1dG9tYXRpc2NoIGJlcmVjaG5ldCB3aXJkKSB1bSBmZXN0enVsZWdlbiwgZGEmc3psaWc7IGJlc3RpbW10ZSBTZWl0ZW4gYWxzIHdpY2h0aWdlcgplaW5nZXN0dWZ0IHdlcmRlbiBzb2xsZW4gYWxzIGFuZGVyZSBiZWkgU3VjaG1hc2NoaW5lbi1UcmVmZmVybiwgb2RlciB3ZW5uIFNpZSBlaW56ZWxuZSBTZWl0ZW4gdm9uIGRlciBJbmRpemllcnVuZyBkdXJjaCBTdWNobWFzY2hpbmVuIGF1c3NjaGxpZSZzemxpZztlbiBtJm91bWw7Y2h0ZW4uPC9wPgo8cD5TRU8gVG9vbHMgZiZ1dW1sO2d0IGF1JnN6bGlnO2VyZGVtIGVpbmVuIFZlcndlaXMgYXVmIGRhcyBCaWxkLCBkYXMgYWxzIEhhdXB0YmlsZCBmJnV1bWw7ciBJaHJlIFNlaXRlIHZlcndlbmRldCB3ZXJkZW4gc29sbCAod2ljaHRpZyBmJnV1bWw7ciBMaW5rcywgZGllIGJlaSBGYWNlYm9vayBnZXRlaWx0IHdlcmRlbikgd2VubiBTaWUgZWluICJCaWxkIiBmJnV1bWw7ciBkaWUgU2VpdGUgYXVmIGRlbSBPcHRpb25zLVRhYiBJaHJlciBTZWl0ZSBmZXN0bGVnZW4uIFdlbm4gU2llIE9wZW5HcmFwaCB2ZXJ3ZW5kZW4sIGVyc2V0enQgZGllc2VzIEJpbGQgYXUmc3psaWc7ZXJkZW0gZGFzIFN0YW5kYXJkLUJpbGQKZiZ1dW1sO3IgT3BlbkdyYXBoLVNlaXRlbiBkYXMgU2llIGluIGRlbiBFaW5zdGVsbHVuZ2VuIHZvbiBTRU8gVG9vbHMgZmVzdGdlbGVndCBoYWJlbi4gQWNodGVuIFNpZSBkYXJhdWYsIGRhJnN6bGlnOyBTaWUgZGllc2UgQmlsZGVyIGluIElociAvdXBsb2Fkcy9pbWFnZXMgLSBWZXJ6ZWljaG5pcyBob2NobGFkZW4sIGRhbWl0IHNpZSB2b24gQ01TTVMgZXJrYW5udCB3ZXJkZW4uPC9wPiAKPGgzPkthbm4gaWNoIFNtYXJ0eS1WYXJpYWJsZW4gdmVyd2VuZGVuPzwvaDM+CjxwPkluIGRlbiBFaW5zdGVsbHVuZ3MtRmVsZGVybiA8aT5TZWl0ZW50aXRlbDwvaT4sIDxpPlNlaXRlbnRpdGVsIGYmdXVtbDtyIGRpZSBNZXRhLURhdGVuPC9pPiwgPGk+VGV4dCBmJnV1bWw7ciBhdXRvbWF0aXNjaCBnZW5lcmllcnRlIEJlc2NocmVpYnVuZ2VuPC9pPiB1bmQgPGk+WnVzJmF1bWw7dHpsaWNoZSBNZXRhLVRhZ3M8L2k+IGsmb3VtbDtubmVuIGFsbGUgYXVmIGRlciBTZWl0ZSB2ZXJ3ZW5kZXRlbiBTbWFydHktVGFncyB1bmQgVURUcyB2ZXJ3ZW5kZXQgd2VyZGVuLiBHZWJlbiBTaWUgPGNvZGU+e2RlYnVnfTwvY29kZT4gZWluLCB1bSBlaW5lIExpc3RlIGFsbGVyIHp1ciBWZXJmJnV1bWw7Z3VuZyBzdGVoZW5kZW4gVGFncyB6dSBzZWhlbi48L3A+CjxoMz5XZWxjaGUgU21hcnR5LVZhcmlhYmxlbiB3ZXJkZW4gdm9uIFNFT1Rvb2xzIGRlZmluaWVydD88L2gzPgo8Y29kZT57JHNlb19rZXl3b3Jkc308L2NvZGU+OiBFaW5lIGtvbW1hZ2V0cmVubnRlIExpc3RlIGFsbGVyIGYmdXVtbDtyIGRpZSBTZWl0ZSBnZXNldHp0ZW4gS2V5d29yZHMgKGVpbnNjaGxpZSZzemxpZztsaWNoIGRlciBTdGFuZGFyZC1LZXl3b3Jkcyk8YnIgLz4KPGNvZGU+eyR0aXRsZV9rZXl3b3Jkc308L2NvZGU+OiBFaW5lIGxlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSBhbGxlciBmJnV1bWw7ciBkaWUgU2VpdGUgZ2VzZXR6dGVuIEtleXdvcmRzIChlaW5zY2hsaWUmc3psaWc7bGljaCBkZXIgU3RhbmRhcmQtS2V5d29yZHMpPGJyIC8+Cjxjb2RlPnskZGVmYXVsdF9rZXl3b3Jkc308L2NvZGU+OiBFaW5lIGxlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSBhbGxlciBTdGFuZGFyZC1LZXl3b3JkczxiciAvPgo8Y29kZT57JHBhZ2Vfa2V5d29yZHN9PC9jb2RlPjogRWluZSBsZWVyemVpY2hlbi1nZXRyZW5udGUgTGlzdGUgYWxsZXIgZiZ1dW1sO3IgZGllIFNlaXRlIGdlc2V0enRlbiBLZXl3b3JkcyAob2huZSBkaWUgU3RhbmRhcmQtS2V5d29yZHMpCjxoMz5TdXBwb3J0PC9oMz4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMC0yMDExLCBIZW5uaW5nIFNjaGFlZmVyIDxhIGhyZWY9Im1haWx0bzpoZW5uaW5nLnNjaGFlZmVyQGdtYWlsLmNvbSI+Jmx0O2hlbm5pbmcuc2NoYWVmZXJAZ21haWwuY29tJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1NFTyBUb29scyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1NFTyBUb29scyBoYXZlIGJlZW4gaW5zdGFsbGVkLiBCZSBzdXJlIHRvIHJlYWQgdGhlIG1vZHVsZSBoZWxwIHRvIGxlYXJuIGhvdyB0byB1c2UgdGhlbS4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1NFTyBUb29scyBoYXZlIGJlZW4gdW5pbnN0YWxsZWQuIFBsZWFzZSBiZSBhd2FyZSB0aGF0IHlvdSBoYXZlIGp1c3QgbG9zdCBhbGwgbWV0YSBpbmZvcm1hdGlvbiBmcm9tIHlvdXIgcGFnZXMhJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gdW5pbnN0YWxsIFNFTyBUb29scz8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgVW5pbnN0YWxsZWQuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdTZXZlcmFsIHRvb2xzIHRvIGhlbHAgd2l0aCBTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbiBhbmQgY2hlY2sgZm9yIHN1Ym9wdGltYWwgU0VPLXJlbGF0ZWQgdGhpbmdzLic7CgokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZFsnYWRtaW5fdGl0bGUnXSA9ICdTRU8gVG9vbHMgQWRtaW4gUGFuZWwnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0hlbHBzIHdpdGggU0VPIGluIGdlbmVyYWwsIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGluZyBYTUwgc2l0ZW1hcHMgYW5kIGNvbXByZWhlbnNpdmUgbWV0YSBkZXNjcmlwdGlvbnMnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ1NFT0FsZXJ0cyddID0gJ1NFTyBBbGVydHMnOwokbGFuZ1snUGFnZWRlc2NyaXB0aW9ucyddID0gJ1BhZ2Ugc2V0dGluZ3MnOwokbGFuZ1snU2l0ZW1hcCddID0gJ1NpdGVtYXAnOwokbGFuZ1snU0VPU2V0dGluZ3MnXSA9ICdTRU8gU2V0dGluZ3MnOwokbGFuZ1sndGl0bGVfc2VvYWxlcnRzJ10gPSAnU0VPIEFsZXJ0cyc7CiRsYW5nWyd0aXRsZV9wYWdlZGVzY3JpcHRpb25zJ10gPSAnUGFnZSBzZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9zaXRlbWFwJ10gPSAnU2l0ZW1hcCc7CiRsYW5nWyd0aXRsZV9zZW9zZXR0aW5ncyddID0gJ1NFTyBTZXR0aW5ncyc7CgokbGFuZ1sndGl0bGVfbWV0YV90eXBlJ10gPSAnTWV0YSBUYWcgR2VuZXJhdG9yJzsKJGxhbmdbJ21ldGFfY3JlYXRlX3N0YW5kYXJkJ10gPSAnR2VuZXJhdGUgc3RhbmRhcmQgTWV0YSBUYWdzJzsKJGxhbmdbJ21ldGFfY3JlYXRlX2R1YmxpbmNvcmUnXSA9ICdHZW5lcmF0ZSBEdWJsaW4gQ29yZSBNZXRhIFRhZ3MnOwokbGFuZ1snbWV0YV9jcmVhdGVfb3BlbmdyYXBoJ10gPSAnR2VuZXJhdGUgT3BlbkdyYXBoIE1ldGEgVGFncyAoZS5nLiBmb3IgRmFjZWJvb2sgTGlrZSBCdXR0b24pJzsKCiRsYW5nWyd0aXRsZV9tZXRhX2RlZmF1bHRzJ10gPSAnTUVUQSBUYWcgVmFsdWVzJzsKJGxhbmdbJ21ldGFfcHVibGlzaGVyJ10gPSAnU2l0ZSBwdWJsaXNoZXInOwokbGFuZ1snbWV0YV9wdWJsaXNoZXJfaGVscCddID0gJyhUaGlzIGlzIHVzdWFsbHkgdGhlIG9yZ2FuaXphdGlvbiB5b3UgYXJlIGJ1aWxkaW5nIHRoZSB3ZWJzaXRlIGZvciknOwokbGFuZ1snbWV0YV9jb250cmlidXRvciddID0gJ1NpdGUgY29udHJpYnV0b3InOwokbGFuZ1snbWV0YV9jb250cmlidXRvcl9oZWxwJ10gPSAnKFVzdWFsbHksIHRoaXMgd291bGQgYmUgeW91IG9yIGFueSBvdGhlciBjb250ZW50IGF1dGhvciknOwokbGFuZ1snbWV0YV9jb3B5cmlnaHQnXSA9ICdTaXRlIGNvcHlyaWdodCc7CiRsYW5nWydtZXRhX2NvcHlyaWdodF9oZWxwJ10gPSAnKFNvbWV0aGluZyBsaWtlICIoQykgWW91ciBDb21wYW55LiBBbGwgUmlnaHRzIFJlc2VydmVkIiknOwokbGFuZ1snbWV0YV9sb2NhdGlvbl9kZXNjcmlwdGlvbiddID0gJ0lmIHlvdXIgd2Vic2l0ZSBpcyBhYm91dCBhbiBlbnRpdGl5IHRoYXQgY2FuIGJlIGxvY2F0ZWQgb24gYSBtYXAsIHlvdSBzaG91bGQgb3B0aW9uYWxseSBmaWxsIGluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOic7CiRsYW5nWydtZXRhX2xvY2F0aW9uJ10gPSAnTG9jYXRpb24gb2YgeW91ciBlbnRpdHknOwokbGFuZ1snbWV0YV9sb2NhdGlvbl9oZWxwJ10gPSAnKFVzdWFsbHksIHRoaXMgd291bGQgYmUgdGhlIHRvd24gbmFtZSBvZiB5b3VyIGNvbXBhbnkpJzsKJGxhbmdbJ21ldGFfcmVnaW9uJ10gPSAnUmVnaW9uIG9mIHlvdXIgZW50aXR5JzsKJGxhbmdbJ21ldGFfcmVnaW9uX2hlbHAnXSA9ICcoRW50ZXIgc29tZXRoaW5nIGxpa2UgIlVTLUlMIiBmb3IgYW4gZW50aXR5IGxvY2F0ZWQgaW4gSWxsaW5vaXMsIFVTKSc7CiRsYW5nWydtZXRhX2xhdGl0dWRlJ10gPSAnTGF0aXR1ZGUgb2YgeW91ciBlbnRpdHknOwokbGFuZ1snbWV0YV9sYXRpdHVkZV9oZWxwJ10gPSAnKEVudGVyIHRoZSBkZWNpbWFsIGxhdGl0dWRlIGdlbyBjb29kaW5hdGUgb2YgeW91ciBlbnRpdGl5KSc7CiRsYW5nWydtZXRhX2xvbmdpdHVkZSddID0gJ0xvbmdpdHVkZSBvZiB5b3VyIGVudGl0eSc7CiRsYW5nWydtZXRhX2xvbmdpdHVkZV9oZWxwJ10gPSAnKEVudGVyIHRoZSBkZWNpbWFsIGxvbmdpdHVkZSBnZW8gY29vZGluYXRlIG9mIHlvdXIgZW50aXRpeSknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfZGVzY3JpcHRpb24nXSA9ICdJZiB5b3UgYXJlIGNyZWF0aW5nIE9wZW5HcmFwaCBNRVRBIFRhZ3MsIHBsZWFzZSBmaWxsIGluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOic7CiRsYW5nWydtZXRhX29wZW5ncmFwaF90aXRsZSddID0gJ09wZW5HcmFwaCBwYWdlIHRpdGxlJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3RpdGxlX2hlbHAnXSA9ICcoWW91IGNhbiB1c2UgYWxsIHNtYXJ0eSB0YWdzIGhlcmUsIGUuZy4gdG8gcmVwbGFjZSB3aXRoIHRoZSBhY3R1YWwgcGFnZSB0aXRsZSknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdHlwZSddID0gJ09wZW5HcmFwaCBkZWZhdWx0IHBhZ2UgdHlwZSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF90eXBlX2hlbHAnXSA9ICcoVGhlIGRlZmF1bHQgcGFnZSB0eXBlIGZvciBPcGVuR3JhcGgsIGNhbiBiZSBvdmVycmlkZGVuIGZvciBlYWNoIHBhZ2UuIExvb2sgPGEgaHJlZj0iaHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3Mvb3BlbmdyYXBoI3R5cGVzIiB0YWdldD0iX2JsYW5rIj5oZXJlPC9hPiBmb3IgYSBsaXN0IG9mIGFsbG93ZWQgdmFsdWVzKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9zaXRlbmFtZSddID0gJ09wZW5HcmFwaCBzaXRlIG5hbWUnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWVfaGVscCddID0gJyhBIHNob3J0IHZlcnNpb24gb2YgeW91ciBzaXRlIG5hbWUsIGUuZy4gIllvdXIgQ29tcGFueSIsIG1heC4gMjUgY2hhcnMpJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2ltYWdlJ10gPSAnT3BlbkdyYXBoIGRlZmF1bHQgaW1hZ2UnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfaW1hZ2VfaGVscCddID0gJyhTZWxlY3QgYW4gaW1hZ2UgZnJvbSB5b3VyIC91cGxvYWRzL2ltYWdlcyBkaXJlY3RvcnkgdG8gYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBmb3IgT3BlbkdyYXBoIHBhZ2VzKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSA9ICdGYWNlYm9vayBzaXRlIGFkbWluaXN0cmF0b3JzJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FkbWluc19oZWxwJ10gPSAnKEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZmFjZWJvb2sgYWNjb3VudCBJRHMgd2hvIGFyZSBhYmxlIHRvIGFkbWluaXN0cmF0ZSB0aGUgc3RyZWFtcyBvZiB5b3VyIHBhZ2VzKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbiddID0gJ0ZhY2Vib29rIGFwcGxpY2F0aW9uJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uX2hlbHAnXSA9ICcoVGhlIElEIG9mIGEgZmFjZWJvb2sgYXBwbGljYXRpb24gYWJsZSB0byBhZG1pbmlzdHJhdGUgdGhlIHN0cmVhbXMgb2YgeW91ciBwYWdlcyknOwoKJGxhbmdbJ3RpdGxlX3RpdGxlX2Rlc2NyaXB0aW9uJ10gPSAnUGFnZSB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIGtleXdvcmRzJzsKJGxhbmdbJ3RpdGxlX3RpdGxlJ10gPSAnUGFnZSB0aXRsZSc7CiRsYW5nWyd0aXRsZV90aXRsZV9oZWxwJ10gPSAnKFRoZSBwYWdlIHRpdGxlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgYnJvd3NlclwncyB0aXRsZSBiYXIuIFlvdSBjYW4gdXNlIHRoZSB0YWdzIHt0aXRsZX0sIHtwYWdldGl0bGV9LCB7c2VvX2tleXdvcmRzfSBhbmQgYWxsIHNtYXJ0eSB0YWdzIGFuZCBVRFRzIGhlcmUpJzsKJGxhbmdbJ3RpdGxlX21ldGFfdGl0bGUnXSA9ICdQYWdlIE1ldGEgdGl0bGUnOwokbGFuZ1sndGl0bGVfbWV0YV9oZWxwJ10gPSAnKFRoZSBwYWdlIHRpdGxlIHRvIGJlIHVzZWQgaW4gdGhlIE1ldGEgdGl0bGUgdGFncy4gWW91IGNhbiB1c2UgdGhlIHRhZ3Mge3RpdGxlfSwge3BhZ2V0aXRsZX0sIHtzZW9fa2V5d29yZHN9IGFuZCBhbGwgc21hcnR5IHRhZ3MgYW5kIFVEVHMgaGVyZSknOwokbGFuZ1snZGVzY3JpcHRpb25fYmxvY2tfdGl0bGUnXSA9ICdOYW1lIG9mIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jayc7CiRsYW5nWydkZXNjcmlwdGlvbl9ibG9ja19oZWxwJ10gPSAnKFRoZSBuYW1lIG9mIHlvdXIgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrLiBQbGVhc2Ugc2VlIGJlbG93IGZvciBhbiBleHBsYW5hdGlvbiknOwokbGFuZ1snZGVmYXVsdF9rZXl3b3Jkc190aXRsZSddID0gJ0tleXdvcmRzIHRvIGFsd2F5cyBpbmNsdWRlJzsKJGxhbmdbJ2RlZmF1bHRfa2V5d29yZHNfaGVscCddID0gJyhBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGtleXdvcmRzIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgb24gZXZlcnkgcGFnZSknOwoKJGxhbmdbJ3RpdGxlX3NpdGVtYXBfZGVzY3JpcHRpb24nXSA9ICdHb29nbGUgU2l0ZW1hcCBhbmQgQ3Jhd2xlciBTZXR0aW5ncyc7CiRsYW5nWydjcmVhdGVfc2l0ZW1hcF90aXRsZSddID0gJ0NyZWF0ZSBhbiBYTUwgR29vZ2xlIFNpdGVtYXAqJzsKJGxhbmdbJ3B1c2hfc2l0ZW1hcF90aXRsZSddID0gJ0F1dG9tYXRpY2FsbHkgcHVzaCB0aGUgc2l0ZW1hcCB0byBHb29nbGUgYWZ0ZXIgY29udGVudCBjaGFuZ2VzJzsKJGxhbmdbJ2NyZWF0ZV9yb2JvdHNfdGl0bGUnXSA9ICdDcmVhdGUgYSByb2JvdHMudHh0IGZpbGUqJzsKJGxhbmdbJ3ZlcmlmaWNhdGlvbl90aXRsZSddID0gJ1NpdGUgdmVyaWZpY2F0aW9uIGNvZGUnOwokbGFuZ1sndmVyaWZpY2F0aW9uX2hlbHAnXSA9ICcoVGhlIHNpdGUgdmVyaWZpY2F0aW9uIGNvZGUgeW91IG9idGFpbiBmcm9tIEdvb2dsZSBXZWJtYXN0ZXIgVG9vbHMsIGp1c3QgdGhlIGhhc2gsIG5vdCB0aGUgY29tcGxldGUgbWV0YSB0YWcpJzsKCiRsYW5nWyd0aXRsZV9hbGVydHNfdXJnZW50J10gPSAnVG8gYmUgZml4ZWQgaW1tZWRpYXRlbHknOwokbGFuZ1sndGl0bGVfYWxlcnRzX2ltcG9ydGFudCddID0gJ1RvIGJlIGZpeGVkIGFzIHNvb24gYXMgcG9zc2libGUnOwokbGFuZ1sndGl0bGVfYWxlcnRzX25vdGljZXMnXSA9ICdUaGluZ3MgeW91IHNob3VsZCBjb25zaWRlciBmaXhpbmcnOwokbGFuZ1snbm90aGluZ190b19iZV9maXhlZCddID0gJ1RoZXJlIGFyZSBubyBhY3Rpb25zIHlvdSBuZWVkIHRvIHRha2UgaW4gdGhpcyBjYXRlZ29yeSc7CgokbGFuZ1snc2F2ZSddID0gJ1NhdmUgc2V0dGluZ3MnOwokbGFuZ1snbm9uZSddID0gJyhub25lKSc7CiRsYW5nWydzZXR0aW5nc191cGRhdGVkJ10gPSAnVGhlIFNFTyBzZXR0aW5ncyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLic7CiRsYW5nWydwcm9ibGVtX2FsZXJ0J10gPSAnaGFzIGRldGVjdGVkIHNldmVyZSBwcm9ibGVtcyB3aXRoIHlvdXIgU0VPLiAlcyc7CiRsYW5nWydwcm9ibGVtX2xpbmtfdGl0bGUnXSA9ICdDbGljayBoZXJlIHRvIGZpeCB0aGVtJzsKCiRsYW5nWydoZWxwX2Rlc2NyaXB0aW9uX2NvbnRlbnQnXSA9ICc8Yj5Ib3cgdG8gdXNlIHRoZSAiZGVzY3JpcHRpb24gY29udGVudCBibG9jayI6PC9iPjxiciAvPlRvIGJlIGFibGUgdG8gZW50ZXIgYSBwYWdlIGRlc2NyaXB0aW9uIHdoZW4gZWRpdGluZyBhIHBhZ2UsIHlvdSBtdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBjb2RlIGFueXdoZXJlIG9uIGV2ZXJ5IHRlbXBsYXRlOjxiciAvPjxiciAvPjxwcmU+e2NhcHR1cmV9e2NvbnRlbnQgYmxvY2s9Ik1FVEEgRGVzY3JpcHRpb24iIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX08L3ByZT48YnIgLz5UaGVuLCBwdXQgIk1FVEEgRGVzY3JpcHRpb24iIGludG8gdGhlIGZpZWxkICJOYW1lIG9mIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jazxiciAvPjxiciAvPkFsdGVybmF0aXZlbHksIGVuYWJsZSB0aGUgb3B0aW9uICZxdW90O0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgZGVzY3JpcHRpb25zIHdoZXJlIG5vbmUgaXMgZ2l2ZW4mcXVvdDsuIFRoaXMgaXMgbm90IGFzIGdvb2QgYnV0IHN0aWxsIGJldHRlciB0aGFuIG5vdGhpbmcuJzsKJGxhbmdbJ2hlbHBfc2l0ZW1hcF9yb2JvdHMnXSA9ICcqKSBUbyB1c2UgdGhlIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIGEgc2l0ZW1hcC0gYW5kIHJvYm90cy1maWxlLCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgeW91ciBDTVNNUyBpbnN0YWxsYXRpb24gbXVzdCBiZSB3cml0ZWFibGUgdG8gdGhlIHdlYiBzZXJ2ZXIuIElmIHlvdXIgYWxyZWFkeSBoYXZlIGEgc2l0ZW1hcC54bWwgYW5kL3ByIHJvYm90cy50eHQgZmlsZSwgYm90aCBvZiB0aGVtIG11c3QgYmUgd3JpdGVhYmxlIHRvIHRoZSB3ZWIgc2VydmVyLic7CgokbGFuZ1sndXNlX3N0YW5kYXJkX29yX2R1YmxpbmNvcmVfbWV0YSddID0gJ1VzZSBhdCBsZWFzdCBvbmUgb2YgdGhlIHN0YW5kYXJkIG9yIER1YmxpbiBDb3JlIE1ldGEgVGFnIGdlbmVyYXRvcnMnOwokbGFuZ1sndXNlX3N0YW5kYXJkX21ldGEnXSA9ICdZb3Ugc2hvdWxkIGFsd2F5cyBlbmFibGUgdGhlIHN0YW5kYXJkIE1ldGEgZ2VuZXJhdG9yJzsKJGxhbmdbJ21ldGFfZGVzY3JpcHRpb25fbWlzc2luZyddID0gJ1RoZSBwYWdlIDxpPiVzPC9pPiBpcyBsYWNraW5nIGEgTWV0YSBkZXNjcmlwdGlvbic7CiRsYW5nWydtZXRhX2Rlc2NyaXB0aW9uX3Nob3J0J10gPSAnVGhlIE1ldGEgZGVzY3JpcHRpb24gb2YgPGk+JXM8L2k+IGlzIHJhdGhlciBzaG9ydCAoIDwgNzUgY2hhcnMpJzsKJGxhbmdbJ2R1cGxpY2F0ZV90aXRsZXMnXSA9ICdUaGUgcGFnZXMgPGk+JXM8L2k+IGFuZCA8aT4lczwvaT4gaGF2ZSB0aGUgc2FtZSB0aXRsZSc7CiRsYW5nWydkdXBsaWNhdGVfZGVzY3JpcHRpb25zJ10gPSAnVGhlIHBhZ2VzIDxpPiVzPC9pPiBhbmQgPGk+JXM8L2k+IGhhdmUgdGhlIHNhbWUgTWV0YSBkZXNjcmlwdGlvbic7CiRsYW5nWydwcm92aWRlX2FuX2F1dGhvciddID0gJ1lvdSBzaG91bGQgcHJvdmlkZSB0aGUgbmFtZSBvZiB0aGUgcGFnZSBwdWJsaXNoZXInOwokbGFuZ1snc2V0X3VwX2Rlc2NyaXB0aW9uX2Jsb2NrJ10gPSAnU2V0IHVwIGEgY29udGVudCBibG9jayBmb3IgTWV0YSBkZXNjcmlwdGlvbnMnOwokbGFuZ1snYWN0aXZhdGVfcHJldHR5X3VybHMnXSA9ICdBY3RpdmF0ZSB0aGUgcHJldHR5IFVSTHMgZmVhdHVyZSBvZiBDTVNNUyc7CiRsYW5nWydwcmV0dHlfdXJsc19oZWxwJ10gPSAnPGEgaHJlZj0iaHR0cDovL3dpa2kuY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL1VzZXJfSGFuZGJvb2svSW5zdGFsbGF0aW9uL09wdGlvbmFsX1NldHRpbmdzIiB0YXJnZXQ9Il9ibGFuayI+R2V0IGhlbHA8L2E+JzsKJGxhbmdbJ2NyZWF0ZV9hX3NpdGVtYXAnXSA9ICdIYXZlIGEgR29vZ2xlIFhNTCBTaXRlbWFwIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmb3IgeW91JzsKJGxhbmdbJ2F1dG9tYXRpY2FsbHlfdXBsb2FkX3NpdGVtYXAnXSA9ICdIYXZlIHlvdXIgWE1MIFNpdGVtYXAgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byBHb29nbGUnOwokbGFuZ1snY3JlYXRlX3JvYm90cyddID0gJ0hhdmUgYSByb2JvdHMudHh0IGZpbGUgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB5b3UnOwokbGFuZ1snc2l0ZW1hcF9ub3Rfd3JpdGVhYmxlJ10gPSAnWW91ciBzaXRlbWFwLnhtbCBmaWxlIGlzIG5vdCB3cml0ZWFibGUnOwokbGFuZ1snY2htb2Rfc2l0ZW1hcCddID0gJ1NldCB5b3VyIC9zaXRlbWFwLnhtbCBmaWxlIHRvIGJlIHdyaXRlYWJsZSBieSB0aGUgd2ViIHNlcnZlcic7CiRsYW5nWydyb2JvdHNfbm90X3dyaXRlYWJsZSddID0gJ1lvdXIgcm9ib3RzLnR4dCBmaWxlIGlzIG5vdCB3cml0ZWFibGUnOwokbGFuZ1snbm9fb3BlbmdyYXBoX2FkbWlucyddID0gJ1lvdSBoYXZlIG5vdCBzZXQgYW4gT3BlbkdyYXBoIGFkbWluIGFwcGxpY2F0aW9uIHJlc3AuIGFkbWluIGxpc3QnOwokbGFuZ1snbm9fb3BlbmdyYXBoX3R5cGUnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBwYWdlIHR5cGUnOwokbGFuZ1snbm9fb3BlbmdyYXBoX3NpdGVuYW1lJ10gPSAnWW91IGhhdmUgbm90IHNldCB0aGUgT3BlbkdyYXBoIHNpdGUgbmFtZSc7CiRsYW5nWydub19vcGVuZ3JhcGhfaW1hZ2UnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IGFuIE9wZW5HcmFwaCBkZWZhdWx0IGltYWdlJzsKJGxhbmdbJ2NobW9kX3JvYm90cyddID0gJ1NldCB5b3VyIC9yb2JvdHMudHh0IGZpbGUgdG8gYmUgd3JpdGVhYmxlIGJ5IHRoZSB3ZWIgc2VydmVyJzsKJGxhbmdbJ2VkaXRfcGFnZSddID0gJ0VkaXQgJXMnOwokbGFuZ1snZWRpdF9wYWdlX3RvX2ZpeCddID0gJ0NsaWNrIGhlcmUgdG8gZWRpdCB0aGUgcGFnZSBhbmQgZml4IHRoZSBwcm9ibGVtJzsKJGxhbmdbJ3Zpc2l0X3NldHRpbmdzJ10gPSAnQ2hhbmdlIHNldHRpbmdzJzsKCiRsYW5nWydwYWdlX2lkJ10gPSAnSUQnOwokbGFuZ1sncGFnZV9uYW1lJ10gPSAnUGFnZSBuYW1lJzsKJGxhbmdbJ3ByaW9yaXR5J10gPSAnU2l0ZW1hcCBQcmlvcml0eSc7CiRsYW5nWydvZ190eXBlJ10gPSAnT3BlbkdyYXBoIHR5cGUnOwokbGFuZ1sna2V5d29yZHMnXSA9ICcjIEtleXdvcmRzJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snaW5kZXgnXSA9ICdJbmRleGFibGUnOwoKJGxhbmdbJ2NsaWNrX3RvX2FkZF9kZXNjcmlwdGlvbiddID0gJ0NsaWNrIGhlcmUgdG8gYWRkIGEgcGFnZSBkZXNjcmlwdGlvbic7CiRsYW5nWyd0b2dnbGUnXSA9ICd0b2dnbGUnOwokbGFuZ1sncmVzZXQnXSA9ICdyZXNldCc7CiRsYW5nWydyZXNldF90b19kZWZhdWx0J10gPSAnUmVzZXQgdGhpcyB0byB0aGUgZGVmYXVsdCB2YWx1ZSc7CiRsYW5nWydlZGl0X3ZhbHVlJ10gPSAnRWRpdCB0aGlzIHZhbHVlJzsKCiRsYW5nWydoZWxwX29wZW5ncmFwaCddID0gJ0xvb2sgPGEgaHJlZj0iaHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3Mvb3BlbmdyYXBoI3R5cGVzIiB0YWdldD0iX2JsYW5rIj5oZXJlPC9hPiBmb3IgYSBsaXN0IG9mIGFsbG93ZWQgdmFsdWVzJzsKJGxhbmdbJ2VudGVyX25ld19vZ3R5cGUnXSA9ICdFbnRlciB0aGUgbmV3IHZhbHVlIGZvciB0aGlzIHBhZ2VcJ3MgT3BlbkdyYXBoIHR5cGUnOwokbGFuZ1snaGVscF9uZXdfb2d0eXBlJ10gPSAnTGVhdmUgYmxhbmsgdG8gcmV2ZXJ0IHRvIHRoZSBkZWZhdWx0IHNldHRpbmcnOwoKJGxhbmdbJ2VudGVyX25ld19rZXl3b3JkcyddID0gJ0VudGVyIHRoZSBuZXcga2V5d29yZHMgZm9yIHRoaXMgcGFnZSc7CiRsYW5nWydoZWxwX25ld19rZXl3b3JkcyddID0gJ1doaXRlc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Yga2V5d29yZHMuIExlYXZlIGJsYW5rIHRvIHJldmVydCB0byBhdXRvIGdlbmVyYXRlZCBrZXl3b3Jkcyc7CgokbGFuZ1snZ3JvdXB0aXRsZV9vcGVuZ3JhcGgnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIE9wZW5HcmFwaCByZWxhdGVkIHByb2JsZW0ocyknOwokbGFuZ1snZ3JvdXB0aXRsZV9zeXN0ZW0nXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIHN5c3RlbSBjb25maWd1cmF0aW9uJzsKJGxhbmdbJ2dyb3VwdGl0bGVfcGFnZXMnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgb24geW91ciBjb250ZW50IHBhZ2VzJzsKJGxhbmdbJ2dyb3VwdGl0bGVfc2V0dGluZ3MnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIFNFTyBTZXR0aW5ncyc7CiRsYW5nWydncm91cHRpdGxlX2Rlc2NyaXB0aW9ucyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgcGFnZSBkZXNjcmlwdGlvbnMnOwokbGFuZ1snZ3JvdXB0aXRsZV90aXRsZXMnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIHBhZ2UgdGl0bGVzJzsKCiRsYW5nWyd2aWV3X2FsbCddID0gJ1ZpZXcgYWxsJzsKCiRsYW5nWyd0aXRsZV9tZXRhc2V0dGluZ3MnXSA9ICdQYWdlIHRpdGxlICYgTWV0YSBpbmZvcm1hdGlvbic7CiRsYW5nWyd0aXRsZV9zaXRlbWFwc2V0dGluZ3MnXSA9ICdTaXRlbWFwICYgQ3Jhd2xlciBzZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9rZXl3b3Jkc2V0dGluZ3MnXSA9ICdLZXl3b3JkIGdlbmVyYXRvciBzZXR0aW5ncyc7CgokbGFuZ1snZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZSddID0gJ0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBwYWdlIGRlc2NyaXB0aW9uIHdoZXJlIG5vbmUgaXMgcHJvdmlkZWQnOwokbGFuZ1snZGVzY3JpcHRpb25fYXV0b190aXRsZSddID0gJ1RleHQgZm9yIGF1dG8tZ2VuZXJhdGVkIGRlc2NyaXB0aW9ucyc7CiRsYW5nWydkZXNjcmlwdGlvbl9hdXRvX2hlbHAnXSA9ICcoWW91IDxiPm11c3Q8L2I+IGluY2x1ZGUgdGhlIHRhZyB7a2V5d29yZHN9IGhlcmUpJzsKCiRsYW5nWydzZXRfdXBfYXV0b19kZXNjcmlwdGlvbiddID0gJ1NldCB1cCB0aGUgZGVzY3JpcHRpb24gYXV0by1nZW5lcmF0b3IgYW5kIGVuc3VyZSB0aGUgdGV4dCBjb250YWlucyB0aGUgdGFnIHtrZXl3b3Jkc30nOwokbGFuZ1snYXV0b19nZW5lcmF0ZWQnXSA9ICdBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCc7CiRsYW5nWydhbmQnXSA9ICdhbmQnOwoKJGxhbmdbJ3RpdGxlX2tleXdvcmRfd2VpZ2h0J10gPSAnS2V5d29yZCB3ZWlnaHQgc2V0dGluZ3MnOwokbGFuZ1sna2V5d29yZF9taW5sZW5ndGhfdGl0bGUnXSA9ICdNaW5pbXVtIGtleXdvcmQgbGVuZ3RoJzsKJGxhbmdbJ2tleXdvcmRfbWlubGVuZ3RoX2hlbHAnXSA9ICcoVGhlIG1pbmltdW0gbGVuZ3RoIG9mIGEgd29yZCB0byBiZSBjb25zaWRlcmVkIGFzIGEga2V5d29yZCknOwokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgdGl0bGUnOwokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfaGVscCddID0gJyhUaGUgd2VpZ2h0IG9mIHdvcmRzIGluIHRoZSBwYWdlIHRpdGxlLiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7CiRsYW5nWydrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF90aXRsZSddID0gJ1dlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSBkZXNjcmlwdGlvbic7CiRsYW5nWydrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgZGVzY3JpcHRpb24uIFRoZSBoaWdoZXIgYSB3b3JkXCdzIHdlaWdodCwgdGhlIG1vcmUgbGlrZWx5IGl0IGlzIHRvIGJlY29tZSBhIGtleXdvcmQpJzsKJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIGNvbnRlbnQgaGVhZGxpbmVzJzsKJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIHdlaWdodCBvZiB3b3JkcyBiZXR3ZWVuICZsdDtoMSZndDsgdG8gJmx0O2g2Jmd0OyB0YWdzLiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7CiRsYW5nWydrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIHBsYWluIGNvbnRlbnQnOwokbGFuZ1sna2V5d29yZF9jb250ZW50X3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW5zaWRlIHRoZSBwbGFpbiBjb250ZW50LiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7CgokbGFuZ1sna2V5d29yZF9taW5pbXVtX3dlaWdodF90aXRsZSddID0gJ01pbmltdW0gdG90YWwgd2VpZ2h0IG9mIGEga2V5d29yZCc7CiRsYW5nWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIG1pbmltdW0gdG90YWwgd2VpZ2h0IG9mIGEgd29yZCB0byBiZWNvbWUgYSBrZXl3b3JkLiBTaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBoaWdoZXN0IHdlaWdodCBmcm9tIGFib3ZlLiBUaGUgc21hbGxlciB0aGUgbnVtYmVyLCB0aGUgbW9yZSBrZXl3b3JkcyB5b3UgZ2V0KSc7CgokbGFuZ1snaGVscF9rZXl3b3JkX2dlbmVyYXRvciddID0gJ1RoZSBzZXR0aW5ncyB5b3UgY2hhbmdlIG9uIHRoaXMgcGFnZSB3aWxsIG5vdCBhZmZlY3QgYW55IGtleXdvcmRzIHlvdSBlbnRlciBtYW51YWxseS4gRmVlbCBmcmVlIHRvIHBsYXkgd2l0aCBhbGwgdmFsdWVzIHVudGlsIHlvdSBnZXQgdGhlIGJlc3QgcmVzdWx0cyBmb3IgeW91ciBwYWdlLic7CgokbGFuZ1sndGl0bGVfa2V5d29yZF9leGNsdWRlJ10gPSAnS2V5d29yZCBleGNsdXNpb24gbGlzdCc7CiRsYW5nWydrZXl3b3JkX2V4Y2x1ZGVfdGl0bGUnXSA9ICdXb3JkcyB0byBuZXZlciBjb25zaWRlciBhcyBrZXl3b3Jkcyc7CiRsYW5nWydrZXl3b3JkX2V4Y2x1ZGVfaGVscCddID0gJyhQcm92aWRlIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgdGhhdCBzaG91bGQgbmV2ZXIgYXBwZWFyIGluIGtleXdvcmQgbGlzdHMpJzsKCiRsYW5nWydpbmNyZWFzZV9wcmlvcml0eSddID0gJ0luY3JlYXNlIHByaW9yaXR5IGJ5IDEwJSc7CiRsYW5nWydkZWNyZWFzZV9wcmlvcml0eSddID0gJ0luY3JlYXNlIHByaW9yaXR5IGJ5IDEwJSc7CgokbGFuZ1sndGl0bGVfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiUmVnZW5lcmF0ZSBzaXRlbWFwIGFuZCByb2JvdHMudHh0IjsKJGxhbmdbJ2J1dHRvbl9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJSZWdlbmVyYXRlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQgbm93IjsKJGxhbmdbJ3RleHRfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiSXQgY2FuIGJlIG5lY2Vzc2FyeSB0byByZWdlbmVyYXRlIHRoZSBzaXRlbWFwIGFuZCByb2JvdHMudHh0IGZpbGUgYWZ0ZXIgZXh0ZW5zaXZlIGNoYW5nZXMgdG8gdGhlIHBhZ2Ugc3RydWN0dXJlIjsKJGxhbmdbJ3NpdGVtYXBfcmVnZW5lcmF0ZWQnXSA9ICJCb3RoIHRoZSBzaXRlbWFwIGFuZCB0aGUgcm9ib3RzLnR4dCBmaWxlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlZ2VuZXJhdGVkLiI7CgokbGFuZ1snaW5zdGFsbF9kYXRhYmFzZV9lcnJvciddID0gIkFuIGVycm9yIGhhcyBvY2N1cmVkIGR1cmluZyBpbnN0YWxsYXRpb246IFRoZSBkYXRhYmFzZSB0YWJsZSBjb3VsZCBub3QgYmUgY3JlYXRlZC4iOwokbGFuZ1snbm9fdXJsX2ZvcGVuJ10gPSAiTm90IHBvc3NpYmxlIGFzIGFsbG93X3VybF9mb3BlbiBoYXMgbm90IGJlZW4gc2V0IHRvICZxdW90O29uJnF1b3Q7IGluIHlvdXIgcGhwIGNvbmZpZ3VyYXRpb24uIjsKJGxhbmdbJ3RpdGxlX2FkZGl0aW9uYWxfbWV0YV90YWdzJ10gPSAiQWRkaXRpb25hbCBNZXRhIHRhZ3MiOwokbGFuZ1snYWRkaXRpb25hbF9tZXRhX3RhZ3NfdGl0bGUnXSA9ICJBZGRpdGlvbmFsIE1ldGEgdGFncyB0byBiZSBpbnNlcnRlZCI7CiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc19oZWxwJ10gPSAiU3BlY2lmeSBhZGRpdGlvbmFsIE1ldGEgdGFncyBoZXJlIHRvIGJlIGluc2VydGVkIGludG8gdGhlIHBhZ2UgaGVhZGVyLiBZb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyBoZXJlLiI7CgokbGFuZ1snaGVscF9zaG93YmFzZSddID0gIlNldCB0aGlzIHBhcmFtZXRlciB0byA8Y29kZT5mYWxzZTwvY29kZT4gdG8gc3VwcHJlc3MgdGhlIG91dHB1dCBvZiB0aGUgYmFzZSBocmVmIHRhZy4iOwoKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4yIC0gMDYuIEphbnVhcnkgMjAxMS4gU2V2ZXJhbCBidWdmaXhlcyBhbmQgZW5oYW5jZW1lbnRzLjwvbGk+CjxsaT5WZXJzaW9uIDEuMSAtIDAyLiBOb3ZlbWJlciAyMDEwLiBTZXZlcmFsIGJ1Z2ZpeGVzLjwvbGk+CjxsaT5WZXJzaW9uIDEuMCAtIDI0IEF1Z3VzdCAyMDEwLiBJbml0aWFsIFJlbGVhc2UuPC9saT4KPC91bD4nOwoKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KPHA+U0VPIFRvb2xzIGhlbHAgeW91IGluIGdldHRpbmcgeW91ciBTRU8gKFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uKSByaWdodC4gVGhlIG1vZHVsZSBhZGRzIHNldmVyYWwgU0VPIGNhcGFiaWxpdGllcyB0byB5b3VyIENNU01TIGluc3RhbGxhdGlvbiBhbmQgYWxlcnRzIHlvdSBpZiB5b3UgbWlzc2VkIG91dCBvbiBzb21ldGhpbmcgU0VPIHJlbGF0ZWQuIEN1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOjwvcD4KPHVsPgo8bGk+LSBnZW5lcmF0ZXMgTWV0YSB0YWdzIGluIHN0YW5kYXJkIGh0bWwsIER1YmxpbiBDb3JlIGFuZCBPcGVuR3JhcGggZm9ybWF0czwvbGk+CjxsaT4tIGF1dG9tYXRpY2FsbHkgZXh0cmFjdHMga2V5d29yZHMgZnJvbSB5b3VyIHBhZ2VzIGFuZCBhZGRzIHRoZW0gdG8gdGhlIG1ldGEgdGFncyBhbmQgcGFnZSB0aXRsZTwvbGk+CjxsaT4tIGxldHMgeW91IGRldGVybWluZSB3aXRoIGEgc2luZ2xlIGNsaWNrIHdoZXRoZXIgY2VydGFpbiBwYWdlcyBzaG91bGQgYmUgaW5kZXhlZCBieSBzZWFyY2ggZW5naW5lcyBvciBub3Q8L2xpPgo8bGk+LSBnZW5lcmF0ZXMgYSBzaXRlbWFwLnhtbCBmaWxlIHdpdGggeW91ciBwYWdlcyB3aGlsZSBnaXZpbmcgeW91IGZ1bGwgY29udHJvbCBvdmVyIHRoZSBwcmlvcml0aWVzIG9mIHlvdXIgcGFnZXM8L2xpPgo8bGk+LSBnZW5lcmF0ZXMgYSByb2JvdHMudHh0IGZpbGUgZXhwbGljaXRseSBkaXNhbGxvd2luZyBhY2Nlc3MgdG8gcGFnZXMgeW91IGRvblwndCB3YW50IHRvIGJlIGluZGV4ZWQ8L2xpPgo8bGk+LSBhbGVydHMgeW91IHdoZW4gdGhlcmUgYXJlIHNldmVyYWwgcGFnZXMgZmVhdHVyaW5nIHRoZSBzYW1lIHBhZ2UgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnM8L2xpPgo8bGk+LSBhbGVydHMgeW91IHdoZW4gdmVyeSBzaG9ydCBwYWdlIG1ldGEgZGVzY3JpcHRpb25zIGFyZSBkZXRlY3RlZDwvbGk+CjxsaT4tIGF1dG9tYXRpY2FsbHkgc3VibWl0cyB5b3VyIHNpdGVtYXAgZmlsZSB0byBHb29nbGUgd2hlbiB5b3UgY2hhbmdlIHlvdXIgY29udGVudDwvbGk+IAo8L3VsPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+Rmlyc3QsIG9wZW4gYWxsIHRlbXBsYXRlcyB3aGVyZSB5b3Ugd2FudCBkbyB1c2UgU0VPIFRvb2xzLiBSZW1vdmUgdGhlIGNvbXBsZXRlICZsdDt0aXRsZSZndDsgdGFnIGFuZCB0aGUge21ldGFkYXRhfSB0YWcgKGV2ZW4gaWYgaXQgc2F5cyB0byBuZXZlciByZW1vdmUgaXQpIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgdGFnPC9wPgo8cHJlPgp7U0VPVG9vbHN9CjwvcHJlPjxiciAvPgo8cD5OZXh0LCBhdCB0aGUgYm90dG9tIG9mIHlvdXIgdGVtcGxhdGUgKGFmdGVyIHRoZSBjbG9zaW5nICZsdDsvYm9keSZndDsgdGFnKSwgaW5zZXJ0IHRoZSBmb2xsb3dpbmcgY29kZTo8L3A+CjxwcmU+CntjYXB0dXJlfXtjb250ZW50IGJsb2NrPSJQYWdlIERlc2NyaXB0aW9uIiBvbmVsaW5lPSJ0cnVlIn17L2NhcHR1cmV9CjwvcHJlPjxiciAvPgo8cD5UaGlzIGlzIHdoZXJlIHlvdVwnbGwgZW50ZXIgYSBzaG9ydCBwYWdlIGRlc2NyaXB0aW9uIChvbmUgb3IgdHdvIHNlbnRlbmNlcykgdGhhdCB3aWxsIGFwcGVhciBpbiB0aGUgc2VhcmNoIGVuZ2luZVwncyByZXN1bHRzIGFuZCBpZiwgZm9yIGV4YW1wbGUsIHNvbWVvbmUgc2hhcmVzIGEgbGluayB0byB5b3VyIHBhZ2Ugb24gZmFjZWJvb2suPC9wPgo8cD5Ob3csIHZpc2l0IHRoZSBzZXR0aW5ncyB0YWJzIGZvciBwYWdlIHRpdGxlICYgbWV0YSBpbmZvcm1hdGlvbiwgdGhlIHNpdGVtYXAgJiBjcmF3bGVyIHNldHRpbmdzIGFuZCB0aGUga2V5d29yZCBnZW5lcmF0b3Igc2V0dGluZ3MgYW5kIGZpbGwgaW4gYWxsIHJlcXVpcmVkIGluZm9ybWF0aW9uIGZvciB5b3VyIHBhZ2UuIFVuZGVyICJOYW1lIG9mIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jayIgeW91IG5lZWQgdG8gZW50ZXIgdGhlIG5hbWUgb2YgdGhlIGNvbnRlbnQgYmxvY2sgeW91IGp1c3QgYWRkZWQgdG8geW91ciB0ZW1wbGF0ZXMgKCJQYWdlIERlc2NyaXB0aW9uIiBpbiBvdXIgZXhhbXBsZSkuIFRoZSB0YWIgIlNFTyBBbGVydHMiIHdpbGwgYWxlcnQgeW91IGlmIGl0IGRldGVjdHMgYW55dGhpbmcgdGhhdCBpcyByZXF1aXJlZCBidXQgbm90IGFjdGl2YXRlZCBvciBmaWxsZWQgaW4uIFlvdSBzaG91bGQgYWxzbyBjb25zaWRlciBzaWduaW5nIHVwIHlvdXIKc2l0ZSB3aXRoIEdvb2dsZSBXZWJtYXN0ZXIgdG9vbHMuIFRoZXJlLCBzZWxlY3QgIk1ldGEgdGFnIHZhbGlkYXRpb24iIGFuZCBwYXN0ZSB0aGUgdmVyaWZpY2F0aW9uIGNvZGUgKHF1aXRlIGEgbG9uZyBzdHJpbmcgb2YgY2hhcmFjdGVycyBhbmQgbnVtYmVycykgaW50byB0aGUgYm94ICJWZXJpZmljYXRpb24gQ29kZSIgaW4gIlNFTyBTZXR0aW5ncyIgdG8gYXV0b21hdGljYWxseSB2ZXJpZnkgdGhhdCB5b3UgYXJlIHJlYWxseQp0aGUgb3duZXIgb2YgeW91ciBwYWdlIChubyBuZWVkIHRvIHBhc3RlIHRoZSBHb29nbGUgTWV0YS1jb2RlIGludG8geW91ciB0ZW1wbGF0ZSkuPC9wPgo8cD5BcyBzb29uIGFzIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwLCBsb29rIGF0IHRoZSAiU0VPIEFsZXJ0cyIgdGFiIGFuZCBmaXggYWxsIHByb2JsZW1zIGRldGVjdGVkIGhlcmUuIFRha2UgY2FyZSB0byBpbnNlcnQgYSAodW5pcXVlKSBwYWdlIGRlc2NyaXB0aW9uIG9uIGV2ZXJ5IHBhZ2UgeW91IGVkaXQgaW4gdGhlIGZpZWxkICJQYWdlIERlc2NyaXB0aW9uIiBhdCB0aGUgYm90dG9tIG9mIHlvdXIgIkVkaXQgUGFnZSIgZm9ybS48L3A+CjxwPlRvIHNldCB5b3VyIG93biBrZXl3b3JkcyAoaW5zdGVhZCBvZiB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgb25lcykgb3IgT3BlbkdyYXBoIHR5cGUgZm9yIGNlcnRhaW4gcGFnZXMsIHZpc2l0IHRoZSAiUGFnZSBzZXR0aW5ncyIgdGFiIHdoZXJlIHlvdVwnbGwgZmluZCBhIGxpc3Qgb2YgYWxsIHBhZ2VzIHlvdSBoYXZlIGluIHlvdXIgc3lzdGVtLiBUaGVyZSwgeW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgc2l0ZW1hcCBwcmlvcml0eSAod2hpY2ggaXMgYXV0by1jYWxjdWxhdGVkIGJ5IGRlZmF1bHQpIG9mIGEgcGFnZSB0byBpbmRpY2F0ZSB0aGF0IGl0IHNob3VsZApiZSBjb25zaWRlcmVkIG1vcmUgaW1wb3J0YW50IGZvciBzZWFyY2ggZW5naW5lIG1hdGNoZXMgb24geW91ciBwYWdlIG9yIGV4Y2x1ZGUgY2VydGFpbiBwYWdlcyBmcm9tIHRoZSBzZWFyY2ggaW5kZXguPC9wPgo8cD5TRU8gVG9vbHMgd2lsbCBhbHNvIGF1dG9tYXRpY2FsbHkgaW5zZXJ0IGEgbGluayB0byB0aGUgaW1hZ2UgdG8gYmUgdXNlZCBhcyB0aGUgbWFpbiBpbWFnZSBvZiB5b3VyIHBhZ2UgaWYgeW91IHNlbGVjdCBhbiAiSW1hZ2UiIGZvciB0aGUgcGFnZSBmcm9tIHdpdGhpbiB5b3VyIHBhZ2VcJ3MgIk9wdGlvbnMiIHRhYiAodGhpcyBpcyBpbXBvcnRhbnQgZm9yIHBlb3BsZSBzdWJtaXR0aW5nIGEgbGluayB0byB5b3VyIHBhZ2UgZS5nLiBvbiBmYWNlYm9vaykuIEFsc28sIGlmIHlvdSBhcmUgdXNpbmcgT3BlbkdyYXBoLCB0aGUgaW1hZ2Ugc2VsZWN0ZWQgaGVyZQp3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBpbWFnZSB5b3Ugc3BlY2lmaWVkIGZyb20gd2l0aGluICJTRU8gU2V0dGluZ3MiLiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB5b3UgbmVlZCB0byB1cGxvYWQgdGhvc2UgaW1hZ2VzIHRvIHlvdXIgL3VwbG9hZHMvaW1hZ2VzIGRpcmVjdG9yeS48L3A+CjxoMz5DYW4gSSB1c2Ugc21hcnR5IHZhcmlhYmxlcz88L2gzPgo8cD5Zb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyB3aXRoaW4gdGhlIHNldHRpbmdzIGZpZWxkcyA8aT5QYWdlIHRpdGxlPC9pPiwgPGk+TWV0YSBwYWdlIHRpdGxlPC9pPiwgPGk+QXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZGVzY3JpcHRpb25zPC9pPiBhbmQgPGk+QWRkaXRpb25hbCBtZXRhIHRhZ3M8L2k+LiBFbnRlciA8Y29kZT57ZGVidWd9PC9jb2RlPiB0byBzZWUgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdmFyaWFibGVzLjwvcD4KPGgzPldoaWNoIHNtYXJ0eSB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkIGJ5IFNFT1Rvb2xzPzwvaDM+Cjxjb2RlPnskc2VvX2tleXdvcmRzfTwvY29kZT46IEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGtleXdvcmRzIHNldCBmb3IgdGhlIHBhZ2UgKGluY2x1ZGluZyB0aGUgZGVmYXVsdCBrZXl3b3Jkcyk8YnIgLz4KPGNvZGU+eyR0aXRsZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlIChpbmNsdWRpbmcgdGhlIGRlZmF1bHQga2V5d29yZHMpPGJyIC8+Cjxjb2RlPnskZGVmYXVsdF9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBkZWZhdWx0IGtleXdvcmRzPGJyIC8+Cjxjb2RlPnskcGFnZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlICh3aXRob3V0IHRoZSBkZWZhdWx0IGtleXdvcmRzKSAKPGgzPlN1cHBvcnQ8L2gzPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLTIwMTEsIEhlbm5pbmcgU2NoYWVmZXIgPGEgaHJlZj0ibWFpbHRvOmhlbm5pbmcuc2NoYWVmZXJAZ21haWwuY29tIj4mbHQ7aGVubmluZy5zY2hhZWZlckBnbWFpbC5jb20mZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEluc3RhbGwoKQoJICAgV2hlbiB5b3VyIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHlvdSBtYXkgbmVlZCB0byBkbyBzb21lCgkgICBzZXR1cC4gVHlwaWNhbCB0aGluZ3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIGNyZWF0aW9uCgkgICBhbmQgcHJlcG9wdWxhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsIGRhdGFiYXNlIHNlcXVlbmNlcywKCSAgIHBlcm1pc3Npb25zLCBwcmVmZXJlbmNlcywgZXRjLgoJICAgCSAgIAoJICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBjcmVhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsCgkgICBjaGVjayBvdXQgdGhlIEFET0RCIERhdGEgRGljdGlvbmFyeSBwYWdlIGF0CgkgICBodHRwOi8vcGhwbGVucy5jb20vbGVucy9hZG9kYi9kb2NzLWRhdGFkaWN0Lmh0bQoJICAgCgkgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYSBzdHJpbmcgaW4gY2FzZSBvZiBhbnkgZXJyb3IsCgkgICBhbmQgQ01TIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBtb2R1bGUgaW5zdGFsbGVkLgoJICAgU3VjY2Vzc2Z1bCBpbnN0YWxscyBzaG91bGQgcmV0dXJuIEZBTFNFIG9yIG5vdGhpbmcgYXQgYWxsLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJCQoJCS8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24KCQkkZGIgPSYgJGdDbXMtPkdldERiKCk7CgkJCgkJLy8gbXlzcWwtc3BlY2lmaWMsIGJ1dCBpZ25vcmVkIGJ5IG90aGVyIGRhdGFiYXNlCgkJJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJCiAgICAgICAgLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiAgICAgICAgJGZsZHMgPSAiCgkJCWNvbnRlbnRfaWQgSSBLRVksCgkJCWluZGV4YWJsZSBJKDEpLAoJCQlrZXl3b3JkcyBDKDI1NSksCgkJCXByaW9yaXR5IEkoMyksCgkJCW9ndHlwZSBDKDMyKQoJCQkiOwoKCQkvLyBjcmVhdGUgaXQuIFRoaXMgc2hvdWxkIGRvIGVycm9yIGNoZWNraW5nLCBidXQgSSdtIGEgbGF6eSBzb2QuCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzIiwKCQkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkvLyBUZXN0IGlmIGluc3RhbGxhdGlvbiB3b3JrZWQ6CgkJJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyc7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCWlmICghJHJlc3VsdCkgewoJCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2luc3RhbGxfZGF0YWJhc2VfZXJyb3InKTsKCQl9CgkJCgkJLy8gcGVybWlzc2lvbnMKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignRWRpdCBTRU8gU2V0dGluZ3MnLCdFZGl0IFNFTyBTZXR0aW5ncycpOwogICAgICAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJywnRWRpdCBwYWdlIGRlc2NyaXB0aW9ucycpOwoKCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKCQkKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVuaW5zdGFsbCgpCgkgICBTb21ldGltZXMsIGFuIGV4Y2VwdGlvbmFsbHkgdW5lbmxpZ2h0ZW5lZCBvciBpZ25vcmFudAoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQKCSAgIHdvdWxkIGJlIGJlc3QgdG8gbGF5IGludG8gdGhlc2UgaWRpb3RzIHdpdGggYSBjbHVlc3RpY2ssCgkgICB3ZSB3aWxsIGRvIHRoZSBtYWduYW5pbW91cyB0aGluZyBhbmQgcmVtb3ZlIHRoZSBtb2R1bGUKCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMKCSAgIHRoYXQgYXJlIHNwZWNpZmljIHRvIGl0LgoJICAgVGhpcyBpcyB0aGUgbWV0aG9kIHdoZXJlIHdlIGRvIHRoaXMuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoJCS8vIFR5cGljYWwgRGF0YWJhc2UgUmVtb3ZhbAoJCSRkYiA9JiAkZ0Ntcy0+R2V0RGIoKTsKCQkKCQkvLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwkJCgkJCgkJLy8gcmVtb3ZlIHRoZSBwZXJtaXNzaW9ucwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdFZGl0IFNFTyBTZXR0aW5ncycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJyk7CgoJCQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVwZ3JhZGUoKQoJICAgSWYgeW91ciBtb2R1bGUgdmVyc2lvbiBudW1iZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNpb24KCSAgIG51bWJlciBvZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSwgdGhlIENNUyBBZG1pbiB3aWxsIGdpdmUKCSAgIHlvdSBhIGNoYW5jZSB0byB1cGdyYWRlIHRoZSBtb2R1bGUuIFRoaXMgaXMgdGhlIGZ1bmN0aW9uCgkgICB0aGF0IGFjdHVhbGx5IGhhbmRsZXMgdGhlIHVwZ3JhZGUuCgkgICBJZGVhbGx5LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBoYW5kbGUgdXBncmFkZXMgaW5jcmVtZW50YWxseSwKCSAgIHNvIHlvdSBjb3VsZCB1cGdyYWRlIGZyb20gdmVyc2lvbiAwLjAuMSB0byAxMC41Ljcgd2l0aAoJICAgYSBzaW5nbGUgY2FsbC4gRm9yIGEgZ3JlYXQgZXhhbXBsZSBvZiB0aGlzLCBzZWUgdGhlIE5ld3MKCSAgIG1vZHVsZSBpbiB0aGUgc3RhbmRhcmQgQ01TIGluc3RhbGwuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICRvbGR2ZXJzaW9uOwoJCXN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQoJCXsKCQkJY2FzZSAiMS4wIjoKCQkJICAgICBicmVhazsKCQkJY2FzZSAiMS4xIjoKCQkJICAgICBicmVhazsKCQkJY2FzZSAiMS4yIjoKCQkJCSBicmVhazsKCQl9CgkJCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1cGdyYWRlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/SEOTools.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNFT1Rvb2xzIC0gU2V2ZXJhbCB0b29scyB0byBoZWxwIHdpdGggU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24gYW5kIGNoZWNrIGZvciBzdWJvcHRpbWFsIFNFTy1yZWxhdGVkIHRoaW5ncy4KIyBWZXJzaW9uOiAwLjksIEhlbm5pbmcgU2NoYWVmZXIKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAxMCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojIFRoaXMgZmlsZSBvcmlnaW5hbGx5IGNyZWF0ZWQgYnkgTW9kdWxlTWFrZXIgbW9kdWxlLCB2ZXJzaW9uIDAuMy4yCiMgQ29weXJpZ2h0IChjKSAyMDEwIGJ5IFNhbXVlbCBHb2xkc3RlaW4gKHNqZ0BjbXNtYWRlc2ltcGxlLm9yZykgCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovL2Vycm9yX3JlcG9ydGluZyhFX0FMTCk7CgpjbGFzcyBTRU9Ub29scyBleHRlbmRzIENNU01vZHVsZQp7CgkKCWZ1bmN0aW9uIEdldE5hbWUoKQoJewoJCXJldHVybiAnU0VPVG9vbHMnOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRGcmllbmRseU5hbWUoKQoJICAgVGhpcyBjYW4gcmV0dXJuIGFueSBzdHJpbmcsIHByZWZlcmFibHkgYSBsb2NhbGl6ZWQgbmFtZQoJICAgb2YgdGhlIG1vZHVsZS4gVGhpcyBpcyB0aGUgbmFtZSB0aGF0J3Mgc2hvd24gaW4gdGhlCgkgICBBZG1pbiBNZW51cyBhbmQgc2VjdGlvbiBwYWdlcyAoaWYgdGhlIG1vZHVsZSBoYXMgYW4gYWRtaW4KCSAgIGNvbXBvbmVudCkuCgkgICAKCSAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7Cgl9CgoJCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgR2V0VmVyc2lvbigpCgkgICBUaGlzIGNhbiByZXR1cm4gYW55IHN0cmluZywgcHJlZmVyYWJseSBhIG51bWJlciBvcgoJICAgc29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgZm9yIGRlc2lnbmF0aW5nIGEgdmVyc2lvbi4KCSAgIFRoZSBDTVMgd2lsbCB1c2UgdGhpcyB0byBpZGVudGlmeSB3aGV0aGVyIG9yIG5vdAoJICAgdGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUgaXMgY3VycmVudCwgYW5kCgkgICB0aGUgbW9kdWxlIHdpbGwgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHVwZ3JhZGUKCSAgIGl0c2VsZiBpZiByZXF1ZXN0ZWQuCSAgIAoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0VmVyc2lvbigpCgl7CgkJcmV0dXJuICcxLjInOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRIZWxwKCkKCSAgIFRoaXMgcmV0dXJucyBIVE1MIGluZm9ybWF0aW9uIG9uIHRoZSBtb2R1bGUuCgkgICBUeXBpY2FsbHksIHlvdSdsbCB3YW50IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gb24gaG93IHRvCgkgICB1c2UgdGhlIG1vZHVsZS4KCSAgIAoJICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIEdldEhlbHAoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRBdXRob3IoKQoJICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUKCSAgIEFkbWluIGlmIHlvdSBjbGljayBvbiB0aGUgIkFib3V0IiBsaW5rLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0QXV0aG9yKCkKCXsKCQlyZXR1cm4gJ0hlbm5pbmcgU2NoYWVmZXInOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRBdXRob3JFbWFpbCgpCgkgICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQoJICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzCgkgICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywKCSAgIHF1ZXN0aW9ucywgY2FzZXMgb2YgYmVlciwgYW5kL29yIGxhcmdlIHN1bXMgb2YgbW9uZXkuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpCgl7CgkJcmV0dXJuICdpbmZvQHNjaGFlZmVyLWluZm9ybWF0aWsuYml6JzsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgR2V0Q2hhbmdlTG9nKCkKCSAgIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgbW9kdWxlCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlIEFib3V0IGxpbmsuIEl0IGhlbHBzIHVzZXJzCgkgICBmaWd1cmUgb3V0IHdoYXQncyBjaGFuZ2VkIGJldHdlZW4gcmVsZWFzZXMuCgkgICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBJc1BsdWdpbk1vZHVsZSgpCgkgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvciBmYWxzZSwgZGVwZW5kaW5nIHVwb24KCSAgIHdoZXRoZXIgdXNlcnMgY2FuIGluY2x1ZGUgdGhlIG1vZHVsZSBpbiBhIHBhZ2Ugb3IKCSAgIHRlbXBsYXRlIHVzaW5nIGEgc21hcnR5IHRhZyBvZiB0aGUgZm9ybQoJICAge2Ntc19tb2R1bGUgbW9kdWxlPSdTRU9Ub29scycgcGFyYW0xPXZhbCBwYXJhbTI9dmFsLi4ufQoJICAgCgkgICBJZiB5b3VyIG1vZHVsZSBkb2VzIG5vdCBnZXQgaW5jbHVkZWQgaW4gcGFnZXMgb3IKCSAgIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgSGFzQWRtaW4oKQoJICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSwgZGVwZW5kaW5nIG9uCgkgICB3aGV0aGVyIHlvdXIgbW9kdWxlIGFkZHMgYW55dGhpbmcgdG8gdGhlIEFkbWluIGFyZWEgb2YKCSAgIHRoZSBzaXRlLiBGb3IgdGhlIHJlc3Qgb2YgdGhlc2UgY29tbWVudHMsIEknbGwgYmUgY2FsbGluZwoJICAgdGhlIGFkbWluIHBhcnQgb2YgeW91ciBtb2R1bGUgdGhlICJBZG1pbiBQYW5lbCIgZm9yCgkgICB3YW50IG9mIGEgYmV0dGVyIHRlcm0uCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBIYXNBZG1pbigpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRBZG1pblNlY3Rpb24oKQoJICAgSWYgeW91ciBtb2R1bGUgaGFzIGFuIEFkbWluIFBhbmVsLCB5b3UgY2FuIHNwZWNpZnkKCSAgIHdoaWNoIEFkbWluIFNlY3Rpb24gKG9yIHRvcC1sZXZlbCBBZG1pbiBNZW51KSBpdCBzaG93cwoJICAgdXAgaW4uIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGF0CgkgICBzZWN0aW9uLiBWYWxpZCByZXR1cm4gdmFsdWVzIGFyZToKCgkgICBtYWluICAgICAgICAtIHRoZSBNYWluIG1lbnUgdGFiLgoJICAgY29udGVudCAgICAgLSB0aGUgQ29udGVudCBtZW51CgkgICBsYXlvdXQgICAgICAtIHRoZSBMYXlvdXQgbWVudQoJICAgdXNlcnNncm91cHMgLSB0aGUgVXNlcnMgYW5kIEdyb3VwcyBtZW51CgkgICBleHRlbnNpb25zICAtIHRoZSBFeHRlbnNpb25zIG1lbnUgKHRoaXMgaXMgdGhlIGRlZmF1bHQpCgkgICBzaXRlYWRtaW4gICAtIHRoZSBTaXRlIEFkbWluIG1lbnUKCSAgIHZpZXdzaXRlICAgIC0gdGhlIFZpZXcgU2l0ZSBtZW51IHRhYgoJICAgbG9nb3V0ICAgICAgLSB0aGUgTG9nb3V0IG1lbnUgdGFiCgkgICAKCSAgIE5vdGUgdGhhdCBpZiB5b3UgcGxhY2UgeW91ciBtb2R1bGUgaW4gdGhlIG1haW4sCgkgICB2aWV3c2l0ZSwgb3IgbG9nb3V0IHNlY3Rpb25zLCBpdCB3aWxsIHNob3cgdXAgaW4gdGhlCgkgICBtZW51cywgYnV0IHdpbGwgbm90IGJlIHZpc2libGUgaW4gYW55IHRvcC1sZXZlbAoJICAgc2VjdGlvbiBwYWdlcy4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCgl7CgkJcmV0dXJuICdjb250ZW50JzsKCX0KCgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEdldEFkbWluRGVzY3JpcHRpb24oKQoJICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKCSAgIGNhbiBoYXZlIGl0IHJldHVybiBhIGRlc2NyaXB0aW9uIHN0cmluZyB0aGF0IGdldHMgc2hvd24KCSAgIGluIHRoZSBBZG1pbiBTZWN0aW9uIHBhZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdhZG1pbmRlc2NyaXB0aW9uJyk7Cgl9CgoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBWaXNpYmxlVG9BZG1pblVzZXIoKQoJICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKCSAgIGNhbiBjb250cm9sIHdoZXRoZXIgb3Igbm90IGl0J3MgZGlzcGxheWVkIGJ5IHRoZSBib29sZWFuCgkgICB0aGF0IGlzIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kLiBUaGlzIGlzIHByaW1hcmlseSB1c2VkCgkgICB0byBoaWRlIG1vZHVsZXMgZnJvbSBhZG1pbnMgd2hvIGxhY2sgcGVybWlzc2lvbiB0byB1c2UKCSAgIHRoZW0uCgkgICAKCSAgIFR5cGljYWxseSwgeW91J2xsIHVzZSBzb21lIHBlcm1pc3Npb24gdG8gc2V0IHRoaXMKCSAgIChlLmcuLCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdTb21lIFBlcm1pc3Npb24nKTsgKQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKCXsKICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBTRU8gU2V0dGluZ3MnKTsKCX0KCQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBDaGVja0FjY2VzcygpCgkgICBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gd2lsbCBjaGVjayBhZ2FpbnN0IHRoZSBzcGVjaWZpZWQgcGVybWlzc2lvbiwKCSAgIGFuZCBkaXNwbGF5IGFuIGVycm9yIHBhZ2UgaWYgdGhlIHVzZXIgZG9lc24ndCBoYXZlIGFkZXF1YXRlIHBlcm1pc3Npb25zLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoJHBlcm0gPSAnRWRpdCBTRU8gU2V0dGluZ3MnKQoJCXsKCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkcGVybSk7CgkJfQoJCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgRGlzcGxheUVycm9yUGFnZSgpCgkgICBUaGlzIGlzIGEgc2ltcGxlIGZ1bmN0aW9uIGZvciBnZW5lcmF0aW5nIGVycm9yIHBhZ2VzLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgZnVuY3Rpb24gRGlzcGxheUVycm9yUGFnZSgkaWQsICYkcGFyYW1zLCAkcmV0dXJuX2lkLCAkbWVzc2FnZT0nJykKICAgIHsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Vycm9yJywgJHRoaXMtPkxhbmcoJ2Vycm9yJykpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ21lc3NhZ2UnLCAkbWVzc2FnZSk7CgogICAgICAgIC8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZXJyb3IudHBsJyk7CiAgICB9CgkKCgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEdldERlcGVuZGVuY2llcygpCgkgICBZb3VyIG1vZHVsZSBtYXkgbmVlZCBhbm90aGVyIG1vZHVsZSB0byBhbHJlYWR5IGJlIGluc3RhbGxlZAoJICAgYmVmb3JlIHlvdSBjYW4gaW5zdGFsbCBpdC4KCSAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIHRob3NlIGRlcGVuZGVuY2llcyBhbmQKCSAgIG1pbmltdW0gdmVyc2lvbiBudW1iZXJzIHRoYXQgdGhpcyBtb2R1bGUgcmVxdWlyZXMuCgkgICAKCSAgIEl0IHNob3VsZCByZXR1cm4gYW4gaGFzaCwgZWcuCgkgICByZXR1cm4gYXJyYXkoJ3NvbWVtb2R1bGUnPT4nMS4wJywgJ290aGVybW9kdWxlJz0+JzEuMScpOwoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKCXsKCQlyZXR1cm4gYXJyYXkoKTsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgTWluaW11bUNNU1ZlcnNpb24oKQoJICAgWW91ciBtb2R1bGUgbWF5IHJlcXVpcmUgZnVuY3Rpb25zIG9yIG9iamVjdHMgZnJvbQoJICAgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIENNUyBNYWRlIFNpbXBsZS4KCSAgIEV2ZXIgc2luY2UgdmVyc2lvbiAwLjExLCB5b3UgY2FuIHNwZWNpZnkgd2hpY2ggbWluaW11bQoJICAgQ01TIE1TIHZlcnNpb24gaXMgcmVxdWlyZWQgZm9yIHlvdXIgbW9kdWxlLCB3aGljaCB3aWxsCgkgICBwcmV2ZW50IGl0IGZyb20gYmVpbmcgaW5zdGFsbGVkIGJ5IGEgdmVyc2lvbiBvZiBDTVMgdGhhdAoJICAgY2FuJ3QgcnVuIGl0LgoJICAgCgkgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUKCSAgIG1pbmltdW0gdmVyc2lvbiB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLgoJICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKCXsKCQlyZXR1cm4gIjEuNi4wIjsKCX0KCgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIE1heGltdW1DTVNWZXJzaW9uKCkKCSAgIFlvdSBtYXkgd2FudCB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIHVzaW5nIHlvdXIgbW9kdWxlIGluCgkgICBmdXR1cmUgdmVyc2lvbnMgb2YgQ01TIE1hZGUgU2ltcGxlLCBlc3BlY2lhbGx5IGlmIHlvdQoJICAgdGhpbmsgQVBJIGZlYXR1cmVzIHlvdSB1c2UgbWF5IGNoYW5nZSAtLSBhZnRlciBhbGwsIHlvdQoJICAgbmV2ZXIgcmVhbGx5IGtub3cgaG93IHRoZSBDTVMgTVMgQVBJIGNvdWxkIGV2b2x2ZS4KCSAgIAoJICAgU28sIHRvIHByZXZlbnQgcGVvcGxlIGZyb20gZmxvb2RpbmcgeW91IHdpdGggYnVnIHJlcG9ydHMKCSAgIHdoZW4gYSBuZXcgdmVyc2lvbiBvZiBDTVMgTVMgaXMgcmVsZWFzZWQsIHlvdSBjYW4gc2ltcGx5CgkgICByZXN0cmljdCB0aGUgdmVyc2lvbi4gVGhlbiwgb2YgY291cnNlLCB0aGUgb251cyBpcyBvbiB5b3UKCSAgIHRvIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZiB5b3VyIG1vZHVsZSB3aGVuIGEgbmV3IHZlcnNpb24KCSAgIG9mIHRoZSBDTVMgaXMgcmVsZWFzZWQuLi4KCSAgIAoJICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlCgkgICBtYXhpbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSBzdXBwb3J0cy4KCSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpCgl7CgkJcmV0dXJuICIxLjkuOSI7Cgl9CgoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBJbnN0YWxsUG9zdE1lc3NhZ2UoKQoJICAgQWZ0ZXIgaW5zdGFsbGF0aW9uLCB0aGVyZSBtYXkgYmUgdGhpbmdzIHlvdSB3YW50IHRvCgkgICBjb21tdW5pY2F0ZSB0byB5b3VyIGFkbWluLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYQoJICAgc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7Cgl9CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKCSAgIEFmdGVyIHJlbW92aW5nIGEgbW9kdWxlLCB0aGVyZSBtYXkgYmUgdGhpbmdzIHlvdSB3YW50IHRvCgkgICBjb21tdW5pY2F0ZSB0byB5b3VyIGFkbWluLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYQoJICAgc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOwoJfQoKCgkvKioKCSAqIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQoJICogVGhpcyBhbGxvd3MgeW91IHRvIGRpc3BsYXkgYSBtZXNzYWdlIGFsb25nIHdpdGggYSBZZXMvTm8gZGlhbG9nIGJveC4gSWYgdGhlIHVzZXIgcmVzcG9uZHMKCSAqIGluIHRoZSBhZmZpcm1hdGl2ZSB0byB5b3VyIG1lc3NhZ2UsIHRoZSB1bmluc3RhbGwgd2lsbCBwcm9jZWVkLiBJZiB0aGV5IHJlc3BvbmQgaW4gdGhlCgkgKiBuZWdhdGl2ZSwgdGhlIHVuaW5zdGFsbCB3aWxsIGJlIGNhbmNlbGVkLiBUaHVzLCB5b3VyIG1lc3NhZ2Ugc2hvdWxkIGJlIG9mIHRoZSBmb3JtCgkgKiAiQWxsIG1vZHVsZSBkYXRhIHdpbGwgYmUgZGVsZXRlZC4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIG1vZHVsZT8iCgkgKgoJICogSWYgeW91IGRvbid0IHdhbnQgdGhlIGRpYWxvZywgaGF2ZSB0aGlzIG1ldGhvZCByZXR1cm4gYSBGQUxTRSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUKCSAqIG1vZHVsZSB0byB1bmluc3RhbGwgaW1tZWRpYXRlbHkgaWYgdGhlIHVzZXIgY2xpY2tzIHRoZSAidW5pbnN0YWxsIiBsaW5rLgoJICovCglmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsKCX0KCQoJZnVuY3Rpb24gR2V0Tm90aWZpY2F0aW9uT3V0cHV0KCkgewoJCWlmIChjb3VudCgkdGhpcy0+Z2V0VXJnZW50QWxlcnRzKCkpID4gMCkgewoJCSAgJHRleHQgPSAkdGhpcy0+bGFuZygncHJvYmxlbV9hbGVydCcsQXJyYXkoJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkdGhpcy0+bGFuZygncHJvYmxlbV9saW5rX3RpdGxlJykpKSk7CgkJICByZXR1cm4gKG9iamVjdCkgQXJyYXkoJ3ByaW9yaXR5Jz0+MiwgJ2h0bWwnPT4kdGV4dCk7CgkJfQoJfQoJCgkKCWZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKSB7CgkJJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CgkJJHRoaXMtPmFkZEV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnRFZGl0UG9zdCcsZmFsc2UpOwoJCSR0aGlzLT5hZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCdDb250ZW50RGVsZXRlUG9zdCcsZmFsc2UpOwoKCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdzaG93YmFzZScsICd0cnVlJywgJHRoaXMtPkxhbmcoJ2hlbHBfc2hvd2Jhc2UnKSk7Cgl9CgkKCWZ1bmN0aW9uIERvRXZlbnQoJG9yaWdpbiwgJG5hbWUsICRwYXJhbXMpIHsKCSAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsJ3RydWUnKSA9PSAndHJ1ZScpIHsKICAgICAgICAkdGhpcy0+Y3JlYXRlU2l0ZW1hcCgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywndHJ1ZScpID09IHRydWUpOwogICAgICB9Cgl9CgkKCWZ1bmN0aW9uIGdldFVyZ2VudEFsZXJ0cygpIHsKCQlnbG9iYWwgJGdDbXM7CgkJJGFsZXJ0cyA9IEFycmF5KCk7CgkJLy8gRW5hYmxlIFByZXR0eSBVUkxzCiAgICAgICAgaWYgKCgkZ0Ntcy0+Y29uZmlnWydhc3N1bWVfbW9kX3Jld3JpdGUnXSAhPSAxKSAmJiAoJGdDbXMtPmNvbmZpZ1snaW50ZXJuYWxfcHJldHR5X3VybHMnXSAhPSAxKSkgewogICAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzeXN0ZW0nOwogICAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnYWN0aXZhdGVfcHJldHR5X3VybHMnKTsKICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmxhbmcoJ3ByZXR0eV91cmxzX2hlbHAnKTsKICAgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgICB9ICAgICAgIAoJCS8vIE5vIE1ldGEgdGFncyBhcmUgaW5zZXJ0ZWQKCQlpZiAoKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywnZmFsc2UnKSAhPSAndHJ1ZScpICYmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywnZmFsc2UnKSAhPSAndHJ1ZScpKSB7CQkJCgkJCSRhbGVydCA9IEFycmF5KCk7CgkJCSRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7CgkJCSRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3VzZV9zdGFuZGFyZF9vcl9kdWJsaW5jb3JlX21ldGEnKTsKCQkJJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwoJCQkkYWxlcnRzW10gPSAkYWxlcnQ7CgkJfQoJCSRkYiA9JiAkZ0Ntcy0+ZGI7CQkJCQkJCgkJaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywnZmFsc2UnKSAhPSAndHJ1ZScpIHsKCQkJaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpICE9ICcnKSB7CgkJCSAgLy8gUGFnZXMgd2l0aG91dCBkZXNjcmlwdGlvbgoJCQkgICRxdWVyeSA9ICdTRUxFQ1QgKixjLmNvbnRlbnRfaWQgQVMgY2lkLCBjLnR5cGUgQVMgY3R5cGUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBjIExFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBwIE9OIChjLmNvbnRlbnRfaWQgPSBwLmNvbnRlbnRfaWQgQU5EIHAucHJvcF9uYW1lID0gIicuc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSkuJyIpIFdIRVJFIChwLmNvbnRlbnQgSVMgTlVMTCBPUiBwLmNvbnRlbnQgPSAiIikgQU5EIGMudHlwZSA9ICJjb250ZW50IiBMSU1JVCAwLDIxJzsJCQoJCQkgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CQkJCQoJCQkgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsKICAgCQkgIAkgIGlmICgkcHJvYmxlbVsnY3R5cGUnXSA9PSAnY29udGVudCcpIHsJCQkKCQkJCSAgJGFsZXJ0ID0gQXJyYXkoKTsKCQkJCSAgJGFsZXJ0Wydncm91cCddID0gJ3BhZ2VzJzsKCQkJCSAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbWV0YV9kZXNjcmlwdGlvbl9taXNzaW5nJyxBcnJheSgkcHJvYmxlbVsnY29udGVudF9uYW1lJ10pKTsKCQkJCSAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsKCQkJCSAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSIvYWRtaW4vZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnY2lkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlX3RvX2ZpeCcpLic8L2E+JzsKCQkJCSAgfWVsc2V7CgkJCQkgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnJzsKCQkJCSAgfQoJCQkJICAkYWxlcnRzW10gPSAkYWxlcnQ7CgkJCSAgCX0KCQkJICB9CgkJCX1lbHNlewoJCQkgICRhbGVydCA9IEFycmF5KCk7CgkJCSAgJGFsZXJ0Wydncm91cCddID0gJ3NldHRpbmdzJzsKCSAgICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdzZXRfdXBfZGVzY3JpcHRpb25fYmxvY2snKTsKCSAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CgkgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwkKCQkJfQkJCgkJfWVsc2VpZihzdHJwb3MoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSwne2tleXdvcmRzfScpID09PSBmYWxzZSkgewoJCQkkYWxlcnQgPSBBcnJheSgpOwoJCQkkYWxlcnRbJ2dyb3VwJ10gPSAnc2V0dGluZ3MnOwoJICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdzZXRfdXBfYXV0b19kZXNjcmlwdGlvbicpOwoJICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CgkgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKCQl9CgkJCiAgICAgICAgLy8gc2l0ZW1hcC54bWwgbm90IHdyaXRlYWJsZQogICAgICAgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLCd0cnVlJykgPT0gJ3RydWUnKSB7CgkJICBpZiAoIWlzX3dyaXRlYWJsZSgkZ0Ntcy0+Y29uZmlnWydyb290X3BhdGgnXSAuICcvc2l0ZW1hcC54bWwnKSkgewoJCSAgCSRhbGVydCA9IEFycmF5KCk7CgkJICAJJGFsZXJ0Wydncm91cCddID0gJ3N5c3RlbSc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3NpdGVtYXBfbm90X3dyaXRlYWJsZScpOwogICAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5sYW5nKCdjaG1vZF9zaXRlbWFwJyk7CiAgICAgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKCQkgIH0JCQkKCQl9CgkJCiAgICAgICAgLy8gcm9ib3RzLnR4dCBub3Qgd3JpdGVhYmxlCgkgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLCd0cnVlJykgPT0gJ3RydWUnKSB7CgkgICAJICAkZnAgPSBAZm9wZW4oJGdDbXMtPmNvbmZpZ1sncm9vdF9wYXRoJ10gLiAnL3JvYm90cy50eHQnLCJhIik7CgkgICAJICBmY2xvc2UoJGZwKTsKICAgICAgICAgIGlmICghaXNfd3JpdGVhYmxlKCRnQ21zLT5jb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9yb2JvdHMudHh0JykpIHsKICAgICAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3N5c3RlbSc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3JvYm90c19ub3Rfd3JpdGVhYmxlJyk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmxhbmcoJ2NobW9kX3JvYm90cycpOwogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgICB9ICAgICAgICAgCiAgICAgICAgfQoJCQkJCiAgICAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywnZmFsc2UnKSA9PSAndHJ1ZScpIHsKICAgICAgICAvLyBObyBPcGVuR3JhcGggYWRtaW4gc2V0CiAgICAgICAgaWYgKCgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywnJykgPT0gJycpICYmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nLCcnKSA9PSAnJykpIHsKICAgICAgICAJJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAJJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ25vX29wZW5ncmFwaF9hZG1pbnMnKTsKICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgfQogICAgICAgIC8vIE5vIE9wZW5HcmFwaCBwYWdlIHR5cGUgc2V0CiAgICAgICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywnJykgPT0gJycpIHsKICAgICAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ25vX29wZW5ncmFwaF90eXBlJyk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICAgIH0KICAgICAgICAvLyBObyBPcGVuR3JhcGggc2l0ZW5hbWUgc2V0CiAgICAgICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJycpID09ICcnKSB7CiAgICAgICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdvcGVuZ3JhcGgnOwogICAgICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdub19vcGVuZ3JhcGhfc2l0ZW5hbWUnKTsKICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgfQogICAgICAgIC8vIE5vIE9wZW5HcmFwaCBpbWFnZSBzZXQKICAgICAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywnJykgPT0gJycpIHsgICAgICAgIAkKICAgICAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ25vX29wZW5ncmFwaF9pbWFnZScpOwogICAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CiAgICAgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgICB9CiAgICAgICB9CgkJCgkJcmV0dXJuICRhbGVydHM7Cgl9CgkKCWZ1bmN0aW9uIGdldEltcG9ydGFudEFsZXJ0cygpIHsKCQlnbG9iYWwgJGdDbXM7CiAgICAgICAgJGFsZXJ0cyA9IEFycmF5KCk7ICAgICAgICAKICAgICAgICAkZGIgPSYgJGdDbXMtPmRiOwogICAgICAgIC8vIFBhZ2VzIHdpdGggc2hvcnQgZGVzY3JpcHRpb24KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICosYy5jb250ZW50X2lkIEFTIGNpZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IGMgSU5ORVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBwIE9OIChjLmNvbnRlbnRfaWQgPSBwLmNvbnRlbnRfaWQgQU5EIHAucHJvcF9uYW1lID0gIicuc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSkuJyIpIFdIRVJFIENIQVJfTEVOR1RIKHAuY29udGVudCkgPCA3NSBBTkQgYy50eXBlID0gImNvbnRlbnQiIEFORCBwLmNvbnRlbnQgPD4gIiIgTElNSVQgMCwyMSc7ICAgICAgICAKICAgICAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOyAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgeyAgICAgICAgICAgIAogICAgICAgICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnZGVzY3JpcHRpb25zJzsKICAgICAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbWV0YV9kZXNjcmlwdGlvbl9zaG9ydCcsQXJyYXkoJHByb2JsZW1bJ2NvbnRlbnRfbmFtZSddKSk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9Ii9hZG1pbi9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2VfdG9fZml4JykuJzwvYT4nOwogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgfQoKICAgICAgICAvLyBQYWdlcyB3aXRoIGR1cGxpY2F0ZSB0aXRsZQogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgYzEuY29udGVudF9hbGlhcyBBUyBjMW5hbWUsIGMxLmNvbnRlbnRfaWQgQVMgYzFpZCwgYzIuY29udGVudF9hbGlhcyBBUyBjMm5hbWUsIGMyLmNvbnRlbnRfaWQgQVMgYzJpZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IGMxIElOTkVSIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYzIgT04gKGMxLmNvbnRlbnRfbmFtZSA9IGMyLmNvbnRlbnRfbmFtZSBBTkQgYzEuY29udGVudF9pZCA8IGMyLmNvbnRlbnRfaWQpIFdIRVJFIGMxLnR5cGUgPSAiY29udGVudCIgQU5EIGMyLnR5cGUgPSAiY29udGVudCIgTElNSVQgMCwyMSc7CgkgICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsgICAgICAgICAgICAKICAgICAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3RpdGxlcyc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ2R1cGxpY2F0ZV90aXRsZXMnLEFycmF5KCRwcm9ibGVtWydjMW5hbWUnXSwkcHJvYmxlbVsnYzJuYW1lJ10pKTsKICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iL2FkbWluL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2MxaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRwcm9ibGVtWydjMW5hbWUnXSkpLic8L2E+JzsKICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iL2FkbWluL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2MyaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRwcm9ibGVtWydjMm5hbWUnXSkpLic8L2E+JzsKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBQYWdlcyB3aXRoIGR1cGxpY2F0ZSBkZXNjcmlwdGlvbgoJICAgICRxdWVyeSA9ICdTRUxFQ1QgcDEuY29udGVudF9pZCBBUyBjMWlkLCBwMi5jb250ZW50X2lkIEFTIGMyaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBwMSBJTk5FUiBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAyIE9OIChwMS5wcm9wX25hbWUgPSBwMi5wcm9wX25hbWUgQU5EIHAxLnByb3BfbmFtZSA9ICInLnN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPmdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpLiciIEFORCBwMS5jb250ZW50X2lkIDwgcDIuY29udGVudF9pZCBBTkQgcDEuY29udGVudCA8PiAiIiBBTkQgcDIuY29udGVudCA8PiAiIikgV0hFUkUgcDEuY29udGVudCA9IHAyLmNvbnRlbnQgTElNSVQgMCwyMSc7CiAgICAgICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsKICAgICAgICAJJHF1ZXJ5ID0gJ1NFTEVDVCBjb250ZW50X2lkLCBjb250ZW50X25hbWUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBXSEVSRSBjb250ZW50X2lkID0gJy4kcHJvYmxlbVsnYzFpZCddLicgT1IgY29udGVudF9pZCA9ICcuJHByb2JsZW1bJ2MyaWQnXTsKICAgICAgICAJJHJlc3VsdDEgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgICAgCSRmaXJzdCA9ICRyZXN1bHQxLT5mZXRjaFJvdygpOwogICAgICAgIAkkc2Vjb25kID0gJHJlc3VsdDEtPmZldGNoUm93KCk7ICAgICAgICAgICAgCiAgICAgICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdkZXNjcmlwdGlvbnMnOwogICAgICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdkdXBsaWNhdGVfZGVzY3JpcHRpb25zJyxBcnJheSgkZmlyc3RbJ2NvbnRlbnRfbmFtZSddLCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9Ii9hZG1pbi9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRmaXJzdFsnY29udGVudF9pZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJGZpcnN0Wydjb250ZW50X25hbWUnXSkpLic8L2E+JzsKICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iL2FkbWluL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHNlY29uZFsnY29udGVudF9pZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHNlY29uZFsnY29udGVudF9uYW1lJ10pKS4nPC9hPic7CiAgICAgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgICB9CiAgICAgICAgLy8gTm8gYXV0aG9yIHByb3ZpZGVkCiAgICAgICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpID09ICcnKSB7CiAgICAgICAgCSRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgCSRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3Byb3ZpZGVfYW5fYXV0aG9yJyk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGFsZXJ0czsJCQoJfQoJCglmdW5jdGlvbiBnZXROb3RpY2VBbGVydHMoKSB7CgkJJGFsZXJ0cyA9IEFycmF5KCk7CgkJLy8gTm8gc3RhbmRhcmQgbWV0YQogICAgICAgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsJ2ZhbHNlJykgIT0gJ3RydWUnKSB7CiAgICAgICAgCSRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgCSRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3VzZV9zdGFuZGFyZF9tZXRhJyk7CiAgICAgICAgCSRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsgICAgICAgIAkKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICAgIH0KICAgICAgICAvLyBTdWJtaXQgYSBzaXRlbWFwCiAgICAgICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsJ3RydWUnKSAhPSAndHJ1ZScpIHsKICAgICAgICAJJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnY3JlYXRlX2Ffc2l0ZW1hcCcpOwogICAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7CiAgICAgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgICB9ZWxzZWlmKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLCd0cnVlJykgIT0gJ3RydWUnKSB7CiAgICAgICAgICAvLyBBdXRvbWF0aWNhbGx5IHN1Ym1pdCB0aGUgc2l0ZW1hcAogICAgICAgICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdhdXRvbWF0aWNhbGx5X3VwbG9hZF9zaXRlbWFwJyk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwkKICAgICAgICB9ICAgICAgICAKICAgICAgICAvLyBDcmVhdGUgYSByb2JvdHMudHh0IGZpbGUKICAgICAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLCd0cnVlJykgIT0gJ3RydWUnKSB7CiAgICAgICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ2NyZWF0ZV9yb2JvdHMnKTsKICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOwogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgfQogICAgICAgIC8vIFNldCBhIGRlZmF1bHQgaW1hZ2UKICAgICAgICByZXR1cm4gJGFsZXJ0czsKCX0KCQpmdW5jdGlvbiBnZXRfa2V5d29yZHMoJHNvdXJjZSwgJG1pbmxlbmd0aCA9IDYpIHsKICAgICRzb3VyY2UgPSBwcmVnX3JlcGxhY2UoJy9ce1teXH1dK1x9L2lzVScsICcnLCB1dGY4X2RlY29kZSgkc291cmNlKSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoIlxuIiwiICIsc3RyaXBfdGFncygkc291cmNlKSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJy0nLCcgJywkc291cmNlKTsKICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnLicsJyAnLCRzb3VyY2UpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCcsJywnICcsJHNvdXJjZSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyEnLCcgJywkc291cmNlKTsKICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnPycsJyAnLCRzb3VyY2UpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCc6JywnICcsJHNvdXJjZSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyAgJywnICcsJHNvdXJjZSk7CiAgICAka2V5d29yZHMgPSBleHBsb2RlKCcgJywkc291cmNlKTsKICAgIGZvcmVhY2ggKCRrZXl3b3JkcyBhcyAka2V5PT4kdmFsdWUpIHsKICAgICAgICBpZiAoc3RybGVuKCR2YWx1ZSkgPCAkbWlubGVuZ3RoKSB7CiAgICAgICAgICAgIHVuc2V0KCRrZXl3b3Jkc1ska2V5XSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgCSRrZXl3b3Jkc1ska2V5XSA9IGh0bWxlbnRpdGllcyh0cmltKCR2YWx1ZSkpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAka2V5d29yZHM7ICAgIAp9CgpmdW5jdGlvbiBnZXRfaGVhZGxpbmVzKCRmaWxlKXsKICAgICAgJGgxdGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoMS4qPikoXHcuKikoPFwvaDE+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsgICAgICAgICAgIAogICAgICAkY29udGVudCA9ICIiOwogICAgICBmb3JlYWNoKCRwYXR0ZXJuc1syXSBhcyAkdGFnKSB7CiAgICAgIAkkY29udGVudCAuPSAiICIuJHRhZzsKICAgICAgfQogICAgICAkaDJ0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgyLio+KShcdy4qKSg8XC9oMj4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOyAgICAgICAgICAgCiAgICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsKICAgICAgCSRjb250ZW50IC49ICIgIi4kdGFnOwogICAgICB9CiAgICAgICRoM3RhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDMuKj4pKFx3LiopKDxcL2gzPikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7ICAgICAgICAgICAKICAgICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgewogICAgICAJJGNvbnRlbnQgLj0gIiAiLiR0YWc7CiAgICAgIH0KICAgICAgJGg0dGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoNC4qPikoXHcuKikoPFwvaDQ+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsgICAgICAgICAgIAogICAgICBmb3JlYWNoKCRwYXR0ZXJuc1syXSBhcyAkdGFnKSB7CiAgICAgIAkkY29udGVudCAuPSAiICIuJHRhZzsKICAgICAgfQogICAgICAkaDV0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg1Lio+KShcdy4qKSg8XC9oNT4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOyAgICAgICAgICAgCiAgICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsKICAgICAgCSRjb250ZW50IC49ICIgIi4kdGFnOwogICAgICB9CiAgICAgICRoNnRhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDYuKj4pKFx3LiopKDxcL2g2PikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7ICAgICAgICAgICAKICAgICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgewogICAgICAJJGNvbnRlbnQgLj0gIiAiLiR0YWc7CiAgICAgIH0KICAgICAgcmV0dXJuICRjb250ZW50OyAgICAgICAgICAgCiAgICB9CgpmdW5jdGlvbiBnZXRLZXl3b3JkU3VnZ2VzdGlvbnMoJGNvbnRlbnRfaWQpIHsKCWdsb2JhbCAkZ0NtczsKCSRobSA9ICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CiAgICAkY3Vybm9kZSA9JiAkaG0tPmdldE5vZGVCeUlkKCRjb250ZW50X2lkKTsKICAgICRjdXJjb250ZW50ID0mICRjdXJub2RlLT5HZXRDb250ZW50KCk7CiAgICAkZGVzY3JpcHRpb25faWQgPSBzdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKTsJICAgIAogICAgCiAgICAkZGIgPSYkZ0Ntcy0+ZGI7CiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4iY29udGVudF9wcm9wcyBXSEVSRSBjb250ZW50X2lkID0gJGNvbnRlbnRfaWQgQU5EIHByb3BfbmFtZSA9ICdjb250ZW50X2VuJyI7CiAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkY29udGVudCA9ICRyZXN1bHQtPmZldGNoUm93KCk7CiAgICAKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJjb250ZW50X3Byb3BzIFdIRVJFIGNvbnRlbnRfaWQgPSAkY29udGVudF9pZCBBTkQgcHJvcF9uYW1lID0gJyRkZXNjcmlwdGlvbl9pZCciOwogICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgJGRlc2NyaXB0aW9uID0gJHJlc3VsdC0+ZmV0Y2hSb3coKTsKICAgIAoJLyogR2VuZXJhdGUga2V5d29yZHMgZnJvbSBwYWdlIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgY29udGVudCAqLwoJJHRpdGxlX2tleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygkY3VyY29udGVudC0+bU5hbWUsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsJzYnKSk7CgkkZGVzY3JpcHRpb25fa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCRkZXNjcmlwdGlvblsnY29udGVudCddLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOwkJCQogICAgJGhlYWRsaW5lX2tleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygkdGhpcy0+Z2V0X2hlYWRsaW5lcygkY29udGVudFsnY29udGVudCddKSwgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpKTsgICAgCgkkY29udGVudF9rZXl3b3JkcyA9ICR0aGlzLT5nZXRfa2V5d29yZHMoJGNvbnRlbnRbJ2NvbnRlbnQnXSwgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpKTsKCQoJJG90aGVyX2tleXdvcmRzID0gQXJyYXkoKTsKCQoJZm9yZWFjaCgkdGl0bGVfa2V5d29yZHMgYXMgJGtleXdvcmQpIHsKCQlpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7CgkJCSRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAwOwoJCX0KCSAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gJHRoaXMtPmdldFByZWZlcmVuY2UoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0JywnNicpOwoJfQoJZm9yZWFjaCgkZGVzY3JpcHRpb25fa2V5d29yZHMgYXMgJGtleXdvcmQpIHsKCQlpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7CgkJCSRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAwOwoJCX0KCSAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdICs9ICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodCcsJzQnKTsKCX0KCWZvcmVhY2goJGhlYWRsaW5lX2tleXdvcmRzIGFzICRrZXl3b3JkKSB7CgkJaWYgKCFpc3NldCgkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdKSkgewoJCQkkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gMDsKCQl9CgkgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCcyJyk7Cgl9CQoJZm9yZWFjaCgkY29udGVudF9rZXl3b3JkcyBhcyAka2V5d29yZCkgewoJCWlmICghaXNzZXQoJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSkpIHsKCQkJJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7CgkJfQoJICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gKz0gJHRoaXMtPmdldFByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLCcxJyk7Cgl9CgkKCWFyc29ydCgkb3RoZXJfa2V5d29yZHMpOwoJCgkkZXhjbHVkZV9saXN0ID0gZXhwbG9kZSgnICcsc3RydG91cHBlcih1dGY4X2RlY29kZSgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJywnJykpKSk7CQkKCQoJZm9yZWFjaCAoJG90aGVyX2tleXdvcmRzIGFzICRrZXk9PiR2YWx1ZSkgewoJICAgIGlmICgkdmFsdWUgPCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJzcnKSkgewoJICAgICAgICB1bnNldCgkb3RoZXJfa2V5d29yZHNbJGtleV0pOwoJICAgIH1lbHNlaWYgKGluX2FycmF5KHN0cnRvdXBwZXIoJGtleSksJGV4Y2x1ZGVfbGlzdCkpIHsKCSAgICAJdW5zZXQoJG90aGVyX2tleXdvcmRzWyRrZXldKTsKCSAgICB9Cgl9CglyZXR1cm4gJG90aGVyX2tleXdvcmRzOwkKfQoKZnVuY3Rpb24gY3JlYXRlUm9ib3RzVFhUKCkgewkKCWdsb2JhbCAkZ0NtczsJCQoJJGZwID0gQGZvcGVuKCRnQ21zLT5jb25maWdbJ3Jvb3RfcGF0aCddLicvcm9ib3RzLnR4dCcsJ3cnKTsKCS8vIENyZWF0ZSByb2JvdHMudHh0CglpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywndHJ1ZScpID09ICd0cnVlJykgewoJCUBmd3JpdGUoJGZwLCAiU2l0ZW1hcDogIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvc2l0ZW1hcC54bWxcbiIpOwoJfQoJQGZ3cml0ZSgkZnAsICJVc2VyLWFnZW50OiAqXG4iKTsgICAgIAoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvY29udHJpYi9cbiIpOyAKCUBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4iL2RvYy9cbiIpOwoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvbGliL1xuIik7CglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uIi9tb2R1bGVzL1xuIik7IAoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvcGx1Z2lucy9cbiIpOwoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvc2NyaXB0cy9cbiIpOwoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvdG1wL1xuIik7CgkKCSRobSA9JiAkZ0Ntcy0+Z2V0SGllcmFyY2h5TWFuYWdlcigpOwoJJGRiID0mICRnQ21zLT5kYjsKCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMgV0hFUkUgaW5kZXhhYmxlID0gMCI7CgkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7Cgl3aGlsZSAoJHBhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7CgkJJGN1cm5vZGUgPSYgJGhtLT5nZXROb2RlQnlJZCgkcGFnZVsnY29udGVudF9pZCddKTsKICAgICAgICAkY3VyY29udGVudCA9JiAkY3Vybm9kZS0+R2V0Q29udGVudCgpOwogICAgICAgICR1cmwgPSAkY3VyY29udGVudC0+R2V0VVJMKCk7CiAgICAgICAgQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kdXJsLiJcbiIpOwkJCgl9CgkKCUBmY2xvc2UoJGZwKTsKfQoKZnVuY3Rpb24gY3JlYXRlU2l0ZW1hcCgkcHVzaCA9IGZhbHNlKSB7CglnbG9iYWwgJGdDbXM7CiAgICAkZnAgPSBAZm9wZW4oJGdDbXMtPmNvbmZpZ1sncm9vdF9wYXRoJ10uJy9zaXRlbWFwLnhtbCcsJ3cnKTsKICAgICAgICAvLyBDcmVhdGUgc2l0ZW1hcAoKICAgIGZ3cml0ZSgkZnAsICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/PlxuIik7CiAgICBmd3JpdGUoJGZwLCAiPHVybHNldCB4bWxucz0naHR0cDovL3d3dy5zaXRlbWFwcy5vcmcvc2NoZW1hcy9zaXRlbWFwLzAuOSc+XG5cbiIpOwogICAgCiAgICAkZGIgPSAkZ0Ntcy0+ZGI7CiAgICAkaG0gPSYgJGdDbXMtPmdldEhpZXJhcmNoeU1hbmFnZXIoKTsKICAgIAogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgYWN0aXZlID0gMSBPUkRFUiBCWSBoaWVyYXJjaHkgQVNDJzsKICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAKICAgIHdoaWxlICgkcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsgICAgCSAgICAgICAgICAJCiAgICAgICRjdXJub2RlID0mICRobS0+Z2V0Tm9kZUJ5SWQoJHBhZ2VbJ2NvbnRlbnRfaWQnXSk7ICAgICAgICAgICAKICAgICAgCiAgICAgIGlmICghaXNfb2JqZWN0KCRjdXJub2RlKSkgewogICAgICAJY29udGludWU7CiAgICAgIH0KICAgICAgICAgICAgCiAgICAgICRjdXJjb250ZW50ID0mICRjdXJub2RlLT5HZXRDb250ZW50KCk7CiAgICAgIGlmIChtZXRob2RfZXhpc3RzKCRjdXJjb250ZW50LCAnR2V0VVJMJykpIHsKICAgICAgICAkdXJsID0gJGN1cmNvbnRlbnQtPkdldFVSTCgpOwogICAgICAgIGlmICgkdXJsID09ICIjIikgewogICAgICAgIAljb250aW51ZTsKICAgICAgICB9CgogICAgICAgIGlmIChzdHJwb3MoJHVybCwgJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXSkgPT09IGZhbHNlKSB7CiAgICAgICAgCWNvbnRpbnVlOwogICAgICAgIH0KICAgICAgCiAgICAgICAgJHByaW9yaXR5ID0gODA7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgc3Vic3RyX2NvdW50KCRwYWdlWydoaWVyYXJjaHknXSwnLicpOyAkaSsrKSB7ICAgICAgCiAgICAgICAgICAkcHJpb3JpdHkgID0gJHByaW9yaXR5IC8gMjsKICAgICAgICB9CiAgICAgICAgaWYgKCRwYWdlWydkZWZhdWx0X2NvbnRlbnQnXSA9PSAxKSB7CiAgICAgICAgICAkcHJpb3JpdHkgPSAxMDA7CiAgICAgICAgfQogICAgICAKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRwYWdlWydjb250ZW50X2lkJ107CiAgICAgICAgJHJlc3VsdDIgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgICAgJGlmbyA9ICRyZXN1bHQyLT5mZXRjaFJvdygpOwogICAgICAgIGlmIChpc3NldCgkaW5mb1sncHJpb3JpdHknXSkgJiYgKCRpbmZvWydwcmlvcml0eSddICE9IDApICYmICgkaW5mb1sncHJpb3JpdHknXSAhPSAiIikpIHsKICAgICAgCSAgJHByaW9yaXR5ID0gJGluZm9bJ3ByaW9yaXR5J107CiAgICAgICAgfQogICAgICAgIGlmICghaXNzZXQoJGluZm9bJ2luZGV4YWJsZSddKSB8fCAoJGluZm9bJ2luZGV4YWJsZSddID09ICIiKSB8fCAoJGluZm9bJ2luZGV4YWJsZSddID09IDEpKSB7ICAgICAgCiAgICAgICAgICBmd3JpdGUoJGZwLCAiPHVybD5cbiIpOwogICAgICAgICAgZndyaXRlKCRmcCwgIjxsb2M+Ii4kdXJsLiI8L2xvYz5cbiIpOwogICAgICAgICAgZndyaXRlKCRmcCwgIjxsYXN0bW9kPiIuZGF0ZSgiWS1tLWQiLCBzdHJ0b3RpbWUoJHBhZ2VbJ21vZGlmaWVkX2RhdGUnXSkpLiI8L2xhc3Rtb2Q+XG4iKTsKICAgICAgICAgIGZ3cml0ZSgkZnAsICI8Y2hhbmdlZnJlcT5hbHdheXM8L2NoYW5nZWZyZXE+XG4iKTsKICAgICAgICAgIGZ3cml0ZSgkZnAsICI8cHJpb3JpdHk+Ii5udW1iZXJfZm9ybWF0KCRwcmlvcml0eSAvIDEwMCwgMSkuIjwvcHJpb3JpdHk+XG4iKTsKICAgICAgICAgIGZ3cml0ZSgkZnAsICI8L3VybD5cblxuIik7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBmd3JpdGUoJGZwLCAiPC91cmxzZXQ+Iik7ICAgICAgICAgICAgCiAgICBmY2xvc2UoJGZwKTsKICAgIGlmICgkcHVzaCkgewogICAgCS8vIFB1c2ggc2l0ZW1hcCB0byBnb29nbGUKICAgIAkkZnAgPSBAZm9wZW4oImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL3Rvb2xzL3Bpbmc/c2l0ZW1hcD0iLnVybGVuY29kZSgkZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvc2l0ZW1hcC54bWwiKSwiciIpOwogICAgICAgIGZjbG9zZSgkZnApOwogICAgfQp9Cgp9Cgo/Pgo=]]></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>
