<?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>CGExtensions</name>
	<version>1.8</version>
  <mincmsversion>1.2.3</mincmsversion>
	<help>PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIG1lcmVseSBwcm92aWRlcyBjb252ZW5pZW5jZSBhcGkncyBhbmQgc21hcnR5IHRhZ3MgZm9yIHVzZSBpbiBvdGhlciBtb2R1bGVzLiAgSXQgaXMgbWVhbnQgc29sZWx5IGFzIGEgYmFzZSBjbGFzcyBhbmQgdXRpbGl0eSBjbGFzcyBmb3Igb3RoZXIgbW9kdWxlcy48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+CjxoMz5TbWFydHkgQWRkb25zPC9oMz4KPHA+VGhpcyBtb2R1bGUgYWRkcyBhIGZldyBzbWFydHkgY29udmVuaWVuY2VzIGZvciB1c2Ugd2l0aCBvdGhlciBtb2R1bGVzLiBUaGV5IGFyZSBsaXN0ZWQgYW5kIGRlc2NyaWJlZCBoZXJlOjwvcD4KPHVsPgo8bGk+Y2dlcnJvciAtIDxlbT5ibG9jazwvZW0+IHBsdWdpbgo8cD5pLmU6IDxjb2RlPntjZ2Vycm9yfVRoaXMgaXMgZXJyb3IgdGV4dHsvY2dlcnJvcn08L2NvZGU+PGJyLz4KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4KPC9wPgo8cD5vcHRpb25hbCBwYXJhbWV0ZXJzOiAnZXJyb3JjbGFzcycgPSBvdmVycmlkZSB0aGUgZGVmYXVsdCBjbGFzcyBuYW1lIGluIHRoZSB0ZW1wbGF0ZS4KPC9wPgo8cD5EZXNjcmlwdGlvbjogVGhpcyBibG9jayBwbHVnaW4gdXNlcyB0aGUgZXJyb3IgdGVtcGxhdGUgKGNvbmZpZ3VyYWJsZSBmcm9tIHRoZSBDR0V4dGVuc2lvbnMgYWRtaW4gaW50ZXJmYWNlKSB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UuPC9wPgo8L3VsPgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yKHMpLCBjYWxndXkgZXQgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvcihzKSBkaXJlY3RseS48L2xpPiAgCjwvdWw+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dApvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48L3VsPg==</help>
	<about>PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuODxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjx1bD4KPGxpPlZlcnNpb24gMS4wLjAuIE1hcmNoIDIwMDcuICBJbml0aWFsIFJlbGVhc2UuPC9saT4KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMi4gQXByaWwgMjAwNy4gIENyZWF0ZUltYWdlTGluayB3aWxsIG5vdyB3b3JrIG9uIHRoZSBmcm9udGVuZC48L2xpPgo8bGk+VmVyc2lvbiAxLjAuMy4gU2VwdGVtYmVyIDIwMDcuICBBZGRzIGFwcGx5IGJ1dHRvbnMgdG8gbmV3IHRlbXBsYXRlcy48L2xpPgo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYmVyIDIwMDcuICBBZGRzIGRlZmF1bHQgZnJvbnRlbmQgZXJyb3IgaGFuZGxpbmcgcGx1Z2luLjwvbGk+CjxsaT5WZXJzaW9uIDEuMi4gICBOb3ZlbWJlciAgMjAwNywgIEFkZHMgbW9yZSBjb252ZW5pZW5jZSBmdW5jdGlvbnM8L2xpPgo8bGk+VmVyc2lvbiAxLjMuICAgTm92ZW1iZXIgIDIwMDcuICBBZGRzIGV2ZW4gbW9yZSBjb252ZW5pZW5jZSBmdW5jdGlvbnM8L2xpPgo8bGk+VmVyc2lvbiAxLjQuICAgRGVjZW1iZXIgIDIwMDcuICBBZGRzIENyZWF0ZUltYWdlRHJvcGRvd24gbWV0aG9kLCBtZXRob2RzIGZvciBzdGF0ZSBhbmQgY291bnRyeSBkcm9wZG93bnMgYW5kIGEgYnVuY2ggb2Ygb3RoZXIgdGhpbmdzLjwvbGk+CjxsaT5WZXJzaW9uIDEuNS4gICBKYW51YXJ5ICAgMjAwOC4gIEZpeGVzIHRvIGh0bWxfZW50aXRpZXNfZGVjb2RlIGluIHV0Zjg8L2xpPgo8bGk+VmVyc2lvbiAxLjYuICAgRmVicnVhcnkgIDIwMDgsICBBZGRzIHRoZSBDR0ZpbGVVcGxvYWRIYW5kbGVyIGNsYXNzPC9saT4KPGxpPlZlcnNpb24gMS42LjEuICAgRmVicnVhcnkgIDIwMDgsICBNaW5vciBmaXggdG8gcmVjdXJzaXZlX2NoYW5nZV9kaXJlY3Rvcnk8L2xpPgo8bGk+VmVyc2lvbiAxLjguIEZlYnJ1YXJ5IDIwMDgKICA8dWw+CiAgICA8bGk+QWRkIGEgYnVuY2ggbW9yZSB1dGlsaXR5IGFuZCBjb252ZW5pZW5jZSBtZXRob2RzPC9saT4KICAgIDxsaT5Nb3ZlIGNvdW50cmllcyBhbmQgc3RhdGVzIGludG8gYSB0YWJsZSBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgd2l0aCBqb2lucyBldGMuPC9saT4KICAgIDxsaT5BZGQgdGhlIGFiaWxpdHkgdG8gcHJpb3JpdGl6ZSBjZXJ0YWluIGNvdW50cmllcyBieSBuYW1lPC9saT4KICAgIDxsaT5BZGRzIHRoZSBHZXRTaW5nbGVUZW1wbGF0ZUZvcm0gbWV0aG9kIHRvIG1ha2UgaXQgY29udmVuaWVudCB0byBlZGl0IGFuZCByZXN0b3JlIHRvIGRlZmF1bHQgYSBzaW5nbGUgdGVtcGxhdGUuPC9saT4KICAgIDxsaT5GaXhlcyBpc3N1ZXMgd2l0aCB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIGVkaXRpbmcgdGVtcGxhdGVzLjwvbGk+CiAgICA8bGk+VXBkYXRlIHRoZSBsaWNlbnNlLjwvbGk+CiAgICA8bGk+VXBkYXRlcyB0byB0aGUgZmlsZSB1cGxvYWQgY2FwYWJpbGl0aWVzPC9saT4KICAgIDxsaT5UaGUgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgZXhwb3J0ZWQgdG8gc21hcnR5PC9saT4KICAgIDxsaT5BZGQgdGhlIGdldF9hY3Rpb25faWQgYW5kIHNldF9hY3Rpb25faWQgdmlydHVhbCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIG92ZXJyaWRkZW4gYnkgYW55IG1vZHVsZSBkZXJpdmVkIGZyb20gQ0dFeHRlbnNpb25zLjwvbGk+CiAgPC91bD4KICA8L2xpPgo8L3VsPjxiciAvPg==</about>
	<description>This module is a library of php classes used to build advanced forms</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0KCk7CmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgcmV0dXJuIGZhbHNlOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdF90ZW1wbGF0ZSddKSApCiAgewogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Vycm9yX3RlbXBsYXRlJ10gKSApCiAgICAgICR0aGlzLT5TZXRFcnJvclRlbXBsYXRlKHRyaW0oJHBhcmFtc1snZXJyb3JfdGVtcGxhdGUnXSkpOwoKICB9CmVsc2UgaWYoIGlzc2V0KCRwYXJhbXNbJ3Jlc2V0dG9mYWN0b3J5J10pICkKICB7CiAgICAkdGhpcy0+UmVzZXRFcnJvclRlbXBsYXRlKCk7CiAgfQplbHNlIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKQogIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aHVtYm5haWxzaXplJywoaW50KSRwYXJhbXNbJ3RodW1ibmFpbHNpemUnXSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaW1hZ2VleHRlbnNpb25zJyx0cmltKCRwYXJhbXNbJ2ltYWdlZXh0ZW5zaW9ucyddKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJpb3JpdHljb3VudHJpZXMnLHRyaW0oJHBhcmFtc1sncHJpb3JpdHljb3VudHJpZXMnXSkpOwogICAgJHByaXMgPSBleHBsb2RlKCcsJyx0cmltKCRwYXJhbXNbJ3ByaW9yaXR5Y291bnRyaWVzJ10pKTsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuQ0dFWFRFTlNJT05TX1RBQkxFX0NPVU5UUklFUy4nIFNFVCBzb3J0aW5nID0gMCc7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuQ0dFWFRFTlNJT05TX1RBQkxFX0NPVU5UUklFUy4nIFNFVCBzb3J0aW5nID0gPyBXSEVSRSBuYW1lID0gPyc7CiAgICAkaSA9IDk5OTsKICAgIGZvcmVhY2goICRwcmlzIGFzICRvbmUgKQogICAgICB7CgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRpLHRyaW0oJG9uZSkpKTsKCSRpLS07CiAgICAgIH0KICB9CgokZXJyb3JfdGVtcGxhdGUgPSAkdGhpcy0+R2V0RXJyb3JUZW1wbGF0ZSgpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXQnLCR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF90ZW1wbGF0ZScsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X3RlbXBsYXRlJywkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXNldCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwncmVzZXR0b2ZhY3RvcnknLAoJCQkJCQkgJHRoaXMtPkxhbmcoJ3Jlc2V0dG9mYWN0b3J5JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGUnLCR0aGlzLT5MYW5nKCdlcnJvcl90ZW1wbGF0ZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90ZW1wbGF0ZScsCgkJJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwKCQkJCSAgICAgICRlcnJvcl90ZW1wbGF0ZSwnZXJyb3JfdGVtcGxhdGUnKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2ltYWdlZXh0ZW5zaW9ucycsCgkJJHRoaXMtPkxhbmcoJ2ltYWdlX2V4dGVuc2lvbnMnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfaW1hZ2VleHRlbnNpb25zJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW1hZ2VleHRlbnNpb25zJywKCQkJCSAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VleHRlbnNpb25zJywnJyksMjUsMjU1KSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9wcmlvcml0eWNvdW50cmllcycsCgkJJHRoaXMtPkxhbmcoJ3ByaW9yaXR5X2NvdW50cmllcycpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wcmlvcml0eWNvdW50cmllcycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3ByaW9yaXR5Y291bnRyaWVzJywKCQkJCSAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJpb3JpdHljb3VudHJpZXMnLCcnKSwyNSwyNTUpKTsKCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGh1bWJuYWlsc2l6ZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3RodW1ibmFpbHNpemUnLAoJCQkJICAgICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aHVtYm5haWxzaXplJyksMywzKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWlucGFuZWwudHBsJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCAhICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCiAgewogICAgLy8gdG9kbywgcGVybWlzc2lvbnMgbWVzc2FnZSBoZXJlCiAgICByZXR1cm47CiAgfQoKaWYoICFpc3NldCggJHBhcmFtc1snbW9kbmFtZSddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQokbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCRwYXJhbXNbJ21vZG5hbWUnXSk7CmlmKCAhJG1vZHVsZSApCiAgewogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgoKaWYoICEoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICRtb2R1bGUtPlJlZGlyZWN0VG9UYWIoJGlkLCAkcGFyYW1zWydjZ19hY3RpdmV0YWInXSk7CiAgICByZXR1cm47CiAgfQoKJG1vZHVsZS0+RGVsZXRlVGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSk7CiRtb2R1bGUtPlJlZGlyZWN0VG9UYWIoJGlkLCR0aGlzLT5fY3VycmVudF90YWIsJycsJHBhcmFtcyk7CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_addtemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICEkZ0NtcyApIGV4aXQoKTsKCi8vIGlmKCAhICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCi8vICAgewovLyAgICAgLy8gdG9kbywgcGVybWlzc2lvbnMgbWVzc2FnZSBoZXJlCi8vICAgICByZXR1cm47Ci8vICAgfQoKaWYoICFpc3NldCggJHBhcmFtc1snbW9kbmFtZSddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQokbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCRwYXJhbXNbJ21vZG5hbWUnXSk7CmlmKCAhJG1vZHVsZSApCiAgewogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgoKaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkKICB7CiAgICAkbW9kdWxlLT5fY3VycmVudF90YWIgPSAkdGhpcy0+X2N1cnJlbnRfdGFiOwogICAgJG1vZHVsZS0+UmVkaXJlY3RUb1RhYigkaWQpOwogIH0KCgokdGVtcGxhdGUgPSAiIjsKaWYoIGlzc2V0KCAkcGFyYW1zWyd0ZW1wbGF0ZSddICkgKQogIHsKICAgICR0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7CiAgfQogIAokcHJlZml4ID0gIiI7CmlmKCBpc3NldCggJHBhcmFtc1sncHJlZml4J10gKSApCiAgewogICAgJHByZWZpeCA9IHRyaW0oJHBhcmFtc1sncHJlZml4J10pOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCRwYXJhbXNbJ29yaWdhY3Rpb24nXSwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgppZiggJHRlbXBsYXRlID09ICIiIHx8ICRwcmVmaXggPT0gIiIgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCRwYXJhbXNbJ29yaWdhY3Rpb24nXSwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgoKJG5ld3RlbXBsYXRlID0gJHByZWZpeCAuICR0ZW1wbGF0ZTsKCi8vIGNoZWNrIGlmIHRoaXMgdGVtcGxhdGUgYWxyZWFkeSBleGlzdHMKJHR4dCA9IHRyaW0oJG1vZHVsZS0+R2V0VGVtcGxhdGUoJG5ld3RlbXBsYXRlKSk7CmlmKCAkdHh0ICE9ICIiICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJHBhcmFtc1snb3JpZ2FjdGlvbiddLCcnLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KCi8vIHdlJ3JlIHJlYWR5IHRvIHNldCBpdAokdHh0ID0gbXlfaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddLEVOVF9RVU9URVMsZ2V0X2VuY29kaW5nKCkpOwokbW9kdWxlLT5TZXRUZW1wbGF0ZSgkbmV3dGVtcGxhdGUsJHR4dCk7CgppZiggJHRoaXMtPl9jdXJyZW50X3RhYiAhPSAnJyApCiAgewogICAgJG1vZHVsZS0+X2N1cnJlbnRfdGFiID0gJHRoaXMtPl9jdXJyZW50X3RhYjsKICAgICRtb2R1bGUtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICAgIHJldHVybjsKICB9CiRtb2R1bGUtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCAhaXNzZXQoICRnQ21zICkgKSBleGl0KCk7CgovLyBpZiggISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQovLyAgIHsKLy8gICAgIC8vIHRvZG8sIHBlcm1pc3Npb25zIG1lc3NhZ2UgaGVyZQovLyAgICAgcmV0dXJuOwovLyAgIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ21vZG5hbWUnXSApICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgkcGFyYW1zWydtb2RuYW1lJ10pOwppZiggISRtb2R1bGUgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQoKaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkKICB7CiAgICAkbW9kdWxlLT5fY3VycmVudF90YWIgPSAkdGhpcy0+X2N1cnJlbnRfdGFiOwogICAgJG1vZHVsZS0+UmVkaXJlY3RUb1RhYigkaWQpOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCRwYXJhbXNbJ29yaWdhY3Rpb24nXSwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgppZiggIWlzc2V0KCAkcGFyYW1zWyd0ZW1wbGF0ZSddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCRwYXJhbXNbJ29yaWdhY3Rpb24nXSwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CiRtb2R1bGUtPlNldFRlbXBsYXRlKCAkcGFyYW1zWydwcmVmaXgnXS4kcGFyYW1zWyd0ZW1wbGF0ZSddLCAKCQkgICAgICBteV9odG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10sRU5UX1FVT1RFUyxnZXRfZW5jb2RpbmcoKSkpOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ2FwcGx5YnV0dG9uJ10pICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdlZGl0dGVtcGxhdGUnLCRyZXR1cm5pZCwkcGFyYW1zKTsKICB9CgppZiggJHRoaXMtPl9jdXJyZW50X3RhYiAhPSAnJyApCiAgewogICAgJG1vZHVsZS0+X2N1cnJlbnRfdGFiID0gJHRoaXMtPl9jdXJyZW50X3RhYjsKICAgICRtb2R1bGUtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICAgIHJldHVybjsKICB9CiRtb2R1bGUtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCAhJGdDbXMgKSBleGl0KCk7CgovLyBpZiggISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQovLyAgIHsKLy8gICAgIC8vIHRvZG8sIHBlcm1pc3Npb25zIG1lc3NhZ2UgaGVyZQovLyAgICAgcmV0dXJuOwovLyAgIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ21vZG5hbWUnXSApICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgkcGFyYW1zWydtb2RuYW1lJ10pOwppZiggISRtb2R1bGUgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQoKCi8vIGNoZWNrIGlmIHdlIGhhdmUgYSB0ZW1wbGF0ZSBuYW1lCmlmKCAhKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pIHx8IGlzc2V0KCRwYXJhbXNbJ3ByZWZpeCddKSkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KaWYoICFpc3NldCgkcGFyYW1zWydtb2RlJ10pIHx8ICFpc3NldCgkcGFyYW1zWyd0aXRsZSddKSApCiAgewogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CiAgICAkbW9kdWxlLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQoKLy8gaGFuZGxlIGVycm9ycy4KaWYoIGlzc2V0KCRwYXJhbXNbJ2Vycm9ycyddKSApCiAgewogICAgZWNobyAkbW9kdWxlLT5TaG93RXJyb3JzKCRwYXJhbXNbJ2Vycm9ycyddKTsKICB9CgoKJHBhcmFtc1snb3JpZ2FjdGlvbiddID0gJHBhcmFtc1snYWN0aW9uJ107CiRjb250ZW50cyA9ICIiOwppZiggJHBhcmFtc1snbW9kZSddID09ICdhZGQnICkKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJICAgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2FkZHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLAoJCQkJCSAgICBmYWxzZSwgJycsICRwYXJhbXMpKTsKICAgICRzbWFydHktPmFzc2lnbigndGVtcGxhdGVuYW1lJywKCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAndGVtcGxhdGUnLCAiIiwgNDAsIDIwMCApKTsKICAgICRzbWFydHktPmFzc2lnbignaGlkZGVuJywKCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3ByZWZpeCcsICRwYXJhbXNbJ3ByZWZpeCddKS4KCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2NnX2FjdGl2ZXRhYicsCgkJCQkJICAgICAkdGhpcy0+X2N1cnJlbnRfdGFiKSk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snZGVmYXVsdHRlbXBsYXRlcHJlZiddKSAmJiAkcGFyYW1zWydkZWZhdWx0dGVtcGxhdGVwcmVmJ10gIT0gJycgKQogICAgICB7CgkkY29udGVudHMgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCRwYXJhbXNbJ2RlZmF1bHR0ZW1wbGF0ZXByZWYnXSk7CiAgICAgIH0KICB9CiBlbHNlIAogICB7CiAgICAgJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJCSAgICAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fZWRpdHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLAoJCQkJCQkgICAgZmFsc2UsICcnLCAkcGFyYW1zKSk7CiAgICAgJHNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZW5hbWUnLCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwogICAgICRzbWFydHktPmFzc2lnbignaGlkZGVuJywKCQkgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0ZW1wbGF0ZScsICRwYXJhbXNbJ3RlbXBsYXRlJ10gKS4KCQkgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdjZ19hY3RpdmV0YWInLAoJCQkJCSAgICAgICR0aGlzLT5fY3VycmVudF90YWIpKTsKICAgICAkY29udGVudHMgPSAkbW9kdWxlLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWydwcmVmaXgnXS4kcGFyYW1zWyd0ZW1wbGF0ZSddKTsKICAgICAkc21hcnR5LT5hc3NpZ24oJ2FwcGx5JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2FwcGx5YnV0dG9uJywKCQkJCQkJICAgJHRoaXMtPkxhbmcoJ2FwcGx5JykpKTsKICAgfQoKaWYoIG1ldGhvZF9leGlzdHMoJG1vZHVsZSwgJ0dldEVkaXRUZW1wbGF0ZU1lc3NhZ2UnKSApCiAgewogICAgICR0eHQgPSAkbW9kdWxlLT5HZXRFZGl0VGVtcGxhdGVNZXNzYWdlKCRwYXJhbXNbJ3ByZWZpeCddKTsKICAgICAkc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlX2luZm8nLCR0eHQpOwogIH0KZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snaW5mbyddKSAmJiAhZW1wdHkoJHBhcmFtc1snaW5mbyddKSApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZV9pbmZvJyx0cmltKCRwYXJhbXNbJ2luZm8nXSkpOwogIH0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsbXlfaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ3RpdGxlJ10pKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGVuYW1lJywkdGhpcy0+TGFuZygncHJvbXB0X3RlbXBsYXRlbmFtZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfdGVtcGxhdGUnKSk7CiRzbWFydHktPmFzc2lnbigndGVtcGxhdGUnLAoJCSR0aGlzLT5DcmVhdGVUZXh0QXJlYSAoZmFsc2UsICRpZCwKCQkJCSAgICAgICAkY29udGVudHMsICd0ZW1wbGF0ZWNvbnRlbnQnLCAnJykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXRidXR0b24nLAoJCQkJCQkgICAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywgCgkJCQkJCSAgICR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXR0ZW1wbGF0ZS50cGwnKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.makedefaulttemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCAhaXNzZXQoICRnQ21zICkgKSBleGl0KCk7CgovLyBpZiggISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQovLyAgIHsKLy8gICAgIC8vIHRvZG8sIHBlcm1pc3Npb25zIG1lc3NhZ2UgaGVyZQovLyAgICAgcmV0dXJuOwovLyAgIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ21vZG5hbWUnXSApICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KJG1vZHVsZSA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJHBhcmFtc1snbW9kbmFtZSddKTsKaWYoICEkbW9kdWxlICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlJ10gKSApCiAgewogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CiAgICAkbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCwkdGhpcy0+X2N1cnJlbnRfdGFiLCcnLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ2RlZmF1bHRwcmVmbmFtZSddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3RUb1RhYigkaWQsJHRoaXMtPl9jdXJyZW50X3RhYiwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CiRtb2R1bGUtPlNldFByZWZlcmVuY2UoJHBhcmFtc1snZGVmYXVsdHByZWZuYW1lJ10sJHBhcmFtc1sndGVtcGxhdGUnXSk7CgokbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCwkdGhpcy0+X2N1cnJlbnRfdGFiKTsKLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.setdefaulttemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCiR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKTsgLy9Eb24ndCBhY3R1YWxseSBjYXJlLiAgSnVzdCBmb3JjZSBhIGxvZ2luLgoKaWYoICFpc3NldCgkcGFyYW1zWydkZXN0bW9kdWxlJ10pICkKewogICAgc3RhY2tfdHJhY2UoKTsKICAgIGRpZSgnPGJyLz5EZXN0aW5hdGlvbiBtb2R1bGUgbm90IHNldCcpOwp9CiRtb2R1bGUgPSYgJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCRwYXJhbXNbJ2Rlc3Rtb2R1bGUnXSk7CmlmKCAhaXNfb2JqZWN0KCRtb2R1bGUpICkKewogICAgc3RhY2tfdHJhY2UoKTsKICAgIGRpZSgnPGJyLz5Db3VsZCBub3QgZmluZCBkZXN0aW5hdGlvbiBtb2R1bGUnKTsgCn0KCmlmKCBpc3NldCgkcGFyYW1zWydyZXNldHRvZGVmYXVsdCddKSAmJgogICAgaXNzZXQoJHBhcmFtc1sncHJlZm5hbWUnXSkgJiYKICAgIGlzc2V0KCRwYXJhbXNbJ2ZpbGVuYW1lJ10pICkKICB7CiAgICAkZm4gPSBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRtb2R1bGUtPkdldE5hbWUoKS5ESVJFQ1RPUllfU0VQQVJBVE9SLgogICAgICAndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLiRwYXJhbXNbJ2ZpbGVuYW1lJ107CiAgICBpZiggZmlsZV9leGlzdHMoICRmbiApICkKICAgICAgewoJJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CglpZiggaXNzZXQoJHBhcmFtc1sndXNldGVtcGxhdGUnXSkgKQoJICB7CgkgICAgJG1vZHVsZS0+U2V0VGVtcGxhdGUoJHBhcmFtc1sncHJlZm5hbWUnXSwkdGVtcGxhdGUpOwoJICB9CgllbHNlCgkgIHsKCSAgICAkbW9kdWxlLT5TZXRQcmVmZXJlbmNlKCRwYXJhbXNbJ3ByZWZuYW1lJ10sJHRlbXBsYXRlKTsKCSAgfQogICAgICB9CiAgfQogZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICYmCgkgIGlzc2V0KCRwYXJhbXNbJ3ByZWZuYW1lJ10pICkKICAgewogICAgIGlmKCBpc3NldCgkcGFyYW1zWyd1c2V0ZW1wbGF0ZSddKSApCiAgICAgICB7CgkgJG1vZHVsZS0+U2V0VGVtcGxhdGUoJHBhcmFtc1sncHJlZm5hbWUnXSwkcGFyYW1zWydpbnB1dF90ZW1wbGF0ZSddKTsKICAgICAgIH0KICAgICBlbHNlCiAgICAgICB7CgkgJG1vZHVsZS0+U2V0UHJlZmVyZW5jZSgkcGFyYW1zWydwcmVmbmFtZSddLCRwYXJhbXNbJ2lucHV0X3RlbXBsYXRlJ10pOwogICAgICAgfQogICB9CgokbW9kdWxlLT5TZXRDdXJyZW50VGFiKCR0aGlzLT5fY3VycmVudF90YWIpOwokbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCk7Ci8vaWYoIGlzc2V0KCAkcGFyYW1zWydhY3RpdmVfdGFiJ10gKSApCi8vICB7Ci8vICAgICRtb2R1bGUtPm15UmVkaXJlY3RUb1RhYigkaWQsJHBhcmFtc1snYWN0aXZlX3RhYiddKTsKLy8gICAgcmV0dXJuOwovLyAgfQovLyRtb2R1bGUtPm15UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nKTsKCi8vIEVPRgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/CGExtensions.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCAhY2xhc3NfZXhpc3RzKCdDR0V4dGVuc2lvbnMnKSApCiAgewoKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvY2xhc3MuQ0dGaWxlVXBsb2FkSGFuZGxlci5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb25zLm1pc2MucGhwJyk7CmRlZmluZSgnQ0dFWFRFTlNJT05TX1RBQkxFX0NPVU5UUklFUycsY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2dlX2NvdW50cmllcycpOwpkZWZpbmUoJ0NHRVhURU5TSU9OU19UQUJMRV9TVEFURVMnLGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2NnZV9zdGF0ZXMnKTsKCmNsYXNzIENHRXh0ZW5zaW9ucyBleHRlbmRzIENNU01vZHVsZQp7CiAgdmFyICRfYWN0aW9uaWQ7CiAgdmFyICRfaW1hZ2VfZGlyZWN0b3JpZXM7CiAgdmFyICRfY3VycmVudF90YWI7CiAgdmFyICRfZXJyb3Jtc2c7CiAgdmFyICRfcmV0dXJuaWQ7CgogIC8qCiAgICogQSBzbWFydHkgZnVuY3Rpb24gZm9yIGRpc3BsYXlpbmcgYW4gaW1hZ2UKICAgKi8KICBmdW5jdGlvbiBzbWFydHlfZnVuY3Rpb25fY2dpbWFnZSgkcGFyYW1zLCAmJHNtYXJ0eSkKICB7CiAgICBnbG9iYWwgJGdDbXM7CiAgICAkb2JqID0mICRnQ21zLT5tb2R1bGVzWydDR0V4dGVuc2lvbnMnXVsnb2JqZWN0J107CiAgICAKICAgIGlmKCAhaXNzZXQoJHBhcmFtc1snaW1hZ2UnXSkgKSByZXR1cm47CiAgICAKICAgICRhbHQgPSAnJzsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydhbHQnXSkgKQogICAgICB7CgkkYWx0ID0gdHJpbSgkcGFyYW1zWydhbHQnXSk7CiAgICAgIH0KICAgIGlmKCBpc3NldCgkcGFyYW1zWydjbGFzcyddKSApCiAgICAgIHsKCSRjbGFzcyA9IHRyaW0oJHBhcmFtc1snY2xhc3MnXSk7CiAgICAgIH0KICAgIGlmKCBpc3NldCgkcGFyYW1zWyd3aWR0aCddKSApCiAgICAgIHsKCSR3aWR0aCA9IHRyaW0oJHBhcmFtc1snd2lkdGgnXSk7CiAgICAgIH0KICAgIGlmKCBpc3NldCgkcGFyYW1zWydoZWlnaHQnXSkgKQogICAgICB7CgkkaGVpZ2h0ID0gdHJpbSgkcGFyYW1zWydoZWlnaHQnXSk7CiAgICAgIH0KICAgICR0eHQgPSAkb2JqLT5EaXNwbGF5SW1hZ2UodHJpbSgkcGFyYW1zWydpbWFnZSddKSwkYWx0LCRjbGFzcywkd2lkdGgsJGhlaWdodCk7CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSApCiAgICAgIHsKCSRzbWFydHktPmFzc2lnbih0cmltKCRwYXJhbXNbJ2Fzc2lnbiddKSwkdHh0KTsKICAgICAgfQogICAgZWxzZQogICAgICB7CglyZXR1cm4gJHR4dDsKICAgICAgfQogIH0KCiAgLyoKICAgKiBBIHNtYXJ0eSBibG9jayBwbHVnaW4gZm9yIGRpc3BsYXlpbmcgYW4gZXJyb3IgdXNpbmcKICAgKiBhIHRlbXBsYXRlLiAgaS5lIHtlcnJvcn1ibGFoIGJsYWggYmxhaHsvZXJyb3J9CiAgICoKICAgKi8KICBmdW5jdGlvbiBibG9ja0Rpc3BsYXlFcnJvcigkcGFyYW1zLCRjb250ZW50LCYkc21hcnR5LCRyZXBlYXQpCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJHR4dCA9ICcnOwogICAgaWYoIHRyaW0oJGNvbnRlbnQpICE9ICcnICkKICAgICAgewoJJGVycm9yY2xhc3MgPSAnZXJyb3InOwoJaWYoIGlzc2V0KCAkcGFyYW1zWydlcnJvcmNsYXNzJ10gKSApCgkgIHsKCSAgICAkZXJyb3JjbGFzcyA9IHRyaW0oJHBhcmFtc1snZXJyb3JjbGFzcyddKTsKCSAgfQoJJG9iaiA9JiAkZ0Ntcy0+bW9kdWxlc1snQ0dFeHRlbnNpb25zJ11bJ29iamVjdCddOwoJJHR4dCA9ICRvYmotPkRpc3BsYXlFcnJvck1lc3NhZ2UoJGNvbnRlbnQsJGVycm9yY2xhc3MpOwogICAgICB9CiAgICAKICAgIGlmKCBpc3NldCggJHBhcmFtc1snYXNzaWduJ10gKSApCiAgICAgIHsKCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkdHh0KTsKCXJldHVybiAnJzsKICAgICAgfQogICAgcmV0dXJuICR0eHQ7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgQ29uc3RydWN0b3I6CiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gQ0dFeHRlbnNpb25zKCkKICB7CiAgICBwYXJlbnQ6OkNNU01vZHVsZSgpOwoKICAgICR0aGlzLT5fYWN0aW9uaWQgPSAnJzsKICAgIAogICAgZ2xvYmFsICRnQ21zOwogICAgJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7CgogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfYmxvY2soJ2NnZXJyb3InLAoJCQkgICAgYXJyYXkoJ0NHRXh0ZW5zaW9ucycsJ2Jsb2NrRGlzcGxheUVycm9yJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnaW1hZ2UnLAoJCQkgICAgICAgYXJyYXkoJ0NHRXh0ZW5zaW9ucycsJ3NtYXJ0eV9mdW5jdGlvbl9jZ2ltYWdlJykpOwoKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXROYW1lKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXROYW1lKCkKICB7CiAgICByZXR1cm4gJ0NHRXh0ZW5zaW9ucyc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0RnJpZW5kbHlOYW1lKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7CiAgfQoKCQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFZlcnNpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQogIHsKICAgIHJldHVybiAnMS44JzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRIZWxwKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRIZWxwKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3IoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEF1dGhvcigpCiAgewogICAgcmV0dXJuICdjYWxndXkxMDAwJzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3JFbWFpbCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogIHsKICAgIHJldHVybiAnY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0Q2hhbmdlTG9nKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSXNQbHVnaW5Nb2R1bGUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSGFzQWRtaW4oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEhhc0FkbWluKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBZG1pblNlY3Rpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCiAgewogICAgcmV0dXJuICdleHRlbnNpb25zJzsgLy8gTmVlZGVkIGZvciB3aWtpIGhlbHAgbGluayB0byB3b3JrCiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFZpc2libGVUb0FkbWluVXNlcigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXREZXBlbmRlbmNpZXMoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpCiAgewogICAgcmV0dXJuIGFycmF5KCk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBNaW5pbXVtQ01TVmVyc2lvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMS4yLjMiOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7CiAgfQoKCiAgLyoqKgogICAqIEEgbWV0aG9kIHRvIGluc2VydCBvbmx5IHVuaXF1ZSBpdGVtcyBpbnRvIGFuIGFycmF5CiAgICovCiAgZnVuY3Rpb24gYXJyYXlfaW5zZXJ0X3VuaXF1ZSggJiRhcnIsICRzdHIgKQogIHsKICAgIGlmKCAhaW5fYXJyYXkoJHN0ciwkYXJyKSApCiAgICAgIHsKCSRhcnJbXSA9ICRzdHI7CiAgICAgIH0KICB9CgogIC8qKioKICAgKiBBIG1ldGhvZCB0byB0ZXN0IGlmIGFuIGFycmF5IGVsZW1lbnQgZXhpc3RzIGJ5IHRlc3RpbmcKICAgKiBhIHN1YnNldCBvZiBpdCdzIGtleQogICAqCiAgICogQHBhcmFtIGFycmF5ICBUaGUgYXJyYXkgdG8gdGVzdAogICAqIEBwYXJhbSBzdHJpbmcgVGhlIHN1YnN0cmluZyBleHByZXNzaW9uIHRvIHRlc3QgZm9yCiAgICovCiAgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0c19zdWJzdHIoICRhcnIsICRleHByICkKICB7CiAgICAka2V5cyA9IGFycmF5X2tleXMoICRhcnIgKTsKICAgIGZvcmVhY2goICRrZXlzIGFzICRrICkKICAgICAgewoJaWYoIHN0cnN0ciggJGssICRleHByICkgKSByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8qKgogICAqIFRlc3QgaWYgYW4gYXJyYXkga2V5IGV4aXN0cywgZ2l2ZW4gYSByZWd1bGFyIGV4cHJlc3Npb24KICAgKgogICAqIEBwYXJhbSBhcnJheSAgVGhlIGFycmF5IHRvIHNlYXJjaAogICAqIEBwYXJhbSBzdHJpbmcgVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byB1c2UgaW4gdGhlIHNlYXJjaAogICAqLwogIGZ1bmN0aW9uIGFycmF5X2ZpbmRfa2V5X3JlZ2V4cCggJGFyciwgJGV4cHIgKQogIHsKICAgICRrZXlzID0gYXJyYXlfa2V5cyggJGFyciApOwogICAgZm9yZWFjaCggJGtleXMgYXMgJGsgKQogICAgICB7CglpZiggcHJlZ19tYXRjaCggJGV4cHIsICRrICkgKSByZXR1cm4gJGs7CiAgICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvKioKICAgKiBNZXJnZSB0d28gaGFzaGVzCiAgICoKICAgKiBAcGFyYW0gYXJyYXkgIFRoZSBhcnJheSB0byBzZWFyY2gKICAgKiBAcGFyYW0gc3RyaW5nIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gdXNlIGluIHRoZSBzZWFyY2gKICAgKi8KICBmdW5jdGlvbiBhcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCAkYXJyMSwgJGFycjIgKQogIHsKICAgICR4eHJlc3VsdCA9IGFycmF5KCk7CiAgICAvLyBhZGQgaXRlbXMgY29tbW9uIHRvIGFycjEgYW5kIGFycjIgCiAgICAvLyBidXQgZmF2b3IgcmVxdWlyZWQgaXRlbXMKICAgIGlmKCAhaXNfYXJyYXkoICRhcnIxICkgfHwgIWlzX2FycmF5KCAkYXJyMiApICkKICAgICAgewoJcmV0dXJuOwogICAgICB9CiAgICBmb3JlYWNoKCAkYXJyMSBhcyAkYTEgKQogICAgICB7Cglmb3JlYWNoKCAkYXJyMiBhcyAkYTIgKQoJICB7CgkgICAgaWYoICRhMVsnbmFtZSddID09ICRhMlsnbmFtZSddICkgCgkgICAgICB7CgkJaWYoICRhMVsncmVxdWlyZWQnXSA9PSAyICkgCgkJICB7CgkJICAgIGFycmF5X3B1c2goICR4eHJlc3VsdCwgJGExICk7CgkJICAgIGJyZWFrOwoJCSAgfQoJCWVsc2UgCgkJICB7CgkJICAgIGFycmF5X3B1c2goICR4eHJlc3VsdCwgJGEyICk7CgkJICAgIGJyZWFrOwoJCSAgfQoJICAgICAgfSAgICAKCSAgfQogICAgICB9CiAgCiAgICAvLyBhZGQgaXRlbXMgaW4gYXJyMSBub3QgaW4gcmVzdWx0CiAgICBmb3JlYWNoKCAkYXJyMSBhcyAkYTEgKQogICAgICB7CgkkZm91bmQgPSBmYWxzZTsKCWZvcmVhY2goICR4eHJlc3VsdCBhcyAkcmVzICkKCSAgewoJICAgIGlmKCAkYTFbJ25hbWUnXSA9PSAkcmVzWyduYW1lJ10gKQoJICAgICAgewoJCSRmb3VuZCA9IHRydWU7CgkJYnJlYWs7CgkgICAgICB9CgkgIH0KCWlmKCAhJGZvdW5kICkKCSAgewoJICAgIGFycmF5X3B1c2goICR4eHJlc3VsdCwgJGExICk7CgkgIH0KICAgICAgfQogIAogICAgLy8gYWRkIGl0ZW1zIGluIGFycjIgbm90IGluIHJlc3VsdAogICAgZm9yZWFjaCggJGFycjIgYXMgJGEyICkKICAgICAgewoJJGZvdW5kID0gZmFsc2U7Cglmb3JlYWNoKCAkeHhyZXN1bHQgYXMgJHJlcyApCgkgIHsKCSAgICBpZiggJGEyWyduYW1lJ10gPT0gJHJlc1snbmFtZSddICkKCSAgICAgIHsKCQkkZm91bmQgPSB0cnVlOwoJCWJyZWFrOwoJICAgICAgfQoJICB9CglpZiggISRmb3VuZCApCgkgIHsKCSAgICBhcnJheV9wdXNoKCAkeHhyZXN1bHQsICRhMiApOwoJICB9CiAgICAgIH0KICAgIHJldHVybiAkeHhyZXN1bHQ7CiAgfQoKCiAgLyoKICAgKiBDb21wYXJlIHR3byBoYXNoZXMgYnkgdGhlIGtleSAnc29ydF9rZXknCiAgICovCiAgZnVuY3Rpb24gY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5KCAkZTEsICRlMiApCiAgewogICAgaWYoICRlMVsnc29ydF9rZXknXSA8ICRlMlsnc29ydF9rZXknXSApCiAgICAgIHsKCXJldHVybiAtMTsKICAgICAgfQogICAgZWxzZSBpZiggJGUxWydzb3J0X2tleSddID4gJGUyWydzb3J0X2tleSddICkKICAgICAgewoJcmV0dXJuIDE7CiAgICAgIH0KICAgIHJldHVybiAwOwogIH0KCgogIC8qCiAgICogRXhwbG9kZSBhbiBhcnJheSBpbnRvIGEgaGFzaAogICAqLwogIGZ1bmN0aW9uIGV4cGxvZGVfd2l0aF9rZXkoJHN0ciwgJGluZ2x1ZT0nPScsICRvdXRnbHVlPScmJykKICB7CiAgICAkcmV0ID0gYXJyYXkoKTsKICAgICRhMSA9IHNwbGl0KCRvdXRnbHVlLCRzdHIpOwogICAgZm9yZWFjaCggJGExIGFzICRhMiApCiAgICAgIHsKCWxpc3QoICRrLCAkdiApID0gc3BsaXQoICRpbmdsdWUsICRhMiApOwoJJHJldFsgJGsgXSA9ICR2OwogICAgICB9CiAgICByZXR1cm4gJHJldDsKICB9CgoKICAvKgogICAqIEZpbmQgdGhlIGluZGV4IHRoYXQgc3RvcmVzIGEgdmFsdWUgaW4gYW4gYXJyYXkKICAgKi8KICBmdW5jdGlvbiBmaW5kX2luZGV4X29mX3ZhbHVlKCAkZGF0YSwgJHZhbHVlLCAkZGZsdCApCiAgewogICAgJGkgPSAwOwogICAgZm9yZWFjaCggJGRhdGEgYXMgJGs9PiR2ICkKICAgICAgewoJaWYoICR2ID09ICR2YWx1ZSApCgkgIHsKCSAgICByZXR1cm4gJGk7CgkgIH0KCSRpKys7CiAgICAgIH0KICAgIHJldHVybiAkZGZsdDsKICB9CgogIC8qCiAgICogc2VhcmNoIGFuIGFycmF5IG9mIGhhc2hlcyBmb3IgYSBwYXJ0aWN1bGFyIGtleSB2YWx1ZQogICAqLwogIGZ1bmN0aW9uIG5lc3RlZF9hcnJheV9zZWFyY2hfYnlfa2V5KCAmJGlucHV0LCAka2V5LCAkdmFsdWUgKQogIHsKICAgIGZvcmVhY2goICRpbnB1dCBhcyAkb25lZWxlbSApCiAgICAgIHsKCWlmKCBpc3NldCgkb25lZWxlbVska2V5XSkgKQoJICB7CgkgICAgaWYoICRvbmVlbGVtWyRrZXldID09ICR2YXVlICkKCSAgICAgIHsKCQlyZXR1cm4gdHJ1ZTsKCSAgICAgIH0KCSAgfQogICAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAvKgogICAqIEltcGxvZGUgYSBoYXNoIGludG8gYW4gYXJyYXkKICAgKi8KICBmdW5jdGlvbiBpbXBsb2RlX3dpdGhfa2V5KCRhc3NvYywgJGluZ2x1ZSA9ICc9JywgJG91dGdsdWUgPSAnJicpCiAgewogICAgJHJldHVybiA9IG51bGw7CiAgICBmb3JlYWNoICgkYXNzb2MgYXMgJHRrID0+ICR0dikgJHJldHVybiAuPSAkb3V0Z2x1ZS4kdGsuJGluZ2x1ZS4kdHY7CiAgICByZXR1cm4gc3Vic3RyKCRyZXR1cm4sc3RybGVuKCRvdXRnbHVlKSk7CiAgfQoKCiAgLyoKICAgKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHVybAogICAqLwogIGZ1bmN0aW9uIENyZWF0ZVVSTCgkaWQsJGFjdGlvbiwkcmV0dXJuaWQsJHBhcmFtcz1hcnJheSgpLCRpbmxpbmU9ZmFsc2UpCiAgewogICAgcmV0dXJuICR0aGlzLT5fX0NyZWF0ZVByZXR0eUxpbmsoJGlkLCRhY3Rpb24sJHJldHVybmlkLCcnLCRwYXJhbXMsJycsdHJ1ZSwkaW5saW5lKTsKICB9CgoKICAvKgogICAqIENyZWF0ZSBhIHllcy9ubyBkcm9wZG93bgogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUlucHV0WWVzTm9Ecm9wZG93bigkaWQsJG5hbWUsJHNlbGVjdGVkdmFsdWU9JycsJGFkZHRleHQ9JycpCiAgewogICAgJGNnZXh0ZW5zaW9ucyA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NHRXh0ZW5zaW9ucycpOwogICAgJGl0ZW1zID0gYXJyYXkoJGNnZXh0ZW5zaW9ucy0+TGFuZygneWVzJyk9PjEsCgkJICAgJGNnZXh0ZW5zaW9ucy0+TGFuZygnbm8nKT0+MCk7CiAgICByZXR1cm4gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCRuYW1lLCRpdGVtcywtMSwkc2VsZWN0ZWR2YWx1ZSwkYWRkdGV4dCk7CiAgfQoKCiAgLyoKICAgKiBBIGNvbnZlbmllbmNlIG1ldGhvZCB0byBjcmVhdGUgYSBjaGVja2JveAogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkbmFtZSwgJHZhbHVlPScnLCAkc2VsZWN0ZWR2YWx1ZT0nJywgCgkJCSAgICAgICAkYWRkdHRleHQ9JycpCiAgewogICAgJHRleHQgPSAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSInLiRpZC4kbmFtZS4nIiB2YWx1ZT0iJy4kdmFsdWUuJyInOwogICAgJGFyciA9IHNwbGl0KCIsIiwkc2VsZWN0ZWR2YWx1ZSk7CiAgICBmb3JlYWNoKCAkYXJyIGFzICRhICkKICAgICAgewoJaWYgKCRhID09ICR2YWx1ZSkKCSAgewoJICAgICR0ZXh0IC49ICcgJyAuICdjaGVja2VkPSJjaGVja2VkIic7CgkgIH0KICAgICAgfQogICAgaWYgKCRhZGR0dGV4dCAhPSAnJykKICAgICAgewoJJHRleHQgLj0gJyAnLiRhZGR0dGV4dDsKICAgICAgfQogICAgJHRleHQgLj0gIiAvPlxuIjsKICAgIHJldHVybiAkdGV4dDsKICB9CgoKICAvKgogICAqIEEgQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGZvcm1zCiAgICovCiAgZnVuY3Rpb24gQ0dDcmVhdGVGb3JtU3RhcnQoJGlkLCRhY3Rpb249J2RlZmF1bHQnLCRyZXR1cm5pZD0nJywkcGFyYW1zPWFycmF5KCksJGlubGluZT1mYWxzZSwkbWV0aG9kPSdwb3N0JywkZW5jdHlwZT0nJywkaWRzdWZmaXg9JycsJGV4dHJhPScnKQogIHsKICAgIGlmKCAhZW1wdHkoJHRoaXMtPl9jdXJyZW50X3RhYikgKQogICAgICB7CgkkcGFyYW1zWydjZ19hY3RpdmV0YWInXSA9ICR0aGlzLT5fY3VycmVudF90YWI7CiAgICAgIH0KICAgIHJldHVybiAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwkYWN0aW9uLCRyZXR1cm5pZCwkbWV0aG9kLCRlbmN0eXBlLCRpbmxpbmUsJGlkc3VmZml4LCRwYXJhbXMsJGV4dHJhKTsKICB9CgoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgZnJvbnRlbmQgZm9ybQogICAqLwogIGZ1bmN0aW9uIENHQ3JlYXRlRnJvbnRlbmRGb3JtU3RhcnQoJGlkLCRhY3Rpb249J2RlZmF1bHQnLCRyZXR1cm5pZD0nJywkcGFyYW1zPWFycmF5KCksJGlubGluZT10cnVlLCRtZXRob2Q9J3Bvc3QnLCRlbmN0eXBlPScnLCRpZHN1ZmZpeD0nJywkZXh0cmE9JycpCiAgewogICAgcmV0dXJuICR0aGlzLT5DcmVhdGVGcm9udGVuZEZvcm1TdGFydCgkaWQsJHJldHVybmlkLCRhY3Rpb24sJG1ldGhvZCwkZW5jdHlwZSwkaW5saW5lLCRpZHN1ZmZpeCwkcGFyYW1zLCRleHRyYSk7CiAgfQoKCiAgLyoKICAgKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhbiBpbWFnZSBidXR0b24KICAgKi8KICBmdW5jdGlvbiBDcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJG5hbWUsJHZhbHVlPScnLCRhZGR0ZXh0PScnLCRpbWFnZT0nJywKCQkJICAgICAkY29uZmlybXRleHQ9JycsJGNsYXNzPScnKQogIHsKICAgICRyZWFsX2ltYWdlID0gJyc7CiAgICBpZiggIWVtcHR5KCRpbWFnZSkgKQogICAgICB7CglnbG9iYWwgJGdDbXM7CgkkY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKCgkvLyBjaGVjayBpbWFnZV9kaXJlY3RvcmllcyBmaXJzdAoJaWYoIGlzc2V0KCR0aGlzLT5faW1hZ2VfZGlyZWN0b3JpZXMpICYmICFlbXB0eSgkdGhpcy0+X2ltYWdlX2RpcmVjdG9yaWVzKSkKCSAgewoJICAgIGZvcmVhY2goICR0aGlzLT5faW1hZ2VfZGlyZWN0b3JpZXMgYXMgJGRpciApCgkgICAgICB7CgkJJHVybCA9IGNtc19qb2luX3BhdGgoJGRpciwkaW1hZ2UpOwoJCSRwYXRoID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWydyb290X3BhdGgnXSwkdXJsKTsKCgkJaWYoIGlzX3JlYWRhYmxlKCRwYXRoKSApCgkJICB7Ci8vIAkJICAgIGlmKCAkdGhpcy0+SXNBZG1pbkFjdGlvbigpICkKLy8gCQkgICAgICAkdXJsID0gY21zX2pvaW5fcGF0aCgnLi4nLCR1cmwpOwoJCSAgICAkcmVhbF9pbWFnZSA9ICR1cmw7CgkJICB9CgkgICAgICB9CgkgIH0KCglpZiggZW1wdHkoJHJlYWxfaW1hZ2UpICkKCSAgewoJICAgICR0aGVtZSA9JiAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ107CgkgICAgaWYoIGlzX29iamVjdCgkdGhlbWUpICkgCgkgICAgICB7CgkJLy8gd2UncmUgaW4gdGhlIGFkbWluCgkJJHR4dCA9ICR0aGVtZS0+RGlzcGxheUltYWdlKCRpbWFnZSwkYWx0LCR3aWR0aCwkaGVpZ2h0LCRjbGFzcyk7CgkJJHJlYWxfaW1hZ2UgPSAkdGhlbWUtPmltYWdlTGlua1skaW1hZ2VdOwoJICAgICAgfQoJICB9CgoJJGFkZHRleHQgLj0gJyB0aXRsZT0iJy4kdmFsdWUuJyInOwogICAgICB9CgogICAgaWYoICFlbXB0eSgkY2xhc3MpICkKICAgICAgewoJJGFkZHRleHQgLj0gJyBjbGFzcz0iJy4kY2xhc3MuJyInOwogICAgICB9CiAgICByZXR1cm4gcGFyZW50OjpDcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJG5hbWUsJHZhbHVlLCRhZGR0ZXh0LCRyZWFsX2ltYWdlLCRjb25maXJtdGV4dCk7CiAgfQoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgaGlkZGVuIGZvcm0gZWxlbWVudAogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICRuYW1lLCAkdmFsdWU9JycsICRhZGR0ZXh0PScnLCAkZGVsaW09JywnKQogIHsKICAgIGlmKCBpc19hcnJheSggJHZhbHVlICkgKQogICAgICB7CgkkdmFsID0gaW1wbG9kZV93aXRoX2tleSggJHZhbHVlICk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJJHZhbCA9ICR2YWx1ZTsKICAgICAgfQogICAgJHZhbCA9IHN0cl9yZXBsYWNlKCciJywgJyZxdW90OycsICR2YWwpOwogICAgJHRleHQgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJy4kaWQuJG5hbWUuJyIgdmFsdWU9IicuJHZhbC4nIic7CiAgICBpZiAoJGFkZHRleHQgIT0gJycpCiAgICAgIHsKCSR0ZXh0IC49ICcgJy4kYWRkdGV4dDsKICAgICAgfQogICAgJHRleHQgLj0gIiAvPlxuIjsKICAgIHJldHVybiAkdGV4dDsKICB9CgoKICAvKgogICAqIEEgQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcmVkaXJlY3QgdG8gYW4gYWRtaW4gdGFiIGluIHRoZQogICAqIGRlZmF1bHRhZG1pbiBhY3Rpb24KICAgKgogICAqIFNlZSBBbHNvOiAgU2V0Q3VycmVudFRhYgogICAqLwogIGZ1bmN0aW9uIFJlZGlyZWN0VG9UYWIoICRpZCwgJHRhYiA9ICcnLCAkcGFyYW1zID0gJycgKQogIHsKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICBpZiggaXNfYXJyYXkoICRwYXJhbXMgKSApCiAgICAgIHsKCSRwYXJtcyA9ICRwYXJhbXM7CiAgICAgIH0KICAgIGlmKCAkdGFiID09ICcnICkKICAgICAgewoJaWYoICR0aGlzLT5fY3VycmVudF90YWIgKQoJICB7CgkgICAgJHRhYiA9ICR0aGlzLT5fY3VycmVudF90YWI7CgkgIH0KICAgICAgfQogICAgaWYoICR0YWIgIT0gJycgKQogICAgICB7CgkkcGFybXNbJ2NnX2FjdGl2ZXRhYiddID0gJHRhYjsKICAgICAgfQogICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fZXJyb3Jtc2cpICYmIGNvdW50KCR0aGlzLT5fZXJyb3Jtc2cpICkKICAgICAgewoJJHBhcm1zWydjZ19lcnJvciddID0gaW1wbG9kZSgnOmVycjonLCR0aGlzLT5fZXJyb3Jtc2cpOwogICAgICB9CgogICAgJHRoaXMtPlJlZGlyZWN0KCAkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcm1zLCB0cnVlICk7CiAgfQoKCiAgLyoKICAgKiBBIHJlcGxhY2VtZW50IGZvciB0aGUgYnVpbHQgaW4gRG9BY3Rpb24gbWV0aG9kCiAgICovCiAgZnVuY3Rpb24gRG9BY3Rpb24oJG5hbWUsJGlkLCRwYXJhbXMsJHJldHVybmlkPScnKQogIHsKICAgIGlmKCAhbWV0aG9kX2V4aXN0cygkdGhpcywnc2V0X2FjdGlvbl9pZCcpICYmICR0aGlzLT5HZXROYW1lKCkgIT0gJ0NHRXh0ZW5zaW9ucycgKQogICAgICB7CglkaWUoJ0ZBVEFMIEVSUk9SOiBBIG1vZHVsZSBkZXJpdmVkIGZyb20gQ0dFeHRlbnNpb25zIGlzIG5vdCBoYW5kbGluZyB0aGUgc2V0X2FjdGlvbl9pZCBtZXRob2QnKTsKICAgICAgfQogICAgJHRoaXMtPnNldF9hY3Rpb25faWQoJGlkKTsKCiAgICBnbG9iYWwgJGdDbXM7CiAgICAkc21hcnR5ID0mICRnQ21zLT5HZXRTbWFydHkoKTsKICAgICRzbWFydHktPmFzc2lnbignYWN0aW9uaWQnLCRpZCk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2FjdGlvbnBhcmFtcycsJHBhcmFtcyk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3JldHVybmlkJywkcmV0dXJuaWQpOwogICAgJHNtYXJ0eS0+YXNzaWduX2J5X3JlZignbW9kJywkdGhpcyk7CgogICAgJHRoaXMtPl9yZXR1cm5pZCA9ICRyZXR1cm5pZDsKICAgIGlmKCAkcmV0dXJuaWQgPT0gJycgKQogICAgICB7CglpZiggaXNzZXQoJHBhcmFtc1snY2dfYWN0aXZldGFiJ10pICkKCSAgewoJICAgICR0aGlzLT5fY3VycmVudF90YWIgPSB0cmltKCRwYXJhbXNbJ2NnX2FjdGl2ZXRhYiddKTsKCSAgICB1bnNldCgkcGFyYW1zWydjZ19hY3RpdmV0YWInXSk7CgkgIH0KCWlmKCBpc3NldCgkcGFyYW1zWydjZ19lcnJvciddKSApCgkgIHsKCSAgICAkdGhpcy0+X2Vycm9ybXNnID0gZXhwbG9kZSgnOmVycjonLCRwYXJhbXNbJ2NnX2Vycm9yJ10pOwoJICAgIHVuc2V0KCRwYXJhbXNbJ2NnX2Vycm9yJ10pOwoJICB9CiAgICAgIH0KICAgIHBhcmVudDo6RG9BY3Rpb24oJG5hbWUsJGlkLCRwYXJhbXMsJHJldHVybmlkKTsKICB9CgoKICAvKgogICAqIFRlc3QgaWYgdGhlIGN1cnJlbnQgY29kZSBpcyBoYW5kbGluZyBhbiBhZG1pbiBhY3Rpb24gb3IKICAgKiBhIGZyb250ZW5kIGFjdGlvbgogICAqLwogIGZ1bmN0aW9uIElzQWRtaW5BY3Rpb24oKQogIHsKICAgIHJldHVybiAoJHRoaXMtPl9yZXR1cm5pZCA9PSAnJyk7CiAgfQoKCiAgLyoKICAgKiBTZXQgYW4gZXJyb3IKICAgKi8KICBmdW5jdGlvbiBTZXRFcnJvcigkc3RyKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoICR0aGlzLT5fZXJyb3Jtc2cgKSApCiAgICAgICR0aGlzLT5fZXJyb3Jtc2cgPSBhcnJheSgpOwogICAgJHRoaXMtPl9lcnJvcm1zZ1tdID0gJHN0cjsKICB9CgoKICAvKgogICAqIERpc3BsYXkgZXJyb3JzIHVzaW5nIHRoZSBjdXJyZW50IGRlZmF1bHQgdGVtcGxhdGUKICAgKi8KICBmdW5jdGlvbiBEaXNwbGF5RXJyb3JzKCkKICB7CiAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9lcnJvcm1zZykgJiYgY291bnQoJHRoaXMtPl9lcnJvcm1zZykgKQogICAgICB7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5fZXJyb3Jtc2cpOwoJJHRoaXMtPl9lcnJvcm1zZyA9IGFycmF5KCk7CiAgICAgIH0KICB9CgoKICAvKgogICAqIFNldCB0aGUgY3VycmVudCBhZG1pbiB0YWIKICAgKiBTZWUgQWxzbzogIFJlZGlyZWN0IFRvIFRhYgogICAqLwogIGZ1bmN0aW9uIFNldEN1cnJlbnRUYWIoJHRhYm5hbWUpCiAgewogICAgJHRoaXMtPl9jdXJyZW50X3RhYiA9ICR0YWJuYW1lOwogIH0KCgogIC8qCiAgICogQSByZXBsYWNlbWVudCBmb3IgdGhlIGJ1aWx0IGluIFNldFRhYkhlYWRlcgogICAqLwogIGZ1bmN0aW9uIFNldFRhYkhlYWRlcigkbmFtZSwkc3RyLCRzdGF0ZSA9ICd1bmtub3duJykKICB7CiAgICBpZiggJHN0YXRlID09ICd1bmtub3duJyApCiAgICAgIHsKCSRzdGF0ZSA9ICgkbmFtZSA9PSAkdGhpcy0+X2N1cnJlbnRfdGFiKTsKICAgICAgfQogICAgcmV0dXJuIHBhcmVudDo6U2V0VGFiSGVhZGVyKCRuYW1lLCRzdHIsJHN0YXRlKTsKICB9CgoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGFuIDxpbWc+IHRhZy4KICAgKi8KICBmdW5jdGlvbiBDcmVhdGVJbWFnZVRhZygkaW1hZ2UsJGFsdD0nJywkd2lkdGg9JycsJGhlaWdodD0nJywkY2xhc3M9JycsJGFkZHRleHQ9JycpCiAgewogICAgJHR4dCA9ICI8aW1nIHNyYz1cIiRpbWFnZVwiIjsKICAgIGlmKCAkYWx0ICE9ICcnICkKICAgICAgewoJJHR4dCAuPSAiIGFsdD1cIiRhbHRcIiI7CgkkdHh0IC49ICIgdGl0bGU9XCIkYWx0XCIiOwogICAgICB9CiAgICBpZiggJHdpZHRoICE9ICcnICkKICAgICAgewoJJHR4dCAuPSAiIHdpZHRoPVwiJHdpZHRoXCIiOwogICAgICB9CiAgICBpZiggJGhlaWdodCAhPSAnJyApCiAgICAgIHsKCSR0eHQgLj0gIiBoZWlnaHQ9XCIkaGVpZ2h0XCIiOwogICAgICB9CiAgICBpZiggJGNsYXNzICE9ICcnICkKICAgICAgewoJJHR4dCAuPSAiIGNsYXNzPVwiJGNsYXNzXCIiOwogICAgICB9CiAgICBpZiggJGFkZHRleHQgIT0gJycgKQogICAgICB7CgkkdHh0IC49ICIgJGFkZHRleHQiOwogICAgICB9CiAgICAkdHh0IC49ICIgLz4iOwogICAgcmV0dXJuICR0eHQ7CiAgfQoKCiAgLyoKICAgKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHNlYXJjaCBmb3IgYW4gaW1hZ2UgaW4gY2VydGFpbiBwcmVzZXQgCiAgICogZGlyZWN0b3JpZXMKICAgKi8KICBmdW5jdGlvbiBEaXNwbGF5SW1hZ2UoJGltYWdlLCRhbHQ9JycsJGNsYXNzPScnLCR3aWR0aD0nJywkaGVpZ2h0PScnKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRjb25maWcgPSYgJGdDbXMtPkdldENvbmZpZygpOwoKICAgIC8vIGNoZWNrIGltYWdlX2RpcmVjdG9yaWVzIGZpcnN0CiAgICBpZiggaXNzZXQoJHRoaXMtPl9pbWFnZV9kaXJlY3RvcmllcykgJiYgIWVtcHR5KCR0aGlzLT5faW1hZ2VfZGlyZWN0b3JpZXMpKQogICAgICB7Cglmb3JlYWNoKCAkdGhpcy0+X2ltYWdlX2RpcmVjdG9yaWVzIGFzICRkaXIgKQoJICB7CgkgICAgJHVybCA9IGNtc19qb2luX3BhdGgoJGRpciwkaW1hZ2UpOwoJICAgICRwYXRoID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWydyb290X3BhdGgnXSwkdXJsKTsKCgkgICAgaWYoIGlzX3JlYWRhYmxlKCRwYXRoKSApCgkgICAgICB7CgkJaWYoICR0aGlzLT5Jc0FkbWluQWN0aW9uKCkgKQoJCSAgJHVybCA9IGNtc19qb2luX3BhdGgoJy4uJywkdXJsKTsKCQlyZXR1cm4gJHRoaXMtPkNyZWF0ZUltYWdlVGFnKCR1cmwsJGFsdCwkd2lkdGgsJGhlaWdodCwkY2xhc3MpOwoJICAgICAgfQoJICB9CiAgICAgIH0KCiAgICAkdGhlbWUgPSYgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddOwogICAgaWYoIGlzX29iamVjdCgkdGhlbWUpICkgCiAgICAgIHsKCS8vIHdlJ3JlIGluIHRoZSBhZG1pbgoJJHR4dCA9ICR0aGVtZS0+RGlzcGxheUltYWdlKCRpbWFnZSwkYWx0LCR3aWR0aCwkaGVpZ2h0LCRjbGFzcyk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJLy8gZnJvbnRlbmQKCSR0eHQgPSAkdGhpcy0+Q3JlYXRlSW1hZ2VUYWcoJGltYWdlLCRhbHQsJHdpZHRoLCRoZWlnaHQsJGNsYXNzKTsKICAgICAgfQogICAgcmV0dXJuICR0eHQ7CiAgfQoKCiAgLyoKICAgKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIGxpbmsgd2l0aCBhbiBpbWFnZQogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUltYWdlTGluaygkaWQsJGFjdGlvbiwkcmV0dXJuaWQsJGNvbnRlbnRzLCRpbWFnZSwKCQkJICAgJHBhcmFtcz1hcnJheSgpLCRjbGFzc25hbWU9JycsCgkJCSAgICR3YXJuX21lc3NhZ2U9JycsJGltYWdlb25seT10cnVlLAoJCQkgICAkaW5saW5lPWZhbHNlLAoJCQkgICAkYWRkdGV4dD0nJywkdGFyZ2V0Y29udGVudG9ubHk9ZmFsc2UsJHByZXR0eXVybD0nJykKICB7CiAgICBpZiggJGNsYXNzbmFtZSA9PSAnJyApICRjbGFzc25hbWUgPSAnc3lzdGVtaWNvbic7CgogICAgJHR4dCA9ICR0aGlzLT5fX0NyZWF0ZVByZXR0eUxpbmsoJGlkLCRhY3Rpb24sJHJldHVybmlkLAoJCQkJICAgICR0aGlzLT5EaXNwbGF5SW1hZ2UoJGltYWdlLCRjb250ZW50cywkY2xhc3NuYW1lKSwgCgkJCQkgICAgJHBhcmFtcywgJHdhcm5fbWVzc2FnZSwgZmFsc2UsICRpbmxpbmUsIAoJCQkJICAgICRhZGR0ZXh0LCAkdGFyZ2V0Y29udGVudG9ubHksICRwcmV0dHl1cmwgKTsKICAgIGlmKCAkaW1hZ2Vvbmx5ICE9PSB0cnVlICkKICAgICAgewoJJHR4dCAuPSAnJm5ic3A7JzsKCSR0eHQgLj0gJHRoaXMtPkNyZWF0ZUxpbmsKCSAgKCRpZCwgJGFjdGlvbiwgJHJldHVybmlkLAoJICAgJGNvbnRlbnRzLCAkcGFyYW1zLCAkd2Fybl9tZXNzYWdlLCBmYWxzZSwgCgkgICAkaW5saW5lLCAkYWRkdGV4dCwgJHRhcmdldGNvbnRlbnRvbmx5LCAKCSAgICRwcmV0dHl1cmwgKTsKICAgICAgfQogICAgcmV0dXJuICR0eHQ7CiAgfQogIAogIC8qCiAgICogQW4gb3ZlcnJpZGFibGUgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgcHJldHR5IGxpbmsKICAgKi8KICBmdW5jdGlvbiBfX0NyZWF0ZVByZXR0eUxpbmsoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQ9JycsICRjb250ZW50cz0nJywgJHBhcmFtcz1hcnJheSgpLCAkd2Fybl9tZXNzYWdlPScnLCAkb25seWhyZWY9ZmFsc2UsICRpbmxpbmU9ZmFsc2UsICRhZGR0ZXh0PScnLCAkdGFyZ2V0Y29udGVudG9ubHk9ZmFsc2UsICRwcmV0dHl1cmw9JycpCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJGNvbmZpZyA9JiAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgogICAgJHByZXR0eSA9IGZhbHNlOwogICAgaWYoICRjb25maWdbJ2Fzc3VtZV9tb2RfcmV3cml0ZSddID09PSB0cnVlIHx8CgkkY29uZmlnWydpbnRlcm5hbF9wcmV0dHlfdXJscyddID09PSB0cnVlICkKICAgICAgewoJJHByZXR0eSA9IHRydWU7CiAgICAgIH0KCiAgICAkbWV0aG9kX2V4aXN0cyA9IG1ldGhvZF9leGlzdHMoJHRoaXMsJ0NyZWF0ZVByZXR0eUxpbmsnKTsKICAgIGlmKCAkcHJldHR5ICYmICgkcmV0dXJuaWQgIT0gJycpICYmICRtZXRob2RfZXhpc3RzICkKICAgICAgewoJLy8gcHJldHR5IHVybHMgYXJlIGNvbmZpZ3VyZWQsIHdlJ3JlIG5vdCBpbiBhbiBhZG1pbiBhY3Rpb24KCS8vIGFuZCB0aGUgQ3JlYXRlUHJldHR5TGluayBtZXRob2QgaGFzIGJlZW4gZm91bmQuCglyZXR1cm4gJHRoaXMtPkNyZWF0ZVByZXR0eUxpbmsoJGlkLCRhY3Rpb24sJHJldHVybmlkLCRjb250ZW50cywkcGFyYW1zLCR3YXJuX21lc3NhZ2UsCgkJCQkkb25seWhyZWYsJGlubGluZSwkYWRkdGV4dCwkdGFyZ2V0Y29udGVudG9ubHksJHByZXR0eXVybCk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJcmV0dXJuICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwkYWN0aW9uLCRyZXR1cm5pZCwkY29udGVudHMsJHBhcmFtcywkd2Fybl9tZXNzYWdlLAoJCQkJICRvbmx5aHJlZiwkaW5saW5lLCRhZGR0ZXh0LCR0YXJnZXRjb250ZW50b25seSwkcHJldHR5dXJsKTsKICAgICAgfQogIH0KCiAgLyoKICAgKiBBIGZ1bmN0aW9uIGZvciB1c2luZyBhIHRlbXBsYXRlIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZQogICAqLwogIGZ1bmN0aW9uIERpc3BsYXlFcnJvck1lc3NhZ2UoJHR4dCwkY2xhc3MgPSAnZXJyb3InKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRzbWFydHkgPSYgJGdDbXMtPkdldFNtYXJ0eSgpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdjZ19lcnJvcmNsYXNzJywkY2xhc3MpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdjZ19lcnJvcm1zZycsJHR4dCk7CiAgICAkcmVzID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgnY2dfZXJyb3Jtc2cnLCcnLHRydWUsJ0NHRXh0ZW5zaW9ucycpOwogICAgcmV0dXJuICRyZXM7CiAgfQoKCiAgLyoKICAgKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBjdXJyZW50IGVycm9yIHRlbXBsYXRlCiAgICovCiAgZnVuY3Rpb24gR2V0RXJyb3JUZW1wbGF0ZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5HZXRUZW1wbGF0ZSgnY2dfZXJyb3Jtc2cnLCdDR0V4dGVuc2lvbnMnKTsKICB9CgoKICAvKgogICAqIFJlc2V0IHRoZSBlcnJvciB0ZW1wbGF0ZSB0byBmYWN0b3J5IGRlZmF1bHRzCiAgICovCiAgZnVuY3Rpb24gUmVzZXRFcnJvclRlbXBsYXRlKCkKICB7CiAgICAkZm4gPSBjbXNfam9pbl9wYXRoKGRpcm5hbWUoX19GSUxFX18pLCd0ZW1wbGF0ZXMnLCdvcmlnX2Vycm9yX3RlbXBsYXRlLnRwbCcpOwogICAgaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApCiAgICAgIHsKCSR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJJHRoaXMtPlNldFRlbXBsYXRlKCAnY2dfZXJyb3Jtc2cnLCAkdGVtcGxhdGUsJ0NHRXh0ZW5zaW9ucycgKTsKICAgICAgfQogIH0KCgogIC8qCiAgICogU2V0IHRoZSBlcnJvciB0ZW1wbGF0ZQogICAqLwogIGZ1bmN0aW9uIFNldEVycm9yVGVtcGxhdGUoJHRtcGwpCiAgewogICAgcmV0dXJuICR0aGlzLT5TZXRUZW1wbGF0ZSgnY2dfZXJyb3Jtc2cnLCR0bXBsLCdDR0V4dGVuc2lvbnMnKTsKICB9CgoKICAvKgogICAqIEFkZCBhIGRpcmVjdG9yeSB0byB0aGUgbGlzdCBvZiBzZWFyY2hhYmxlIGRpcmVjdG9yaWVzCiAgICovCiAgZnVuY3Rpb24gQWRkSW1hZ2VEaXIoJGRpcikKICB7CiAgICBpZiggc3RycG9zKCcvJywkZGlyKSAhPT0gMCApCiAgICAgIHsKCSRkaXIgPSAibW9kdWxlcy8iLiR0aGlzLT5HZXROYW1lKCkuJy8nLiRkaXI7CiAgICAgIH0KICAgICR0aGlzLT5faW1hZ2VfZGlyZWN0b3JpZXNbXSA9ICRkaXI7CiAgfQoKCiAgLyoKICAgKiBQYXJ0IG9mIHRoZSBtdWx0aXBsZSBkYXRhYmFzZSB0ZW1wbGF0ZSBmdW5jdGlvbmFsaXR5LAogICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgdGVtcGxhdGVzIGZvciB0aGUgY3VycmVudCBtb2R1bGUKICAgKiB0aGF0IGFsbCBzdGFydCB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LgogICAqLwogIGZ1bmN0aW9uIExpc3RUZW1wbGF0ZXNXaXRoUHJlZml4KCRwcmVmaXggPSAnJywkdHJpbSA9IGZhbHNlKQogIHsKICAgICR0ZW1wbGF0ZXMgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygpOwogICAgaWYoICRwcmVmaXggPT0gJycgKSByZXR1cm4gJHRlbXBsYXRlczsKCiAgICAkaXRlbXMgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJHRlbXBsYXRlcyBhcyAkb25lbmFtZSApCiAgICAgIHsKCWlmKCBwcmVnX21hdGNoKCcvXicuJHByZWZpeC4nLycsJG9uZW5hbWUpICkKCSAgewoJICAgIGlmKCAkdHJpbSApCgkgICAgICB7CgkJJGl0ZW1zW10gPSBzdWJzdHIoJG9uZW5hbWUsc3RybGVuKCRwcmVmaXgpKTsKCSAgICAgIH0KCSAgICBlbHNlCgkgICAgICB7CgkJJGl0ZW1zW10gPSAkb25lbmFtZTsKCSAgICAgIH0KCSAgfQogICAgICB9CiAgICByZXR1cm4gJGl0ZW1zOwogIH0KCiAgLyoKICAgKiBQYXJ0IG9mIHRoZSBtdWx0aXBsZSBkYXRhYmFzZSB0ZW1wbGF0ZSBmdW5jdGlvbmFsaXR5LAogICAqIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIGEgZHJvcGRvd24gbGlzdCB0byBhbGxvdyBzZWxlY3RpbmcKICAgKiBhIHRlbXBsYXRlIGZyb20gdGhlIG1vZHVsZXMgdGVtcGxhdGUgbGlzdCwgCiAgICovCiAgZnVuY3Rpb24gQ3JlYXRlVGVtcGxhdGVEcm9wZG93bigkaWQsJG5hbWUsJHByZWZpeCA9ICcnLCRzZWxlY3RlZHZhbHVlID0gLTEsCgkJCQkgICRhZGR0ZXh0ID0gJycpCiAgewogICAgJHRlbXBsYXRlcyA9ICR0aGlzLT5MaXN0VGVtcGxhdGVzV2l0aFByZWZpeCgkcHJlZml4KTsKICAgICRpdGVtcyA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCAkdGVtcGxhdGVzIGFzICRvbmVuYW1lICkKICAgICAgewoJJHRtcCA9IHN1YnN0cigkb25lbmFtZSxzdHJsZW4oJHByZWZpeCkpOwoJJGl0ZW1zWyR0bXBdID0gJG9uZW5hbWU7CiAgICAgIH0KICAgIAogICAgcmV0dXJuICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwkbmFtZSwkaXRlbXMsLTEsJHNlbGVjdGVkdmFsdWUsJGFkZHRleHQpOwogIH0KCiAgLyoKICAgKiBQYXJ0IG9mIHRoZSBtdWx0aXBsZSBkYXRhYmFzZSB0ZW1wbGF0ZSBmdW5jdGlvbmFsaXR5CiAgICogdGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGFkZGluZywgZWRpdGluZywKICAgKiBkZWxldGluZyBhbmQgbWFya2luZyBhY3RpdmUgYWxsIHRlbXBsYXRlcyB0aGF0IG1hdGNoCiAgICogYSBwcmVmaXguCiAgICovCiAgZnVuY3Rpb24gU2hvd1RlbXBsYXRlTGlzdCgkaWQsJHJldHVybmlkLCRwcmVmaXgsCgkJCSAgICAkZGVmYXVsdHRlbXBsYXRlcHJlZiwkYWN0aXZlX3RhYiwKCQkJICAgICRkZWZhdWx0cHJlZm5hbWUsCgkJCSAgICAkdGl0bGUsJGluZm8gPSAnJykKICB7CiAgICAkY2dleHRlbnNpb25zID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ0dFeHRlbnNpb25zJyk7CiAgICByZXR1cm4gJGNnZXh0ZW5zaW9ucy0+X0Rpc3BsYXlUZW1wbGF0ZUxpc3QoJHRoaXMsJGlkLCRyZXR1cm5pZCwkcHJlZml4LAoJCQkJICAgICAgJGRlZmF1bHR0ZW1wbGF0ZXByZWYsJGFjdGl2ZV90YWIsCgkJCSAgICAgICAgICAgICAgJGRlZmF1bHRwcmVmbmFtZSwkdGl0bGUsJGluZm8pOwogIH0KCgoKICBmdW5jdGlvbiBfRGlzcGxheVRlbXBsYXRlTGlzdCggJiRtb2R1bGUsICRpZCwgJHJldHVybmlkLCAkcHJlZml4LCAKCQkJCSAkZGVmYXVsdHRlbXBsYXRlcHJlZiwgCgkJCQkgJGFjdGl2ZV90YWIsICRkZWZhdWx0cHJlZm5hbWUsCgkJCQkgJHRpdGxlLCAkaW5mbyA9ICcnKQogIHsKICAgIC8vIHdlJ3JlIGdvbm5hIGFsbG93IG11bHRpcGxlIHRlbXBsYXRlcyBoZXJlCiAgICAvLyBidXQgd2UncmUgZ29ubmEgcHJlZml4IHRoZW0gYWxsIHdpdGggc29tZXRoaW5nCiAgICBnbG9iYWwgJGdDbXM7CiAgICAKICAgICRmYWxzZWltYWdlMSA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywnbWFrZSBkZWZhdWx0JywnJywnJywnc3lzdGVtaWNvbicpOwogICAgJHRydWVpbWFnZTEgPSAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywnZGVmYXVsdCcsJycsJycsJ3N5c3RlbWljb24nKTsKICAgICRhbGx0ZW1wbGF0ZXMgPSAkbW9kdWxlLT5MaXN0VGVtcGxhdGVzKCk7CiAgICAkcm93YXJyYXkgPSBhcnJheSgpOwogICAgJHJvd2NsYXNzID0gJ3JvdzEnOwoKICAgIGZvcmVhY2goICRhbGx0ZW1wbGF0ZXMgYXMgJG9uZXRlbXBsYXRlICkKICAgICAgewoJaWYoICFwcmVnX21hdGNoKCIvXiRwcmVmaXgvIiwgJG9uZXRlbXBsYXRlICkgKQoJICB7CgkgICAgY29udGludWU7CgkgIH0KCQoJJHRtcCA9IHN1YnN0cigkb25ldGVtcGxhdGUsc3RybGVuKCRwcmVmaXgpKTsKCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKCSRyb3ctPm5hbWUgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLAoJCQkJCSR0bXAsIGFycmF5KCd0ZW1wbGF0ZScgPT4gJHRtcCwKCQkJCQkJICAgICdjZ19hY3RpdmV0YWInID0+ICRhY3RpdmVfdGFiLAoJCQkJCQkgICAgJ3RpdGxlJz0+JHRpdGxlLAoJCQkJCQkgICAgJ2luZm8nPT4kaW5mbywKCQkJCQkJICAgICdwcmVmaXgnPT4kcHJlZml4LAoJCQkJCQkgICAgJ21vZG5hbWUnPT4kbW9kdWxlLT5HZXROYW1lKCksCgkJCQkJCSAgICAnbW9kZSc9PidlZGl0JykpOwoJJHJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgoJJGRlZmF1bHQgPSAoJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgkZGVmYXVsdHByZWZuYW1lKSA9PSAkdG1wKSA/IHRydWUgOiBmYWxzZTsKCWlmKCAkZGVmYXVsdCApCgkgIHsKCSAgICAkcm93LT5kZWZhdWx0ID0gJHRydWVpbWFnZTE7CgkgIH0KCWVsc2UKCSAgewoJICAgICRyb3ctPmRlZmF1bHQgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnbWFrZWRlZmF1bHR0ZW1wbGF0ZScsICRyZXR1cm5pZCwKCQkJCQkgICAgICAgJGZhbHNlaW1hZ2UxLAoJCQkJCSAgICAgICBhcnJheSgndGVtcGxhdGUnPT4kdG1wLAoJCQkJCQkgICAgICdkZWZhdWx0cHJlZm5hbWUnPT4kZGVmYXVsdHByZWZuYW1lLAoJCQkJCQkgICAgICdtb2RuYW1lJz0+JG1vZHVsZS0+R2V0TmFtZSgpLAoJCQkJCQkgICAgICdjZ19hY3RpdmV0YWInID0+ICRhY3RpdmVfdGFiKSk7CgkgIH0KCgkkcm93LT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVJbWFnZUxpbmsoICRpZCwnZWRpdHRlbXBsYXRlJywkcmV0dXJuaWQsCgkJCQkJCSAkdGhpcy0+TGFuZygncHJvbXB0X2VkaXR0ZW1wbGF0ZScpLAoJCQkJCQkgJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsCgkJCQkJCSBhcnJheSAoJ3RlbXBsYXRlJyA9PiAkdG1wLAoJCQkJCQkJJ2NnX2FjdGl2ZXRhYicgPT4gJGFjdGl2ZV90YWIsCgkJCQkJCQkncHJlZml4Jz0+JHByZWZpeCwKCQkJCQkJCSd0aXRsZSc9PiR0aXRsZSwKCQkJCQkJCSdpbmZvJz0+JGluZm8sCgkJCQkJCQknbW9kbmFtZSc9PiRtb2R1bGUtPkdldE5hbWUoKSwKCQkJCQkJCSdtb2RlJz0+J2VkaXQnKSk7CgkKCWlmKCAkZGVmYXVsdCApCgkgIHsKCSAgICAkcm93LT5kZWxldGVsaW5rID0gJyZuYnNwOyc7CgkgIH0KCWVsc2UKCSAgewoJICAgICRyb3ctPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlSW1hZ2VMaW5rKCAkaWQsICdkZWxldGV0ZW1wbGF0ZScsICRyZXR1cm5pZCwKCQkJCQkJICAgICAgICR0aGlzLT5MYW5nKCdwcm9tcHRfZGVsZXRldGVtcGxhdGUnKSwKCQkJCQkJICAgICAgICdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsCgkJCQkJCSAgICAgICBhcnJheSAoJ3RlbXBsYXRlJyA9PiAkb25ldGVtcGxhdGUsCgkJCQkJCQkgICAgICAnbW9kbmFtZSc9PiRtb2R1bGUtPkdldE5hbWUoKSwKCQkJCQkJCSAgICAgICdjZ19hY3RpdmV0YWInID0+ICRhY3RpdmVfdGFiKSwKCQkJCQkJICAgICAgICcnLAoJCQkJCQkgICAgICAgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKSk7CgkgIH0KCQoJYXJyYXlfcHVzaCAoJHJvd2FycmF5LCAkcm93KTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzID0gInJvdzIiIDogJHJvd2NsYXNzID0gInJvdzEiKTsKICAgICAgfQogICAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5ICk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25hbWVwcm9tcHQnLCAkdGhpcy0+TGFuZygncHJvbXB0X25hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2RlZmF1bHRwcm9tcHQnLCAkdGhpcy0+TGFuZygncHJvbXB0X2RlZmF1bHQnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25ld3RlbXBsYXRlbGluaycsCgkJCSAgJHRoaXMtPkNyZWF0ZUltYWdlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLAoJCQkJCQkgICR0aGlzLT5MYW5nKCdwcm9tcHRfbmV3dGVtcGxhdGUnKSwKCQkJCQkJICAnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLAoJCQkJCQkgIGFycmF5KCdwcmVmaXgnID0+ICRwcmVmaXgsCgkJCQkJCQknY2dfYWN0aXZldGFiJyA9PiAkYWN0aXZlX3RhYiwKCQkJCQkJCSdtb2RuYW1lJyA9PiAkbW9kdWxlLT5HZXROYW1lKCksCgkJCQkJCQkndGl0bGUnPT4kdGl0bGUsCgkJCQkJCQknaW5mbyc9PiRpbmZvLAoJCQkJCQkJJ21vZGUnID0+ICdhZGQnLAoJCQkJCQkJJ2RlZmF1bHR0ZW1wbGF0ZXByZWYnID0+ICRkZWZhdWx0dGVtcGxhdGVwcmVmCgkJCQkJCQkpLCcnLCcnLGZhbHNlKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICByZXR1cm4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbGlzdHRlbXBsYXRlcy50cGwnKTsKICB9CgoKICAvLyAtLS0tLS0tLS0tLS0gbGl4bHBpeGVsIHJlY3Vyc2l2ZSBQSFAgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0KICAvLyByZWN1cnNpdmVfcmVtb3ZlX2RpcmVjdG9yeSggZGlyZWN0b3J5IHRvIGRlbGV0ZSwgZW1wdHkgKQogIC8vIGV4cGVjdHMgcGF0aCB0byBkaXJlY3RvcnkgYW5kIG9wdGlvbmFsIFRSVUUgLyBGQUxTRSB0byBlbXB0eQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHJlY3Vyc2l2ZV9yZW1vdmVfZGlyZWN0b3J5KCRkaXJlY3RvcnksICRlbXB0eT1GQUxTRSkKICB7CiAgICBpZihzdWJzdHIoJGRpcmVjdG9yeSwtMSkgPT0gJy8nKQogICAgICB7CiAgICAgICAgJGRpcmVjdG9yeSA9IHN1YnN0cigkZGlyZWN0b3J5LDAsLTEpOwogICAgICB9CiAgICBpZighZmlsZV9leGlzdHMoJGRpcmVjdG9yeSkgfHwgIWlzX2RpcigkZGlyZWN0b3J5KSkKICAgICAgewogICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgfQogICAgZWxzZWlmKGlzX3JlYWRhYmxlKCRkaXJlY3RvcnkpKQogICAgICB7CgkkaGFuZGxlID0gb3BlbmRpcigkZGlyZWN0b3J5KTsKCXdoaWxlIChGQUxTRSAhPT0gKCRpdGVtID0gcmVhZGRpcigkaGFuZGxlKSkpCgkgIHsKCSAgICBpZigkaXRlbSAhPSAnLicgJiYgJGl0ZW0gIT0gJy4uJykKCSAgICAgIHsKCQkkcGF0aCA9ICRkaXJlY3RvcnkuJy8nLiRpdGVtOwoJCWlmKGlzX2RpcigkcGF0aCkpIAoJCSAgewoJCSAgICAkdGhpcy0+cmVjdXJzaXZlX3JlbW92ZV9kaXJlY3RvcnkoJHBhdGgpOwoJCSAgfWVsc2V7CgkJICB1bmxpbmsoJHBhdGgpOwoJCX0KCSAgICAgIH0KCSAgfQoJY2xvc2VkaXIoJGhhbmRsZSk7CglpZigkZW1wdHkgPT0gRkFMU0UpCgkgIHsKCSAgICBpZighcm1kaXIoJGRpcmVjdG9yeSkpCgkgICAgICB7CgkJcmV0dXJuIEZBTFNFOwoJICAgICAgfQoJICB9CiAgICAgIH0KICAgIHJldHVybiBUUlVFOwogIH0KCgogIC8qCiAgICogQSBmdW5jdGlvbiB0byByZXRyaWV2ZSBhIGxpc3Qgb2YgZmlsZXMgbWF0Y2hpbmcgYSByZWdleHAKICAgKi8KICBmdW5jdGlvbiBnZXRfcmVnZXhwX2ZpbGVfbGlzdCgkZGlyLCRyZWdleHAsJGxpbWl0PTEwMDAwMDApCiAgewogICAgaWYoIGVtcHR5KCRkaXIpICkgcmV0dXJuIGZhbHNlOwogICAgaWYoICFpc19kaXIoJGRpcikgKSByZXR1cm4gZmFsc2U7CgogICAgJGRoID0gb3BlbmRpcigkZGlyKTsKICAgIGlmKCAhJGRoICkgcmV0dXJuIGZhbHNlOwoKICAgICRyZXN1bHRzID0gYXJyYXkoKTsKICAgIHdoaWxlKCAoJGZpbGUgPSByZWFkZGlyKCRkaCkpICE9PSBmYWxzZSAmJiBjb3VudCgkcmVzdWx0cykgPCAkbGltaXQgICkKICAgICAgewoJaWYoICRmaWxlID09ICcuJyB8fCAkZmlsZSA9PSAnLi4nICkgY29udGludWU7CglpZiggcHJlZ19tYXRjaCggJy8nLiRyZWdleHAuJy8nLCAkZmlsZSApICkKCSAgewoJICAgICRyZXN1bHRzW10gPSAkZmlsZTsKCSAgfQogICAgICB9CiAgICBjbG9zZWRpcigkZGgpOwoKICAgIGlmKCBjb3VudCgkcmVzdWx0cykgPT0gMCApIHJldHVybiBmYWxzZTsKICAgIHJldHVybiAkcmVzdWx0czsKICB9CgoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIGEgc3RhdGUgZHJvcGRvd24gbGlzdAogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUlucHV0U3RhdGVEcm9wZG93bigkaWQsJG5hbWUsJHZhbHVlPSdBTCcsJHNlbGVjdG9uZT1mYWxzZSwkYWRkdGV4dD0nJykKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLkNHRVhURU5TSU9OU19UQUJMRV9TVEFURVMuJyBPUkRFUiBCWSBzb3J0aW5nIERFU0MsbmFtZSBBU0MnOwogICAgJHRtcCA9ICRkYi0+R2V0QWxsKCRxdWVyeSk7CiAgICAKICAgICRzdGF0ZXMgPSBhcnJheSgpOwogICAgaWYoICRzZWxlY3RvbmUgIT09IGZhbHNlICkKICAgICAgewoJJHN0YXRlc1skdGhpcy0+TGFuZygnc2VsZWN0X29uZScpXSA9ICcnOwogICAgICB9CiAgICBmb3JlYWNoKCR0bXAgYXMgJHJvdykKICAgICAgewoJJHN0YXRlc1skcm93WyduYW1lJ11dID0gJHJvd1snY29kZSddOwogICAgICB9CiAgICByZXR1cm4gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCRuYW1lLCRzdGF0ZXMsLTEsCgkJCQkgICAgICBzdHJ0b3VwcGVyKCR2YWx1ZSksJGFkZHRleHQpOwogIH0KCiAgLyoKICAgKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGNvdW50cnkgZHJvcGRvd24gbGlzdAogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUlucHV0Q291bnRyeURyb3Bkb3duKCRpZCwkbmFtZSwkdmFsdWU9J1VTJywkc2VsZWN0b25lPWZhbHNlLCRhZGR0ZXh0PScnKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuQ0dFWFRFTlNJT05TX1RBQkxFX0NPVU5UUklFUy4nIE9SREVSIEJZIHNvcnRpbmcgREVTQyxuYW1lIEFTQyc7CiAgICAkdG1wID0gJGRiLT5HZXRBbGwoJHF1ZXJ5KTsKICAgIAogICAgJGNvdW50cmllcyA9IGFycmF5KCk7CiAgICBpZiggJHNlbGVjdG9uZSAhPT0gZmFsc2UgKQogICAgICB7CgkkY291bnRyaWVzWyR0aGlzLT5MYW5nKCdzZWxlY3Rfb25lJyldID0gJyc7CiAgICAgIH0KICAgIGZvcmVhY2goJHRtcCBhcyAkcm93KQogICAgICB7CgkkY291bnRyaWVzWyRyb3dbJ25hbWUnXV0gPSAkcm93Wydjb2RlJ107CiAgICAgIH0KICAgIHJldHVybiAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJG5hbWUsJGNvdW50cmllcywtMSwKCQkJCSAgICAgIHN0cnRvdXBwZXIoJHZhbHVlKSwkYWRkdGV4dCk7CiAgfQoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3VudHJ5IG5hbWUgZ2l2ZW4gdGhlIGFjcm9ueW0KICAgKi8KICBmdW5jdGlvbiBHZXRDb3VudHJ5KCR0aGVfYWNyb255bSkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAnU0VMRUNUIG5hbWUgRlJPTSAnLkNHRVhURU5TSU9OU19UQUJMRV9DT1VOVFJJRVMuJwogICAgICAgICAgICAgICBXSEVSRSBjb2RlID0gPyc7CiAgICAkbmFtZSA9ICRkYi0+R2V0T25lKCRxdWVyeSxhcnJheSgkdGhlX2Fjcm9ueW0pKTsKICAgIHJldHVybiAkbmFtZTsKICB9CgoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzdGF0ZSBuYW1lIGdpdmVuIHRoZSBhY3JvbnltCiAgICovCiAgZnVuY3Rpb24gR2V0U3RhdGUoJHRoZV9hY3JvbnltKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxdWVyeSA9ICdTRUxFQ1QgbmFtZSBGUk9NICcuQ0dFWFRFTlNJT05TX1RBQkxFX1NUQVRFUy4nCiAgICAgICAgICAgICAgIFdIRVJFIGNvZGUgPSA/JzsKICAgICRuYW1lID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCR0aGVfYWNyb255bSkpOwogICAgcmV0dXJuICRuYW1lOwogIH0KCiAgLyoKICAgKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGZpbGUgbGlzdAogICAqLwogIGZ1bmN0aW9uIEdldEZpbGVMaXN0KCRkaXIsJGZpbGV0eXBlcykKICB7CiAgICBnbG9iYWwgJGdDbXM7CiAgICAkY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKCiAgICAkZmlsZXR5cGVzYSA9IGFycmF5KCk7CiAgICBpZiggIWVtcHR5KCRmaWxldHlwZXMpICkKICAgICAgewoJJGZpbGV0eXBlc2EgPSBleHBsb2RlKCcsJyxzdHJ0b2xvd2VyKCRmaWxldHlwZXMpKTsKICAgICAgfQoKICAgICRmaWxlcyA9IGFycmF5KCk7CiAgICAkZGggPSBvcGVuZGlyKCAkZGlyICk7CiAgICBpZiggJGRoICkKICAgICAgewoJd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyKCRkaCkpKSB7CgkgIGlmKCAkZmlsZSA9PSAnLicgfHwgJGZpbGUgPT0gJy4uJyApIGNvbnRpbnVlOwoJICAKCSAgJGZ1bGxwYXRoID0gY21zX2pvaW5fcGF0aCgkZGlyLCRmaWxlKTsKCSAgaWYoIGlzX2RpciggJGZ1bGxwYXRoICkgKSBjb250aW51ZTsKCgkgICRleHQgPSBzdWJzdHIoc3RycmNocigkZmlsZSwgJy4nKSwgMSk7CgkgIGlmKCBjb3VudCgkZmlsZXR5cGVzYSkgPiAwICYmICFpbl9hcnJheSggJGV4dCwgJGZpbGV0eXBlc2EgKSApIGNvbnRpbnVlOwoKCSAgJGZpbGVzWyRmaWxlXSA9ICRmaWxlOwoJfQoJY2xvc2VkaXIoJGRoKTsKICAgICAgfQoKICAgIHJldHVybiAkZmlsZXM7CiAgfQoKICAKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIGEgZmlsZSBkcm9wZG93bgogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUltYWdlRHJvcGRvd24oJGlkLCRuYW1lLCRzZWxlY3RlZGZpbGUsJGRpciA9ICcnKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRjb25maWcgPSYgJGdDbXMtPkdldENvbmZpZygpOwoKICAgIGlmKCAkZGlyID09ICcnICkKICAgICAgewoJJGRpciA9ICRjb25maWdbJ2ltYWdlX3VwbG9hZHNfcGF0aCddOwogICAgICB9CiAgICAkZXh0ZW5zaW9ucyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbWFnZWV4dGVuc2lvbnMnKTsKCiAgICAkZmlsZWxpc3QgPSAkdGhpcy0+R2V0RmlsZUxpc3QoJGRpciwkZXh0ZW5zaW9ucyk7CiAgICByZXR1cm4gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCRuYW1lLCRmaWxlbGlzdCwtMSwkc2VsZWN0ZWRmaWxlKTsKICB9CgogIC8qCiAgICogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVhdGUgYSBmaWxlIGRyb3Bkb3duCiAgICovCiAgZnVuY3Rpb24gQ3JlYXRlRmlsZURyb3Bkb3duKCRpZCwkbmFtZSwkc2VsZWN0ZWRmaWxlLCRkaXIgPSAnJykKICB7CiAgICBnbG9iYWwgJGdDbXM7CiAgICAkY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKICAgIAogICAgaWYoICRkaXIgPT0gJycgKSAkZGlyID0gJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ107CiAgICAkZXh0ZW5zaW9ucyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmaWxlZXh0ZW5zaW9ucycsJycpOwoKICAgICRmaWxlbGlzdCA9ICR0aGlzLT5HZXRGaWxlTGlzdCgkZGlyLCRleHRlbnNpb25zKTsKICAgIHJldHVybiAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJG5hbWUsJGZpbGVsaXN0LC0xLCRzZWxlY3RlZGZpbGUpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldERlZmF1bHRUZW1wbGF0ZUZvcm0KICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgIEEgZnVuY3Rpb24gdGhhdCBwcm92aWRlcyBhIGZvcm0gZm9yIGVkaXRpbmcgYSBkZWZhdWx0IHRlbXBsYXRlCiAgIGFuZC9vciByZXR1cm5pbmcgaXQgdG8gc3lzdGVtIGRlZmF1bHRzLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldERlZmF1bHRUZW1wbGF0ZUZvcm0oJiRtb2R1bGUsJGlkLCRyZXR1cm5pZCwkcHJlZm5hbWUsCgkJCQkgICRhY3RpdmVfdGFiLCR0aXRsZSwkZmlsZW5hbWUsCgkJCQkgICRpbmZvKQogIHsKICAgICRjZ2V4dGVuc2lvbnMgPSYgJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdDR0V4dGVuc2lvbnMnKTsKICAgICRzbWFydHkgPSYgJHRoaXMtPnNtYXJ0eTsKICAgICRzbWFydHktPmFzc2lnbignZGVmYXVsdHRlbXBsYXRlZm9ybV90aXRsZScsJHRpdGxlKTsKICAgICRzbWFydHktPmFzc2lnbignaW5mb190aXRsZScsJGluZm8pOwogICAgJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLAkKCSAgICAkY2dleHRlbnNpb25zLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdzZXRkZWZhdWx0dGVtcGxhdGUnLCRyZXR1cm5pZCwncG9zdCcsJycsZmFsc2UsJycsCgkJCQkJICAgYXJyYXkoJ3ByZWZuYW1lJz0+JHByZWZuYW1lLAoJCQkJCQkgJ2Rlc3Rtb2R1bGUnPT4kbW9kdWxlLT5HZXROYW1lKCksCgkJCQkJCSAnY2dfYWN0aXZldGFiJz0+JGFjdGl2ZV90YWIsCgkJCQkJCSAnZmlsZW5hbWUnPT4kZmlsZW5hbWUpKSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZScsJGNnZXh0ZW5zaW9ucy0+TGFuZygndGVtcGxhdGUnKSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlJywkY2dleHRlbnNpb25zLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwkaWQsCgkJCQkJCQkgICAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCRwcmVmbmFtZSksCgkJCQkJCQkgICAnaW5wdXRfdGVtcGxhdGUnKSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJGNnZXh0ZW5zaW9ucy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXQnLCRjZ2V4dGVuc2lvbnMtPkxhbmcoJ3N1Ym1pdCcpKSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3Jlc2V0JywkY2dleHRlbnNpb25zLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3Jlc2V0dG9kZWZhdWx0JywKCQkJCQkJICAgICAkY2dleHRlbnNpb25zLT5MYW5nKCdyZXNldHRvZmFjdG9yeScpKSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLAoJCSAgICAkY2dleHRlbnNpb25zLT5DcmVhdGVGb3JtRW5kKCkpOwogICAgcmV0dXJuICRjZ2V4dGVuc2lvbnMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGRlZmF1bHR0ZW1wbGF0ZS50cGwnKTsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEVkaXREZWZhdWx0VGVtcGxhdGVGb3JtCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICBBIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYSBmb3JtIGZvciBlZGl0aW5nIGEgZGVmYXVsdCB0ZW1wbGF0ZQogICBhbmQvb3IgcmV0dXJuaW5nIGl0IHRvIHN5c3RlbSBkZWZhdWx0cy4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBFZGl0RGVmYXVsdFRlbXBsYXRlRm9ybSgmJG1vZHVsZSwkaWQsJHJldHVybmlkLCRwcmVmbmFtZSwkYWN0aXZlX3RhYiwkdGl0bGUsCgkJCQkgICAkZmlsZW5hbWUsJGluZm8pCiAgewogICAgJGNnZXh0ZW5zaW9ucyA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NHRXh0ZW5zaW9ucycpOwogICAgZWNobyAkY2dleHRlbnNpb25zLT5HZXREZWZhdWx0VGVtcGxhdGVGb3JtKCRtb2R1bGUsJGlkLCRyZXR1cm5pZCwKCQkJCQkgICAgICAgJHByZWZuYW1lLCRhY3RpdmVfdGFiLAoJCQkJCSAgICAgICAkdGl0bGUsJGZpbGVuYW1lLCRpbmZvKTsKICB9CgoKICBmdW5jdGlvbiAmQXJyYXlUb09iamVjdCgkYXJyYXkpCiAgewogICAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICAgZm9yZWFjaCggJGFycmF5IGFzICRrZXkgPT4gJHZhbHVlICkKICAgICAgewoJJG9iai0+JGtleSA9ICR2YWx1ZTsKICAgICAgfQogICAgcmV0dXJuICRvYmo7CiAgfQoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIGEgdXJsIHRvIGEgY2VydGFpbiBDTVMgcGFnZQogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUNvbnRlbnRVUkwoJHBhZ2VpZCkKICB7CglnbG9iYWwgJGdDbXM7CgkkY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKCgkkY29udGVudG9wcyA9JiAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCSRhbGlhcyA9ICRjb250ZW50b3BzLT5HZXRQYWdlQWxpYXNGcm9tSUQoICRwYWdlaWQgKTsKCgkkdGV4dCA9ICcnOwogICAgICAgIGlmICgkY29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSkKCXsKCQkjIG1vZF9yZXdyaXRlCgkJaWYoICRhbGlhcyA9PSBmYWxzZSApCgkJewoJCQlyZXR1cm4gJzwhLS0gRVJST1I6IGNvdWxkIG5vdCBnZXQgYW4gYWxpYXMgZm9yIHBhZ2VpZD0nLiRwYWdlaWQuJy0tPic7CgkJfQoJCWVsc2UKCQl7CgkJCSR0ZXh0IC49ICRjb25maWdbInJvb3RfdXJsIl0uIi8iLiRhbGlhcy4KCQkJKGlzc2V0KCRjb25maWdbJ3BhZ2VfZXh0ZW5zaW9uJ10pPyRjb25maWdbJ3BhZ2VfZXh0ZW5zaW9uJ106Jy5zaHRtbCcpOwoJCX0KCX0KCWVsc2UKCXsKCQkjIG1vZCByZXdyaXRlCgkJJHRleHQgLj0gJGNvbmZpZ1sicm9vdF91cmwiXS4iL2luZGV4LnBocD8iLiRjb25maWdbInF1ZXJ5X3ZhciJdLiI9Ii4kcGFnZWlkOwoJCXJldHVybiAkdGV4dDsKCX0KICB9CgoKICBmdW5jdGlvbiBHZXRNaW1lVHlwZSgkZmlsZW5hbWUpCiAgewogICAgJG1pbWVfdHlwZSA9ICd1bmtub3duJzsKICAgIGlmKCBmdW5jdGlvbl9leGlzdHMoJ2ZpbmZvX29wZW4nKSApCiAgICAgIHsKCSRmaCA9IGZpbmZvX29wZW4oRklMRUlORk9fQ09NUFJFU1MpOwoJJG1pbWVfdHlwZSA9IGZpbmZvX2ZpbGUoJGZoLCRmaWxlbmFtZSk7CiAgICAgIH0KICAgIGVsc2UgaWYoIGZ1bmN0aW9uX2V4aXN0cygnbWltZV9jb250ZW50X3R5cGUnKSApCiAgICAgIHsKCSRtaW1lX3R5cGUgPSBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZW5hbWUpOwogICAgICB9CgogICAgcmV0dXJuICRtaW1lX3R5cGU7CiAgfQoKCiAgZnVuY3Rpb24gU2VuZERhdGFBbmRFeGl0KCRkYXRhLCRjb250ZW50X3R5cGUgPSAndGV4dC9wbGFpbicsJGZpbGVuYW1lID0gJ3JlcG9ydC50eHQnKQogIHsKICAgICRoYW5kbGVycyA9IG9iX2xpc3RfaGFuZGxlcnMoKTsgCiAgICBmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQoKICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgIGhlYWRlcignRXhwaXJlczogMCcpOwogICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsKICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwogICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogJy4kY29udGVudF90eXBlKTsKICAgIGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIkZmlsZW5hbWVcIiIgKTsKICAgIGhlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5Jyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gY291bnQoJGRhdGEpKTsKCiAgICAvLyBzZW5kIHRoZSBkYXRhCiAgICBwcmludCgkZGF0YSk7CgogICAgLy8gZG9uJ3QgYWxsb3cgYW55IGZ1cnRoZXIgcHJvY2Vzc2luZy4KICAgIGV4aXQoKTsKICB9CgoKICBmdW5jdGlvbiBTZW5kRmlsZUFuZEV4aXQoJGZpbGUpCiAgewogICAgaWYoICFmaWxlX2V4aXN0cygkZmlsZSkgKQogICAgICB7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAkbWltZV90eXBlID0gJHRoaXMtPkdldE1pbWVUeXBlKCRmaWxlKTsKICAgIGlmKCAkbWltZV90eXBlID09ICd1bmtub3duJyApCiAgICAgIHsKCSRtaW1lX3R5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzsKICAgICAgfQoKICAgICRibiA9IGJhc2VuYW1lKCRmaWxlKTsKICAgICRoYW5kbGVycyA9IG9iX2xpc3RfaGFuZGxlcnMoKTsgCiAgICBmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQoKICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgIGhlYWRlcignRXhwaXJlczogMCcpOwogICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsKICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwogICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogJy4kbWltZV90eXBlKTsKICAgIGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIkYm5cIiIgKTsKICAgIGhlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5Jyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsKCiAgICAkaGFuZGxlPWZvcGVuKCRmaWxlLCdyYicpOwogICAgJGNvbnRlbnRzID0gJyc7CiAgICBkbyB7CiAgICAgICRkYXRhID0gZnJlYWQoJGhhbmRsZSwkY2h1bmtzaXplKTsKICAgICAgaWYoIHN0cmxlbigkZGF0YSkgPT0gMCApIGJyZWFrOwogICAgICBwcmludCgkZGF0YSk7IAogICAgfSB3aGlsZSh0cnVlKTsKICAgIGZjbG9zZSgkaGFuZGxlKTsKICAgIAogICAgLy8gZG9uJ3QgYWxsb3cgYW55IG1vcmUgcHJvY2Vzc2luZwogICAgZXhpdCgpOwogIH0KCgogIGZ1bmN0aW9uIEdldEFkbWluVXNlcm5hbWUoJHVpZCkKICB7CiAgICAkdXNlciA9IFVzZXJPcGVyYXRpb25zOjpMb2FkVXNlckJ5SUQoJHVpZCk7CiAgICByZXR1cm4gJHVzZXItPnVzZXJuYW1lOwogIH0KCiAgZnVuY3Rpb24gQ3JlYXRlVXNlck11bHRpc2VsZWN0KCRpZCwgJHNlbGVjdGVkID0gJycsICRuYW1lPSdvd25lcmlkJywgCgkJCQkgJGdyb3VwcyA9IHRydWUsICRzaXplPTUpCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJHJlc3VsdCA9ICcnOwogICAgCiAgICAkcmVzdWx0IC49ICc8c2VsZWN0IG11bHRpcGxlIHNpemU9IicuJHNpemUuJyIgbmFtZT0iJy4kaWQuJG5hbWUuJ1tdIj4nOwogICAgaWYoICRncm91cHMgKQogICAgICB7CgkkZ3JvdXBvcHMgPSYgJGdDbXMtPkdldEdyb3VwT3BlcmF0aW9ucygpOwoJJGFsbGdyb3VwcyA9ICRncm91cG9wcy0+TG9hZEdyb3VwcygpOwoJZm9yZWFjaCggJGFsbGdyb3VwcyBhcyAkb25lZ3JvdXAgKQoJICB7CgkgICAgJHJlc3VsdCAuPSAnPG9wdGlvbiB2YWx1ZT0iLScuJG9uZWdyb3VwLT5pZC4nIic7CgkgICAgaWYoIGlzX2FycmF5KCRzZWxlY3RlZCkgJiYgaW5fYXJyYXkoJG9uZWdyb3VwLT5pZCAqIC0xLCAkc2VsZWN0ZWQpICkKCSAgICAgIHsKCQkkcmVzdWx0IC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CgkgICAgICB9CgkgICAgZWxzZSBpZiggKCRvbmVncm91cC0+aWQgKiAtMSkgPT0gJHNlbGVjdGVkICkKCSAgICAgIHsKCQkkcmVzdWx0IC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CgkgICAgICB9CgkgICAgJHJlc3VsdCAuPSAnPicubGFuZygnZ3JvdXAnKS4nOiAnLiRvbmVncm91cC0+bmFtZS4nPC9vcHRpb24+JzsKCSAgfQogICAgICB9CgogICAgJGFsbHVzZXJzID0gVXNlck9wZXJhdGlvbnM6OkxvYWRVc2VycygpOwogICAgaWYgKGNvdW50KCRhbGx1c2VycykgPiAwKQogICAgICB7Cglmb3JlYWNoICgkYWxsdXNlcnMgYXMgJG9uZXVzZXIpCgkgIHsKCSAgICAkcmVzdWx0IC49ICc8b3B0aW9uIHZhbHVlPSInLiRvbmV1c2VyLT5pZC4nIic7CgkgICAgaWYoIGlzX2FycmF5KCRzZWxlY3RlZCkgJiYgaW5fYXJyYXkoJG9uZXVzZXItPmlkLCAkc2VsZWN0ZWQpICkKCSAgICAgIHsKCQkkcmVzdWx0IC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CgkgICAgICB9CgkgICAgZWxzZSBpZiggJG9uZXVzZXItPmlkID09ICRzZWxlY3RlZCApCgkgICAgICB7CgkJJHJlc3VsdCAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOwoJICAgICAgfQoJICAgICRyZXN1bHQgLj0gJz4nLiRvbmV1c2VyLT51c2VybmFtZS4nPC9vcHRpb24+JzsKCSAgfQogICAgICB9CiAgICAkcmVzdWx0IC49ICc8L3NlbGVjdD4nOwogICAgCiAgICByZXR1cm4gJHJlc3VsdDsKICB9CgogIAogIGZ1bmN0aW9uIEV4cGFuZFNlbGVjdGVkVXNlcnMoJHVzZXJpZGxpc3QpCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJHVzZXJvcHMgPSYgJGdDbXMtPkdldFVzZXJPcGVyYXRpb25zKCk7CgogICAgJHVzZXJzID0gYXJyYXkoKTsKICAgIGZvcmVhY2goICR1c2VyaWRsaXN0IGFzICRvbmV1aWQgKQogICAgICB7CglpZiggJG9uZXVpZCA8IDAgKQoJICB7CgkgICAgLy8gYXNzdW1lIGl0cyBhIGdyb3VwIGlkCgkgICAgLy8gYW5kIGdldCBhbGwgdGhlIHVpZHMgZm9yIHRoYXQgZ3JvdXAKCSAgICAkZ3JvdXB1c2VycyA9ICR1c2Vyb3BzLT5Mb2FkVXNlcnNJbkdyb3VwKCRvbmV1aWQgKiAtMSk7CgkgICAgZm9yZWFjaCggJGdyb3VwdXNlcnMgYXMgJG9uZXVzZXIgKQoJICAgICAgewoJCSR1c2Vyc1tdID0gJG9uZXVzZXItPmlkOwoJICAgICAgfQoJICB9CgllbHNlCgkgIHsKCSAgICAkdXNlcnNbXSA9ICRvbmV1aWQ7CgkgIH0KICAgICAgfQoKICAgICR1c2VycyA9IGFycmF5X3VuaXF1ZSgkdXNlcnMpOwogICAgcmV0dXJuICR1c2VyczsKICB9CgogIGZ1bmN0aW9uIEdldFVwbG9hZEVycm9yTWVzc2FnZSgkY29kZSkKICB7CiAgICAkY2dleHRlbnNpb25zID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ0dFeHRlbnNpb25zJyk7CiAgICByZXR1cm4gJGNnZXh0ZW5zaW9ucy0+TGFuZygkY29kZSk7CiAgfQoKICBmdW5jdGlvbiBpc19hbGlhcygkc3RyKQogIHsKICAgIGlmKCAhcHJlZ19tYXRjaCgnL15bXC1cX1x3XSskLycsICRzdHIpICkKICAgICAgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHRydWU7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgbWtkaXJyKCAkcGF0aG5hbWUsICRtb2RlICkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgIE1ha2UgYSBkaXJlY3RvcnkgcmVjdXJzaXZlbHkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBta2RpcnIgKCRwYXRobmFtZSwgJG1vZGUgPSAwNzc3KQogIHsKICAgIC8vIENoZWNrIGlmIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cwogICAgaWYgKGlzX2RpciAoJHBhdGhuYW1lKSB8fCBlbXB0eSAoJHBhdGhuYW1lKSkKICAgICAgewoJcmV0dXJuIHRydWU7CiAgICAgIH0KCiAgICAvLyBFbnN1cmUgYSBmaWxlIGRvZXMgbm90IGFscmVhZHkgZXhpc3Qgd2l0aCB0aGUgc2FtZSBuYW1lCiAgICBpZiAoaXNfZmlsZSAoJHBhdGhuYW1lKSkKICAgICAgewoJLy8gUkM6IE1vZGlmaWNhdGlvbiBzdWNoIHRoYXQgdGhpcyBpc24ndCBhbiBlcnJvcgoJcmV0dXJuIHRydWU7CiAgICAgIH0KCiAgICAvLyBDcmF3bCB1cCB0aGUgZGlyZWN0b3J5IHRyZWUKICAgICRuZXh0X3BhdGhuYW1lID0KICAgICAgc3Vic3RyICgkcGF0aG5hbWUsIDAsIHN0cnJwb3MgKCRwYXRobmFtZSwgRElSRUNUT1JZX1NFUEFSQVRPUikpOwogICAgaWYgKCR0aGlzLT5ta2RpcnIgKCRuZXh0X3BhdGhuYW1lLCAkbW9kZSkpCiAgICAgIHsKCWlmICghZmlsZV9leGlzdHMgKCRwYXRobmFtZSkpCgkgIHsKCSAgICByZXR1cm4gbWtkaXIgKCRwYXRobmFtZSwgJG1vZGUpOwoJICB9CiAgICAgIH0KCiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgZnVuY3Rpb24gc2V0X2FjdGlvbl9pZCgkaWQpCiAgewogICAgJHRoaXMtPl9hY3Rpb25pZCA9ICRpZDsKICB9CgogIGZ1bmN0aW9uIGdldF9hY3Rpb25faWQoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X2FjdGlvbmlkOwogIH0KCiAgZnVuY3Rpb24gR2V0QWN0aW9uSWQoKQogIHsKICAgIGlmKCAhbWV0aG9kX2V4aXN0cygkdGhpcywnZ2V0X2FjdGlvbl9pZCcpICYmICR0aGlzLT5HZXROYW1lKCkgIT0gJ0NHRXh0ZW5zaW9ucycgKQogICAgICB7CglkaWUoJ0ZBVEFMIEVSUk9SOiBBIG1vZHVsZSBkZXJpdmVkIGZyb20gQ0dFeHRlbnNpb25zIGlzIG5vdCBoYW5kbGluZyB0aGUgZ2V0X2FjdGlvbl9pZCBtZXRob2QnKTsKICAgICAgfQogICAgcmV0dXJuICR0aGlzLT5nZXRfYWN0aW9uX2lkKCk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0U2luZ2xlVGVtcGxhdGVGb3JtCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICBBIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYSBmb3JtIGZvciBlZGl0aW5nIGEgc2luZ2xlIHRlbXBsYXRlCiAgIGFuZC9vciByZXR1cm5pbmcgaXQgdG8gc3lzdGVtIGRlZmF1bHRzLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldFNpbmdsZVRlbXBsYXRlRm9ybSgmJG1vZHVsZSwkaWQsJHJldHVybmlkLCR0bXBsbmFtZSwKCQkJCSAgJGFjdGl2ZV90YWIsJHRpdGxlLCRmaWxlbmFtZSwKCQkJCSAgJGluZm8gPSAnJykKICB7CiAgICAkY2dleHRlbnNpb25zID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ0dFeHRlbnNpb25zJyk7CiAgICAkc21hcnR5ID0mICR0aGlzLT5zbWFydHk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2RlZmF1bHR0ZW1wbGF0ZWZvcm1fdGl0bGUnLCR0aXRsZSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2luZm9fdGl0bGUnLCRpbmZvKTsKICAgICRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywJCgkgICAgJGNnZXh0ZW5zaW9ucy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnc2V0ZGVmYXVsdHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLGZhbHNlLCcnLAoJCQkJCSAgIGFycmF5KCdwcmVmbmFtZSc9PiR0bXBsbmFtZSwKCQkJCQkJICd1c2V0ZW1wbGF0ZSc9PicxJywKCQkJCQkJICdkZXN0bW9kdWxlJz0+JG1vZHVsZS0+R2V0TmFtZSgpLAoJCQkJCQkgJ2NnX2FjdGl2ZXRhYic9PiRhY3RpdmVfdGFiLAoJCQkJCQkgJ2ZpbGVuYW1lJz0+JGZpbGVuYW1lKSkpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGUnLCRjZ2V4dGVuc2lvbnMtPkxhbmcoJ3RlbXBsYXRlJykpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90ZW1wbGF0ZScsJGNnZXh0ZW5zaW9ucy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsJGlkLAoJCQkJCQkJICAgJG1vZHVsZS0+R2V0VGVtcGxhdGUoJHRtcGxuYW1lKSwKCQkJCQkJCSAgICdpbnB1dF90ZW1wbGF0ZScpKTsKICAgICRzbWFydHktPmFzc2lnbignc3VibWl0JywkY2dleHRlbnNpb25zLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdCcsJGNnZXh0ZW5zaW9ucy0+TGFuZygnc3VibWl0JykpKTsKICAgICRzbWFydHktPmFzc2lnbigncmVzZXQnLCRjZ2V4dGVuc2lvbnMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwncmVzZXR0b2RlZmF1bHQnLAoJCQkJCQkgICAgICRjZ2V4dGVuc2lvbnMtPkxhbmcoJ3Jlc2V0dG9mYWN0b3J5JykpKTsKICAgICRzbWFydHktPmFzc2lnbignZW5kZm9ybScsCgkJICAgICRjZ2V4dGVuc2lvbnMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICByZXR1cm4gJGNnZXh0ZW5zaW9ucy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0ZGVmYXVsdHRlbXBsYXRlLnRwbCcpOwogIH0KCgogIGZ1bmN0aW9uIFRyYW5zZm9ybUltYWdlKCRzcmNTcGVjLCAkZGVzdFNwZWMsICRzaXplID0gJycpCiAgewogICAgcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvLi4vLi4vbGliL2ZpbGVtYW5hZ2VyL0ltYWdlTWFuYWdlci9DbGFzc2VzL1RyYW5zZm9ybS5waHAnKTsKCiAgICBnbG9iYWwgJGdDbXM7CiAgICAkY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKICAgIGlmKCAkc2l6ZSA9PSAnJyApCiAgICAgIHsKCSRjZ2UgPSYgJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdDR0V4dGVuc2lvbnMnKTsKCSRzaXplID0gJGNnZS0+R2V0UHJlZmVyZW5jZSgndGh1bWJuYWlsc2l6ZScpOwogICAgICB9CgogICAgJGl0ID0gbmV3IEltYWdlX1RyYW5zZm9ybTsKICAgICRpbWcgPSAkaXQtPmZhY3RvcnkoJGNvbmZpZ1snaW1hZ2VfbWFuaXB1bGF0aW9uX3Byb2cnXSk7CiAgICAkaW1nLT5sb2FkKCRzcmNTcGVjKTsKICAgIGlmICgkaW1nLT5pbWdfeCA8ICRpbWctPmltZ195KQogICAgICB7CgkkbG9uZ19heGlzID0gJGltZy0+aW1nX3k7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJJGxvbmdfYXhpcyA9ICRpbWctPmltZ194OwogICAgICB9CiAgICAgCiAgICBpZiAoJGxvbmdfYXhpcyA+ICRzaXplKQogICAgICB7CgkkaW1nLT5zY2FsZUJ5TGVuZ3RoKCRzaXplKTsKCSRpbWctPnNhdmUoJGRlc3RTcGVjLCAnanBlZycpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCSRpbWctPnNhdmUoJGRlc3RTcGVjLCAnanBlZycpOwogICAgICB9CiAgICAkaW1nLT5mcmVlKCk7CiAgfQoKfSAvLyBjbGFzcwoKICB9IC8vIGlmCgovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/class.CGFileUploadHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmRlZmluZSgnQ0dGSUxFVVBMT0FEX05PRklMRScsJ0NHRklMRVVQTE9BRF9OT0ZJTEUnKTsKZGVmaW5lKCdDR0ZJTEVVUExPQURfRklMRVNJWkUnLCdDR0ZJTEVVUExPQURfRklMRVNJWkUnKTsKZGVmaW5lKCdDR0ZJTEVVUExPQURfRklMRVRZUEUnLCdDR0ZJTEVVUExPQURfRklMRVRZUEUnKTsKZGVmaW5lKCdDR0ZJTEVVUExPQURfRklMRUVYSVNUUycsJ0NHRklMRVVQTE9BRF9GSUxFRVhJU1RTJyk7CmRlZmluZSgnQ0dGSUxFVVBMT0FEX0JBRERFU1RESVInLCdDR0ZJTEVVUExPQURfQkFEREVTVERJUicpOwpkZWZpbmUoJ0NHRklMRVVQTE9BRF9CQURQRVJNUycsJ0NHRklMRVVQTE9BRF9CQURQRVJNUycpOwpkZWZpbmUoJ0NHRklMRVVQTE9BRF9NT1ZFRkFJTEVEJywnQ0dGSUxFVVBMT0FEX01PVkVGQUlMRUQnKTsKCmNsYXNzIENHRmlsZVVwbG9hZEhhbmRsZXIKewogIHZhciAkX21heGZpbGVzaXplOwogIHZhciAkX2Vycm9yOwogIHZhciAkX3ByZWZpeDsKICB2YXIgJF9kZXN0ZGlyOwogIHZhciAkX2ZpbGV0eXBlczsKICB2YXIgJF9hbGxvd19vdmVyd3JpdGU7CiAgdmFyICRfZGVzdG5hbWU7CiAgdmFyICRfZmlsZXM7CgoKICBmdW5jdGlvbiBDR0ZpbGVVcGxvYWRIYW5kbGVyKCRwcmVmaXgsJGRlc3RkaXIpCiAgewogICAgJHRoaXMtPl9lcnJvciA9IGZhbHNlOwogICAgJHRoaXMtPl9hbGxvd19vdmVyd3JpdGUgPSBmYWxzZTsKICAgICR0aGlzLT5fcHJlZml4ID0gJHByZWZpeDsKICAgICR0aGlzLT5fZGVzdGRpciA9ICRkZXN0ZGlyOwogICAgJHRoaXMtPl9maWxlcyA9ICRfRklMRVM7CgogICAgZ2xvYmFsICRnQ21zOwogICAgJGNvbmZpZyA9JiAkZ0Ntcy0+R2V0Q29uZmlnKCk7CiAgICAkdGhpcy0+X21heGZpbGVzaXplID0gJGNvbmZpZ1snbWF4X3VwbG9hZF9zaXplJ107CgogIH0KCgogIGZ1bmN0aW9uIFNldEFjY2VwdGVkRmlsZXR5cGVzKCRmaWxldHlwZXMpCiAgewogICAgaWYoIGlzX2FycmF5KCAkZmlsZXR5cGVzICkgKQogICAgICB7CgkkdGhpcy0+X2ZpbGV0eXBlcyA9ICRmaWxldHlwZXM7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJaWYoIGVtcHR5KCRmaWxldHlwZXMpICkKCSAgewoJICAgICR0aGlzLT5fZmlsZXR5cGVzID0gZmFsc2U7CgkgIH0KCWVsc2UKCSAgewoJICAgICR0aGlzLT5fZmlsZXR5cGVzID0gZXhwbG9kZSgnLCcsJGZpbGV0eXBlcyk7CgkgIH0KICAgICAgfQogIH0KCgogIGZ1bmN0aW9uIFNldE1heEZpbGVTaXplS2IoJHNpemUpCiAgewogICAgJHRoaXMtPl9tYXhmaWxlc2l6ZSA9ICRzaXplICogMTAyNDsKICB9CgoKICBmdW5jdGlvbiBBbGxvd092ZXJ3cml0ZSgkZmxhZyA9IHRydWUpCiAgewogICAgJHRoaXMtPl9hbGxvd19vdmVyd3JpdGUgPSAkZmxhZzsKICB9CgoKICBmdW5jdGlvbiBHZXRFcnJvcigpCiAgewogICAgcmV0dXJuICR0aGlzLT5fZXJyb3I7CiAgfQoKCiAgZnVuY3Rpb24gR2V0RGVzdGluYXRpb25GaWxlbmFtZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5fZGVzdG5hbWU7CiAgfQoKCiAgZnVuY3Rpb24gSGFuZGxlVXBsb2FkZWRGaWxlKCRuYW1lLCRkZXN0ZmlsZW5hbWU9JycsJHN1YmZpZWxkID0gZmFsc2UpCiAgewogICAgJGZsZG5hbWUgPSAkdGhpcy0+X3ByZWZpeC4kbmFtZTsKICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9maWxlcykgfHwgIWlzc2V0KCR0aGlzLT5fZmlsZXNbJGZsZG5hbWVdKSApCiAgICAgIHsKCSR0aGlzLT5fZXJyb3IgPSBDR0ZJTEVVUExPQURfTk9GSUxFOwoJcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgJGZpbGUgPSAnJzsKICAgIGlmKCBlbXB0eSgkc3ViZmllbGQpICkKICAgICAgewoJaWYoICFpc19hcnJheSgkdGhpcy0+X2ZpbGVzWyRmbGRuYW1lXSkgfHwgIWlzc2V0KCR0aGlzLT5fZmlsZXNbJGZsZG5hbWVdWyduYW1lJ10pIHx8CgllbXB0eSgkdGhpcy0+X2ZpbGVzWyRmbGRuYW1lXVsnbmFtZSddKSApCgkgIHsKCSAgICAvLyB0aGVyZSdzIG5vdGhpbmcgdG8gaGFuZGxlCgkgICAgJHRoaXMtPl9lcnJvciA9IENHRklMRVVQTE9BRF9OT0ZJTEU7CgkgICAgcmV0dXJuIGZhbHNlOwoJICB9CgllbHNlCgkgIHsKCSAgICAkZmlsZSA9ICR0aGlzLT5fZmlsZXNbJGZsZG5hbWVdOwoJICB9CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJLy8gdGhlIGZpbGVzIGFyZSBhbiBhcnJheSwgc28gZWFjaCBlbGVtZW50IGlzIGFuIGFycmF5CgkvLyB3ZSBnb3R0YSBidWlsZCAkZmlsZSBmcm9tIHRoZSAkX0ZJTEVTIG9uZSBzdGVwIGF0IGEgdGltZQoJJHRtcCA9IGFycmF5KCk7Cglmb3JlYWNoKCAkdGhpcy0+X2ZpbGVzWyRmbGRuYW1lXSBhcyAka2V5ID0+ICR2YWx1ZSApCgkgIHsKCSAgICBpZiggaXNzZXQoJHZhbHVlWyRzdWJmaWVsZF0pICkKCSAgICAgIHsKCQkkdG1wWyRrZXldID0gJHZhbHVlWyRzdWJmaWVsZF07CgkgICAgICB9CgkgIH0KCSRmaWxlID0gJHRtcDsKCglpZiggIWlzX2FycmF5KCRmaWxlKSB8fCAKCSAgICAhaXNzZXQoJGZpbGVbJ25hbWUnXSkgfHwgCgkgICAgZW1wdHkoJGZpbGVbJ25hbWUnXSkgKQoJICB7CgkgICAgJHRoaXMtPl9lcnJvciA9IENHRklMRVVQTE9BRF9OT0ZJTEU7CgkgICAgcmV0dXJuIGZhbHNlOwoJICB9CiAgICAgIH0KCiAgICAvLyBOb3JtYWxpemUgdGhlIGZpbGUgdmFyaWFibGVzCiAgICBpZiAoIWlzc2V0ICgkZmlsZVsndHlwZSddKSkKICAgICAgJGZpbGVbJ3R5cGUnXSA9ICcnOwogICAgaWYgKCFpc3NldCAoJGZpbGVbJ3NpemUnXSkpCiAgICAgICRmaWxlWydzaXplJ10gPSAnJzsKICAgIGlmICghaXNzZXQgKCRmaWxlWyd0bXBfbmFtZSddKSkKICAgICAgJGZpbGVbJ3RtcF9uYW1lJ10gPSAnJzsKICAgICRmaWxlWyduYW1lJ10gPQogICAgICBwcmVnX3JlcGxhY2UoJy9bXmEtekEtWjAtOVwuXCRcJVwnXGBcLVxAXHtcfVx+XCFcI1woXClcJlxfXF5dLycsICcnLAoJCSAgIHN0cl9yZXBsYWNlKGFycmF5KCcgJywgJyUyMCcpLGFycmF5ICgnXycsICdfJyksJGZpbGVbJ25hbWUnXSkpOwoKICAgIC8vIENoZWNrIHRoZSBmaWxlIHNpemUKICAgIGlmKCAoJHRoaXMtPl9tYXhmaWxlc2l6ZSA+IDApICYmIAoJKCRmaWxlWydzaXplJ10gPiAkdGhpcy0+X21heGZpbGVzaXplKSApCiAgICAgIHsKCSR0aGlzLT5fZXJyb3IgPSBDR0ZJTEVVUExPQURfRklMRVNJWkU7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAvLyBDaGVjayB0aGUgZmlsZSBleHRlbnNpb24KICAgICRleHRlbnNpb24gPSBzdHJyY2hyKCRmaWxlWyduYW1lJ10sIi4iKTsKICAgICRmb3VuZCA9IGZhbHNlOwogICAgZm9yZWFjaCggJHRoaXMtPl9maWxldHlwZXMgYXMgJHR5cGUgKQogICAgICB7CglpZiggIi4iLnN0cnRvbG93ZXIoJHR5cGUpID09IHN0cnRvbG93ZXIoJGV4dGVuc2lvbikgKQoJICB7CgkgICAgJGZvdW5kID0gdHJ1ZTsKCSAgICBicmVhazsKCSAgfQogICAgICB9CiAgICBpZiggY291bnQoJHRoaXMtPl9maWxldHlwZXMpICYmICRmb3VuZCA9PT0gZmFsc2UgKQogICAgICB7CgkkdGhpcy0+X2Vycm9yID0gQ0dGSUxFVVBMT0FEX0ZJTEVUWVBFOwoJcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgLy8gY2hlY2sgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeQogICAgaWYoICFpc19kaXIoJHRoaXMtPl9kZXN0ZGlyKSApCiAgICAgIHsKCSR0aGlzLT5fZXJyb3IgPSBDR0ZJTEVVUExPQURfQkFEREVTVERJUjsKCXJldHVybiBmYWxzZTsKICAgICAgfQoKICAgIGlmKCAhaXNfd3JpdGFibGUoJHRoaXMtPl9kZXN0ZGlyKSApCiAgICAgIHsKCSR0aGlzLT5fZXJyb3IgPSBDR0ZJTEVVUExPQURfQkFEUEVSTVM7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAkdG1wID0gc3Vic3RyKCRmaWxlWyduYW1lJ10sMCxzdHJsZW4oJGZpbGVbJ25hbWUnXSktc3RybGVuKCRleHRlbnNpb24pLTEpOwogICAgJG5ld25hbWUgPSAkZmlsZVsnbmFtZSddOwogICAgaWYoICFlbXB0eSgkZGVzdGZpbGVuYW1lKSApCiAgICAgIHsKCSRuZXduYW1lID0gJGRlc3RmaWxlbmFtZS4kZXh0ZW5zaW9uOwogICAgICB9CiAgICAkZGVzdG5hbWUgPSBjbXNfam9pbl9wYXRoKCR0aGlzLT5fZGVzdGRpciwkbmV3bmFtZSk7CiAgICBpZiggZmlsZV9leGlzdHMoJGRlc3RuYW1lKSApCiAgICAgIHsKCWlmKCAhJHRoaXMtPl9hbGxvd19vdmVyd3JpdGUgKQoJICB7CgkgICAgJHRoaXMtPl9lcnJvciA9IENHRklMRVVQTE9BRF9GSUxFRVhJU1RTOwoJICAgIHJldHVybiBmYWxzZTsKCSAgfQoJZWxzZSBpZiggIWlzX3dyaXRhYmxlKCRkZXN0bmFtZSkgKQoJICB7CgkgICAgJHRoaXMtPl9lcnJvciA9IENHRklMRVVQTE9BRF9CQURQRVJNUzsKCSAgICByZXR1cm4gZmFsc2U7CgkgIH0KICAgICAgfQoKICAgIC8vIEFuZCBBdHRlbXB0IHRoZSBjb3B5CiAgICAkdGhpcy0+X2Rlc3RuYW1lID0gJGRlc3RuYW1lOwogICAgJHJlcyA9IGNtc19tb3ZlX3VwbG9hZGVkX2ZpbGUoICRmaWxlWyd0bXBfbmFtZSddLCAkZGVzdG5hbWUgKTsKICAgIGlmKCAhJHJlcyApCiAgICAgIHsKCSR0aGlzLT5fZXJyb3IgPSBDR0ZJTEVVUExPQURfTU9WRUZBSUxFRDsKCXJldHVybiBmYWxzZTsKICAgICAgfQoKICAgIHJldHVybiAkbmV3bmFtZTsKICB9CgogIGZ1bmN0aW9uIFNldEZpbGVzKCYkbmV3ZmlsZXMpCiAgewogICAgJHRoaXMtPl9maWxlcyA9ICRuZXdmaWxlczsKICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/countries.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QUYsQWZnaGFuaXN0YW4KQUwsQWxiYW5pYQpEWixBbGdlcmlhCkFTLEFtZXJpY2FuIFNhbW9hCkFELEFuZG9ycmEKQU8sQW5nb2xhCkFJLEFuZ3VpbGxhCkFRLEFudGFyY3RpY2EKQUcsQW50aWd1YSBBbmQgQmFyYnVkYQpBUixBcmdlbnRpbmEKQU0sQXJtZW5pYQpBVyxBcnViYQpBVSxBdXN0cmFsaWEKQVQsQXVzdHJpYQpBWixBemVyYmFpamFuCkJTLEJhaGFtYXMKQkgsQmFocmFpbgpCRCxCYW5nbGFkZXNoCkJCLEJhcmJhZG9zCkJZLEJlbGFydXMKQkUsQmVsZ2l1bQpCWixCZWxpemUKQkosQmVuaW4KQk0sQmVybXVkYQpCVCxCaHV0YW4KQk8sQm9saXZpYQpCQSxCb3NuaWEgQW5kIEhlcnplZ293aW5hCkJXLEJvdHN3YW5hCkJWLEJvdXZldCBJc2xhbmQKQlIsQnJhemlsCklPLEJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeQpCTixCcnVuZWkgRGFydXNzYWxhbQpCRyxCdWxnYXJpYQpCRixCdXJraW5hIEZhc28KQkksQnVydW5kaQpLSCxDYW1ib2RpYQpDTSxDYW1lcm9vbgpDQSxDYW5hZGEKQ1YsQ2FwZSBWZXJkZQpLWSxDYXltYW4gSXNsYW5kcwpDRixDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMKVEQsQ2hhZApDTCxDaGlsZQpDTixDaGluYQpDWCxDaHJpc3RtYXMgSXNsYW5kCkNDLENvY29zIChLZWVsaW5nKSBJc2xhbmRzCkNPLENvbG9tYmlhCktNLENvbW9yb3MKQ0csQ29uZ28KQ0ssQ29vayBJc2xhbmRzCkNSLENvc3RhIFJpY2EKQ0ksQ290ZSBEJ0l2b2lyZQpIUixDcm9hdGlhIChMb2NhbCBOYW1lOiBIcnZhdHNrYSkKQ1UsQ3ViYQpDWSxDeXBydXMKQ1osQ3plY2ggUmVwdWJsaWMKREssRGVubWFyawpESixEamlib3V0aQpETSxEb21pbmljYQpETyxEb21pbmljYW4gUmVwdWJsaWMKVFAsRWFzdCBUaW1vcgpFQyxFY3VhZG9yCkVHLEVneXB0ClNWLEVsIFNhbHZhZG9yCkdRLEVxdWF0b3JpYWwgR3VpbmVhCkVSLEVyaXRyZWEKRUUsRXN0b25pYQpFVCxFdGhpb3BpYQpGSyxGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykKRk8sRmFyb2UgSXNsYW5kcwpGSixGaWppCkZJLEZpbmxhbmQKRlIsRnJhbmNlCkdGLEZyZW5jaCBHdWlhbmEKUEYsRnJlbmNoIFBvbHluZXNpYQpURixGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMKR0EsR2Fib24KR00sR2FtYmlhCkdFLEdlb3JnaWEKREUsR2VybWFueQpHSCxHaGFuYQpHSSxHaWJyYWx0YXIKR1IsR3JlZWNlCkdMLEdyZWVubGFuZApHRCxHcmVuYWRhCkdQLEd1YWRlbG91cGUKR1UsR3VhbQpHVCxHdWF0ZW1hbGEKR04sR3VpbmVhCkdXLEd1aW5lYS1CaXNzYXUKR1ksR3V5YW5hCkhULEhhaXRpCkhNLEhlYXJkIEFuZCBNYyBEb25hbGQgSXNsYW5kcwpWQSxIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKQpITixIb25kdXJhcwpISyxIb25nIEtvbmcKSFUsSHVuZ2FyeQpJUyxJY2VsIEFuZApJTixJbmRpYQpJRCxJbmRvbmVzaWEKSVIsSXJhbiAoSXNsYW1pYyBSZXB1YmxpYyBPZikKSVEsSXJhcQpJRSxJcmVsYW5kCklMLElzcmFlbApJVCxJdGFseQpKTSxKYW1haWNhCkpQLEphcGFuCkpPLEpvcmRhbgpLWixLYXpha2hzdGFuCktFLEtlbnlhCktJLEtpcmliYXRpCktQLEtvcmVhLCBEZW0gUGVvcGxlJ1MgUmVwdWJsaWMKS1IsS29yZWEsIFJlcHVibGljIE9mCktXLEt1d2FpdApLRyxLeXJneXpzdGFuCkxBLExhbyBQZW9wbGUnUyBEZW0gUmVwdWJsaWMKTFYsTGF0dmlhCkxCLExlYmFub24KTFMsTGVzb3RobwpMUixMaWJlcmlhCkxZLExpYnlhbiBBcmFiIEphbWFoaXJpeWEKTEksTGllY2h0ZW5zdGVpbgpMVCxMaXRodWFuaWEKTFUsTHV4ZW1ib3VyZwpNTyxNYWNhdQpNSyxNYWNlZG9uaWEKTUcsTWFkYWdhc2NhcgpNVyxNYWxhd2kKTVksTWFsYXlzaWEKTVYsTWFsZGl2ZXMKTUwsTWFsaQpNVCxNYWx0YQpNSCxNYXJzaGFsbCBJc2xhbmRzCk1RLE1hcnRpbmlxdWUKTVIsTWF1cml0YW5pYQpNVSxNYXVyaXRpdXMKWVQsTWF5b3R0ZQpNWCxNZXhpY28KRk0sTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcwpNRCxNb2xkb3ZhLCBSZXB1YmxpYyBPZgpNQyxNb25hY28KTU4sTW9uZ29saWEKTVMsTW9udHNlcnJhdApNQSxNb3JvY2NvCk1aLE1vemFtYmlxdWUKTU0sTXlhbm1hcgpOQSxOYW1pYmlhCk5SLE5hdXJ1Ck5QLE5lcGFsCk5MLE5ldGhlcmxhbmRzCkFOLE5ldGhlcmxhbmRzIEFudCBJbGxlcwpOQyxOZXcgQ2FsZWRvbmlhCk5aLE5ldyBaZWFsYW5kCk5JLE5pY2FyYWd1YQpORSxOaWdlcgpORyxOaWdlcmlhCk5VLE5pdWUKTkYsTm9yZm9sayBJc2xhbmQKTVAsTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzCk5PLE5vcndheQpPTSxPbWFuClBLLFBha2lzdGFuClBXLFBhbGF1ClBBLFBhbmFtYQpQRyxQYXB1YSBOZXcgR3VpbmVhClBZLFBhcmFndWF5ClBFLFBlcnUKUEgsUGhpbGlwcGluZXMKUE4sUGl0Y2Fpcm4KUEwsUG9sYW5kClBULFBvcnR1Z2FsClBSLFB1ZXJ0byBSaWNvClFBLFFhdGFyClJFLFJldW5pb24KUk8sUm9tYW5pYQpSVSxSdXNzaWFuIEZlZGVyYXRpb24KUlcsUndhbmRhCktOLFNhaW50IEsgSXR0cyBBbmQgTmV2aXMKTEMsU2FpbnQgTHVjaWEKVkMsU2FpbnQgVmluY2VudCwgVGhlIEdyZW5hZGluZXMKV1MsU2Ftb2EKU00sU2FuIE1hcmlubwpTVCxTYW8gVG9tZSBBbmQgUHJpbmNpcGUKU0EsU2F1ZGkgQXJhYmlhClNOLFNlbmVnYWwKU0MsU2V5Y2hlbGxlcwpTTCxTaWVycmEgTGVvbmUKU0csU2luZ2Fwb3JlClNLLFNsb3Zha2lhIChTbG92YWsgUmVwdWJsaWMpClNJLFNsb3ZlbmlhClNCLFNvbG9tb24gSXNsYW5kcwpTTyxTb21hbGlhClpBLFNvdXRoIEFmcmljYQpHUyxTb3V0aCBHZW9yZ2lhICwgUyBTYW5kd2ljaCBJcy4KRVMsU3BhaW4KTEssU3JpIExhbmthClNILFN0LiBIZWxlbmEKUE0sU3QuIFBpZXJyZSBBbmQgTWlxdWVsb24KU0QsU3VkYW4KU1IsU3VyaW5hbWUKU0osU3ZhbGJhcmQsIEphbiBNYXllbiBJc2xhbmRzClNaLFN3IEF6aWxhbmQKU0UsU3dlZGVuCkNILFN3aXR6ZXJsYW5kClNZLFN5cmlhbiBBcmFiIFJlcHVibGljClRXLFRhaXdhbgpUSixUYWppa2lzdGFuClRaLFRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgT2YKVEgsVGhhaWxhbmQKVEcsVG9nbwpUSyxUb2tlbGF1ClRPLFRvbmdhClRULFRyaW5pZGFkIEFuZCBUb2JhZ28KVE4sVHVuaXNpYQpUUixUdXJrZXkKVE0sVHVya21lbmlzdGFuClRDLFR1cmtzIEFuZCBDYWljb3MgSXNsYW5kcwpUVixUdXZhbHUKVUcsVWdhbmRhClVBLFVrcmFpbmUKQUUsVW5pdGVkIEFyYWIgRW1pcmF0ZXMKR0IsVW5pdGVkIEtpbmdkb20KVVMsVW5pdGVkIFN0YXRlcwpVTSxVbml0ZWQgU3RhdGVzIE1pbm9yIElzLgpVWSxVcnVndWF5ClVaLFV6YmVraXN0YW4KVlUsVmFudWF0dQpWRSxWZW5lenVlbGEKVk4sVmlldCBOYW0KVkcsVmlyZ2luIElzbGFuZHMgKEJyaXRpc2gpClZJLFZpcmdpbiBJc2xhbmRzIChVLlMuKQpXRixXYWxsaXMgQW5kIEZ1dHVuYSBJc2xhbmRzCkVILFdlc3Rlcm4gU2FoYXJhCllFLFllbWVuCllVLFl1Z29zbGF2aWEKWlIsWmFpcmUKWk0sWmFtYmlhClpXLFppbWJhYndlIA==]]></data>
	</file>
	<file>
	  <filename>/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/docs/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAp0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCnRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQpzb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNvIHRvCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91CndhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CmZyZWUgcHJvZ3JhbXMsIGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgp5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKa25vdyB0aGVpciByaWdodHMuCgogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKZ2l2aW5nIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KCiAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCnRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwpjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KYXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KCiAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgptb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgc29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVyZXIKY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0aWMKcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUgYXJlYSBvZiBwcm9kdWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCmhhdmUgZGVzaWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQpwcm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxseSBpbiBvdGhlciBkb21haW5zLCB3ZQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCgogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuClN0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBvZgpzb2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4gdGhvc2UgdGhhdCBkbywgd2Ugd2lzaCB0bwphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKcGF0ZW50cyBjYW5ub3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCgogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuCgogICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCgogIDAuIERlZmluaXRpb25zLgoKICAiVGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKd29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KCiAgIlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCkxpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCgogIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KCiAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKb24gdGhlIFByb2dyYW0uCgogIFRvICJwcm9wYWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgoKICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQpmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikKdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQp3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQptZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgoKICAxLiBTb3VyY2UgQ29kZS4KCiAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQpmb3JtIG9mIGEgd29yay4KCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KCiAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgpDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCmltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCiJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCihpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCnByb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgoKICBUaGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCnRoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bwpjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKU3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJlZQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCmluY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQpsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWlyZSwKc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgoKICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuCgogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdApzYW1lIHdvcmsuCgogIDIuIEJhc2ljIFBlcm1pc3Npb25zLgoKICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZApjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCnBlcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwpjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgpyaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KCiAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCm1ha2VzIGl0IHVubmVjZXNzYXJ5LgoKICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgoKICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCjExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBvcgpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCm1lYXN1cmVzLgoKICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCgogIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCgogIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlvdQpyZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQpub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCnJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCmFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCgogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCgogIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCgogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgogICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bwogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KCiAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcwogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCiAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwogICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCiAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CiAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgoKICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgoKICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCm1hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwKaW4gb25lIG9mIHRoZXNlIHdheXM6CgogICAgYSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgoKICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAogICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCiAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAogICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubwogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCiAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgoKICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLgoKICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCiAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCiAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhlIHBsYWNlIHRvCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQogICAgdGhhdCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgoKICAgIGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQKICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCiAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCiAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4KCiAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCmZyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KCiAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLApwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKYW5kIGV4ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCgogIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCnBhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQpVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9yIGZvciBhCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCkNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCmJ5IHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAptb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCmJlZW4gaW5zdGFsbGVkIGluIFJPTSkuCgogIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCgogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAppbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5CmRvY3VtZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgp1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4KCiAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgpBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCmJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRlbnQKdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQp1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5CnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KCiAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQphZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCnRoYXQgbWF0ZXJpYWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgoKICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQogICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKCiAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCgogICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCiAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCiAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgoKICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgpyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCgogIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwp3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgoKICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQpmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwp0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCgogIDguIFRlcm1pbmF0aW9uLgoKICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCgogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCmxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQpwcm92aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKaG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CmNvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMgYWZ0ZXIKeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KCiAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCgogIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgpydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCnRvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCm5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwpub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KCiAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoKICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CnJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4Kb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKd29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCmxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZApnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKdGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KCiAgMTEuIFBhdGVudHMuCgogIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCgogIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCmhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZApieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCmNvbnNlcXVlbmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCnB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdodCB0byBncmFudApwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKdGhpcyBMaWNlbnNlLgoKICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQpwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCgogIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKdG8gY29weSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAp0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCmF2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudApsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMgeW91IGhhdmUKYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCmNvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKaW4gYSBjb3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0CmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCgogIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCgogIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgp0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcwpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAp3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcwppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50CnRvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCnRoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawpjb252ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdApjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCm9yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKYW55IGltcGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgoKICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KCiAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCmNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKdG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5CnRoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCgogIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCnBlcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQpjb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLApidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCnNlY3Rpb24gMTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKY29tYmluYXRpb24gYXMgc3VjaC4KCiAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgp0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBhdXRob3JpemVzIHlvdQp0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KCiAgTGF0ZXIgbGljZW5zZSB2ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQKcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBpbXBvc2VkIG9uIGFueQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCmxhdGVyIHZlcnNpb24uCgogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgoKICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWQpPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTQpJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCgogIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQpHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUKVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRApQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1TKSwKRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgpTVUNIIERBTUFHRVMuCgogIDE3LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCgogIElmIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAphYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJtcywKcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCmFuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwgbGlhYmlsaXR5IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUKUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCgogIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0CnRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgoKICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCm1pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwKaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUKPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQptYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKdGhlIGxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAo8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+Lgo=]]></data>
	</file>
	<file>
	  <filename>/functions.misc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmZ1bmN0aW9uIG15X2h0bWxfZW50aXR5X2RlY29kZSgkc3RyaW5nLCRmbGFncyA9IEVOVF9DT01QQVQsCgkJCSAgICAgICAkZW5jb2Rpbmc9J0lTTy04ODU5LTEnKQp7CiAgaWYoIHN0cnRvbG93ZXIoJGVuY29kaW5nKSA9PSAndXRmLTgnICkKICAgIHsKICAgICAgcmV0dXJuIGh0bWxfZW50aXR5X2RlY29kZV91dGY4KCRzdHJpbmcpOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgcmV0dXJuIGh0bWxfZW50aXR5X2RlY29kZSgkc3RyaW5nLCRmbGFncywkZW5jb2RpbmcpOwogICAgfQp9CgovLyBjb252ZXJ0IGh0bWwgZW50aXRpZXMgaW50byB1dGY4IHN0cmluZ3MKLy8gY291cnRlc3k6IGxhdXJ5bmFzIGRvdCBidXRrdXMgYXQgZ21haWwgZG90IGNvbQpmdW5jdGlvbiBodG1sX2VudGl0eV9kZWNvZGVfdXRmOCgkc3RyaW5nKQp7CiAgICBzdGF0aWMgJHRyYW5zX3RibDsKICAgCiAgICAvLyByZXBsYWNlIG51bWVyaWMgZW50aXRpZXMKICAgICRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJ34mI3goWzAtOWEtZl0rKTt+ZWknLCAnY29kZTJ1dGYoaGV4ZGVjKCJcXDEiKSknLCAkc3RyaW5nKTsKICAgICRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJ34mIyhbMC05XSspO35lJywgJ2NvZGUydXRmKFxcMSknLCAkc3RyaW5nKTsKCiAgICAvLyByZXBsYWNlIGxpdGVyYWwgZW50aXRpZXMKICAgIGlmICghaXNzZXQoJHRyYW5zX3RibCkpCiAgICB7CiAgICAgICAgJHRyYW5zX3RibCA9IGFycmF5KCk7CiAgICAgICAKICAgICAgICBmb3JlYWNoIChnZXRfaHRtbF90cmFuc2xhdGlvbl90YWJsZShIVE1MX0VOVElUSUVTKSBhcyAkdmFsPT4ka2V5KQogICAgICAgICAgICAkdHJhbnNfdGJsWyRrZXldID0gdXRmOF9lbmNvZGUoJHZhbCk7CiAgICB9CiAgIAogICAgcmV0dXJuIHN0cnRyKCRzdHJpbmcsICR0cmFuc190YmwpOwp9CgovLyBSZXR1cm5zIHRoZSB1dGYgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVuaWNvZGUgdmFsdWUgKGZyb20gcGhwLm5ldCwgY291cnRlc3kgLSByb21hbnNAdm9pZC5sdikKZnVuY3Rpb24gY29kZTJ1dGYoJG51bSkKewogICAgaWYgKCRudW0gPCAxMjgpIHJldHVybiBjaHIoJG51bSk7CiAgICBpZiAoJG51bSA8IDIwNDgpIHJldHVybiBjaHIoKCRudW0gPj4gNikgKyAxOTIpIC4gY2hyKCgkbnVtICYgNjMpICsgMTI4KTsKICAgIGlmICgkbnVtIDwgNjU1MzYpIHJldHVybiBjaHIoKCRudW0gPj4gMTIpICsgMjI0KSAuIGNocigoKCRudW0gPj4gNikgJiA2MykgKyAxMjgpIC4gY2hyKCgkbnVtICYgNjMpICsgMTI4KTsKICAgIGlmICgkbnVtIDwgMjA5NzE1MikgcmV0dXJuIGNocigoJG51bSA+PiAxOCkgKyAyNDApIC4gY2hyKCgoJG51bSA+PiAxMikgJiA2MykgKyAxMjgpIC4gY2hyKCgoJG51bSA+PiA2KSAmIDYzKSArIDEyOCkgLiBjaHIoKCRudW0gJiA2MykgKyAxMjgpOwogICAgcmV0dXJuICcnOwp9CgovLyBFT0YKPz4=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0NHRklMRVVQTE9BRF9OT0ZJTEUnXSA9ICdObyBmaWxlIHVwbG9hZGVkIG1hdGNoaW5nIHRoZSBzcGVjaWZpY2F0aW9ucyc7CiRsYW5nWydDR0ZJTEVVUExPQURfRklMRVNJWkUnXSA9ICdUaGUgc2l6ZSBvZiB0aGUgdXBsb2FkZWQgZmlsZSBleGNlZWRlZCB0aGUgbWF4aW11bSBhbGxvd2VkJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9GSUxFVFlQRSddID0gJ0ZpbGVzIG9mIHRoaXMgdHlwZSBjYW5ub3QgYmUgdXBsb2FkZWQnOwokbGFuZ1snQ0dGSUxFVVBMT0FEX0ZJTEVFWElTVFMnXSA9ICdBIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9CQURERVNURElSJ10gPSAnVGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBzcGVjaWZpZWQgZm9yIHVwbG9hZGVkIGZpbGVzIGRvZXMgbm90IGV4aXN0JzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9CQURQRVJNUyddID0gJ0ZpbGUgcGVybWlzc2lvbnMgZG8gbm90IGFsbG93IHdyaXRpbmcgdGhlIHVwbG9hZGVkIGZpbGUgaW4gaXRzIGRlc3RpbmF0aW9uIGxvY2F0aW9uJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9NT1ZFRkFJTEVEJ10gPSAnQXR0ZW1wdGluZyB0byBtb3ZlIHRoZSB1cGxvYWRlZCBmaWxlIHRvIGl0cyBmaW5hbCBkZXN0aW5hdGlvbiBmYWlsZWQnOwoKJGxhbmdbJ3RodW1ibmFpbF9zaXplJ10gPSAnU2l6ZSBvZiB0aHVtYm5haWxzJzsKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdJbWFnZSBGaWxlIEV4dGVuc2lvbnMnOwokbGFuZ1snZ3JvdXAnXSA9ICdHcm91cCc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJzsKJGxhbmdbJ3NlbGVjdF9vbmUnXSA9ICdTZWxlY3QgT25lJzsKJGxhbmdbJ3ByaW9yaXR5X2NvdW50cmllcyddID0gJ1ByaW9yaXR5IENvdW50cmllcyc7CiRsYW5nWydwcm9tcHRfZWRpdHRlbXBsYXRlJ10gPSAnRWRpdCBUZW1wbGF0ZSc7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdEZWxldGUgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1RlbXBsYXRlIE5hbWUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUgVGV4dCc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ1RlbXBsYXRlIE5hbWUnOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTmV3IFRlbXBsYXRlJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnRGVmYXVsdCc7CgokbGFuZ1sneWVzJ10gPSAnWWVzJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ2FwcGx5J10gPSAnQXBwbHknOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmU/JzsKCiRsYW5nWydyZXNldHRvZmFjdG9yeSddID0gJ1Jlc2V0IHRvIGZhY3RvcnkgZGVmYXVsdHMnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdFcnJvciBUZW1wbGF0ZSc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdBIFRlbXBsYXRlIGJ5IHRoYXQgTmFtZSBBbHJlYWR5IEV4aXN0cyc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlzIE1vZHVsZSBFeHRlbnNpb25zJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnVGhpcyBtb2R1bGUgaXMgcmVhZHkgdG8gdXNlLiAgQ29kZSBhd2F5ISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnU2VlIHlvdSBhZ2FpbiBzb21lIGRheSc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3IhJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgaXMgYSBsaWJyYXJ5IG9mIHBocCBjbGFzc2VzIHVzZWQgdG8gYnVpbGQgYWR2YW5jZWQgZm9ybXMnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPgo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPgo8bGk+VmVyc2lvbiAxLjAuMS4gQXByaWwgMjAwNy4gIEZpeGVzIHRvIENyZWF0ZUltYWdlTGluazwvbGk+CjxsaT5WZXJzaW9uIDEuMC4yLiBBcHJpbCAyMDA3LiAgQ3JlYXRlSW1hZ2VMaW5rIHdpbGwgbm93IHdvcmsgb24gdGhlIGZyb250ZW5kLjwvbGk+CjxsaT5WZXJzaW9uIDEuMC4zLiBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgYXBwbHkgYnV0dG9ucyB0byBuZXcgdGVtcGxhdGVzLjwvbGk+CjxsaT5WZXJzaW9uIDEuMS4gICBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgZGVmYXVsdCBmcm9udGVuZCBlcnJvciBoYW5kbGluZyBwbHVnaW4uPC9saT4KPGxpPlZlcnNpb24gMS4yLiAgIE5vdmVtYmVyICAyMDA3LCAgQWRkcyBtb3JlIGNvbnZlbmllbmNlIGZ1bmN0aW9uczwvbGk+CjxsaT5WZXJzaW9uIDEuMy4gICBOb3ZlbWJlciAgMjAwNy4gIEFkZHMgZXZlbiBtb3JlIGNvbnZlbmllbmNlIGZ1bmN0aW9uczwvbGk+CjxsaT5WZXJzaW9uIDEuNC4gICBEZWNlbWJlciAgMjAwNy4gIEFkZHMgQ3JlYXRlSW1hZ2VEcm9wZG93biBtZXRob2QsIG1ldGhvZHMgZm9yIHN0YXRlIGFuZCBjb3VudHJ5IGRyb3Bkb3ducyBhbmQgYSBidW5jaCBvZiBvdGhlciB0aGluZ3MuPC9saT4KPGxpPlZlcnNpb24gMS41LiAgIEphbnVhcnkgICAyMDA4LiAgRml4ZXMgdG8gaHRtbF9lbnRpdGllc19kZWNvZGUgaW4gdXRmODwvbGk+CjxsaT5WZXJzaW9uIDEuNi4gICBGZWJydWFyeSAgMjAwOCwgIEFkZHMgdGhlIENHRmlsZVVwbG9hZEhhbmRsZXIgY2xhc3M8L2xpPgo8bGk+VmVyc2lvbiAxLjYuMS4gICBGZWJydWFyeSAgMjAwOCwgIE1pbm9yIGZpeCB0byByZWN1cnNpdmVfY2hhbmdlX2RpcmVjdG9yeTwvbGk+CjxsaT5WZXJzaW9uIDEuOC4gRmVicnVhcnkgMjAwOAogIDx1bD4KICAgIDxsaT5BZGQgYSBidW5jaCBtb3JlIHV0aWxpdHkgYW5kIGNvbnZlbmllbmNlIG1ldGhvZHM8L2xpPgogICAgPGxpPk1vdmUgY291bnRyaWVzIGFuZCBzdGF0ZXMgaW50byBhIHRhYmxlIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCB3aXRoIGpvaW5zIGV0Yy48L2xpPgogICAgPGxpPkFkZCB0aGUgYWJpbGl0eSB0byBwcmlvcml0aXplIGNlcnRhaW4gY291bnRyaWVzIGJ5IG5hbWU8L2xpPgogICAgPGxpPkFkZHMgdGhlIEdldFNpbmdsZVRlbXBsYXRlRm9ybSBtZXRob2QgdG8gbWFrZSBpdCBjb252ZW5pZW50IHRvIGVkaXQgYW5kIHJlc3RvcmUgdG8gZGVmYXVsdCBhIHNpbmdsZSB0ZW1wbGF0ZS48L2xpPgogICAgPGxpPkZpeGVzIGlzc3VlcyB3aXRoIHRoZSBjYW5jZWwgYnV0dG9uIHdoZW4gZWRpdGluZyB0ZW1wbGF0ZXMuPC9saT4KICAgIDxsaT5VcGRhdGUgdGhlIGxpY2Vuc2UuPC9saT4KICAgIDxsaT5VcGRhdGVzIHRvIHRoZSBmaWxlIHVwbG9hZCBjYXBhYmlsaXRpZXM8L2xpPgogICAgPGxpPlRoZSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBleHBvcnRlZCB0byBzbWFydHk8L2xpPgogICAgPGxpPkFkZCB0aGUgZ2V0X2FjdGlvbl9pZCBhbmQgc2V0X2FjdGlvbl9pZCB2aXJ0dWFsIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgb3ZlcnJpZGRlbiBieSBhbnkgbW9kdWxlIGRlcml2ZWQgZnJvbSBDR0V4dGVuc2lvbnMuPC9saT4KICA8L3VsPgogIDwvbGk+CjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KPHA+VGhpcyBtb2R1bGUgbWVyZWx5IHByb3ZpZGVzIGNvbnZlbmllbmNlIGFwaVwncyBhbmQgc21hcnR5IHRhZ3MgZm9yIHVzZSBpbiBvdGhlciBtb2R1bGVzLiAgSXQgaXMgbWVhbnQgc29sZWx5IGFzIGEgYmFzZSBjbGFzcyBhbmQgdXRpbGl0eSBjbGFzcyBmb3Igb3RoZXIgbW9kdWxlcy48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+CjxoMz5TbWFydHkgQWRkb25zPC9oMz4KPHA+VGhpcyBtb2R1bGUgYWRkcyBhIGZldyBzbWFydHkgY29udmVuaWVuY2VzIGZvciB1c2Ugd2l0aCBvdGhlciBtb2R1bGVzLiBUaGV5IGFyZSBsaXN0ZWQgYW5kIGRlc2NyaWJlZCBoZXJlOjwvcD4KPHVsPgo8bGk+Y2dlcnJvciAtIDxlbT5ibG9jazwvZW0+IHBsdWdpbgo8cD5pLmU6IDxjb2RlPntjZ2Vycm9yfVRoaXMgaXMgZXJyb3IgdGV4dHsvY2dlcnJvcn08L2NvZGU+PGJyLz4KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4KPC9wPgo8cD5vcHRpb25hbCBwYXJhbWV0ZXJzOiBcJ2Vycm9yY2xhc3NcJyA9IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNsYXNzIG5hbWUgaW4gdGhlIHRlbXBsYXRlLgo8L3A+CjxwPkRlc2NyaXB0aW9uOiBUaGlzIGJsb2NrIHBsdWdpbiB1c2VzIHRoZSBlcnJvciB0ZW1wbGF0ZSAoY29uZmlndXJhYmxlIGZyb20gdGhlIENHRXh0ZW5zaW9ucyBhZG1pbiBpbnRlcmZhY2UpIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS48L3A+CjwvdWw+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IocyksIGNhbGd1eSBldCBhbGwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0Cm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFJvYmVydCBDYW1wYmVsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCihhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCmluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIApzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKT3IgcmVhZCBpdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPm9ubGluZTwvYT48L3A+Cic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/cs_CZ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2dyb3VwJ10gPSAnU2t1cGluYSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hJzsKJGxhbmdbJ3NlbGVjdF9vbmUnXSA9ICdWeWJyYXQgamVkbnUnOwokbGFuZ1sncHJvbXB0X2VkaXR0ZW1wbGF0ZSddID0gJ1VwcmF2aXQgJnNjYXJvbjthYmxvbnUnOwokbGFuZ1sncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJ10gPSAnU21hemF0ICZzY2Fyb247YWJsb251JzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdKbSZlYWN1dGU7bm8gJnNjYXJvbjthYmxvbnknOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnVGV4dCAmc2Nhcm9uO2FibG9ueSc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ0ptJmVhY3V0ZTtubyAmc2Nhcm9uO2FibG9ueSc7CiRsYW5nWydwcm9tcHRfbmV3dGVtcGxhdGUnXSA9ICdOb3YmYWFjdXRlOyAmc2Nhcm9uO2FibG9uYSc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ1YmeWFjdXRlO2Nob3omaWFjdXRlOyc7CiRsYW5nWyd5ZXMnXSA9ICdBbm8nOwokbGFuZ1snbm8nXSA9ICdOZSc7CiRsYW5nWydzdWJtaXQnXSA9ICdWbG/Fvml0JzsKJGxhbmdbJ2FwcGx5J10gPSAnQXBsaWtvdmF0JzsKJGxhbmdbJ2NhbmNlbCddID0gJ1N0b3Jubyc7CiRsYW5nWydlZGl0J10gPSAnVXByYXZpdCc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnT3ByYXZkdT8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdPYm5vdml0IHDFr3ZvZG4maWFjdXRlOyBob2Rub3R5JzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnQ2h5Ym4mYWFjdXRlOyAmc2Nhcm9uO2FibG9uYSc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlvdmEgcm96JnNjYXJvbjsmaWFjdXRlO8WZZW4maWFjdXRlOyBtb2R1bMWvJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWwgamUgcMWZaXByYXZlbiBrIHBvdcW+aXQmaWFjdXRlOy4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1TEmyZzY2Fyb247JmlhY3V0ZTttZSBzZSBuYXNobGVkYW5vdSc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIG9kaW5zdGFsb3YmYWFjdXRlO24uJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsIHZlcnplIGJ5bCAlcyBuYWluc3RhbG92JmFhY3V0ZTtuLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdOYXN0YXZlbiZpYWN1dGU7IG1vZHVsdSBieWxhIGFrdHVhbGl6b3YmYWFjdXRlO25hLic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdQxZkmaWFjdXRlO3N0dXAgemFrJmFhY3V0ZTt6JmFhY3V0ZTtuLiBQcm9zJmlhY3V0ZTttIHprb250cm9sdWp0ZSBzdiZhYWN1dGU7IG9wciZhYWN1dGU7dm7Em24maWFjdXRlOy4nOwokbGFuZ1snZXJyb3InXSA9ICdDaHliYSEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBieWwgcG92JnlhY3V0ZTsmc2Nhcm9uO2VuIG5hIHZlcnppICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1RlbnRvIG1vZHVsIGplIGtuaWhvdm5hIHBocCBmdW5rYyZpYWN1dGU7IHBvdcW+JmlhY3V0ZTt2YW4meWFjdXRlO2NoIGsgdnl0diZhYWN1dGU7xZllbiZpYWN1dGU7IHBva3JvxI1pbCZ5YWN1dGU7Y2ggZm9ybXVsJmFhY3V0ZTvFmcWvJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuMC4wLiBNYXJjaCAyMDA3LiAgSW5pdGlhbCBSZWxlYXNlLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMS4gQXByaWwgMjAwNy4gIEZpeGVzIHRvIENyZWF0ZUltYWdlTGluazwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMi4gQXByaWwgMjAwNy4gIENyZWF0ZUltYWdlTGluayB3aWxsIG5vdyB3b3JrIG9uIHRoZSBmcm9udGVuZC48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjMuIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBhcHBseSBidXR0b25zIHRvIG5ldyB0ZW1wbGF0ZXMuPC9saT4NCjxsaT5WZXJzaW9uIDEuMS4gICBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgZGVmYXVsdCBmcm9udGVuZCBlcnJvciBoYW5kbGluZyBwbHVnaW4uPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+Q28gZMSbbCZhYWN1dGU7IHRlbnRvIG1vZHVsPzwvaDM+DQo8cD5UZW50byBtb2R1bCBwb3NreXR1amUgQVBJIGEgU21hcnR5IHRhZ3kgcHJvIHBvdcW+aXQmaWFjdXRlOyB2IG9zdGF0biZpYWN1dGU7Y2ggbW9kdWxlY2guIFMmYWFjdXRlO20gbyBzb2LEmyBwcm90byBuZW0mYWFjdXRlOyDFviZhYWN1dGU7ZG4meWFjdXRlOyBzbXlzbC48L3A+DQo8aDM+SmFrIGhvIHBvdcW+JmlhY3V0ZTt2YXQ/PC9oMz4NCjxwPlBva3VkIG0mYWFjdXRlOyBwcm8gViZhYWN1dGU7cyB0ZW50byBtb2R1bCBzbXlzbCwgamlzdMSbIGRvayZhYWN1dGU7xb5ldGUgcMWZZcSNJmlhY3V0ZTtzdCBuJmFhY3V0ZTtzbGVkdWomaWFjdXRlO2MmaWFjdXRlOyB0ZXh0IHNhbWkgOi0pPC9wPg0KPHA+V2VsbCwgeW91IHN0YXJ0IHlvdXIgb3duIG1vZHVsZSAoSSBzdWdnZXN0IHN0YXJ0aW5nIHdpdGggdGhlIFNrZWxldG9uIG1vZHVsZSksIGFuZCB0aGVuIHdoZW4geW91IG5lZWQgdG8gdXNlIGFuIGFkdmFuY2VkIGZvcm0gb2JqZWN0IGZyb20gdGhpcyBsaWJyYXJ5LCBzaW1wbHkgbWFrZSB5b3VyIG1vZHVsZSBkZXBlbmRhbnQgdXBvbiBGb3JtT2JqZWN0cywgYW5kIHRoZW4gaW5zdGFudGlhdGUgYW4gb2JqZWN0IG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLiAgU2VlIHRoZSBjb2RlIGluc2lkZSB0aGUgRm9ybU9iamVjdHMgZGlyZWN0b3J5IGZvciB1c2FnZSBpbnN0cnVjdGlvbnMuPC9wPg0KPGgzPlNtYXJ0eSBBZGRvbnM8L2gzPg0KPHA+VGhpcyBtb2R1bGUgYWRkcyBhIGZldyBzbWFydHkgY29udmVuaWVuY2VzIGZvciB1c2Ugd2l0aCBvdGhlciBtb2R1bGVzLiBUaGV5IGFyZSBsaXN0ZWQgYW5kIGRlc2NyaWJlZCBoZXJlOjwvcD4NCjx1bD4NCjxsaT5jZ2Vycm9yIC0gPGVtPmJsb2NrPC9lbT4gcGx1Z2luDQo8cD5pLmU6IDxjb2RlPntjZ2Vycm9yfVRoaXMgaXMgZXJyb3IgdGV4dHsvY2dlcnJvcn08L2NvZGU+PGJyLz4NCiAgICBvcjogPGNvZGU+e2NnZXJyb3J9eyRlcnJvcnRleHR2YXJ9ey9jZ2Vycm9yfTwvYnI+DQo8L3A+DQo8cD5vcHRpb25hbCBwYXJhbWV0ZXJzOiAmIzAzOTtlcnJvcmNsYXNzJiMwMzk7ID0gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY2xhc3MgbmFtZSBpbiB0aGUgdGVtcGxhdGUuDQo8L3A+DQo8cD5EZXNjcmlwdGlvbjogVGhpcyBibG9jayBwbHVnaW4gdXNlcyB0aGUgZXJyb3IgdGVtcGxhdGUgKGNvbmZpZ3VyYWJsZSBmcm9tIHRoZSBDR0V4dGVuc2lvbnMgYWRtaW4gaW50ZXJmYWNlKSB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UuPC9wPg0KPC91bD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSZxdW90O2h0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yKHMpLCBjYWxndXkgZXQgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMmcXVvdDs+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICANCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PjxjYWxndXkxMDAwQGhvdG1haWwuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuODgwMjY3ODM3LjExODA5OTE2NjkuMTE5NjQzNjEyMS4xMTk2NDk3MTAyLjI0Myc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExOTY0MTM1NjQuMjM4LjQ4LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocC9ib2FyZCw3LjAuaHRtbHx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdFbmR1bmcgZGVyIEJpbGRhdGVpJzsKJGxhbmdbJ2dyb3VwJ10gPSAnR3J1cHBlJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ1cmYXVtbDtobGVuIFNpZSBlaW5zIGF1cyc7CiRsYW5nWydwcm9tcHRfZWRpdHRlbXBsYXRlJ10gPSAnVGVtcGxhdGUgYmVhcmJlaXRlbic7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBsJm91bWw7c2NoZW4nOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1RlbXBsYXRlLU5hbWUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUtVGV4dCc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ1RlbXBsYXRlLU5hbWUnOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTmV1ZXMgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdTdGFuZGFyZCc7CiRsYW5nWyd5ZXMnXSA9ICdKYSc7CiRsYW5nWydubyddID0gJ05laW4nOwokbGFuZ1snc3VibWl0J10gPSAnQWJzZW5kZW4nOwokbGFuZ1snYXBwbHknXSA9ICdBbndlbmRlbic7CiRsYW5nWydjYW5jZWwnXSA9ICdBYmJyZWNoZW4nOwokbGFuZ1snZWRpdCddID0gJ0JlYXJiZWl0ZW4nOwokbGFuZ1snYXJleW91c3VyZSddID0gJ1NpbmQgU2llIHNpY2hlcj8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdBdWYgZGllIFdlcmtzZWluc3RlbGx1bmdlbiB6dXImdXVtbDtja3NldHplbic7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ0ZlaGxlci1UZW1wbGF0ZSc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdFaW4gVGVtcGxhdGUgbWl0IGRpZXNlbSBOYW1lbiBleGlzdGllcnQgYmVyZWl0cyc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlzIE1vZHVsLUVyd2VpdGVydW5nZW4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdEaWVzZXMgTW9kdWwgaXN0IGVpbnNhdHpiZXJlaXQuIFZpZWwgU3Bhc3MgYmVpbSBQcm9ncmFtbWllcmVuISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnQmlzIHNwJmF1bWw7dGVyIGRhbm4gLi4uJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWwgZGVpbnN0YWxsaWVydC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWx2ZXJzaW9uICVzIGluc3RhbGxpZXJ0Lic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGVpbnN0ZWxsdW5nZW4gYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdadWdyaWZmIHZlcndlaWdlcnQuIEJpdHRlIHByJnV1bWw7ZmVuIFNpZSBJaHJlIEJlcmVjaHRpZ3VuZ2VuLic7CiRsYW5nWydlcnJvciddID0gJ0ZlaGxlciEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBhdWYgVmVyc2lvbiAlcyBha3R1YWxpc2llcnQuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRGllc2VzIE1vZHVsIGlzdCBlaW5lIFBIUC1LbGFzc2VuLUJpYmxpb3RoZWsgZiZ1dW1sO3IgZGllIEVyemV1Z3VuZyBrb21wbGV4ZXIgRm9ybXVsYXJlLic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIEFwcmlsIDIwMDcuICBDcmVhdGVJbWFnZUxpbmsgd2lsbCBub3cgd29yayBvbiB0aGUgZnJvbnRlbmQuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zLiBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgYXBwbHkgYnV0dG9ucyB0byBuZXcgdGVtcGxhdGVzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYmVyIDIwMDcuICBBZGRzIGRlZmF1bHQgZnJvbnRlbmQgZXJyb3IgaGFuZGxpbmcgcGx1Z2luLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjIuICAgTm92ZW1iZXIgIDIwMDcsICBBZGRzIG1vcmUgY29udmVuaWVuY2UgZnVuY3Rpb25zPC9saT4NCjxsaT5WZXJzaW9uIDEuMy4gICBOb3ZlbWJlciAgMjAwNy4gIEFkZHMgZXZlbiBtb3JlIGNvbnZlbmllbmNlIGZ1bmN0aW9uczwvbGk+DQo8bGk+VmVyc2lvbiAxLjQuICAgRGVjZW1iZXIgIDIwMDcuICBBZGRzIENyZWF0ZUltYWdlRHJvcGRvd24gbWV0aG9kLCBtZXRob2RzIGZvciBzdGF0ZSBhbmQgY291bnRyeSBkcm9wZG93bnMgYW5kIGEgYnVuY2ggb2Ygb3RoZXIgdGhpbmdzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjUuICAgSmFudWFyeSAgIDIwMDcuICBGaXhlcyB0byBodG1sX2VudGl0aWVzX2RlY29kZSBpbiB1dGY4PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2FzIG1hY2h0IGRpZXNlcyBNb2R1bD88L2gzPg0KPHA+RGllc2VzIE1vZHVsIHN0ZWxsdCBlaW5lIEFQSSB1bmQgU21hcnR5LVRhZ3MgenVyIFZlcndlbmR1bmcgaW4gYW5kZXJlbiBNb2R1bGVuIGJlcmVpdC4gRGFzIGhlaXNzdCwgZXMgaXN0IGF1c3NjaGxpZSZzemxpZztsaWNoIGVpbmUgQmFzaXMtS2xhc3NlIHVuZCBXZXJremV1Zy1LbGFzc2UgZiZ1dW1sO3IgYW5kZXJlIE1vZHVsZS48L3A+DQo8aDM+V2llIHdpcmQgZXMgZWluZ2VzZXR6dD88L2gzPg0KPHA+V2VubiBTaWUgZWluIGVpZ2VuZXMgTW9kdWwgcHJvZ3JhbW1pZXJlbiBtJm91bWw7Y2h0ZW4sIGVtZmVobGUgaWNoIElobmVuLCBtaXQgZGVtIFNrZWxldG9uLU1vZHVsIHp1IGJlZ2lubmVuLiBVbmQgd2VubiBTaWUgZGFubiBlaW4gRm9ybXVsYXItT2JqZWt0IGF1cyBkaWVzZXIgQmlibGlvdGhlayBiZW4mb3VtbDt0aWdlbiwgbSZ1dW1sO3NzZW4gU2llIElociBNb2R1bCBudXIgdm9uIEZvcm1PYmplY3RzIGFiaCZhdW1sO25naWcgbWFjaGVuIHVuZCBkYW5uIGVpbiBPYmpla3QgZGVzIGVudHNwcmVjaGVuZGVuIFR5cHMgaW5zdGFuemlpZXJlbi4gRiZ1dW1sO3Igd2VpdGVyZSBJbmZvcm1hdGlvbmVuIHNlaGVuIFNpZSBzaWNoIGJpdHRlIGRlbiBDb2RlIGltIFZlcnplaWNobmlzIEZvcm1PYmplY3RzIGFuLjwvcD4NCjxoMz5TbWFydHktRXJ3ZWl0ZXJ1bmdlbjwvaDM+DQo8cD5EaWVzZXMgTW9kdWwgc3RlbGx0IGVpbmUgcGFhciBTbWFydHktRXJ3ZWl0ZXJ1bmdlbiB6dXIgVmVyd2VuZHVuZyBpbiBhbmRlcmVuIE1vZHVsZW4gYmVyZWl0LCBkaWUgaW0gZm9sZ2VuZGVuIGJlc2NocmllYmVuIHdlcmRlbjo8L3A+DQo8dWw+DQo8bGk+Y2dlcnJvciAtIDxlbT5ibG9jazwvZW0+IHBsdWdpbg0KPHA+QmVpc3BpZWw6IDxjb2RlPntjZ2Vycm9yfURpZXMgaXN0IGVpbiBGZWhsZXJ0ZXh0ey9jZ2Vycm9yfTwvY29kZT48YnIvPg0KICAgIG9kZXI6IDxjb2RlPntjZ2Vycm9yfXskZXJyb3J0ZXh0dmFyfXsvY2dlcnJvcn08L2JyPg0KPC9wPg0KPHA+b3B0aW9uYWxlIFBhcmFtZXRlcjogJiMwMzk7ZXJyb3JjbGFzcyYjMDM5OyA9ICZ1dW1sO2JlcnNjaHJlaWJ0IGRlbiB2b3JnZWdlYmVuZW4gS2xhc3Nlbm5hbWVuIGRlcyBUZW1wbGF0ZXMuDQo8L3A+DQo8cD5CZXNjaHJlaWJ1bmc6IERpZXNlcyBibG9jay1QbHVnaW4gdmVyd2VuZGV0IGRhcyBlcnJvci1UZW1wbGF0ZSwgdW0gZWluZSBGZWhsZXJuYWNocmljaHQgYW56dXplaWdlbi4gRGllcyBpc3Qgdm9uIGRlciBBZG1pbmlzdHJhdGlvbiBkZXMgQ0dFeHRlbnNpb25zLU1vZHVscyBtJm91bWw7Z2xpY2guPC9wPg0KPC91bD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPkRpZXNlcyBNb2R1bCBiZWluaGFsdGV0IGtlaW5lbiBrb21tZXJ6aWVsbGVuIFN1cHBvcnQuIFNpZSBrJm91bWw7bm5lbiBqZWRvY2ggJnV1bWw7YmVyIGZvbGdlbmRlIE0mb3VtbDtnbGljaGtlaXRlbiBIaWxmZSB6dSBkZW0gTW9kdWwgZXJoYWx0ZW46PC9wPg0KPHVsPg0KPGxpPkYmdXVtbDtyIGRpZSBsZXR6dGUgVmVyc2lvbiBkaWVzZXMgTW9kdWxzLCBGQVFzLCBkZW0gVmVyc2FuZCBlaW5lcyBGZWhsZXJyZXBvcnRzIG9kZXIgZGVtIEthdWYga29tbWVyemllbGxlbiBTdXBwb3J0IGJlc3VjaGVuIHNpZSBiaXR0ZSBkaWUgUHJvamVrdHNlaXRlIHVudGVyIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+RWluZSB3ZWl0ZXJlIERpc2t1c3Npb24genUgZGllc2VtIE1vZHVsIGlzdCBhdWNoIGluIGRlbiBGb3JlbiB2b24gPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Q01TIE1hZGUgU2ltcGxlPC9hPiB6dSBmaW5kZW4uPC9saT4NCjxsaT5EZXIgQXV0b3IgY2FsZ3V5MTAwMCwgaXN0IGgmYXVtbDt1ZmlnIGltIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4genUgZmluZGVuLjwvbGk+DQo8bGk+TGV0enRsaWNoIGVycmVpY2hlbiBzaWUgZGVuIEF1dG9yIGF1Y2ggJnV1bWw7YmVyIGVpbmUgZGlyZWt0ZSBFbWFpbC48L2xpPiAgDQo8L3VsPg0KPHA+TmFjaCBkZXIgR1BMIHdpcmQgZGllc2UgU29mdHdhcmUgc28gdmVyJm91bWw7ZmZlbnRsaWNodCwgd2llIHNpZSBpc3QuIEJpdHRlIGxlc2VuIFNpZSBkZW4gTGl6ZW56dGV4dCBmJnV1bWw7ciBkZW4gdm9sbGVuIEhhZnR1bmdzYXVzc2NobHVzcy48L3A+DQoNCjxoMz5Db3B5cmlnaHQgdW5kIExpemVuejwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PmNhbGd1eTEwMDBAaG90bWFpbC5jb208L2E+LiBBbGxlIFJlY2h0ZSB2b3JiZWhhbHRlbi48L3A+DQo8cD5EaWVzZXMgTW9kdWwgd3VyZGUgdW50ZXIgZGVyIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4gdmVyJm91bWw7ZmZlbnRsaWNodC4gU2llIG0mdXVtbDtzc2VuIGRpZXNlciBMaXplbnogenVzdGltbWVuLCBiZXZvciBTaWUgZGFzIE1vZHVsIHZlcndlbmRlbi48L3A+JzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNzE3NDYyNzM2LjExNDc1MTE4NTYuMTIwMjM4NTY1MS4xMjAyMzg3ODMyLjI5OCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExOTQyODQ3MTUuMjQ1LjExNC51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9Z29vZ2xlLmRlfHV0bWNjdD0vaWd8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/es_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdFeHRlbnNpb25lcyBkZSBBcmNoaXZvcyBkZSBJbWFnZW5lcyc7CiRsYW5nWydncm91cCddID0gJ0dydXBvJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnUGxhbnRpbGxhJzsKJGxhbmdbJ3NlbGVjdF9vbmUnXSA9ICdTZWxlY2Npb25hciBVbm8nOwokbGFuZ1sncHJvbXB0X2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXRhciBQbGFudGlsbGEnOwokbGFuZ1sncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJ10gPSAnQm9ycmFyIFBsYW50aWxsYSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVuYW1lJ10gPSAnTm9tYnJlIGRlIFBsYW50aWxsYSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdUZXh0byBkZSBQbGFudGlsbGEnOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdOb21icmUgZGUgUGxhbnRpbGxhJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ051ZXZhIFBsYW50aWxsYSc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ1BvciBEZWZlY3RvJzsKJGxhbmdbJ3llcyddID0gJ1NpJzsKJGxhbmdbJ25vJ10gPSAnTm8gJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0Vudmlhcic7CiRsYW5nWydhcHBseSddID0gJ0FwbGljYXInOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsYXInOwokbGFuZ1snZWRpdCddID0gJ0VkaXRhcic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnRXN0JmFhY3V0ZTsgc2VndXJvPyc7CiRsYW5nWydyZXNldHRvZmFjdG9yeSddID0gJ1Jlc3RhdXJhciBhIHZhbG9yZXMgcG9yIGRlZmVjdG8nOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdQbGFudGlsbGEgZGUgRXJyb3InOwokbGFuZ1snZXJyb3JfdGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnWWEgZXhpc3RlIHVuYSBQbGFudGlsbGEgY29uIGVzZSBub21icmUnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnRXh0ZW5zaW9uZXMgTW9kdWxhcmVzIGRlIENhbGd1eSc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0VzdGUgbSZvYWN1dGU7ZHVsbyBlc3QmYWFjdXRlOyBsaXN0byBwYXJhIHNlciB1dGlsaXphZG8uJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdOb3MgdmVtb3Mgb3RybyBkJmlhY3V0ZTthLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ00mb2FjdXRlO2R1bG8gRGVzaW5zdGFsYWRvLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdWZXJzaW9uIGRlIGVzdGUgbSZvYWN1dGU7ZHVsbyBpbnN0YWxhZGE6ICVzJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuY2lhcyBBY3R1YWxpemFkYXMuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzbyBEZW5lZ2Fkby4gUG9yIGZhdm9yIHJldmlzZSBzdXMgcGVybWlzb3MuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnJmlleGNsO0Vycm9yISc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ00mb2FjdXRlO2R1bG8gYWN0dWFsaXphZG8gYSB2ZXJzaW9uICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0VzdGUgbSZvYWN1dGU7ZHVsbyBlcyB1bmEgbGlicmVyaWEgZGUgY2xhc2VzIHBocCB1c2FkYXMgcGFyYSBjb25zdHJ1aXIgZm9ybXVsYXJpb3MgYXZhbnphZG9zJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuMC4wLiBNYXJjaCAyMDA3LiAgSW5pdGlhbCBSZWxlYXNlLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMS4gQXByaWwgMjAwNy4gIEZpeGVzIHRvIENyZWF0ZUltYWdlTGluazwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMi4gQXByaWwgMjAwNy4gIENyZWF0ZUltYWdlTGluayB3aWxsIG5vdyB3b3JrIG9uIHRoZSBmcm9udGVuZC48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjMuIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBhcHBseSBidXR0b25zIHRvIG5ldyB0ZW1wbGF0ZXMuPC9saT4NCjxsaT5WZXJzaW9uIDEuMS4gICBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgZGVmYXVsdCBmcm9udGVuZCBlcnJvciBoYW5kbGluZyBwbHVnaW4uPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+JmlxdWVzdDtRdSZlYWN1dGU7IEhhY2UgRXN0bz88L2gzPg0KPHA+RXN0ZSBtJm9hY3V0ZTtkdWxvIHByb3ZlZSB0YWdzIGFwaSB5IHNtYXJ0eSBkZSBjb252ZW5pZW5jaWEgZW4gZWwgdXNvIGRlIG90cm9zIG0mb2FjdXRlO2R1bG9zLiAgVGllbmUgZWwgcyZvYWN1dGU7bG8gc2VudGlkbyBkZSBzZXIgdW5hIGNsYXNlIGRlIGJhc2UgeSB1bmEgY2xhc2UgZGUgdXRpbGlkYWQgcGFyYSBvdHJvcyBtJm9hY3V0ZTtkdWxvcy48L3A+DQo8aDM+QyZvYWN1dGU7bW8gVXNvIGEgRXN0bzwvaDM+DQo8cD5CdWVubywgdXN0ZWQgY29taWVuemEgZWwgZGVzYXJyb2xsbyBkZSBzdSBwcm9waW8gbSZvYWN1dGU7ZHVsbyAoeW8gc3VnaWVybyBoYWNlcmxvIGNvbiBlbCBtJm9hY3V0ZTtkdWxvIFNrZWxldG9uKSwgeSBlbnRvbmNlcyBjdWFuZG8gdXN0ZWQgbmVjZXNpdGUgdXNhciB1biBvYmpldG8gZm9ybXVsYXJpbyBhdmFuemFkbyBkZSBlc3RhIGxpYnJlciZpYWN1dGU7YSwgc2ltcGxlbWVudGUgZGViZSBoYWNlciBxdWUgc3UgbSZvYWN1dGU7ZHVsbyBzZWEgZGVwZW5kaWVudGUgZGVsIEZvcm1PYmplY3RzLCB5IGx1ZWdvIGluc3RhbmNpYXIgdW4gb2JqZXRvIGRlbCB0aXBvIGFwcm9waWFkby4gIFZlYSBlbCBjJm9hY3V0ZTtkaWdvIGRlbnRybyBkZWwgZGlyZWN0b3JpbyBkZSBGb3JtT2JqZWN0cyBwb3IgaW5zdHJ1Y2Npb25lcyBkZSB1c28uPC9wPg0KPGgzPkFncmVnYWRvcyBTbWFydHk8L2gzPg0KPHA+RXN0ZSBtJm9hY3V0ZTtkdWxvIGFncmVnYSB1bmFzIHBvY2FzIGV0aXF1ZXRhcyBzbWFydHkgcGFyYSBzZXIgdXNhZGFzIGVuIG90cm9zIG0mb2FjdXRlO2R1bG9zLiBTZSBsaXN0YW4geSBkZXNjcmliZW4gYSBjb250aW51YWNpJm9hY3V0ZTtuOjwvcD4NCjx1bD4NCjxsaT5jZ2Vycm9yIC0gPGVtPmJsb2NrPC9lbT4gcGx1Z2luDQo8cD5pLmU6IDxjb2RlPntjZ2Vycm9yfUVzdGUgZXMgdGV4dG8gZGUgZXJyb3J7L2NnZXJyb3J9PC9jb2RlPjxici8+DQogICAgb3I6IDxjb2RlPntjZ2Vycm9yfXskZXJyb3J0ZXh0dmFyfXsvY2dlcnJvcn08L2JyPg0KPC9wPg0KPHA+b3B0aW9uYWwgcGFyYW1ldGVyczogJiMwMzk7ZXJyb3JjbGFzcyYjMDM5OyA9IHJlZW1wbGF6YSBlbCBub21icmUgZGUgbGEgY2xhc2UgcG9yIGRlZmVjdG8gZW4gbGEgcGxhbnRpbGxhLg0KPC9wPg0KPHA+RGVzY3JpcGNpJm9hY3V0ZTtuOiBFc3RlIHBsdWdpbiBibG9jayB1c2EgbGEgcGxhbnRpbGxhIGRlIGVycm9yIChjb25maWd1cmFibGUgZGVzZGUgbGEgaW50ZXJmYXNlIGRlIGFkbWluaXN0cmFjaSZvYWN1dGU7biBkZSBDR0V4dGVuc2lvbnMpIHBhcmEgbW9zdHJhciB1biBtZW5zYWplIGRlIGVycm9yLjwvcD4NCjwvdWw+DQo8aDM+U29wb3J0ZTwvaDM+DQo8cD5Fc3RlIG0mb2FjdXRlO2R1bG8gbm8gaW5jbHV5ZSBzb3BvcnRlIGNvbWVyY2lhbC4gU2luIGVtYmFyZ28sIGhheSB1biBzaW4gbiZ1YWN1dGU7bWVybyBkZSByZWN1cnNvcyBkaXNwb25pYmxlcyBwYXJhIGF5dWRhciBhIHVzdGVkIGNvbiAmZWFjdXRlO2w6PC9wPg0KPHVsPg0KPGxpPlBvciBsYSB2ZXJzaSZvYWN1dGU7biAmdWFjdXRlO2x0aW1hIGRlIGVzdGUgbSZvYWN1dGU7ZHVsbywgRkFRcywgcGFyYSBwcmVzZW50YXIgdW4gYXJjaGl2byBkZSBJbmZvcm1lIGRlIEJ1ZyBvIGNvbXByYXIgc29wb3J0ZSBjb21lcmNpYWwsIHBvciBmYXZvciB2aXNpdGUgZWwgc2l0aW8gd2ViIGRlbCBtJm9hY3V0ZTtkdWxvIGVuIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+QWRlbSZhYWN1dGU7cyBlbCBpbnRlcmNhbWJpbyBkZSBpZGVhcyByZXNwZWN0byBhIGVzdGUgbSZvYWN1dGU7ZHVsbyBzZSBwdWVkZSByZWFsaXphciB2aXNpdGFuZG8gYSA8YSBocmVmPSZxdW90O2h0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5Gb3JvIGRlIENNUyBNYWRlIFNpbXBsZTwvYT4uPC9saT4NCjxsaT5FbCBhdXRvciwgY2FsZ3V5MTAwMCwgY29uIGZyZWN1ZW5jaWEgcHVlZGUgZW5jb250cmFybG8gZW4gZWwgPGEgaHJlZj0mcXVvdDtpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMmcXVvdDs+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkZpbmFsbWVudGUsIHB1ZWRlIHRlbmVyIGFsZyZ1YWN1dGU7biAmZWFjdXRlO3hpdG8gZW52aWFuZG8gdW4gZW1haWwgYWwgYXV0b3IgZW4gZm9ybWEgZGlyZWN0YS48L2xpPg0KPC91bD4NCjxwPkRlIGFjdWVyZG8gY29uIGxhIEdQTCwgZXN0ZSBzb2Z0d2FyZSBzZSBwcm92ZWUgY29tbyBlcy4gUG9yIGZhdm9yIGxlYSBlbCB0ZXh0byBkZSBsYSBsaWNlbmNpYSBwb3IgY29tcGxldG8gcGFyYSBjb25vY2VyIHN1cyBhZmlybWFjaW9uZXMuPC9wPg0KPGgzPkNvcHlyaWdodCB5IExpY2VuY2lhPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNywgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+PGNhbGd1eTEwMDBAaG90bWFpbC5jb20+PC9hPi4gVG9kb3MgbG9zIERlcmVjaG9zIFJlc2VydmFkb3MuPC9wPg0KPHA+RXN0ZSBtJm9hY3V0ZTtkdWxvIHNlIGhhIHJlYWxpemFkbyBiYWpvIGxhIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkxpY2VuY2lhIFAmdWFjdXRlO2JsaWNhIEdOVTwvYT4uIFVzdGVkIGRlYmUgZXN0YXIgZGUgYWN1ZXJkbyBjb24gbGEgbGljZW5jaWEgYW50ZXMgZGUgdXNhciBlbCBtJm9hY3V0ZTtkdWxvLjwvcD4NCic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExOTkzODI3NzYuMjc1LjY2LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocC90b3BpYywxODI3NC4wL3RvcGljc2Vlbi5odG1sfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjEyODMxOTAxNzcuMTE5MjU3MjgwOS4xMTk5NTA0NTU4LjExOTk1NzYzMTYuMjc3JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fi_FI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnUG9oamEnOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ1ZhbGl0c2UgeWtzaSc7CiRsYW5nWydwcm9tcHRfZWRpdHRlbXBsYXRlJ10gPSAnTXVva2thYSBwb2hqYWEnOwokbGFuZ1sncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJ10gPSAnUG9pc3RhIHBvaGphJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdQb2hqYW4gbmltaSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdQb2hqYW4ga29vZGknOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdQb2hqYW4gbmltaSc7CiRsYW5nWydwcm9tcHRfbmV3dGVtcGxhdGUnXSA9ICdVdXNpIHBvaGphJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnT2xldHVzJzsKJGxhbmdbJ3llcyddID0gJ0t5bGwmYXVtbDsnOwokbGFuZ1snbm8nXSA9ICdFaSc7CiRsYW5nWydzdWJtaXQnXSA9ICdMJmF1bWw7aGV0JmF1bWw7JzsKJGxhbmdbJ2FwcGx5J10gPSAnT3RhIGsmYXVtbDt5dHQmb3VtbDsmb3VtbDtuJzsKJGxhbmdbJ2NhbmNlbCddID0gJ1BlcnUnOwokbGFuZ1snZWRpdCddID0gJ011b2trYWEnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ09sZXRrbyB2YXJtYT8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdOb2xsYWEgb2xldHVzIHBvaGpha3NpJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnVmlyaGUgcG9oamEnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ2FsZ3V5cyBNb2R1bGUgRXh0ZW5zaW9ucyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsaSBvbiB2YWxtaXMgayZhdW1sO3l0ZXR0JmF1bWw7diZhdW1sO2tzaS4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ04mYXVtbDtoZCZhdW1sOyZhdW1sO24gdGFhcyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnVmlyaGUhJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgaXMgYSBsaWJyYXJ5IG9mIHBocCBjbGFzc2VzIHVzZWQgdG8gYnVpbGQgYWR2YW5jZWQgZm9ybXMnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPlZlcnNpb24gMS4wLjAuIE1hcmNoIDIwMDcuICBJbml0aWFsIFJlbGVhc2UuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xLiBBcHJpbCAyMDA3LiAgRml4ZXMgdG8gQ3JlYXRlSW1hZ2VMaW5rPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4yLiBBcHJpbCAyMDA3LiAgQ3JlYXRlSW1hZ2VMaW5rIHdpbGwgbm93IHdvcmsgb24gdGhlIGZyb250ZW5kLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMy4gU2VwdGVtYmVyIDIwMDcuICBBZGRzIGFwcGx5IGJ1dHRvbnMgdG8gbmV3IHRlbXBsYXRlcy48L2xpPg0KPGxpPlZlcnNpb24gMS4xLiAgIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBkZWZhdWx0IGZyb250ZW5kIGVycm9yIGhhbmRsaW5nIHBsdWdpbi48L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbWVyZWx5IHByb3ZpZGVzIGNvbnZlbmllbmNlIGFwaSYjMDM5O3MgYW5kIHNtYXJ0eSB0YWdzIGZvciB1c2UgaW4gb3RoZXIgbW9kdWxlcy4gIEl0IGlzIG1lYW50IHNvbGVseSBhcyBhIGJhc2UgY2xhc3MgYW5kIHV0aWxpdHkgY2xhc3MgZm9yIG90aGVyIG1vZHVsZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+DQo8aDM+U21hcnR5IEFkZG9uczwvaDM+DQo8cD5UaGlzIG1vZHVsZSBhZGRzIGEgZmV3IHNtYXJ0eSBjb252ZW5pZW5jZXMgZm9yIHVzZSB3aXRoIG90aGVyIG1vZHVsZXMuIFRoZXkgYXJlIGxpc3RlZCBhbmQgZGVzY3JpYmVkIGhlcmU6PC9wPg0KPHVsPg0KPGxpPmNnZXJyb3IgLSA8ZW0+YmxvY2s8L2VtPiBwbHVnaW4NCjxwPmkuZTogPGNvZGU+e2NnZXJyb3J9VGhpcyBpcyBlcnJvciB0ZXh0ey9jZ2Vycm9yfTwvY29kZT48YnIvPg0KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4NCjwvcD4NCjxwPm9wdGlvbmFsIHBhcmFtZXRlcnM6ICYjMDM5O2Vycm9yY2xhc3MmIzAzOTsgPSBvdmVycmlkZSB0aGUgZGVmYXVsdCBjbGFzcyBuYW1lIGluIHRoZSB0ZW1wbGF0ZS4NCjwvcD4NCjxwPkRlc2NyaXB0aW9uOiBUaGlzIGJsb2NrIHBsdWdpbiB1c2VzIHRoZSBlcnJvciB0ZW1wbGF0ZSAoY29uZmlndXJhYmxlIGZyb20gdGhlIENHRXh0ZW5zaW9ucyBhZG1pbiBpbnRlcmZhY2UpIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS48L3A+DQo8L3VsPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IocyksIGNhbGd1eSBldCBhbGwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNywgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+PGNhbGd1eTEwMDBAaG90bWFpbC5jb20+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQonOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdFeHRlbnNpb25zIGRlcyBmaWNoaWVycyBpbWFnZSc7CiRsYW5nWydncm91cCddID0gJ0dyb3VwZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ0dhYmFyaXQnOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ1MmZWFjdXRlO2xlY3Rpb25uZXIgdW4nOwokbGFuZ1sncHJvbXB0X2VkaXR0ZW1wbGF0ZSddID0gJyZFYWN1dGU7ZGl0ZXIgbGUgZ2FiYXJpdCc7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdTdXBwcmltZXIgbGUgZ2FiYXJ0aSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVuYW1lJ10gPSAnTm9tIGR1IGdhYmFyaXQnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnVGV4dGUgZHUgZ2FiYXJpdCc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05vbSBkdSBnYWJhcml0JzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ05vdXZlYXUgZ2FiYXJpdCc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ1BhciBkJmVhY3V0ZTtmYXV0JzsKJGxhbmdbJ3llcyddID0gJ091aSc7CiRsYW5nWydubyddID0gJ05vbic7CiRsYW5nWydzdWJtaXQnXSA9ICdTb3VtZXR0cmUnOwokbGFuZ1snYXBwbHknXSA9ICdBcHBsaXF1ZXInOwokbGFuZ1snY2FuY2VsJ10gPSAnQW5udWxlcic7CiRsYW5nWydlZGl0J10gPSAnJkVhY3V0ZTtkaXRlcic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnJkVjaXJjO3Rlcy12b3VzIHMmdWNpcmM7cj8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdSJmVhY3V0ZTtpbml0aWFsaXNlciBhdXggdmFsZXVycyBwYXIgZCZlYWN1dGU7ZmF1dCc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ0VycmV1ciBkZSBnYWJhcml0JzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0lsIHkgYSBkJmVhY3V0ZTtqJmFncmF2ZTsgdW4gZ2FiYXJpdCBkdSBtJmVjaXJjO21lIG5vbSc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlzIE1vZHVsZSBFeHRlbnNpb25zJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQ2UgbW9kdWxlIGVzdCBwciZlY2lyYzt0ICZhZ3JhdmU7IGwmIzAzOTtlbXBsb2kuIENvZGV6ISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnQSBiaWVudCZvY2lyYzt0JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIGQmZWFjdXRlO3NpbnN0YWxsJmVhY3V0ZTsuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ0xhIHZlcnNpb24gJXMgYSAmZWFjdXRlO3QmZWFjdXRlOyBpbnN0YWxsJmVhY3V0ZTtlLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdMZXMgcHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlcyBkdSBtb2R1bGUgb250ICZlYWN1dGU7dCZlYWN1dGU7IG1pc2VzICZhZ3JhdmU7IGpvdXIuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjYyZlZ3JhdmU7cyByZWZ1cyZlYWN1dGU7LiBWZXVpbGxleiB2JmVhY3V0ZTtyaWZpZXIgdm9zIHBlcm1pc3Npb25zLic7CiRsYW5nWydlcnJvciddID0gJ0VycmV1ciEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdMZSBtb2R1bGUgYSAmZWFjdXRlO3QmZWFjdXRlOyBtaXMgJmFncmF2ZTsgam91ciAmYWdyYXZlOyBsYSB2ZXJzaW9uICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0NlIG1vZHVsZSBlc3QgdW5lIGxpYnJhcmllIGRlIGNsYXNzZXMgcGhwIHV0aWxpcyZlYWN1dGU7ZXMgcG91ciBjciZlYWN1dGU7ZXIgZGVzIGZvcm11bGFpcmVzIGNvbXBsZXhlcyc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAxLjAuMC4gTWFycyAyMDA3LiAgUHJlbWkmZWdyYXZlO3JlIHZlcnNpb24uPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xLiBBdnJpbCAyMDA3LiAgQ29ycmVjdGlvbiAmYWdyYXZlOyBsYSBmb25jdGlvbiBDcmVhdGVJbWFnZUxpbms8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIEF2cmlsIDIwMDcuICBMYSBmb25jdGlvbiBDcmVhdGVJbWFnZUxpbmsgZm9uY3Rpb25uZSBtYWludGVuYW50IGVuIGZyb250LWVuZC48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjMuIFNlcHRlbWJyZSAyMDA3LiAgQWpvdXQgZGUgYm91dG9ucyBBcHBsaXF1ZXIgYXV4IG5vdXZlYXV4IGdhYmFydGlzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYnJlIDIwMDcuICBBam91dCBkJiMwMzk7dW4gcGx1Z2luIHF1aSBnJmVncmF2ZTtyZSBsZXMgZXJyZXVycyBmcm9udC1lbmQuPC9saT4NCjxsaT5WZXJzaW9uIDEuMi4gICBOb3ZlbWJyZSAyMDA3LCAgQWpvdXRlIHBsdXMgZGUgZm9uY3Rpb25zIHByYXRpcXVlczwvbGk+DQo8bGk+VmVyc2lvbiAxLjMuICAgTm92ZW1icmUgMjAwNy4gIEFqb3V0ZSBlbmNvcmUgcGx1cyBkZSBmb25jdGlvbnMgcHJhdGlxdWVzczwvbGk+DQo8bGk+VmVyc2lvbiAxLjQuICAgRCZlYWN1dGU7Y2VtYnJlIDIwMDcuICBBam91dCBkJiMwMzk7dW5lIG0mZWFjdXRlO3Rob2RlIENyZWF0ZUltYWdlRHJvcGRvd248L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbWVyZWx5IHByb3ZpZGVzIGNvbnZlbmllbmNlIGFwaSYjMDM5O3MgYW5kIHNtYXJ0eSB0YWdzIGZvciB1c2UgaW4gb3RoZXIgbW9kdWxlcy4gIEl0IGlzIG1lYW50IHNvbGVseSBhcyBhIGJhc2UgY2xhc3MgYW5kIHV0aWxpdHkgY2xhc3MgZm9yIG90aGVyIG1vZHVsZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+DQo8aDM+U21hcnR5IEFkZG9uczwvaDM+DQo8cD5UaGlzIG1vZHVsZSBhZGRzIGEgZmV3IHNtYXJ0eSBjb252ZW5pZW5jZXMgZm9yIHVzZSB3aXRoIG90aGVyIG1vZHVsZXMuIFRoZXkgYXJlIGxpc3RlZCBhbmQgZGVzY3JpYmVkIGhlcmU6PC9wPg0KPHVsPg0KPGxpPmNnZXJyb3IgLSA8ZW0+YmxvY2s8L2VtPiBwbHVnaW4NCjxwPmkuZTogPGNvZGU+e2NnZXJyb3J9VGhpcyBpcyBlcnJvciB0ZXh0ey9jZ2Vycm9yfTwvY29kZT48YnIvPg0KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4NCjwvcD4NCjxwPm9wdGlvbmFsIHBhcmFtZXRlcnM6ICYjMDM5O2Vycm9yY2xhc3MmIzAzOTsgPSBvdmVycmlkZSB0aGUgZGVmYXVsdCBjbGFzcyBuYW1lIGluIHRoZSB0ZW1wbGF0ZS4NCjwvcD4NCjxwPkRlc2NyaXB0aW9uOiBUaGlzIGJsb2NrIHBsdWdpbiB1c2VzIHRoZSBlcnJvciB0ZW1wbGF0ZSAoY29uZmlndXJhYmxlIGZyb20gdGhlIENHRXh0ZW5zaW9ucyBhZG1pbiBpbnRlcmZhY2UpIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS48L3A+DQo8L3VsPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IocyksIGNhbGd1eSBldCBhbGwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNywgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+PGNhbGd1eTEwMDBAaG90bWFpbC5jb20+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQonOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMTk4MDc0OTIyLjE4Ni4zNC51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9Zm9ydW0uY21zbWFkZXNpbXBsZS5vcmd8dXRtY2N0PS9pbmRleC5waHAvdG9waWMsMTc3NjEuMC5odG1sfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjMxMTkxODM5MC4xMTY4NzczMDM2LjEyMDAxMzE1NDguMTIwMDM5NzU5OC4yMjQnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0NHRklMRVVQTE9BRF9OT0ZJTEUnXSA9ICdOZXNzdW4gZmlsZSBjYXJpY2F0byBjaGUgY29ycmlzcG9uZGEgYWxsZSBzcGVjaWZpY2hlJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9GSUxFU0laRSddID0gJ0xhIGRpbWVuc2lvbmUgZGVsIGZpbGUgY2FyaWNhdG8gc3VwZXJhIGlsIGxpbWl0ZSBtYXNzaW1vIGNvbnNlbnRpdG8nOwokbGFuZ1snQ0dGSUxFVVBMT0FEX0ZJTEVUWVBFJ10gPSAnSSBmaWxlIGRpIHF1ZXN0byB0aXBvIG5vbiBwb3Nzb25vIGVzc2VyZSBjYXJpY2F0aSc7CiRsYW5nWydDR0ZJTEVVUExPQURfRklMRUVYSVNUUyddID0gJ0VzaXN0ZSBnaSZhZ3JhdmU7IHVuIGZpbGUgY29uIGxvIHN0ZXNzbyBub21lJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9CQURERVNURElSJ10gPSAnTGEgY2FydGVsbGEgZGkgZGVzdGluYXppb25lIHNwZWNpZmljYXRhIHBlciBpbCBjYXJpY2FtZW50byBkZWkgZmlsZSBub24gZXNpc3RlJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9CQURQRVJNUyddID0gJ0kgcGVybWVzc2kgZGVsIGZpbGUgbm9uIHBlcm1ldHRvbm8gbGEgc2NyaXR0dXJhIGRlbCBmaWxlIGNhcmljYXRvIG5lbGxhIHBvc2l6aW9uZSBkaSBkZXN0aW5hemlvbmUnOwokbGFuZ1snQ0dGSUxFVVBMT0FEX01PVkVGQUlMRUQnXSA9ICdUZW50YXRpdm8gZGkgc3Bvc3RhcmUgaWwgZmlsZSBjYXJpY2F0byBuZWxsYSBzdWEgcG9zaXppb25lIGZpbmFsZSBmYWxsaXRvJzsKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdFc3RlbnNpb25pIGRlaSBmaWxlIGltbWFnaW5lJzsKJGxhbmdbJ2dyb3VwJ10gPSAnR3J1cHBvJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnTW9kZWxsbyc7CiRsYW5nWydzZWxlY3Rfb25lJ10gPSAnU2VsZXppb25hIFVubyc7CiRsYW5nWydwcmlvcml0eV9jb3VudHJpZXMnXSA9ICdOYXppb25pIFByaW9yaXRhcmllJzsKJGxhbmdbJ3Byb21wdF9lZGl0dGVtcGxhdGUnXSA9ICdNb2RpZmljYSBNb2RlbGxvJzsKJGxhbmdbJ3Byb21wdF9kZWxldGV0ZW1wbGF0ZSddID0gJ0NhbmNlbGxhIE1vZGVsbG8nOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ05vbWUgTW9kZWxsbyc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdUZXN0byBNb2RlbGxvJzsKJGxhbmdbJ3Byb21wdF9uYW1lJ10gPSAnTm9tZSBNb2RlbGxvJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ051b3ZvIE1vZGVsbG8nOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdQcmVkZWZpbml0byc7CiRsYW5nWyd5ZXMnXSA9ICdTJmlncmF2ZTsnOwokbGFuZ1snbm8nXSA9ICdObyc7CiRsYW5nWydzdWJtaXQnXSA9ICdJbnZpYSc7CiRsYW5nWydhcHBseSddID0gJ0FwcGxpY2EnOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsbGEnOwokbGFuZ1snZWRpdCddID0gJ01vZGlmaWNhJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdTaWV0ZSBzaWN1cmk/JzsKJGxhbmdbJ3Jlc2V0dG9mYWN0b3J5J10gPSAnUmVpbXBvc3RhIGFpIHZhbG9yaSBwcmVkZWZpbml0aSc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ0Vycm9yZSBNb2RlbGxvJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ1VuIE1vZGVsbG8gY29uIHF1ZWwgbm9tZSBlc2lzdGUgZ2kmYWdyYXZlOyc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlzIE1vZHVsZSBFeHRlbnNpb25zJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnUXVlc3RvIG1vZHVsbyAmZWdyYXZlOyBwcm9udG8gYWxsJiMwMzk7dXNvLiBQYXJ0ZW56YSEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1ZlZGkgZGkgbnVvdm8gZnJhIHF1YWxjaGUgZ2lvcm5vJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxvIGRpc2luc3RhbGxhdG8uJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ1Zlc3Jpb25lIGRlbCBtb2R1bG8gJXMgaW5zdGFsbGF0by4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnUHJlZmVyZW56ZSBtb2R1bG8gYWdnaW9ybmF0ZS4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzbyBuZWdhdG8uIFNpIHByZWdhIGRpIGNvbnRvbGxhcmUgaSB2b3N0cmkgcGVybWVzc2kuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3JlISc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsbyBhZ2dpb3JuYXRvIGFsbGEgdmVyc2lvbmUgJXMuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnUXVlc3RvIG1vZHVsbyAmZWdyYXZlOyB1bmEgbGlicmVyaWEgZGkgY2xhc3NpIHBocCB1c2F0ZSBwZXIgY29zdHJ1aXJlIGZvcm0gYXZhbnphdGknOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPlZlcnNpb24gMS4wLjAuIE1hcmNoIDIwMDcuICBJbml0aWFsIFJlbGVhc2UuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xLiBBcHJpbCAyMDA3LiAgRml4ZXMgdG8gQ3JlYXRlSW1hZ2VMaW5rPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4yLiBBcHJpbCAyMDA3LiAgQ3JlYXRlSW1hZ2VMaW5rIHdpbGwgbm93IHdvcmsgb24gdGhlIGZyb250ZW5kLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMy4gU2VwdGVtYmVyIDIwMDcuICBBZGRzIGFwcGx5IGJ1dHRvbnMgdG8gbmV3IHRlbXBsYXRlcy48L2xpPg0KPGxpPlZlcnNpb24gMS4xLiAgIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBkZWZhdWx0IGZyb250ZW5kIGVycm9yIGhhbmRsaW5nIHBsdWdpbi48L2xpPg0KPGxpPlZlcnNpb24gMS4yLiAgIE5vdmVtYmVyICAyMDA3LCAgQWRkcyBtb3JlIGNvbnZlbmllbmNlIGZ1bmN0aW9uczwvbGk+DQo8bGk+VmVyc2lvbiAxLjMuICAgTm92ZW1iZXIgIDIwMDcuICBBZGRzIGV2ZW4gbW9yZSBjb252ZW5pZW5jZSBmdW5jdGlvbnM8L2xpPg0KPGxpPlZlcnNpb24gMS40LiAgIERlY2VtYmVyICAyMDA3LiAgQWRkcyBDcmVhdGVJbWFnZURyb3Bkb3duIG1ldGhvZDwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBtZXJlbHkgcHJvdmlkZXMgY29udmVuaWVuY2UgYXBpJiMwMzk7cyBhbmQgc21hcnR5IHRhZ3MgZm9yIHVzZSBpbiBvdGhlciBtb2R1bGVzLiAgSXQgaXMgbWVhbnQgc29sZWx5IGFzIGEgYmFzZSBjbGFzcyBhbmQgdXRpbGl0eSBjbGFzcyBmb3Igb3RoZXIgbW9kdWxlcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPldlbGwsIHlvdSBzdGFydCB5b3VyIG93biBtb2R1bGUgKEkgc3VnZ2VzdCBzdGFydGluZyB3aXRoIHRoZSBTa2VsZXRvbiBtb2R1bGUpLCBhbmQgdGhlbiB3aGVuIHlvdSBuZWVkIHRvIHVzZSBhbiBhZHZhbmNlZCBmb3JtIG9iamVjdCBmcm9tIHRoaXMgbGlicmFyeSwgc2ltcGx5IG1ha2UgeW91ciBtb2R1bGUgZGVwZW5kYW50IHVwb24gRm9ybU9iamVjdHMsIGFuZCB0aGVuIGluc3RhbnRpYXRlIGFuIG9iamVjdCBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZS4gIFNlZSB0aGUgY29kZSBpbnNpZGUgdGhlIEZvcm1PYmplY3RzIGRpcmVjdG9yeSBmb3IgdXNhZ2UgaW5zdHJ1Y3Rpb25zLjwvcD4NCjxoMz5TbWFydHkgQWRkb25zPC9oMz4NCjxwPlRoaXMgbW9kdWxlIGFkZHMgYSBmZXcgc21hcnR5IGNvbnZlbmllbmNlcyBmb3IgdXNlIHdpdGggb3RoZXIgbW9kdWxlcy4gVGhleSBhcmUgbGlzdGVkIGFuZCBkZXNjcmliZWQgaGVyZTo8L3A+DQo8dWw+DQo8bGk+Y2dlcnJvciAtIDxlbT5ibG9jazwvZW0+IHBsdWdpbg0KPHA+aS5lOiA8Y29kZT57Y2dlcnJvcn1UaGlzIGlzIGVycm9yIHRleHR7L2NnZXJyb3J9PC9jb2RlPjxici8+DQogICAgb3I6IDxjb2RlPntjZ2Vycm9yfXskZXJyb3J0ZXh0dmFyfXsvY2dlcnJvcn08L2JyPg0KPC9wPg0KPHA+b3B0aW9uYWwgcGFyYW1ldGVyczogJiMwMzk7ZXJyb3JjbGFzcyYjMDM5OyA9IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNsYXNzIG5hbWUgaW4gdGhlIHRlbXBsYXRlLg0KPC9wPg0KPHA+RGVzY3JpcHRpb246IFRoaXMgYmxvY2sgcGx1Z2luIHVzZXMgdGhlIGVycm9yIHRlbXBsYXRlIChjb25maWd1cmFibGUgZnJvbSB0aGUgQ0dFeHRlbnNpb25zIGFkbWluIGludGVyZmFjZSkgdG8gZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlLjwvcD4NCjwvdWw+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0mcXVvdDtodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PmRldi5jbXNtYWRlc2ltcGxlLm9yZzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvcihzKSwgY2FsZ3V5IGV0IGFsbCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvcihzKSBkaXJlY3RseS48L2xpPiAgDQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZhbXA7Y29weTsgMjAwNywgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbTwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjEwNjE4NDg4ODIuMTIwNDkwMzY2MC4xMjA0OTAzNjYwLjEyMDQ5MDM2NjAuMSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjA0OTAzNjYwLjEuMS51dG1jY249KGRpcmVjdCl8dXRtY3NyPShkaXJlY3QpfHV0bWNtZD0obm9uZSknOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0NHRklMRVVQTE9BRF9OT0ZJTEUnXSA9ICdJbmdlbiBhdiBmaWxlbmUgc29tIGVyIGxhc3RldCBvcHAgcGFzc2VyIHRpbCBrcml0ZXJpZW5lJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9GSUxFU0laRSddID0gJ1N0Jm9zbGFzaDtycmVsc2VuIHAmYXJpbmc7IGRlbiBvcHBsYXN0ZWRlIGZpbGVuIG92ZXJzdGlnZXIgZGV0IHNvbSBlciB0aWxsYXR0JzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9GSUxFVFlQRSddID0gJ0ZpbGVyIGF2IGRlbm5lIHR5cGUga2FuIGlra2UgbGFzdGVzIG9wcCc7CiRsYW5nWydDR0ZJTEVVUExPQURfRklMRUVYSVNUUyddID0gJ0VuIGZpbCBtZWQgc2FtbWUgbmF2biBla3Npc3RlcmVyIGFsbGVyZWRlJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9CQURERVNURElSJ10gPSAnRGVzdGluYXNqb25za2F0YWxvZ2VuIHNvbSBlciBzcGVzaWZpc2VydCBmb3Igb3BwbGFzdGVkZSBmaWxlciBla3Npc3RlcmVyIGlra2UnOwokbGFuZ1snQ0dGSUxFVVBMT0FEX0JBRFBFUk1TJ10gPSAnRmlsdGlsbGF0ZWxzZW5lIHRpbGxhdGVyIGlra2UgJmFyaW5nOyBza3JpdmUgZGVuIG9wcGxhc3RlZGUgZmlsYSB0aWwgZGVucyBkZXN0aW5hc2pvbic7CiRsYW5nWydDR0ZJTEVVUExPQURfTU9WRUZBSUxFRCddID0gJ0ZvcnMmb3NsYXNoO2tldCBwJmFyaW5nOyAmYXJpbmc7IGZseXR0ZSBkZW4gb3BwbGFzdGVkZSBmaWxhIHRpbCBkZW5zIGVuZGVsaWdlIGRlc3RpbmFzam9uIGZlaWxldCc7CiRsYW5nWyd0aHVtYm5haWxfc2l6ZSddID0gJ1N0Jm9zbGFzaDtycmVsc2UgcCZhcmluZzsgbWluaWF0eXJiaWxkZXIodGh1bWJuYWlscyknOwokbGFuZ1snaW1hZ2VfZXh0ZW5zaW9ucyddID0gJ0JpbGRlIGZpbGVuZGVsc2VyJzsKJGxhbmdbJ2dyb3VwJ10gPSAnR3J1cHBlJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnTWFsJzsKJGxhbmdbJ3NlbGVjdF9vbmUnXSA9ICdWZWxnIGVuJzsKJGxhbmdbJ3ByaW9yaXR5X2NvdW50cmllcyddID0gJ1ByaW9yaXRlcnRlIGxhbmQnOwokbGFuZ1sncHJvbXB0X2VkaXR0ZW1wbGF0ZSddID0gJ1JlZGlnZXIgbWFsJzsKJGxhbmdbJ3Byb21wdF9kZWxldGV0ZW1wbGF0ZSddID0gJ1NsZXR0IG1hbCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVuYW1lJ10gPSAnTWFsIG5hdm4nOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnTWFsIHRla3N0JzsKJGxhbmdbJ3Byb21wdF9uYW1lJ10gPSAnTWFsIG5hdm4nOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTnkgbWFsJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnU3RhbmRhcmQnOwokbGFuZ1sneWVzJ10gPSAnSmEnOwokbGFuZ1snbm8nXSA9ICdOZWknOwokbGFuZ1snc3VibWl0J10gPSAnU2VuZCc7CiRsYW5nWydhcHBseSddID0gJ1V0ZiZvc2xhc2g7cic7CiRsYW5nWydjYW5jZWwnXSA9ICdBdmJyeXQnOwokbGFuZ1snZWRpdCddID0gJ1JlZGlnZXInOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0VyIGR1IHNpa2tlcj8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdUaWxiYWtlc3RpbGwgdGlsIGZhYnJpa2tzdGFuZGFyZCc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ0ZlaWxtYWwnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRW4gbWFsIG1lZCBkZXQgbmF2bmV0IGVrc2lzdGVyZXIgYWxsZXJlZGUnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ2FsZ3V5cyBNb2R1bGUgRXh0ZW5zaW9ucyAnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdEZW5uZSBtb2R1bGVuIGVyIGZlcmRpZyB0aWwgYnJ1ay4gS29kIGkgdmVpISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnU2VyIGRlZyBpZ2plbiBlbiBhbm5lbiBkYWcnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCBhdmluc3RhbGxlcnQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWwgdmVyc2pvbiAlcyBpbnN0YWxsZXJ0JzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ01vZHVsIGlubnN0aWxsaW5nZXIgb3BwZGF0ZXJ0Lic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBZGdhbmcgbmVrdGV0LiBWZW5ubGlnc3Qgc2pla2sgZGluZSByZXR0aWdoZXRlci4nOwokbGFuZ1snZXJyb3InXSA9ICdGZWlsISc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsIG9wcGdyYWRlcnQgdGlsIHZlcnNqb24gJXMuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRGVubmUgbW9kdWxlbiBlciBldCBiaWJsaW90ZWsgYXYgcGhwIGtsYXNzZXIgYnJ1a3QgdGlsICZhcmluZzsgYnlnZ2UgYXZhbnNlcnRlIHNramVtYWVyJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuMC4wLiBNYXJjaCAyMDA3LiAgSW5pdGlhbCBSZWxlYXNlLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMS4gQXByaWwgMjAwNy4gIEZpeGVzIHRvIENyZWF0ZUltYWdlTGluazwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMi4gQXByaWwgMjAwNy4gIENyZWF0ZUltYWdlTGluayB3aWxsIG5vdyB3b3JrIG9uIHRoZSBmcm9udGVuZC48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjMuIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBhcHBseSBidXR0b25zIHRvIG5ldyB0ZW1wbGF0ZXMuPC9saT4NCjxsaT5WZXJzaW9uIDEuMS4gICBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgZGVmYXVsdCBmcm9udGVuZCBlcnJvciBoYW5kbGluZyBwbHVnaW4uPC9saT4NCjxsaT5WZXJzaW9uIDEuMi4gICBOb3ZlbWJlciAgMjAwNywgIEFkZHMgbW9yZSBjb252ZW5pZW5jZSBmdW5jdGlvbnM8L2xpPg0KPGxpPlZlcnNpb24gMS4zLiAgIE5vdmVtYmVyICAyMDA3LiAgQWRkcyBldmVuIG1vcmUgY29udmVuaWVuY2UgZnVuY3Rpb25zPC9saT4NCjxsaT5WZXJzaW9uIDEuNC4gICBEZWNlbWJlciAgMjAwNy4gIEFkZHMgQ3JlYXRlSW1hZ2VEcm9wZG93biBtZXRob2QsIG1ldGhvZHMgZm9yIHN0YXRlIGFuZCBjb3VudHJ5IGRyb3Bkb3ducyBhbmQgYSBidW5jaCBvZiBvdGhlciB0aGluZ3MuPC9saT4NCjxsaT5WZXJzaW9uIDEuNS4gICBKYW51YXJ5ICAgMjAwOC4gIEZpeGVzIHRvIGh0bWxfZW50aXRpZXNfZGVjb2RlIGluIHV0Zjg8L2xpPg0KPGxpPlZlcnNpb24gMS42LiAgIEZlYnJ1YXJ5ICAyMDA4LCAgQWRkcyB0aGUgQ0dGaWxlVXBsb2FkSGFuZGxlciBjbGFzczwvbGk+DQo8bGk+VmVyc2lvbiAxLjYuMS4gICBGZWJydWFyeSAgMjAwOCwgIE1pbm9yIGZpeCB0byByZWN1cnNpdmVfY2hhbmdlX2RpcmVjdG9yeTwvbGk+DQo8bGk+VmVyc2lvbiAxLjguIEZlYnJ1YXJ5IDIwMDgNCiAgPHVsPg0KICAgIDxsaT5BZGQgYSBidW5jaCBtb3JlIHV0aWxpdHkgYW5kIGNvbnZlbmllbmNlIG1ldGhvZHM8L2xpPg0KICAgIDxsaT5Nb3ZlIGNvdW50cmllcyBhbmQgc3RhdGVzIGludG8gYSB0YWJsZSBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgd2l0aCBqb2lucyBldGMuPC9saT4NCiAgICA8bGk+QWRkIHRoZSBhYmlsaXR5IHRvIHByaW9yaXRpemUgY2VydGFpbiBjb3VudHJpZXMgYnkgbmFtZTwvbGk+DQogICAgPGxpPkFkZHMgdGhlIEdldFNpbmdsZVRlbXBsYXRlRm9ybSBtZXRob2QgdG8gbWFrZSBpdCBjb252ZW5pZW50IHRvIGVkaXQgYW5kIHJlc3RvcmUgdG8gZGVmYXVsdCBhIHNpbmdsZSB0ZW1wbGF0ZS48L2xpPg0KICAgIDxsaT5GaXhlcyBpc3N1ZXMgd2l0aCB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIGVkaXRpbmcgdGVtcGxhdGVzLjwvbGk+DQogICAgPGxpPlVwZGF0ZSB0aGUgbGljZW5zZS48L2xpPg0KICAgIDxsaT5VcGRhdGVzIHRvIHRoZSBmaWxlIHVwbG9hZCBjYXBhYmlsaXRpZXM8L2xpPg0KICAgIDxsaT5UaGUgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgZXhwb3J0ZWQgdG8gc21hcnR5PC9saT4NCiAgICA8bGk+QWRkIHRoZSBnZXRfYWN0aW9uX2lkIGFuZCBzZXRfYWN0aW9uX2lkIHZpcnR1YWwgbWV0aG9kcyB0aGF0IHNob3VsZCBiZSBvdmVycmlkZGVuIGJ5IGFueSBtb2R1bGUgZGVyaXZlZCBmcm9tIENHRXh0ZW5zaW9ucy48L2xpPg0KICA8L3VsPg0KICA8L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbWVyZWx5IHByb3ZpZGVzIGNvbnZlbmllbmNlIGFwaSYjMDM5O3MgYW5kIHNtYXJ0eSB0YWdzIGZvciB1c2UgaW4gb3RoZXIgbW9kdWxlcy4gIEl0IGlzIG1lYW50IHNvbGVseSBhcyBhIGJhc2UgY2xhc3MgYW5kIHV0aWxpdHkgY2xhc3MgZm9yIG90aGVyIG1vZHVsZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+DQo8aDM+U21hcnR5IEFkZG9uczwvaDM+DQo8cD5UaGlzIG1vZHVsZSBhZGRzIGEgZmV3IHNtYXJ0eSBjb252ZW5pZW5jZXMgZm9yIHVzZSB3aXRoIG90aGVyIG1vZHVsZXMuIFRoZXkgYXJlIGxpc3RlZCBhbmQgZGVzY3JpYmVkIGhlcmU6PC9wPg0KPHVsPg0KPGxpPmNnZXJyb3IgLSA8ZW0+YmxvY2s8L2VtPiBwbHVnaW4NCjxwPmkuZTogPGNvZGU+e2NnZXJyb3J9VGhpcyBpcyBlcnJvciB0ZXh0ey9jZ2Vycm9yfTwvY29kZT48YnIvPg0KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4NCjwvcD4NCjxwPm9wdGlvbmFsIHBhcmFtZXRlcnM6ICYjMDM5O2Vycm9yY2xhc3MmIzAzOTsgPSBvdmVycmlkZSB0aGUgZGVmYXVsdCBjbGFzcyBuYW1lIGluIHRoZSB0ZW1wbGF0ZS4NCjwvcD4NCjxwPkRlc2NyaXB0aW9uOiBUaGlzIGJsb2NrIHBsdWdpbiB1c2VzIHRoZSBlcnJvciB0ZW1wbGF0ZSAoY29uZmlndXJhYmxlIGZyb20gdGhlIENHRXh0ZW5zaW9ucyBhZG1pbiBpbnRlcmZhY2UpIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS48L3A+DQo8L3VsPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IocyksIGNhbGd1eSBldCBhbGwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmYW1wO2NvcHk7IDIwMDgsIFJvYmVydCBDYW1wYmVsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+JmFtcDtsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmFtcDtndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4NCjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gDQpzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLjwvcD4NCjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQpPciByZWFkIGl0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7Pm9ubGluZTwvYT48L3A+JzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNTI1NDA2ODEyLjExODgwNzc0MTcuMTIwNTg4NTExNi4xMjA1OTM5NzY1LjQwMCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyMDU2ODYyMzMuMzk0LjI3LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1jbXMxLmhlbG1pbmlrb24ubm98dXRtY2N0PS9hZG1pbi9saXN0bW9kdWxlcy5waHB8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdBZmJlZWxkaW5nc2Jlc3RhbmRleHRlbnRpZXMnOwokbGFuZ1snZ3JvdXAnXSA9ICdHcm9lcCc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1NqYWJsb29uJzsKJGxhbmdbJ3NlbGVjdF9vbmUnXSA9ICdTZWxlY3RlZXIgJmVhY3V0ZTsmZWFjdXRlO24nOwokbGFuZ1sncHJvbXB0X2VkaXR0ZW1wbGF0ZSddID0gJ0Jld2VyayBzamFibG9vbic7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdWZXJ3aWpkZXIgc2phYmxvb24nOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1NqYWJsb29ubmFhbSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdTamFibG9vbnRla3N0JzsKJGxhbmdbJ3Byb21wdF9uYW1lJ10gPSAnU2phYmxvb25uYWFtJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ05pZXV3IHNqYWJsb29uJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnU3RhbmRhYXJkJzsKJGxhbmdbJ3llcyddID0gJ0phJzsKJGxhbmdbJ25vJ10gPSAnTmVlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1ZlcnN0dXVyJzsKJGxhbmdbJ2FwcGx5J10gPSAnVG9lcGFzc2VuJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZWVyJzsKJGxhbmdbJ2VkaXQnXSA9ICdCZXdlcmsnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ1dlZXQgdSBoZXQgemVrZXI/JzsKJGxhbmdbJ3Jlc2V0dG9mYWN0b3J5J10gPSAnSGVyc3RlbCBuYWFyIGZhYnJpZWtzc3RhbmRhYXJkJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnRm91dGVuc2phYmxvb24nOwokbGFuZ1snZXJyb3JfdGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRWVuIHNqYWJsb29uIG1ldCBkaWUgbmFhbSBiZXN0YWF0IGFsJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NNIEV4dGVuc2lvbnMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdEZXplIG1vZHVsZSBpcyBnZXJlZWQgdm9vciBnZWJydWlrLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVG90IHppZW5zJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIGdlZGVpbnN0YWxlZXJkLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGV2ZXJzaWUgJXMgZ2UmaXVtbDtuc3RhbGxlZXJkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgdm9vcmtldXJlbiBiaWpnZXdlcmt0Lic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdUb2VnYW5nIGdld2VpZ2VyZC4gQ29udHJvbGVlciBkZSByZWNodGVuLic7CiRsYW5nWydlcnJvciddID0gJ0ZvdXQhJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIGJpamdld2Vya3QgbmFhciB2ZXJzaWUgJXMuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRGUgbW9kdWxlIGlzIGVlbiBiaWJsaW90aGVlayBtZXQgcGhwLWNsYXNzZXMgdm9vciBoZXQgYm91d2VuIHZhbiB1aXRnZWJyZWlkZSBmb3JtdWxpZXJlbic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIEFwcmlsIDIwMDcuICBDcmVhdGVJbWFnZUxpbmsgd2lsbCBub3cgd29yayBvbiB0aGUgZnJvbnRlbmQuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zLiBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgYXBwbHkgYnV0dG9ucyB0byBuZXcgdGVtcGxhdGVzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYmVyIDIwMDcuICBBZGRzIGRlZmF1bHQgZnJvbnRlbmQgZXJyb3IgaGFuZGxpbmcgcGx1Z2luLjwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldhdCBkb2V0IGhldD88L2gzPg0KPHA+RGV6ZSBtb2R1bGUgbGV2ZXJ0IHNsZWNodHMgaGFuZGlnZSBBUEkmIzAzOTtzIGVuIHNtYXJ0eSB0YWdzIG9tIHRlIGdlYnJ1aWtlbiBpbiBhbmRlcmUgbW9kdWxlcy4gIEhldCBpcyB1aXRzbHVpdGVuZCBiZWRvZWxkIGFscyBiYXNpcy1jbGFzcyBlbiB1dGlsaXR5LWNsYXNzIHZvb3IgYW5kZXJlIG1vZHVsZXMuPC9wPg0KPGgzPkhvZSBnZWJydWlrdCB1IGhldD88L2gzPg0KPHA+VSBiZWdpbnQgbWV0IHV3IGVpZ2VuIG1vZHVsZSAoaWsgc3RlbCB2b29yIG9tIHRlIGJlZ2lubmVuIG1ldCBkZSBTa2VsZXRvbi1tb2R1bGUpIGVuIGFscyB1IGVlbiB1aXRnZWJyZWlkIGZvcm11bGllcm9iamVjdCB1aXQgZGV6ZSBiaWJsaW90aGVlayBub2RpZyBoZWVmdCwgZGFuIG1hYWt0IHUgdXcgbW9kdWxlIGFmaGFua2VsaWprIHZhbiBGb3JtT2JqZWN0cywgdmVydm9sZ2VucyBpbnN0YW50aWVlcnQgdSBlZW4gb2JqZWN0IHZhbiBoZXQganVpc3RlIHR5cGUuIFppZSBkZSBjb2RlIGluIGRlIEZvcm1PYmplY3RzLW1hcCB2b29yIGdlYnJ1aWtzaW5zdHJ1Y3RpZXMuPC9wPg0KPGgzPlNtYXJ0eSBBZGRvbnM8L2gzPg0KPHA+RGV6ZSBtb2R1bGUgdm9lZ3QgZW5rZWxlIHNtYXJ0eSBoYW5kaWdoZWRlbiB0b2Ugdm9vciBoZXQgZ2VicnVpayBtZXQgYW5kZXJlIG1vZHVsZXMuIFplIHppam4gaGllcm9uZGVyIG9wZ2Vzb21kIGVuIGJlc2NocmV2ZW46PC9wPg0KPHVsPg0KPGxpPmNnZXJyb3IgLSA8ZW0+YmxvY2s8L2VtPiBwbHVnaW4NCjxwPmR1czogPGNvZGU+e2NnZXJyb3J9RGl0IGlzIGVlbiBmb3V0bWVsZGluZ3svY2dlcnJvcn08L2NvZGU+PGJyLz4NCiAgICBvZjogPGNvZGU+e2NnZXJyb3J9eyRlcnJvcnRleHR2YXJ9ey9jZ2Vycm9yfTwvYnI+DQo8L3A+DQo8cD5vcHRpb25lbGUgcGFyYW1ldGVyczogJiMwMzk7ZXJyb3JjbGFzcyYjMDM5OyA9IG92ZXJzY2hyaWpmIGRlIHN0YW5kYWFyZCBjbGFzcy1uYWFtIGluIGhldCBzamFibG9vbi4NCjwvcD4NCjxwPkJlc2NocmlqdmluZzogRGV6ZSBibG9jayBwbHVnaW4gZ2VicnVpa3QgZGUgZm91dGVuc2phYmxvb24gKGNvbmZpZ3VyZWVyYmFhciB2aWEgaGV0IENHRXh0ZW5zaW9ucy1iZWhlZXJwYW5lZWwpIG9tIGVlbiBmb3V0bWVsZGluZyB0ZSB0b25lbi48L3A+DQo8L3VsPg0KPGgzPk9uZGVyc3RldW5pbmc8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IocyksIGNhbGd1eSBldCBhbGwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNywgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+PGNhbGd1eTEwMDBAaG90bWFpbC5jb20+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My40Mzc0MjMxMjQuMTE5ODI1MDU5My4xMTk5NTM1NTM1LjExOTk1Mzc0NjEuOSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExOTkzNzgwMTQuNy41LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocC90b3BpYywxODI2My4wLmh0bWx8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pt_PT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0NHRklMRVVQTE9BRF9OT0ZJTEUnXSA9ICdOZW5odW0gYXJxdWl2byBmb2kgY2FycmVnYWRvIG4mYXRpbGRlO28gY29tYmluYW0gY29tIGVzdGFzIGVzcGVjaWZpY2EmY2NlZGlsOyZvdGlsZGU7ZXMnOwokbGFuZ1snQ0dGSUxFVVBMT0FEX0ZJTEVTSVpFJ10gPSAnTyB0YW1hbmhvIGRvIGFycXVpdm8gZXhjZWRldSBvIGxpbWl0ZSBtJmFhY3V0ZTt4aW1vIHBlcm1pdGlkbyc7CiRsYW5nWydDR0ZJTEVVUExPQURfRklMRVRZUEUnXSA9ICdPcyBhcnF1aXZvcyBkZXN0ZSB0aXBvIG4mYXRpbGRlO28gcG9kZSBzZXIgY2FycmVnYWRvcyc7CiRsYW5nWydDR0ZJTEVVUExPQURfRklMRUVYSVNUUyddID0gJ1VtIGFycXVpdm8gY29tIG8gbWVzbW8gbm9tZSBqJmFhY3V0ZTsgZXhpc3RlJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9CQURERVNURElSJ10gPSAnTyBkZXN0aW5vIGRvcyBhcnF1aXZvcyBjYXJyZWdhZG9zIHBhcmEgbyBkaXJldCZvYWN1dGU7cmlvIGVzcGVjaWZpY2FkbyBuJmF0aWxkZTtvIGV4aXN0ZSc7CiRsYW5nWydDR0ZJTEVVUExPQURfQkFEUEVSTVMnXSA9ICdBcnF1aXZvIHBlcm1pc3Mmb3RpbGRlO2VzIG4mYXRpbGRlO28gcGVybWl0ZW0gZ3JhdmFyIG8gYXJxdWl2byBubyBzZXUgZGVzdGlubyc7CiRsYW5nWydDR0ZJTEVVUExPQURfTU9WRUZBSUxFRCddID0gJ1RlbnRhciBtb3ZlciBvIGFycXVpdm8gZW52aWFkbyBwYXJhIG8gc2V1IGRlc3Rpbm8gZmluYWwgZmFsaG91JzsKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdFeHRlbiZjY2VkaWw7Jm90aWxkZTtlcyBkZSBpbWFnZW5zJzsKJGxhbmdbJ2dyb3VwJ10gPSAnR3J1cG8nOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7CiRsYW5nWydzZWxlY3Rfb25lJ10gPSAnU2VsZWNjaW9uYXIgVW0nOwokbGFuZ1sncHJpb3JpdHlfY291bnRyaWVzJ10gPSAnUGEmaWFjdXRlO3NlcyBwcmlvcml0JmFhY3V0ZTtyaW9zJzsKJGxhbmdbJ3Byb21wdF9lZGl0dGVtcGxhdGUnXSA9ICdFZGl0YXIgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJ10gPSAnRWxpbWluYXIgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1RlbXBsYXRlIE5vbWUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUgVGV4dG8nOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdUZW1wbGF0ZSBOb21lJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ05vdm8gVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdQYWQmYXRpbGRlO28nOwokbGFuZ1sneWVzJ10gPSAnU2ltJzsKJGxhbmdbJ25vJ10gPSAnTiZhdGlsZGU7byc7CiRsYW5nWydzdWJtaXQnXSA9ICdQcm9jZXNzYXInOwokbGFuZ1snYXBwbHknXSA9ICdBcGxpY2FyJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbGFyJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0YXInOwokbGFuZ1snYXJleW91c3VyZSddID0gJ1RlbSBhIENlcnRlemE/JzsKJGxhbmdbJ3Jlc2V0dG9mYWN0b3J5J10gPSAnUmVkZWZpbmlyIHBhZHImYXRpbGRlO28nOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdFcnJvIG5vIFRlbXBsYXRlJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ1VtIFRlbXBsYXRlIGNvbSAgZXNzZSBub21lIGomYWFjdXRlOyBleGlzdGUnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ2FsZ3V5cyBNb2R1bGUgRXh0ZW5zaW9ucyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0VzdGUgbSZvYWN1dGU7ZHVsbyBlc3QmYWFjdXRlOyBwcm9udG8gcGFyYSBvIHVzby4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1Zlam8tbyBub3ZhbWVudGUgZW0gYWxndW0gZGlhJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIERlc2luc3RhbGFkby4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnVmVycyZhdGlsZGU7byBkbyBNJm9hY3V0ZTtkdWxvICVzIGluc3RhbGFkby4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnUHJlZmVyJmVjaXJjO25jaWFzIGRvIE0mb2FjdXRlO2R1bG8gIEFjdHVhbGl6YWRhcy4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNlc3NvIE5lZ2Fkby4gUmV2ZWphIGFzIHN1YXMgUGVybWlzcyZvdGlsZGU7ZXMuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJybyEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNJm9hY3V0ZTtkdWxvIEFjdHVhbGl6YWRvIHBhcmEgYSBWZXJzJmF0aWxkZTtvICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0VzdGUgbSZvYWN1dGU7ZHVsbyAmZWFjdXRlOyB1bWEgYmlibGlvdGVjYSBkZSBjbGFzc2VzIGVtIHBocCwgdXRpbGl6YWRvIHBhcmEgY29uc3RydWlyIGZvcm1zIGF2YW4mY2NlZGlsO2Fkb3MnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPlZlcnNpb24gMS4wLjAuIE1hcmNoIDIwMDcuICBJbml0aWFsIFJlbGVhc2UuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xLiBBcHJpbCAyMDA3LiAgRml4ZXMgdG8gQ3JlYXRlSW1hZ2VMaW5rPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4yLiBBcHJpbCAyMDA3LiAgQ3JlYXRlSW1hZ2VMaW5rIHdpbGwgbm93IHdvcmsgb24gdGhlIGZyb250ZW5kLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMy4gU2VwdGVtYmVyIDIwMDcuICBBZGRzIGFwcGx5IGJ1dHRvbnMgdG8gbmV3IHRlbXBsYXRlcy48L2xpPg0KPGxpPlZlcnNpb24gMS4xLiAgIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBkZWZhdWx0IGZyb250ZW5kIGVycm9yIGhhbmRsaW5nIHBsdWdpbi48L2xpPg0KPGxpPlZlcnNpb24gMS4yLiAgIE5vdmVtYmVyICAyMDA3LCAgQWRkcyBtb3JlIGNvbnZlbmllbmNlIGZ1bmN0aW9uczwvbGk+DQo8bGk+VmVyc2lvbiAxLjMuICAgTm92ZW1iZXIgIDIwMDcuICBBZGRzIGV2ZW4gbW9yZSBjb252ZW5pZW5jZSBmdW5jdGlvbnM8L2xpPg0KPGxpPlZlcnNpb24gMS40LiAgIERlY2VtYmVyICAyMDA3LiAgQWRkcyBDcmVhdGVJbWFnZURyb3Bkb3duIG1ldGhvZCwgbWV0aG9kcyBmb3Igc3RhdGUgYW5kIGNvdW50cnkgZHJvcGRvd25zIGFuZCBhIGJ1bmNoIG9mIG90aGVyIHRoaW5ncy48L2xpPg0KPGxpPlZlcnNpb24gMS41LiAgIEphbnVhcnkgICAyMDA4LiAgRml4ZXMgdG8gaHRtbF9lbnRpdGllc19kZWNvZGUgaW4gdXRmODwvbGk+DQo8bGk+VmVyc2lvbiAxLjYuICAgRmVicnVhcnkgIDIwMDgsICBBZGRzIHRoZSBDR0ZpbGVVcGxvYWRIYW5kbGVyIGNsYXNzPC9saT4NCjxsaT5WZXJzaW9uIDEuNi4xLiAgIEZlYnJ1YXJ5ICAyMDA4LCAgTWlub3IgZml4IHRvIHJlY3Vyc2l2ZV9jaGFuZ2VfZGlyZWN0b3J5PC9saT4NCjxsaT5WZXJzaW9uIDEuOC4gRmVicnVhcnkgMjAwOA0KICA8dWw+DQogICAgPGxpPkFkZCBhbm90aGVyIGNvbnZlbmllbmNlIGZ1bmN0aW9uIG9yIHR3bzwvbGk+DQogICAgPGxpPk1vdmUgY291bnRyaWVzIGFuZCBzdGF0ZXMgaW50byBhIHRhYmxlIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCB3aXRoIGpvaW5zIGV0Yy48L2xpPg0KICAgIDxsaT5BZGQgdGhlIGFiaWxpdHkgdG8gcHJpb3JpdGl6ZSBjZXJ0YWluIGNvdW50cmllcyBieSBuYW1lPC9saT4NCiAgPC91bD4NCiAgPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPlRoaXMgbW9kdWxlIG1lcmVseSBwcm92aWRlcyBjb252ZW5pZW5jZSBhcGkmIzAzOTtzIGFuZCBzbWFydHkgdGFncyBmb3IgdXNlIGluIG90aGVyIG1vZHVsZXMuICBJdCBpcyBtZWFudCBzb2xlbHkgYXMgYSBiYXNlIGNsYXNzIGFuZCB1dGlsaXR5IGNsYXNzIGZvciBvdGhlciBtb2R1bGVzLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+V2VsbCwgeW91IHN0YXJ0IHlvdXIgb3duIG1vZHVsZSAoSSBzdWdnZXN0IHN0YXJ0aW5nIHdpdGggdGhlIFNrZWxldG9uIG1vZHVsZSksIGFuZCB0aGVuIHdoZW4geW91IG5lZWQgdG8gdXNlIGFuIGFkdmFuY2VkIGZvcm0gb2JqZWN0IGZyb20gdGhpcyBsaWJyYXJ5LCBzaW1wbHkgbWFrZSB5b3VyIG1vZHVsZSBkZXBlbmRhbnQgdXBvbiBGb3JtT2JqZWN0cywgYW5kIHRoZW4gaW5zdGFudGlhdGUgYW4gb2JqZWN0IG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLiAgU2VlIHRoZSBjb2RlIGluc2lkZSB0aGUgRm9ybU9iamVjdHMgZGlyZWN0b3J5IGZvciB1c2FnZSBpbnN0cnVjdGlvbnMuPC9wPg0KPGgzPlNtYXJ0eSBBZGRvbnM8L2gzPg0KPHA+VGhpcyBtb2R1bGUgYWRkcyBhIGZldyBzbWFydHkgY29udmVuaWVuY2VzIGZvciB1c2Ugd2l0aCBvdGhlciBtb2R1bGVzLiBUaGV5IGFyZSBsaXN0ZWQgYW5kIGRlc2NyaWJlZCBoZXJlOjwvcD4NCjx1bD4NCjxsaT5jZ2Vycm9yIC0gPGVtPmJsb2NrPC9lbT4gcGx1Z2luDQo8cD5pLmU6IDxjb2RlPntjZ2Vycm9yfVRoaXMgaXMgZXJyb3IgdGV4dHsvY2dlcnJvcn08L2NvZGU+PGJyLz4NCiAgICBvcjogPGNvZGU+e2NnZXJyb3J9eyRlcnJvcnRleHR2YXJ9ey9jZ2Vycm9yfTwvYnI+DQo8L3A+DQo8cD5vcHRpb25hbCBwYXJhbWV0ZXJzOiAmIzAzOTtlcnJvcmNsYXNzJiMwMzk7ID0gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY2xhc3MgbmFtZSBpbiB0aGUgdGVtcGxhdGUuDQo8L3A+DQo8cD5EZXNjcmlwdGlvbjogVGhpcyBibG9jayBwbHVnaW4gdXNlcyB0aGUgZXJyb3IgdGVtcGxhdGUgKGNvbmZpZ3VyYWJsZSBmcm9tIHRoZSBDR0V4dGVuc2lvbnMgYWRtaW4gaW50ZXJmYWNlKSB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UuPC9wPg0KPC91bD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSZxdW90O2h0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yKHMpLCBjYWxndXkgZXQgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMmcXVvdDs+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICANCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFJvYmVydCBDYW1wYmVsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+PGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+DQo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUw0KTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIA0Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+DQo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KT3IgcmVhZCBpdCA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5vbmxpbmU8L2E+PC9wPg0KDQo8aDM+VHJhZHUmY2NlZGlsOyZhdGlsZGU7byBQb3J0dWd1ZXNhPC9oMz4NCjxwPk51bm8gY29zdGEgPGEgaHJlZj0mcXVvdDttYWlsdG86bnVuby5tZmNvc3RhQHNhcG8ucHQmcXVvdDs+PG51bm8ubWZjb3N0YUBzYXBvLnB0PjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4nOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjA1NTM4NDUzLjYuMy51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vZm9ydW0vZm9ydW0ucGhwfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjM0MDE0MjgyNS4xMjA1MjgyNjU0LjEyMDU1MzE3OTkuMTIwNTUzODQ1My42JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0NHRklMRVVQTE9BRF9OT0ZJTEUnXSA9ICdOaWNpIHVuIGZpc2llciBpbmNhcmNhdCBwb3RyaXZpdCBzcGVmaWNhdGlpbG9yJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9GSUxFU0laRSddID0gJ01hcmltZWEgZmlzaWVydWx1aSBpbmNhcmNhdCBhIGFqdW5zIGxhIG1heGltdWwgcGVybWlzJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9GSUxFVFlQRSddID0gJ0Zpc2llciBkZSBhY2VzdCBnZW4gbnUgcG9hdGUgZmkgaW5jYXJjYXQnOwokbGFuZ1snQ0dGSUxFVVBMT0FEX0ZJTEVFWElTVFMnXSA9ICdVbiBmaXNpZXIgY3UgYWNlc3QgbnVtZSBleGl0YSBkZWphJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9CQURERVNURElSJ10gPSAnRGVzdGluYXRpYSBkaXJlY3RvcnVsdWkgc3BlY2lmaWNhdCBwZW50cnUgaW5jYXJjYXJlIG51IGV4aXN0YSc7CiRsYW5nWydDR0ZJTEVVUExPQURfQkFEUEVSTVMnXSA9ICdGaXNpZXJlbGUgcGVybWlzZSBudSBwZXJtaXQgc2NyaWVyZSBwZSBmaXNpZXJ1bCBpbmNhcmNhdCBpbiBsb2NhdGlhIGRlc3RpbmF0aWVpJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9NT1ZFRkFJTEVEJ10gPSAnSW5jZXJjYXJlYSBkZSBtdXRhIGZpc2llcnVsIGluY2FyY2F0IGxhIGRlc3RpYW50aWEgZmluYWxhIG51IGEgZm9zdCByZXVzaXRhJzsKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdFeHRlbnNpYSBGaXNpZXIgSW1hZ2luZSc7CiRsYW5nWydncm91cCddID0gJ0dydXAnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdTYWJsb24nOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ0FsZWdldGkgdW51bChhKSc7CiRsYW5nWydwcmlvcml0eV9jb3VudHJpZXMnXSA9ICdUYXJpIFByaW9yaXRhcmUnOwokbGFuZ1sncHJvbXB0X2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXRlYXphIHNhYmxvbic7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdTdGVyZ2Ugc2FibG9uJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdOdW1lIHNhYmxvbic7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdUZXN0IHNhYmxvbic7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ051bWUgc2FibG9uJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ1NhYmxvbiBub3UnOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdJbXBsaWNpdCc7CiRsYW5nWyd5ZXMnXSA9ICdEYSc7CiRsYW5nWydubyddID0gJ051JzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1RyaW1pdGUnOwokbGFuZ1snYXBwbHknXSA9ICdBcGxpY2EnOwokbGFuZ1snY2FuY2VsJ10gPSAnQW51bGVhemEnOwokbGFuZ1snZWRpdCddID0gJ0VkaXRlYXphJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdTdW50ZXRpIHNpZ3VyKGEpPyc7CiRsYW5nWydyZXNldHRvZmFjdG9yeSddID0gJ1Jlc3RhYmlsaXJlIHZhbG9yaSBkZSBmYWJyaWNhcmUnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdTYWJsb24gZXJvYXJlJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ1VuIHNhYmxvbiBjdSBjdSBhY2VzdCBOdW1lIGV4aXN0YSBkZWphJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0V4dGVuc2lpIG1vZHVsIENhbGd1eXMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdBY2VzdCBtb2R1bCBlc3RlIHByZWdhdGl0IHBlbnRydSBmb2xvc2lyZS4gIENvZGFyZSB1c29hcmEhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdMYSByZXZlZGVyZSc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIGRlemluc3RhbGF0Lic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdWZXJzaXVuZWEgJXMgYSBtb2R1bHVpIGEgZm9zdCBpbnN0YWxhdGEuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmludGUgbW9kdWwgYWN0dWFsaXphdGUuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzIGludGVyemlzLiBWZXJpZmljYXRpLXZhIHBlcm1pc2l1bmlsZSB2YSByb2cuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJvYXJlISc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsIGFjdHVhbGl6YXQgbGEgdmVyc2l1bmVhICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0FjZXN0IG1vZHVsIGVzdGUgbyBiaWJsaW90ZWNhIGRlIGNsYXNlIHBocCBmb2xvc2l0ZSBwZW50cnUgY29uc3RydWlyZWEgZGUgZm9ybXVsYXJlIGF2YW5zYXRlLic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIEFwcmlsIDIwMDcuICBDcmVhdGVJbWFnZUxpbmsgd2lsbCBub3cgd29yayBvbiB0aGUgZnJvbnRlbmQuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zLiBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgYXBwbHkgYnV0dG9ucyB0byBuZXcgdGVtcGxhdGVzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYmVyIDIwMDcuICBBZGRzIGRlZmF1bHQgZnJvbnRlbmQgZXJyb3IgaGFuZGxpbmcgcGx1Z2luLjwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPkNlIHJlYWxpemVhemEgYWNlc3QgbW9kdWw/PC9oMz4NCjxwPkFjZXN0IG1vZHVsIG9mZXJhIGluIHByaW5jaXBhbCBpbnRlcmZldGUgYXBsaWNhdGllIHNpIGV0aWNoZXRlIHNtYXJ0eSBwZW50cnUgZm9sb3NpcmVhIGxvciBpbiBhbHRlIG1vZHVsZS4gRXN0ZSBjb25zdGl0dWl0IGRpbiBjbGFzZSBkZSBiYXphIHNpIGNsYXNlIHV0aWxpdGFyZSBkaXNwb25pYmlsZSBwZW50cnUgYWx0ZSBtb2R1bGUuPC9wPg0KPGgzPkN1bSBpbCBmb2xvc2VzYzwvaDM+DQo8cD5FaSBiaW5lLCBpbmNlcGV0aSBtb2R1bHVsIGR1bW5lYXZvYXN0cmEgKHN1Z2VyZXogc2EgaW5jZXBldGkgY3UgbW9kdWx1bCBTa2VsZXRvbiksIHNpIGFwb2kgY2FuZCBkb3JpdGkgc2EgZm9sb3NpdGkgdW4gb2JpZWN0IGZvcm11bGFyIGF2YW5zYXQgZGluIGFjZWFzdGEgYmlibGlvdGVjYSwgdHJlYnVpZSBkb2FyIHNhIGZhY2V0aSBtb2R1bHVsIGR1bW5lYXZvYXN0cmEgZGVwZW5kZW50IGRpbiBGb3JtT2JqZWN0cywgc2kgc2EgaW5zdGFudGlhdGkgdW4gb2JpZWN0IGRlIHRpcHVsIGNvcmVzcHVuemF0b3IuICBWZXppIGNvZHVsIGRpbiBkaXJlY3RvcnVsIEZvcm1PYmplY3RzIHBlbnRydSBpbnN0cnVjdGl1bmkgZGUgdXRpbGl6YXJlLjwvcD4NCjxoMz5BZGRvbi11cmkgU21hcnR5PC9oMz4NCjxwPkFjZXN0IG1vZHVsIG9mZXJhIGluIHBsdXMgY2F0ZXZhIGNvbnZlbmllbnRlIHNtYXJ0eSBwZW50cnUgZm9sb3NpcmVhIGluIGFsdGUgbW9kdWxlLiBBY2VzdGVhIHN1bnQgbGlzdGF0ZSBzaSBkZXNjcmlzZSBhaWNpOjwvcD4NCjx1bD4NCjxsaT5jZ2Vycm9yIC0gPGVtPmJsb2M8L2VtPiBwbHVnaW4NCjxwPmkuZTogPGNvZGU+e2NnZXJyb3J9QWNlc3RhIGVzdGUgdGV4dHVsIGVyb3JpaXsvY2dlcnJvcn08L2NvZGU+PGJyLz4NCiAgICBvcjogPGNvZGU+e2NnZXJyb3J9eyRlcnJvcnRleHR2YXJ9ey9jZ2Vycm9yfTwvYnI+DQo8L3A+DQo8cD5wYXJhbWV0cmkgb3B0aW9uYWxpOiAmIzAzOTtlcnJvcmNsYXNzJiMwMzk7ID0gc3VwcmFzY3JpZSBudW1lbGUgY2xhc2VpIGltcGxpY2l0ZSBpbiBzYWJsb24uDQo8L3A+DQo8cD5EZXNjcmllcmU6IEFjZXN0IHBsdWdpbiBibG9jIGZvbG9zZXN0ZSBzYWJsb251bCBlcm9hcmUgKGNvbmZpZ3VyYWJpbCBkaW4gaW50ZXJmYXRhIGRlIGFkbWluaXN0cmFyZSBDR0V4dGVuc2lvbnMpIHBlbnRydSBhZmlzZWFyZWEgdW51aSBtZXNhaiBkZSBlcm9hcmUuPC9wPg0KPC91bD4NCjxoMz5TdXBvcnQ8L2gzPg0KPHA+QWNlc3QgbW9kdWwgbnUgb2ZlcmEgc3Vwb3J0IGNvbWVyY2lhbC4gVG90dXNpLCBleGlzdGEgdW4gbnVtYXIgZGlzcG9uaWJpbCBkZSByZXN1cnNlIGNhcmUgdmEgcG90IGFqdXRhOjwvcD4NCjx1bD4NCjxsaT5QZW50cnUgdWx0aW1hIHZlcnNpdW5lIGEgYWNlc3R1aSBtb2R1bCwgRkFRLXVyaSwgcmFwb3J0YXJlYSB1bnVpIEJ1ZyBzYXUgYWNoaXppdGlhIGRlIHN1cG9ydCBjb21lcmNpYWwsIHZhIHJvZyBzYSB2aXppdGF0aSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgbGEgPGEgaHJlZj0mcXVvdDtodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PmRldi5jbXNtYWRlc2ltcGxlLm9yZzwvYT4uPC9saT4NCjxsaT5EaXNjdXRpaSByZWZlcml0b2FyZSBsYSBhY2VzdCBtb2R1bCBwb3QgZmkgZ2FzaXRlIGxhIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+QXV0b3J1bCwgY2FsZ3V5IHNpIGFsdGlpIHBvdCBmaSBhZGVzZWEgZ2FzaXRpIGxhIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5JbiBmaW5hbCwgYXRpIHB1dGVhIGF2ZWEgc3VjY2VzIHByaW4gdHJpbWl0ZXJlYSB1bnVpIGUtbWFpbCBkaXJlY3QgYXV0b3J1bHVpLjwvbGk+ICANCjwvdWw+DQo8cD5SZWZlcml0b3IgbGEgR1BMLCBhY2VzdCBzb2Z0IGVzdGUgb2Zlcml0IGFzYSBjdW0gZXN0ZS4gVmEgcm9nIHNhIGNpdGl0aSB0ZXh0dWwgbGljZW50ZWkgcGVudHJ1IGRpc2N1bHBhIHRvdGFsYS48L3A+DQoNCjxoMz5Db3B5cmlnaHQgc2kgTGljZW50YTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PjxjYWxndXkxMDAwQGhvdG1haWwuY29tPjwvYT4uIFRvYXRlIGRyZXB0dXJpbGUgcmV6ZXJ2YXRlLjwvcD4NCjxwPkFjZXN0IG1vZHVsIGEgZm9zdCBsaXZyYXQgc3ViIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkxpY2VudGEgcHVibGljYSBHTlU8L2E+LiBUcmVidWllIHNhIGZpdGkgZGUgYWNvcmQgY3UgYWNlYXN0YSBpbmFpbnRlIHNhIGZvbG9zaXRpIG1vZHVsdWwuPC9wPg0KJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTA4OTM1NjAyMi4xMjAyNDg3MDkwLjEyMDQxMDQ1NTAuMTIwNDg5MzgwMC41JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTIwNDEwNDU1MC40LjQudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vbWFpbi9zdXBwb3J0L0lSQ3x1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ru_RU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdJbWFnZSBGaWxlIEV4dGVuc2lvbnMnOwokbGFuZ1snZ3JvdXAnXSA9ICfQk9GA0YPQv9C/0LAnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICfQqNCw0LHQu9C+0L0nOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ9CS0YvQsdGA0LDRgtGMINC+0LTQuNC9JzsKJGxhbmdbJ3Byb21wdF9lZGl0dGVtcGxhdGUnXSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDRiNCw0LHQu9C+0L0nOwokbGFuZ1sncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJ10gPSAn0KPQtNCw0LvQuNGC0Ywg0YjQsNCx0LvQvtC9JzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICfQndCw0LfQstCw0L3QuNC1INGI0LDQsdC70L7QvdCwJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ9Ci0LXQutGB0YIg0YjQsNCx0LvQvtC90LAnOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICfQndCw0LfQstCw0L3QuNC1INGI0LDQsdC70L7QvdCwJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ9Cd0L7QstGL0Lkg0YjQsNCx0LvQvtC9JzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAn0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4nOwokbGFuZ1sneWVzJ10gPSAn0JTQsCc7CiRsYW5nWydubyddID0gJ9Cd0LXRgic7CiRsYW5nWydzdWJtaXQnXSA9ICfQntGC0L/RgNCw0LLQuNGC0YwnOwokbGFuZ1snYXBwbHknXSA9ICdBcHBseSc7CiRsYW5nWydjYW5jZWwnXSA9ICfQntGC0LzQtdC90LAnOwokbGFuZ1snZWRpdCddID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40LUnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ9CS0Ysg0YPQstC10YDQtdC90Ys/JzsKJGxhbmdbJ3Jlc2V0dG9mYWN0b3J5J10gPSAnUmVzZXQgdG8gZmFjdG9yeSBkZWZhdWx0cyc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ9Ce0YjQuNCx0LrQsCDRiNCw0LHQu9C+0L3QsCc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICfQotCw0LrQvtC1INC90LDQt9Cy0LDQvdC40LUg0YjQsNCx0LvQvtC90LAg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhbGd1eXMgTW9kdWxlIEV4dGVuc2lvbnMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdUaGlzIG1vZHVsZSBpcyByZWFkeSB0byB1c2UuICBDb2RlIGF3YXkhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdTZWUgeW91IGFnYWluIHNvbWUgZGF5JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAn0JzQvtC00YPQu9GMINC00LXQuNC90YHRgtCw0LvQu9C40YDQvtCy0LDQvS4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAn0JzQvtC00YPQu9GMINCy0LXRgNGB0LjQuCAlcyDRg9GB0YLQsNC90L7QstC70LXQvS4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC80L7QtNGD0LvRjyDQvtCx0L3QvtCy0LvQtdC90YsuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7CiRsYW5nWydlcnJvciddID0gJ9Ce0YjQuNCx0LrQsCEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICfQnNC+0LTRg9C70Ywg0L7QsdC90L7QstC70LXQvSDQtNC+INCy0LXRgNGB0LjQuCAlcy4nOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdUaGlzIG1vZHVsZSBpcyBhIGxpYnJhcnkgb2YgcGhwIGNsYXNzZXMgdXNlZCB0byBidWlsZCBhZHZhbmNlZCBmb3Jtcyc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIEFwcmlsIDIwMDcuICBDcmVhdGVJbWFnZUxpbmsgd2lsbCBub3cgd29yayBvbiB0aGUgZnJvbnRlbmQuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zLiBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgYXBwbHkgYnV0dG9ucyB0byBuZXcgdGVtcGxhdGVzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYmVyIDIwMDcuICBBZGRzIGRlZmF1bHQgZnJvbnRlbmQgZXJyb3IgaGFuZGxpbmcgcGx1Z2luLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjIuICAgTm92ZW1iZXIgIDIwMDcsICBBZGRzIG1vcmUgY29udmVuaWVuY2UgZnVuY3Rpb25zPC9saT4NCjxsaT5WZXJzaW9uIDEuMy4gICBOb3ZlbWJlciAgMjAwNy4gIEFkZHMgZXZlbiBtb3JlIGNvbnZlbmllbmNlIGZ1bmN0aW9uczwvbGk+DQo8bGk+VmVyc2lvbiAxLjQuICAgRGVjZW1iZXIgIDIwMDcuICBBZGRzIENyZWF0ZUltYWdlRHJvcGRvd24gbWV0aG9kPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPlRoaXMgbW9kdWxlIG1lcmVseSBwcm92aWRlcyBjb252ZW5pZW5jZSBhcGlcJ3MgYW5kIHNtYXJ0eSB0YWdzIGZvciB1c2UgaW4gb3RoZXIgbW9kdWxlcy4gIEl0IGlzIG1lYW50IHNvbGVseSBhcyBhIGJhc2UgY2xhc3MgYW5kIHV0aWxpdHkgY2xhc3MgZm9yIG90aGVyIG1vZHVsZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+DQo8aDM+U21hcnR5IEFkZG9uczwvaDM+DQo8cD5UaGlzIG1vZHVsZSBhZGRzIGEgZmV3IHNtYXJ0eSBjb252ZW5pZW5jZXMgZm9yIHVzZSB3aXRoIG90aGVyIG1vZHVsZXMuIFRoZXkgYXJlIGxpc3RlZCBhbmQgZGVzY3JpYmVkIGhlcmU6PC9wPg0KPHVsPg0KPGxpPmNnZXJyb3IgLSA8ZW0+YmxvY2s8L2VtPiBwbHVnaW4NCjxwPmkuZTogPGNvZGU+e2NnZXJyb3J9VGhpcyBpcyBlcnJvciB0ZXh0ey9jZ2Vycm9yfTwvY29kZT48YnIvPg0KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4NCjwvcD4NCjxwPm9wdGlvbmFsIHBhcmFtZXRlcnM6IFwnZXJyb3JjbGFzc1wnID0gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY2xhc3MgbmFtZSBpbiB0aGUgdGVtcGxhdGUuDQo8L3A+DQo8cD5EZXNjcmlwdGlvbjogVGhpcyBibG9jayBwbHVnaW4gdXNlcyB0aGUgZXJyb3IgdGVtcGxhdGUgKGNvbmZpZ3VyYWJsZSBmcm9tIHRoZSBDR0V4dGVuc2lvbnMgYWRtaW4gaW50ZXJmYWNlKSB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UuPC9wPg0KPC91bD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvcihzKSwgY2FsZ3V5IGV0IGFsbCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICANCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgwqkgMjAwNywgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tIj48Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbT48L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTA0NTU2NjYwMC4xMTkzMTY0NDQwLjExOTkzMzYzODguMTE5OTQyMzk2OS4yNCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExOTkyNzM2OTEuMjAuNy51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vZm9ydW0vZm9ydW0ucGhwfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0NHRklMRVVQTE9BRF9OT0ZJTEUnXSA9ICdJbmdlbiB1cHBsYWRkYWQgZmlsIG1hdGNoYXIgYmVza3Jpdm5pbmdhcm5hJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9GSUxFU0laRSddID0gJ1N0b3JsZWtlbiBwJmFyaW5nOyBkZW4gdXBwbGFkYWRlIGZpbGVuICZvdW1sO3ZlcnNrcmVkIGRlbiBtYXhpbWFsdCB0aWxsJmFyaW5nO3RuYSc7CiRsYW5nWydDR0ZJTEVVUExPQURfRklMRVRZUEUnXSA9ICdGaWxlciBhdiBkZW4gaCZhdW1sO3IgdHlwZW4ga2FuIGludGUgbGFkZGFzIHVwcCc7CiRsYW5nWydDR0ZJTEVVUExPQURfRklMRUVYSVNUUyddID0gJ0VuIGZpbCBtZWQgZGV0IG5hbW5ldCBmaW5ucyByZWRhbic7CiRsYW5nWydDR0ZJTEVVUExPQURfQkFEREVTVERJUiddID0gJ00mYXJpbmc7bG1hcHBlbiBzb20gYW5nYXZzIGYmb3VtbDtyIHVwcGxhZGFkZSBmaWxlciBmaW5ucyBpbnRlJzsKJGxhbmdbJ0NHRklMRVVQTE9BRF9CQURQRVJNUyddID0gJ0RldCBmaW5ucyBpbnRlIHNrcml2ciZhdW1sO3R0aWdoZXRlciBmJm91bWw7ciBmaWxlciBzb20gbGFkZGFzIHVwcCB0aWxsIHNpbiBtJmFyaW5nO2xtYXBwLic7CiRsYW5nWydDR0ZJTEVVUExPQURfTU9WRUZBSUxFRCddID0gJ01pc3NseWNrYWRlcyBtZWQgYXR0IGZseXR0YSBkZW4gdXBwbGFkZGFkZSBmaWxlbiB0aWxsIGRlc3Mgc2x1dGdpbHRpZ2EgZGVzdGluYXRpb24uJzsKJGxhbmdbJ2ltYWdlX2V4dGVuc2lvbnMnXSA9ICdGaWwmYXVtbDtuZGVsc2VyIGYmb3VtbDtyIGJpbGRmaWxlcic7CiRsYW5nWydncm91cCddID0gJ0dydXBwJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnTWFsbCc7CiRsYW5nWydzZWxlY3Rfb25lJ10gPSAnViZhdW1sO2xqIGVuJzsKJGxhbmdbJ3Byb21wdF9lZGl0dGVtcGxhdGUnXSA9ICdSZWRpZ2VyYSBtYWxsJzsKJGxhbmdbJ3Byb21wdF9kZWxldGV0ZW1wbGF0ZSddID0gJ1RhIGJvcnQgbWFsbCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVuYW1lJ10gPSAnTWFsbG5hbW4nOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnTWFsbHRleHQnOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdNYWxsbmFtbic7CiRsYW5nWydwcm9tcHRfbmV3dGVtcGxhdGUnXSA9ICdOeSBtYWxsJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnU3RhbmRhcmQnOwokbGFuZ1sneWVzJ10gPSAnSmEnOwokbGFuZ1snbm8nXSA9ICdOZWonOwokbGFuZ1snc3VibWl0J10gPSAnU2tpY2thJzsKJGxhbmdbJ2FwcGx5J10gPSAnVmVya3N0JmF1bWw7bGwnOwokbGFuZ1snY2FuY2VsJ10gPSAnJkFyaW5nO25ncmEnOwokbGFuZ1snZWRpdCddID0gJ1JlZGlnZXJhJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXI/JzsKJGxhbmdbJ3Jlc2V0dG9mYWN0b3J5J10gPSAnJkFyaW5nO3RlcnN0JmF1bWw7bGwgdGlsbCBzdGFuZGFyZGluc3QmYXVtbDtsbG5pbmdhcm5hJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnRmVsbWFsbCc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdFbiBtYWxsIG1lZCBkZXQgbmFtbmV0IGZpbm5zIHJlZGFuJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhbGd1eXMgbW9kdWx0aWxsJmF1bWw7Z2cnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdEZW4gaCZhdW1sO3IgbW9kdWxlbiAmYXVtbDtyIGYmYXVtbDtyZGlnIGF0dCBhbnYmYXVtbDtuZGFzLiBLb2RhIHAmYXJpbmc7ISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVmkgc2VzIG4mYXJpbmc7biBkYWcnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGVuICZhdW1sO3IgYXZpbnN0YWxsZXJhZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWx2ZXJzaW9uICVzIGluc3RhbGxlcmFkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGluc3QmYXVtbDtsbG5pbmdhcm5hIHVwcGRhdGVyYWRlcy4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnJkFyaW5nO3Rrb21zdCBuZWthZC4gViZhdW1sO25saWcga29udHJvbGxlcmEgZGluYSByJmF1bWw7dHRpZ2hldGVyLic7CiRsYW5nWydlcnJvciddID0gJ0ZlbCEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGVuIHVwcGdyYWRlcmFkZXMgdGlsbCB2ZXJzaW9uICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0RlbiBoJmF1bWw7ciBtb2R1bGVuICZhdW1sO3IgZXR0IGJpYmxpb3RlayBtZWQgcGhwLWtsYXNzZXIgc29tIGFudiZhdW1sO25kcyBmJm91bWw7ciBhdHQgYnlnZ2EgYXZhbmNlcmFkZSBmb3JtdWwmYXVtbDtyJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuMC4wLiBNYXJjaCAyMDA3LiAgSW5pdGlhbCBSZWxlYXNlLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMS4gQXByaWwgMjAwNy4gIEZpeGVzIHRvIENyZWF0ZUltYWdlTGluazwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMi4gQXByaWwgMjAwNy4gIENyZWF0ZUltYWdlTGluayB3aWxsIG5vdyB3b3JrIG9uIHRoZSBmcm9udGVuZC48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjMuIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBhcHBseSBidXR0b25zIHRvIG5ldyB0ZW1wbGF0ZXMuPC9saT4NCjxsaT5WZXJzaW9uIDEuMS4gICBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgZGVmYXVsdCBmcm9udGVuZCBlcnJvciBoYW5kbGluZyBwbHVnaW4uPC9saT4NCjxsaT5WZXJzaW9uIDEuMi4gICBOb3ZlbWJlciAgMjAwNywgIEFkZHMgbW9yZSBjb252ZW5pZW5jZSBmdW5jdGlvbnM8L2xpPg0KPGxpPlZlcnNpb24gMS4zLiAgIE5vdmVtYmVyICAyMDA3LiAgQWRkcyBldmVuIG1vcmUgY29udmVuaWVuY2UgZnVuY3Rpb25zPC9saT4NCjxsaT5WZXJzaW9uIDEuNC4gICBEZWNlbWJlciAgMjAwNy4gIEFkZHMgQ3JlYXRlSW1hZ2VEcm9wZG93biBtZXRob2QsIG1ldGhvZHMgZm9yIHN0YXRlIGFuZCBjb3VudHJ5IGRyb3Bkb3ducyBhbmQgYSBidW5jaCBvZiBvdGhlciB0aGluZ3MuPC9saT4NCjxsaT5WZXJzaW9uIDEuNS4gICBKYW51YXJ5ICAgMjAwOC4gIEZpeGVzIHRvIGh0bWxfZW50aXRpZXNfZGVjb2RlIGluIHV0Zjg8L2xpPg0KPGxpPlZlcnNpb24gMS42LiAgIEZlYnJ1YXJ5ICAyMDA4LCAgQWRkcyB0aGUgQ0dGaWxlVXBsb2FkSGFuZGxlciBjbGFzczwvbGk+DQo8bGk+VmVyc2lvbiAxLjYuMS4gICBGZWJydWFyeSAgMjAwOCwgIE1pbm9yIGZpeCB0byByZWN1cnNpdmVfY2hhbmdlX2RpcmVjdG9yeTwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBtZXJlbHkgcHJvdmlkZXMgY29udmVuaWVuY2UgYXBpJiMwMzk7cyBhbmQgc21hcnR5IHRhZ3MgZm9yIHVzZSBpbiBvdGhlciBtb2R1bGVzLiAgSXQgaXMgbWVhbnQgc29sZWx5IGFzIGEgYmFzZSBjbGFzcyBhbmQgdXRpbGl0eSBjbGFzcyBmb3Igb3RoZXIgbW9kdWxlcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPldlbGwsIHlvdSBzdGFydCB5b3VyIG93biBtb2R1bGUgKEkgc3VnZ2VzdCBzdGFydGluZyB3aXRoIHRoZSBTa2VsZXRvbiBtb2R1bGUpLCBhbmQgdGhlbiB3aGVuIHlvdSBuZWVkIHRvIHVzZSBhbiBhZHZhbmNlZCBmb3JtIG9iamVjdCBmcm9tIHRoaXMgbGlicmFyeSwgc2ltcGx5IG1ha2UgeW91ciBtb2R1bGUgZGVwZW5kYW50IHVwb24gRm9ybU9iamVjdHMsIGFuZCB0aGVuIGluc3RhbnRpYXRlIGFuIG9iamVjdCBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZS4gIFNlZSB0aGUgY29kZSBpbnNpZGUgdGhlIEZvcm1PYmplY3RzIGRpcmVjdG9yeSBmb3IgdXNhZ2UgaW5zdHJ1Y3Rpb25zLjwvcD4NCjxoMz5TbWFydHkgQWRkb25zPC9oMz4NCjxwPlRoaXMgbW9kdWxlIGFkZHMgYSBmZXcgc21hcnR5IGNvbnZlbmllbmNlcyBmb3IgdXNlIHdpdGggb3RoZXIgbW9kdWxlcy4gVGhleSBhcmUgbGlzdGVkIGFuZCBkZXNjcmliZWQgaGVyZTo8L3A+DQo8dWw+DQo8bGk+Y2dlcnJvciAtIDxlbT5ibG9jazwvZW0+IHBsdWdpbg0KPHA+aS5lOiA8Y29kZT57Y2dlcnJvcn1UaGlzIGlzIGVycm9yIHRleHR7L2NnZXJyb3J9PC9jb2RlPjxici8+DQogICAgb3I6IDxjb2RlPntjZ2Vycm9yfXskZXJyb3J0ZXh0dmFyfXsvY2dlcnJvcn08L2JyPg0KPC9wPg0KPHA+b3B0aW9uYWwgcGFyYW1ldGVyczogJiMwMzk7ZXJyb3JjbGFzcyYjMDM5OyA9IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNsYXNzIG5hbWUgaW4gdGhlIHRlbXBsYXRlLg0KPC9wPg0KPHA+RGVzY3JpcHRpb246IFRoaXMgYmxvY2sgcGx1Z2luIHVzZXMgdGhlIGVycm9yIHRlbXBsYXRlIChjb25maWd1cmFibGUgZnJvbSB0aGUgQ0dFeHRlbnNpb25zIGFkbWluIGludGVyZmFjZSkgdG8gZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlLjwvcD4NCjwvdWw+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0mcXVvdDtodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PmRldi5jbXNtYWRlc2ltcGxlLm9yZzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvcihzKSwgY2FsZ3V5IGV0IGFsbCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvcihzKSBkaXJlY3RseS48L2xpPiAgDQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZhbXA7Y29weTsgMjAwNywgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+JmFtcDtsdDtjYWxndXkxMDAwQGhvdG1haWwuY29tJmFtcDtndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwmcXVvdDs+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyMDI5NDI1MzIuOS42LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocHx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xNjgzNTYxOTE5LjEyMDIyNTQ5OTMuMTIwMzYyMTUyNi4xMjAzNjI2MTU1LjEyJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib/Progress2_Lite.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIExhdXJlbnQgTGF2aWxsZSA8cGVhckBsYXVyZW50LWxhdmlsbGUub3JnPg0KICoNCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAqIGFyZSBtZXQ6DQogKg0KICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogKiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9ycyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMNCiAqICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQ0KICogICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogKg0KICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQogKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTDQogKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQogKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQogKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCiAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQogKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAqDQogKiBAY2F0ZWdvcnkgICBIVE1MDQogKiBAcGFja2FnZSAgICBIVE1MX1Byb2dyZXNzMg0KICogQGF1dGhvciAgICAgTGF1cmVudCBMYXZpbGxlIDxwZWFyQGxhdXJlbnQtbGF2aWxsZS5vcmc+DQogKiBAY29weXJpZ2h0ICAyMDA1LTIwMDcgTGF1cmVudCBMYXZpbGxlDQogKiBAbGljZW5zZSAgICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCAgTmV3IEJTRCBMaWNlbnNlDQogKiBAdmVyc2lvbiAgICBDVlM6ICRJZDogUHJvZ3Jlc3MyX0xpdGUucGhwLHYgMS45IDIwMDcvMDQvMDggMTQ6NTU6NTYgZmFyZWxsIEV4cCAkDQogKiBAbGluayAgICAgICBodHRwOi8vcGVhci5waHAubmV0L3BhY2thZ2UvSFRNTF9Qcm9ncmVzczINCiAqIEBzaW5jZSAgICAgIEZpbGUgYXZhaWxhYmxlIHNpbmNlIFJlbGVhc2UgMi4wLjBSQzENCiAqLw0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnb2JfZ2V0X2NsZWFuJykpIHsNCiAgICBmdW5jdGlvbiBvYl9nZXRfY2xlYW4oKQ0KICAgIHsNCiAgICAgICAgJGNvbnRlbnRzID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQoNCiAgICAgICAgaWYgKCRjb250ZW50cyAhPT0gZmFsc2UpIHsNCiAgICAgICAgICAgIG9iX2VuZF9jbGVhbigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICRjb250ZW50czsNCiAgICB9DQp9DQoNCmlmICghZGVmaW5lZCgnUEhQX0VPTCcpKSB7DQogICAgc3dpdGNoIChzdHJ0b3VwcGVyKHN1YnN0cihQSFBfT1MsIDAsIDMpKSkgew0KICAgICAgICAvLyBXaW5kb3dzDQogICAgICAgIGNhc2UgJ1dJTic6DQogICAgICAgICAgICBkZWZpbmUoJ1BIUF9FT0wnLCAiXHJcbiIpOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgLy8gTWFjDQogICAgICAgIGNhc2UgJ0RBUic6DQogICAgICAgICAgICBkZWZpbmUoJ1BIUF9FT0wnLCAiXHIiKTsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgIC8vIFVuaXgNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIGRlZmluZSgnUEhQX0VPTCcsICJcbiIpOw0KICAgIH0NCn0NCg0KLyoqDQogKiBTdGFuZGFsb25lIEhUTUwgbG9hZGluZyBiYXIgd2l0aCBvbmx5IFBIUCBhbmQgSlMgaW50ZXJmYWNlLg0KICoNCiAqIFRoZSBIVE1MX1Byb2dyZXNzMl9MaXRlIGNsYXNzIGFsbG93IHlvdSB0byBhZGQgYSBxdWljaw0KICogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBsb2FkaW5nIGJhciB0byBhbnkgb2YgeW91ciB4aHRtbCBkb2N1bWVudC4NCiAqIFlvdSBzaG91bGQgaGF2ZSBhIGJyb3dzZXIgdGhhdCBhY2NlcHQgREhUTUwgZmVhdHVyZS4NCiAqDQogKiBUaGlzIGNsYXNzIGhhcyBubyBkZXBlbmRlbmN5IGFuZCBjYW4gYmUgdXNlZCBjb21wbGV0ZWx5IG91dHNpZGUNCiAqIHRoZSBQRUFSIGluZnJhc3RydWN0dXJlLg0KICoNCiAqIEhlcmUgaXMgYSBiYXNpYyBleGFtcGxlOg0KICogPGNvZGU+DQogKiA8aHRtbD4NCiAqIDxib2R5Pg0KICogPD9waHANCiAqIHJlcXVpcmVfb25jZSAnSFRNTC9Qcm9ncmVzczJfTGl0ZS5waHAnOw0KICoNCiAqIGZ1bmN0aW9uIG15UHJvY2VzcygpDQogKiB7DQogKiAgICAgZm9yICgkaT0wOyAkaTwxMDAwMDA7ICRpKyspIHsgfQ0KICogfQ0KICoNCiAqICRwYmwgPSBuZXcgSFRNTF9Qcm9ncmVzczJfTGl0ZSgpOw0KICogJHBibC0+YWRkTGFiZWwoJ3RleHQnLCd0eHQxJywnUHJvZ3Jlc3MyIExpdGUgLSBCYXNpYyBFeGFtcGxlJyk7DQogKiAkcGJsLT5kaXNwbGF5KCk7DQogKg0KICogZm9yKCRpPTE7ICRpPD0xMDA7ICRpKyspIHsNCiAqICAgICAkcGJsLT5tb3ZlU3RlcCgkaSk7DQogKiAgICAgbXlQcm9jZXNzKCk7DQogKiB9DQogKiA/Pg0KICogPC9ib2R5Pg0KICogPC9odG1sPg0KICogPC9jb2RlPg0KICoNCiAqIEBjYXRlZ29yeSAgIEhUTUwNCiAqIEBwYWNrYWdlICAgIEhUTUxfUHJvZ3Jlc3MyDQogKiBAYXV0aG9yICAgICBMYXVyZW50IExhdmlsbGUgPHBlYXJAbGF1cmVudC1sYXZpbGxlLm9yZz4NCiAqIEBhdXRob3IgICAgIE1pa2EgVHVyaW4gPHR1cmluQGluYm94Lmx2Pg0KICogQGF1dGhvciAgICAgR2VyZCBXZWl0ZW5iZXJnIDxoYWhuZWJ1ZWNoZW5Ad2ViLmRlPg0KICogQGNvcHlyaWdodCAgMjAwNS0yMDA3IExhdXJlbnQgTGF2aWxsZQ0KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAgIE5ldyBCU0QgTGljZW5zZQ0KICogQHZlcnNpb24gICAgUmVsZWFzZTogMi4zLjANCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9wZWFyLnBocC5uZXQvcGFja2FnZS9IVE1MX1Byb2dyZXNzMg0KICogQGxpbmsgICAgICAgaHR0cDovL3d3dy5waHBjbGFzc2VzLm9yZy9icm93c2UvcGFja2FnZS8xMjIyLmh0bWwNCiAqICAgICAgICAgICAgIEZyb20gYW4gb3JpZ2luYWwgaWRlYSBvZiBNaWtlIFR1cmluDQogKiBAbGluayAgICAgICBodHRwOi8vd3d3LnBocGNsYXNzZXMub3JnL2Jyb3dzZS9wYWNrYWdlLzE5NjQuaHRtbA0KICogICAgICAgICAgICAgSW1wcm92ZSB2ZXJzaW9uIG9mIEdlcmQgV2VpdGVuYmVyZw0KICogQHNpbmNlICAgICAgQ2xhc3MgYXZhaWxhYmxlIHNpbmNlIFJlbGVhc2UgMi4wLjBSQzENCiAqLw0KDQpjbGFzcyBIVE1MX1Byb2dyZXNzMl9MaXRlDQp7DQogICAgLyoqDQogICAgICogTGFiZWwgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBzdHJpbmcNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICB2YXIgJF9pZGVudDsNCg0KICAgIC8qKg0KICAgICAqIFN0YXR1cyBvZiB0aGUgcHJvZ3Jlc3MgYmFyIChuZXcsIHNob3csIGhpZGUpLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgc3RyaW5nDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwcml2YXRlDQogICAgICovDQogICAgdmFyICRfc3RhdHVzID0gJ25ldyc7DQoNCiAgICAvKioNCiAgICAgKiBTdGVwcyBvZiB0aGUgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgaW50ZWdlcg0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHZhciAkX3N0ZXAgPSAwOw0KDQogICAgLyoqDQogICAgICogTWluaW11bSBzdGVwcyBvZiB0aGUgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgaW50ZWdlcg0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRtaW47DQoNCiAgICAvKioNCiAgICAgKiBNYXhpbXVtIHN0ZXBzIG9mIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBpbnRlZ2VyDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICB2YXIgJG1heDsNCg0KICAgIC8qKg0KICAgICAqIFByb2dyZXNzIGJhciBwb3NpdGlvbiAoYWJzb2x1dGUsIHJlbGF0aXZlKS4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIHN0cmluZw0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRwb3NpdGlvbjsNCg0KICAgIC8qKg0KICAgICAqIFByb2dyZXNzIGJhciBwb3NpdGlvbiBmcm9tIGxlZnQuDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBpbnRlZ2VyDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICB2YXIgJGxlZnQ7DQoNCiAgICAvKioNCiAgICAgKiBQcm9ncmVzcyBiYXIgcG9zaXRpb24gZnJvbSB0b3AuDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBpbnRlZ2VyDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICB2YXIgJHRvcDsNCg0KICAgIC8qKg0KICAgICAqIFByb2dyZXNzIGJhciB3aWR0aCBpbiBwaXhlbC4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIGludGVnZXINCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqLw0KICAgIHZhciAkd2lkdGg7DQoNCiAgICAvKioNCiAgICAgKiBQcm9ncmVzcyBiYXIgaGVpZ2h0IGluIHBpeGVsLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgaW50ZWdlcg0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRoZWlnaHQ7DQoNCiAgICAvKioNCiAgICAgKiBQcm9ncmVzcyBiYXIgcGFkZGluZyBpbiBwaXhlbC4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIGludGVnZXINCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqLw0KICAgIHZhciAkcGFkZGluZzsNCg0KICAgIC8qKg0KICAgICAqIFByb2dyZXNzIGJhciBmb3JlZ3JvdW5kIGNvbG9yLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgc3RyaW5nDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICB2YXIgJGZvcmVncm91bmRfY29sb3IgPSAnIzAwMzNGRic7DQoNCiAgICAvKioNCiAgICAgKiBQcm9ncmVzcyBiYXIgZm9yZWdyb3VuZCBjb2xvci4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIHN0cmluZw0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRiYWNrZ3JvdW5kX2NvbG9yID0gJyNDMEMwQzAnOw0KDQogICAgLyoqDQogICAgICogUHJvZ3Jlc3MgYmFyIGJvcmRlciBwcm9wZXJ0aWVzDQogICAgICoNCiAgICAgKiA8Y29kZT4NCiAgICAgKiAkYm9yZGVyID0gYXJyYXkoDQogICAgICogICAgJ3dpZHRoJyA9PiAxICAgICAgICAgICMgd2lkdGggc2l6ZSBpbiBwaXhlbA0KICAgICAqICAgICdzdHlsZScgPT4gJ3NvbGlkJyAgICAjIHN0eWxlIChzb2xpZCwgZGFzaGVkLCBkb3R0ZWQgLi4uKQ0KICAgICAqICAgICdjb2xvcicgPT4gJyMwMDAwMDAnICAjIGNvbG9yDQogICAgICogKTsNCiAgICAgKiA8L2NvZGU+DQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBhcnJheQ0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRib3JkZXIgPSBhcnJheSgnd2lkdGgnID0+IDEsICdzdHlsZScgPT4gJ3NvbGlkJywgJ2NvbG9yJyA9PiAnIzAwMDAwMCcpOw0KDQogICAgLyoqDQogICAgICogRGlyZWN0aW9uIG9mIG1vdGlvbiAocmlnaHQsIGxlZnQsIHVwLCBkb3duKS4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIHN0cmluZw0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRkaXJlY3Rpb24gPSAncmlnaHQnOw0KDQogICAgLyoqDQogICAgICogUHJvZ3Jlc3MgYmFyIGZyYW1lIHByb3BlcnRpZXMNCiAgICAgKg0KICAgICAqIDxjb2RlPg0KICAgICAqICRmcmFtZSA9IGFycmF5KA0KICAgICAqICAgICdzaG93JyA9PiBmYWxzZSwgICAgICAjIGZyYW1lIHNob3cgKHRydWUvZmFsc2UpDQogICAgICogICAgJ2xlZnQnID0+IDIwMCwgICAgICAgICMgZnJhbWUgcG9zaXRpb24gZnJvbSBsZWZ0DQogICAgICogICAgJ3RvcCcgPT4gMTAwLCAgICAgICAgICMgZnJhbWUgcG9zaXRpb24gZnJvbSB0b3ANCiAgICAgKiAgICAnd2lkdGgnID0+IDMyMCwgICAgICAgIyBmcmFtZSB3aWR0aA0KICAgICAqICAgICdoZWlnaHQnID0+IDkwLCAgICAgICAjIGZyYW1lIGhlaWdodA0KICAgICAqICAgICdjb2xvcicgPT4gJyNDMEMwQzAnLCAjIGZyYW1lIGNvbG9yDQogICAgICogICAgJ2JvcmRlci13aWR0aCcgPT4gMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJhbWUgYm9yZGVyIHdpZHRoDQogICAgICogICAgJ2JvcmRlci1zdHlsZScgPT4gJ3NvbGlkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJhbWUgYm9yZGVyIHN0eWxlIChzb2xpZCwNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXNoZWQsIGRvdHRlZCwgaW5zZXQgLi4uKQ0KICAgICAqICAgICdib3JkZXItY29sb3InID0+ICcjREZERkRGICM0MDQwNDAgIzQwNDA0MCAjREZERkRGJyAgICAjIGZyYW1lIGJvcmRlciBjb2xvciAoM2RmeCkNCiAgICAgKiApOw0KICAgICAqIDwvY29kZT4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIGFycmF5DQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKiBAc2VlICAgICAgICBzZXRGcmFtZUF0dHJpYnV0ZXMoKQ0KICAgICAqLw0KICAgIHZhciAkZnJhbWUgPSBhcnJheSgnc2hvdycgPT4gZmFsc2UpOw0KDQogICAgLyoqDQogICAgICogUHJvZ3Jlc3MgYmFyIGxhYmVscyBwcm9wZXJ0aWVzDQogICAgICoNCiAgICAgKiA8Y29kZT4NCiAgICAgKiAkbGFiZWwgPSBhcnJheSgNCiAgICAgKiAgICAnbmFtZScgPT4gYXJyYXkoICAgICAgICAgICAgICAgICAgIyBsYWJlbCBuYW1lDQogICAgICogICAgICAndHlwZScgPT4gJ3RleHQnLCAgICAgICAgICAgICAgICMgbGFiZWwgdHlwZQ0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICh0ZXh0LGJ1dHRvbixzdGVwLHBlcmNlbnQsY3Jvc3NiYXIpDQogICAgICogICAgICAndmFsdWUnID0+ICcmbmJzcDsnLCAgICAgICAgICAgICMgbGFiZWwgdmFsdWUNCiAgICAgKiAgICAgICdsZWZ0JyA9PiAoJGxlZnQpLCAgICAgICAgICAgICAgIyBsYWJlbCBwb3NpdGlvbiBmcm9tIGxlZnQNCiAgICAgKiAgICAgICd0b3AnID0+ICgkdG9wIC0gMTYpLCAgICAgICAgICAgIyBsYWJlbCBwb3NpdGlvbiBmcm9tIHRvcA0KICAgICAqICAgICAgJ3dpZHRoJyA9PiAwLCAgICAgICAgICAgICAgICAgICAjIGxhYmVsIHdpZHRoDQogICAgICogICAgICAnaGVpZ2h0JyA9PiAwLCAgICAgICAgICAgICAgICAgICMgbGFiZWwgaGVpZ2h0DQogICAgICogICAgICAnYWxpZ24nID0+ICdsZWZ0JywgICAgICAgICAgICAgICMgbGFiZWwgYWxpZ24NCiAgICAgKiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA9PiAndHJhbnNwYXJlbnQnLCAgICAgICAgICAjIGxhYmVsIGJhY2tncm91bmQgY29sb3INCiAgICAgKiAgICAgICdmb250LWZhbWlseScgPT4gJ1ZlcmRhbmEsIFRhaG9tYSwgQXJpYWwnLCAgICAjIGxhYmVsIGZvbnQgZmFtaWx5DQogICAgICogICAgICAnZm9udC1zaXplJyA9PiAxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsYWJlbCBmb250IHNpemUNCiAgICAgKiAgICAgICdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsICAgICAgICAgICAgICAgICAgICAjIGxhYmVsIGZvbnQgd2VpZ2h0DQogICAgICogICAgICAnZm9udC1zdHlsZScgPT4gJ25vcm1hbCcsICAgICAgICAgICAgICAgICAgICAgIyBsYWJlbCBmb250IHN0eWxlDQogICAgICogICAgICAnY29sb3InID0+ICcjMDAwMDAwJyAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsYWJlbCBmb250IGNvbG9yDQogICAgICogKTsNCiAgICAgKiA8L2NvZGU+DQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBhcnJheQ0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgYWRkTGFiZWwoKSwgc2V0TGFiZWxBdHRyaWJ1dGVzKCkNCiAgICAgKi8NCiAgICB2YXIgJGxhYmVsID0gYXJyYXkoKTsNCg0KICAgIC8qKg0KICAgICAqIENvbnN0cnVjdG9yIChaRTEpDQogICAgICoNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIEhUTUxfUHJvZ3Jlc3MyX0xpdGUoJG9wdGlvbnMgPSBhcnJheSgpLCAkaWQgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9fY29uc3RydWN0KCRvcHRpb25zLCAkaWQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENvbnN0cnVjdG9yIChaRTIpIFN1bW1hcnkuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBhcnJheSAgICAgJG9wdGlvbnMgICAgICAgKG9wdGlvbmFsKSBoYXMgb2Ygc3R5bGUgcGFyYW1ldGVycw0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcHJvZ3Jlc3MgYmFyDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRpZCAgICAgICAgICAgIChvcHRpb25hbCkgcHJvZ3Jlc3MgYmFyIHVuaXF1ZSBpZGVudGlmaWVyDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICBvYmplY3QNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByb3RlY3RlZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvcHRpb25zID0gYXJyYXkoKSwgJGlkID0gbnVsbCkNCiAgICB7DQogICAgICAgIGlmIChpc19udWxsKCRpZCkpIHsNCiAgICAgICAgICAgICR0aGlzLT5faWRlbnQgPSBzdWJzdHIobWQ1KG1pY3JvdGltZSgpKSwgMCwgNik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdGhpcy0+X2lkZW50ID0gJGlkOw0KICAgIH0NCg0KICAgICAgICAkZGVmYXVsdF9vcHRpb25zID0gYXJyYXkoDQogICAgICAgICAgICAncG9zaXRpb24nID0+ICdhYnNvbHV0ZScsDQogICAgICAgICAgICAnbGVmdCcgPT4gMTAsDQogICAgICAgICAgICAndG9wJyA9PiAyNSwNCiAgICAgICAgICAgICd3aWR0aCcgPT4gMzAwLA0KICAgICAgICAgICAgJ2hlaWdodCcgPT4gMjUsDQogICAgICAgICAgICAncGFkZGluZycgPT4gMCwNCiAgICAgICAgICAgICdtaW4nID0+IDAsDQogICAgICAgICAgICAnbWF4JyA9PiAxMDANCiAgICAgICAgKTsNCiAgICAgICAgJGFsbG93ZWRfb3B0aW9ucyA9IGFycmF5X2tleXMoJGRlZmF1bHRfb3B0aW9ucyk7DQoNCiAgICAgICAgJG9wdGlvbnMgPSBhcnJheV9tZXJnZSgkZGVmYXVsdF9vcHRpb25zLCAkb3B0aW9ucyk7DQoNCiAgICAgICAgZm9yZWFjaCgkb3B0aW9ucyBhcyAkcHJvcCA9PiAkdmFsKSB7DQogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHByb3AsICRhbGxvd2VkX29wdGlvbnMpKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPnskcHJvcH0gPSAkdmFsOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCJvcHRpb24gJyRwcm9wJyBpcyBub3QgYWxsb3dlZCIsIEVfVVNFUl9XQVJOSU5HKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkdGhpcy0+X3NldFN0ZXAoMCk7DQoNCiAgICAgICAgb2JfaW1wbGljaXRfZmx1c2goMSk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogTW92ZXMgdGhlIHByb2dyZXNzIGJhciBpbiBhbGwgZGlyZWN0aW9ucyAobGVmdCwgcmlnaHQsIHVwICwgZG93bikuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJGRpcmVjdGlvbiAgICAgZmlsbCB3YXkgb2YgdGhlIHByb2dyZXNzIGJhcg0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gc2V0RGlyZWN0aW9uKCRkaXJlY3Rpb24pDQogICAgew0KICAgICAgICAkdGhpcy0+ZGlyZWN0aW9uID0gJGRpcmVjdGlvbjsNCg0KICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICRiYXIgPSBvYl9nZXRfY2xlYW4oKTsNCiAgICAgICAgICAgICRwb3NpdGlvbiA9ICR0aGlzLT5fY29tcHV0ZVBvc2l0aW9uKCk7DQoNCiAgICAgICAgICAgICRjc3NUZXh0ICA9ICdsZWZ0OicgLiAkcG9zaXRpb25bJ2xlZnQnXSAuICdweDsnOw0KICAgICAgICAgICAgJGNzc1RleHQgLj0gJ3RvcDonIC4gJHBvc2l0aW9uWyd0b3AnXSAuICdweDsnOw0KICAgICAgICAgICAgJGNzc1RleHQgLj0gJ3dpZHRoOicgLiAkcG9zaXRpb25bJ3dpZHRoJ10gLiAncHg7JzsNCiAgICAgICAgICAgICRjc3NUZXh0IC49ICdoZWlnaHQ6JyAuICRwb3NpdGlvblsnaGVpZ2h0J10gLiAncHg7JzsNCg0KICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUVsZW1lbnRTdHlsZSgncGJhcicsICcnLCAkY3NzVGV4dCk7DQoNCiAgICAgICAgICAgIGVjaG8gJGJhciAuIFBIUF9FT0w7DQogICAgICAgICAgICBvYl9zdGFydCgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQWRkIGEgbmV3IGxhYmVsIHRvIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJHR5cGUgICAgICAgICAgTGFiZWwgdHlwZSAodGV4dCxidXR0b24sc3RlcCxwZXJjZW50LGNyb3NzYmFyKQ0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkbmFtZSAgICAgICAgICBMYWJlbCBuYW1lDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICR2YWx1ZSAgICAgICAgIChvcHRpb25hbCkgZGVmYXVsdCBsYWJlbCB2YWx1ZQ0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgc2V0TGFiZWxBdHRyaWJ1dGVzKCksIHJlbW92ZUxhYmVsKCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBhZGRMYWJlbCgkdHlwZSwgJG5hbWUsICR2YWx1ZSA9ICcmbmJzcDsnKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoKCR0eXBlKSB7DQogICAgICAgIGNhc2UgJ3RleHQnOg0KICAgICAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkdHlwZSwNCiAgICAgICAgICAgICAgICAndmFsdWUnID0+ICR2YWx1ZSwNCiAgICAgICAgICAgICAgICAnbGVmdCcgPT4gJHRoaXMtPmxlZnQsDQogICAgICAgICAgICAgICAgJ3RvcCcgPT4gJHRoaXMtPnRvcCAtIDE2LA0KICAgICAgICAgICAgICAgICd3aWR0aCcgPT4gMCwNCiAgICAgICAgICAgICAgICAnaGVpZ2h0JyA9PiAwLA0KICAgICAgICAgICAgICAgICdhbGlnbicgPT4gJ2xlZnQnLA0KICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA9PiAndHJhbnNwYXJlbnQnLA0KICAgICAgICAgICAgICAgICdmb250LXNpemUnID0+IDExLA0KICAgICAgICAgICAgICAgICdmb250LWZhbWlseScgPT4gJ1ZlcmRhbmEsIFRhaG9tYSwgQXJpYWwnLA0KICAgICAgICAgICAgICAgICdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnID0+ICdub3JtYWwnLA0KICAgICAgICAgICAgICAgICdjb2xvcicgPT4gJyMwMDAwMDAnDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJ2J1dHRvbic6DQogICAgICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgJ3R5cGUnID0+ICR0eXBlLA0KICAgICAgICAgICAgICAgICd2YWx1ZScgPT4gJHZhbHVlLA0KICAgICAgICAgICAgICAgICdhY3Rpb24nID0+ICcnLA0KICAgICAgICAgICAgICAgICd0YXJnZXQnID0+ICdzZWxmJywNCiAgICAgICAgICAgICAgICAnbGVmdCcgPT4gJHRoaXMtPmxlZnQsDQogICAgICAgICAgICAgICAgJ3RvcCcgPT4gJHRoaXMtPnRvcCArICR0aGlzLT5oZWlnaHQgKyAxMCwNCiAgICAgICAgICAgICAgICAnd2lkdGgnID0+IDAsDQogICAgICAgICAgICAgICAgJ2hlaWdodCcgPT4gMCwNCiAgICAgICAgICAgICAgICAnYWxpZ24nID0+ICdjZW50ZXInLA0KICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA9PiAndHJhbnNwYXJlbnQnLA0KICAgICAgICAgICAgICAgICdmb250LXNpemUnID0+IDExLA0KICAgICAgICAgICAgICAgICdmb250LWZhbWlseScgPT4gJ1ZlcmRhbmEsIFRhaG9tYSwgQXJpYWwnLA0KICAgICAgICAgICAgICAgICdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnID0+ICdub3JtYWwnLA0KICAgICAgICAgICAgICAgICdjb2xvcicgPT4gJyMwMDAwMDAnDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJ3N0ZXAnOg0KICAgICAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkdHlwZSwNCiAgICAgICAgICAgICAgICAndmFsdWUnID0+ICR2YWx1ZSwNCiAgICAgICAgICAgICAgICAnbGVmdCcgPT4gJHRoaXMtPmxlZnQgKyA1LA0KICAgICAgICAgICAgICAgICd0b3AnID0+ICR0aGlzLT50b3AgKyA1LA0KICAgICAgICAgICAgICAgICd3aWR0aCcgPT4gMTAsDQogICAgICAgICAgICAgICAgJ2hlaWdodCcgPT4gMCwNCiAgICAgICAgICAgICAgICAnYWxpZ24nID0+ICdyaWdodCcsDQogICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InID0+ICd0cmFuc3BhcmVudCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZScgPT4gMTEsDQogICAgICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5JyA9PiAnVmVyZGFuYSwgVGFob21hLCBBcmlhbCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0JyA9PiAnbm9ybWFsJywNCiAgICAgICAgICAgICAgICAnZm9udC1zdHlsZScgPT4gJ25vcm1hbCcsDQogICAgICAgICAgICAgICAgJ2NvbG9yJyA9PiAnIzAwMDAwMCcNCiAgICAgICAgICAgICk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAncGVyY2VudCc6DQogICAgICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgJ3R5cGUnID0+ICR0eXBlLA0KICAgICAgICAgICAgICAgICd2YWx1ZScgPT4gJHZhbHVlLA0KICAgICAgICAgICAgICAgICdsZWZ0JyA9PiAkdGhpcy0+bGVmdCArICR0aGlzLT53aWR0aCAtIDUwLA0KICAgICAgICAgICAgICAgICd0b3AnID0+ICR0aGlzLT50b3AgLSAxNiwNCiAgICAgICAgICAgICAgICAnd2lkdGgnID0+IDUwLA0KICAgICAgICAgICAgICAgICdoZWlnaHQnID0+IDAsDQogICAgICAgICAgICAgICAgJ2FsaWduJyA9PiAncmlnaHQnLA0KICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA9PiAndHJhbnNwYXJlbnQnLA0KICAgICAgICAgICAgICAgICdmb250LXNpemUnID0+IDExLA0KICAgICAgICAgICAgICAgICdmb250LWZhbWlseScgPT4gJ1ZlcmRhbmEsIFRhaG9tYSwgQXJpYWwnLA0KICAgICAgICAgICAgICAgICdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnID0+ICdub3JtYWwnLA0KICAgICAgICAgICAgICAgICdjb2xvcicgPT4gJyMwMDAwMDAnDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJ2Nyb3NzYmFyJzoNCiAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV0gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAndHlwZScgPT4gJHR5cGUsDQogICAgICAgICAgICAgICAgJ3ZhbHVlJyA9PiAkdmFsdWUsDQogICAgICAgICAgICAgICAgJ2xlZnQnID0+ICR0aGlzLT5sZWZ0ICsgKCR0aGlzLT53aWR0aCAvIDIpLA0KICAgICAgICAgICAgICAgICd0b3AnID0+ICR0aGlzLT50b3AgLSAxNiwNCiAgICAgICAgICAgICAgICAnd2lkdGgnID0+IDEwLA0KICAgICAgICAgICAgICAgICdoZWlnaHQnID0+IDAsDQogICAgICAgICAgICAgICAgJ2FsaWduJyA9PiAnY2VudGVyJywNCiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicgPT4gJ3RyYW5zcGFyZW50JywNCiAgICAgICAgICAgICAgICAnZm9udC1zaXplJyA9PiAxMSwNCiAgICAgICAgICAgICAgICAnZm9udC1mYW1pbHknID0+ICdWZXJkYW5hLCBUYWhvbWEsIEFyaWFsJywNCiAgICAgICAgICAgICAgICAnZm9udC13ZWlnaHQnID0+ICdub3JtYWwnLA0KICAgICAgICAgICAgICAgICdmb250LXN0eWxlJyA9PiAnbm9ybWFsJywNCiAgICAgICAgICAgICAgICAnY29sb3InID0+ICcjMDAwMDAwJw0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVtb3ZlcyBhIGxhYmVsIHRvIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJG5hbWUgICAgICAgICAgTGFiZWwgbmFtZQ0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgYWRkTGFiZWwoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHJlbW92ZUxhYmVsKCRuYW1lKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5sYWJlbFskbmFtZV0pICYmICR0aGlzLT5sYWJlbFskbmFtZV1bJ3R5cGUnXSAhPSAnYnV0dG9uJykgew0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxhYmVsWyRuYW1lXSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGQgYSBuZXcgYnV0dG9uIHdpdGggdGhlIHByb2dyZXNzIGJhci4NCiAgICAgKg0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkbmFtZSAgICAgICAgICBCdXR0b24gbmFtZQ0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkdmFsdWUgICAgICAgICBMYWJlbCB2YWx1ZQ0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkYWN0aW9uICAgICAgICBBY3Rpb24gdG8gZG8gKHNlZSBRVUVSWV9TVFJJTkcpDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICR0YXJnZXQgICAgICAgIChvcHRpb25hbCkgRnJhbWUgdGFyZ2V0IChkZWZhdWx0IGlzIHNlbGYpDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKiBAc2VlICAgICAgICByZW1vdmVCdXR0b24oKSwgYWRkTGFiZWwoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGFkZEJ1dHRvbigkbmFtZSwgJHZhbHVlLCAkYWN0aW9uLCAkdGFyZ2V0ID0gJ3NlbGYnKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmFkZExhYmVsKCdidXR0b24nLCAkbmFtZSwgJHZhbHVlKTsNCiAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXVsnYWN0aW9uJ10gPSAkYWN0aW9uOw0KICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdWyd0YXJnZXQnXSA9ICR0YXJnZXQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVtb3ZlcyBhIGJ1dHRvbiB0byB0aGUgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRuYW1lICAgICAgICAgIExhYmVsIG5hbWUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqIEBzZWUgICAgICAgIGFkZEJ1dHRvbigpDQogICAgICovDQogICAgZnVuY3Rpb24gcmVtb3ZlQnV0dG9uKCRuYW1lKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5sYWJlbFskbmFtZV0pICYmICR0aGlzLT5sYWJlbFskbmFtZV1bJ3R5cGUnXSA9PSAnYnV0dG9uJykgew0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxhYmVsWyRuYW1lXSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBCdWlsZCBhIGZyYW1lIGFyb3VuZCB0aGUgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgYXJyYXkgICAgICRhdHRyaWJ1dGVzICAgIChvcHRpb25hbCkgaGFzaCBvZiBzdHlsZSBwYXJhbWV0ZXJzDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzZXRGcmFtZUF0dHJpYnV0ZXMoJGF0dHJpYnV0ZXMgPSBhcnJheSgpKQ0KICAgIHsNCiAgICAgICAgJGRlZmF1bHQgPSBhcnJheSgNCiAgICAgICAgICAgICdzaG93JyA9PiB0cnVlLA0KICAgICAgICAgICAgJ2xlZnQnID0+IDIwMCwNCiAgICAgICAgICAgICd0b3AnID0+IDEwMCwNCiAgICAgICAgICAgICd3aWR0aCcgPT4gMzIwLA0KICAgICAgICAgICAgJ2hlaWdodCcgPT4gOTAsDQogICAgICAgICAgICAnY29sb3InID0+ICcjQzBDMEMwJywNCiAgICAgICAgICAgICdib3JkZXItd2lkdGgnID0+IDIsDQogICAgICAgICAgICAnYm9yZGVyLXN0eWxlJyA9PiAnc29saWQnLA0KICAgICAgICAgICAgJ2JvcmRlci1jb2xvcicgPT4gJyNERkRGREYgIzQwNDA0MCAjNDA0MDQwICNERkRGREYnDQogICAgICAgICk7DQogICAgICAgICRhbGxvd2VkX29wdGlvbnMgPSBhcnJheV9rZXlzKCRkZWZhdWx0KTsNCg0KICAgICAgICAkb3B0aW9ucyA9IGFycmF5X21lcmdlKCRkZWZhdWx0LCAkYXR0cmlidXRlcyk7DQoNCiAgICAgICAgZm9yZWFjaCgkb3B0aW9ucyBhcyAkcHJvcCA9PiAkdmFsKSB7DQogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHByb3AsICRhbGxvd2VkX29wdGlvbnMpKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmZyYW1lWyRwcm9wXSA9ICR2YWw7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoImZyYW1lIG9wdGlvbiAnJHByb3AnIGlzIG5vdCBhbGxvd2VkIiwgRV9VU0VSX1dBUk5JTkcpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogRGVmaW5lcyBtYWluIHN0eWxlIG9mIGEgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgYXJyYXkgICAgICRhdHRyaWJ1dGVzICAgIChvcHRpb25hbCkgaGFzaCBvZiBzdHlsZSBwYXJhbWV0ZXJzDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzZXRCYXJBdHRyaWJ1dGVzKCRhdHRyaWJ1dGVzID0gYXJyYXkoKSkNCiAgICB7DQogICAgICAgICRjc3NUZXh0ID0gJGNzc1RleHRfYm9yZGVyID0gJyc7DQogICAgICAgICRiYXIgID0gb2JfZ2V0X2NsZWFuKCk7DQoNCiAgICAgICAgZm9yZWFjaCAoJGF0dHJpYnV0ZXMgYXMgJGF0dHJOYW1lID0+ICRhdHRyVmFsKSB7DQogICAgICAgICAgICBpZiAoJGF0dHJOYW1lID09ICdib3JkZXItc3R5bGUnKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmJvcmRlclsnc3R5bGUnXSA9ICRhdHRyVmFsOw0KICAgICAgICAgICAgICAgICRjc3NUZXh0X2JvcmRlciAuPSAnYm9yZGVyU3R5bGU6JyAuICR0aGlzLT5ib3JkZXJbJ3N0eWxlJ10gLiAnOyc7DQoNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2JvcmRlci13aWR0aCcpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+Ym9yZGVyWyd3aWR0aCddID0gJGF0dHJWYWw7DQogICAgICAgICAgICAgICAgJGNzc1RleHRfYm9yZGVyIC49ICdib3JkZXJXaWR0aDonIC4gJHRoaXMtPmJvcmRlclsnd2lkdGgnXSAuICdweDsnOw0KDQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICdib3JkZXItY29sb3InKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmJvcmRlclsnY29sb3InXSA9ICRhdHRyVmFsOw0KICAgICAgICAgICAgICAgICRjc3NUZXh0X2JvcmRlciAuPSAnYm9yZGVyQ29sb3I6JyAuICR0aGlzLT5ib3JkZXJbJ2NvbG9yJ10gLiAnOyc7DQoNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2JhY2tncm91bmQtY29sb3InKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmJhY2tncm91bmRfY29sb3IgPSAkYXR0clZhbDsNCiAgICAgICAgICAgICAgICAkY3NzVGV4dF9ib3JkZXIgLj0gJ2JhY2tncm91bmRDb2xvcjonIC4gJHRoaXMtPmJhY2tncm91bmRfY29sb3IgLiAnOyc7DQoNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2NvbG9yJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5mb3JlZ3JvdW5kX2NvbG9yID0gJGF0dHJWYWw7DQogICAgICAgICAgICAgICAgJGNzc1RleHQgLj0gJ2JhY2tncm91bmRDb2xvcjonIC4gJHRoaXMtPmZvcmVncm91bmRfY29sb3IgLiAnOyc7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgIGlmICghZW1wdHkoJGNzc1RleHRfYm9yZGVyKSkgew0KICAgICAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BicmQnLCAnJywgJGNzc1RleHRfYm9yZGVyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghZW1wdHkoJGNzc1RleHQpKSB7DQogICAgICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUVsZW1lbnRTdHlsZSgncGJhcicsICcnLCAkY3NzVGV4dCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBlY2hvICRiYXIgLiBQSFBfRU9MOw0KICAgICAgICBvYl9zdGFydCgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIERlZmluZXMgc3R5bGUgb2YgYSBwcm9ncmVzcyBiYXIgbGFiZWwuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJG5hbWUgICAgICAgICAgTGFiZWwgaWRlbnRpZmllcg0KICAgICAqIEBwYXJhbSAgICAgIGFycmF5ICAgICAkYXR0cmlidXRlcyAgICAob3B0aW9uYWwpIGhhc2ggb2Ygc3R5bGUgcGFyYW1ldGVycw0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgYWRkTGFiZWwoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNldExhYmVsQXR0cmlidXRlcygkbmFtZSwgJGF0dHJpYnV0ZXMgPSBhcnJheSgpKQ0KICAgIHsNCiAgICAgICAgJGZvbnRmYW1pbHkgPSAkZm9udHdlaWdodCA9ICcnOw0KDQogICAgICAgICRiYXIgPSBvYl9nZXRfY2xlYW4oKTsNCg0KICAgICAgICBmb3JlYWNoICgkYXR0cmlidXRlcyBhcyAkYXR0ck5hbWUgPT4gJGF0dHJWYWwpIHsNCiAgICAgICAgICAgIGlmICgkYXR0ck5hbWUgPT0gJ2NvbG9yJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2NvbG9yJ10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICAgICAgICAgJGNzc1RleHQgPSAnY29sb3I6JyAuICR0aGlzLT5sYWJlbFskbmFtZV1bJ2NvbG9yJ10gLiAnOyc7DQogICAgICAgICAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BsYmwnLCAkbmFtZSwgJGNzc1RleHQpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhdHRyTmFtZSA9PSAnYmFja2dyb3VuZC1jb2xvcicpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICAgICAgICAgJGNzc1RleHQgPSAnYmFja2dyb3VuZENvbG9yOicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydiYWNrZ3JvdW5kLWNvbG9yJ10gLiAnOyc7DQogICAgICAgICAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BsYmwnLCAkbmFtZSwgJGNzc1RleHQpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhdHRyTmFtZSA9PSAnZm9udC1zaXplJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2ZvbnQtc2l6ZSddID0gJGZvbnQgPSAkYXR0clZhbDsNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2ZvbnQtZmFtaWx5Jykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2ZvbnQtZmFtaWx5J10gPSAkZm9udCA9ICRhdHRyVmFsOw0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhdHRyTmFtZSA9PSAnZm9udC13ZWlnaHQnKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXVsnZm9udC13ZWlnaHQnXSA9ICRmb250ID0gJGF0dHJWYWw7DQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICdmb250LXN0eWxlJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2ZvbnQtc3R5bGUnXSA9ICRmb250ID0gJGF0dHJWYWw7DQoNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ3ZhbHVlJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ3ZhbHVlJ10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUxhYmVsVGV4dCgkbmFtZSwgJHRoaXMtPmxhYmVsWyRuYW1lXVsndmFsdWUnXSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICdsZWZ0Jykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2xlZnQnXSA9ICRhdHRyVmFsOw0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhdHRyTmFtZSA9PSAndG9wJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ3RvcCddID0gJGF0dHJWYWw7DQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICd3aWR0aCcpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdWyd3aWR0aCddID0gJGF0dHJWYWw7DQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICdoZWlnaHQnKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXVsnaGVpZ2h0J10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2FsaWduJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2FsaWduJ10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoaXNzZXQoJGZvbnQpKSB7DQogICAgICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICAgICAkY3NzVGV4dCA9ICdmb250U2l6ZTonIC4gJHRoaXMtPmxhYmVsWyRuYW1lXVsnZm9udC1zaXplJ10gLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ2ZvbnRGYW1pbHk6JyAuICR0aGlzLT5sYWJlbFskbmFtZV1bJ2ZvbnQtZmFtaWx5J10gLiAnOycNCiAgICAgICAgICAgICAgICAgICAgICAgICAuICdmb250V2VpZ2h0OicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydmb250LXdlaWdodCddIC4gJzsnDQogICAgICAgICAgICAgICAgICAgICAgICAgLiAnZm9udFN0eWxlOicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydmb250LXN0eWxlJ10gLiAnOyc7DQoNCiAgICAgICAgICAgICAgICAkYmFyIC49ICR0aGlzLT5fY2hhbmdlRWxlbWVudFN0eWxlKCdwbGJsJywgJG5hbWUsICRjc3NUZXh0KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgkdGhpcy0+X3N0YXR1cyAhPSAnbmV3Jykgew0KICAgICAgICAgICAgJGNzc1RleHQgPSAndG9wOicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWyd0b3AnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgICAuICdsZWZ0OicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydsZWZ0J10gLiAncHg7JzsNCg0KICAgICAgICAgICAgaWYoJHRoaXMtPmxhYmVsWyRuYW1lXVsnd2lkdGgnXSA+IDApIHsNCiAgICAgICAgICAgICAgICAkY3NzVGV4dCAuPSAnd2lkdGg6JyAuICR0aGlzLT5sYWJlbFskbmFtZV1bJ3dpZHRoJ10gLiAncHg7JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKCR0aGlzLT5sYWJlbFskbmFtZV1bJ2hlaWdodCddID4gMCkgew0KICAgICAgICAgICAgICAgICRjc3NUZXh0IC49ICdoZWlnaHQ6JyAuICR0aGlzLT5sYWJlbFskbmFtZV1bJ2hlaWdodCddIC4gJ3B4Oyc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkY3NzVGV4dCAuPSAndGV4dEFsaWduOicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydhbGlnbiddIC4nOyc7DQoNCiAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BsYmwnLCAkbmFtZSwgJGNzc1RleHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZWNobyAkYmFyIC4gUEhQX0VPTDsNCiAgICAgICAgb2Jfc3RhcnQoKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDaGFuZ2VzIG5ldyBzdGVwIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBpbnRlZ2VyICAgJHN0ZXAgICAgICAgICAgbmV3IHN0ZXAgdmFsdWUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIG1vdmVTdGVwKCRzdGVwKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9zZXRTdGVwKCRzdGVwKTsNCiAgICAgICAgJHBvc2l0aW9uID0gJHRoaXMtPl9jb21wdXRlUG9zaXRpb24oKTsNCiAgICAgICAgJGJhciA9IG9iX2dldF9jbGVhbigpOw0KDQogICAgICAgICRjc3NUZXh0ID0gJyc7DQogICAgICAgIGlmICgkdGhpcy0+ZGlyZWN0aW9uID09ICdyaWdodCcgfHwgJHRoaXMtPmRpcmVjdGlvbiA9PSAnbGVmdCcpIHsNCiAgICAgICAgICAgIGlmICgkdGhpcy0+ZGlyZWN0aW9uID09ICdsZWZ0Jykgew0KICAgICAgICAgICAgICAgICRjc3NUZXh0IC49ICdsZWZ0OicgLiAkcG9zaXRpb25bJ2xlZnQnXSAuICdweDsnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGNzc1RleHQgLj0gJ3dpZHRoOicgLiAkcG9zaXRpb25bJ3dpZHRoJ10gLiAncHg7JzsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJHRoaXMtPmRpcmVjdGlvbiA9PSAndXAnIHx8ICR0aGlzLT5kaXJlY3Rpb24gPT0gJ2Rvd24nKSB7DQogICAgICAgICAgICBpZiAoJHRoaXMtPmRpcmVjdGlvbiA9PSAndXAnKSB7DQogICAgICAgICAgICAgICAgJGNzc1RleHQgLj0gJ3RvcDonIC4gJHBvc2l0aW9uWyd0b3AnXSAuICdweDsnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGNzc1RleHQgLj0gJ2hlaWdodDonIC4gJHBvc2l0aW9uWydoZWlnaHQnXSAuICdweDsnOw0KICAgICAgICB9DQogICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BiYXInLCAnJywgJGNzc1RleHQpOw0KDQogICAgICAgIGZvcmVhY2goJHRoaXMtPmxhYmVsIGFzICRuYW1lID0+ICRkYXRhKSB7DQogICAgICAgICAgICBzd2l0Y2goJGRhdGFbJ3R5cGUnXSkgew0KICAgICAgICAgICAgY2FzZSAnc3RlcCc6DQogICAgICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUxhYmVsVGV4dCgkbmFtZSwgJHRoaXMtPl9zdGVwLicvJy4kdGhpcy0+bWF4KTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3BlcmNlbnQnOg0KICAgICAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VMYWJlbFRleHQoJG5hbWUsICR0aGlzLT5fY29tcHV0ZVBlcmNlbnQoKSAuICclJyk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdjcm9zc2Jhcic6DQogICAgICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUNyb3NzSXRlbSgkbmFtZSk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBlY2hvICRiYXIgLiBQSFBfRU9MOw0KICAgICAgICBvYl9zdGFydCgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENoYW5nZXMgdmFsdWUgb2YgdGhlIHByb2dyZXNzIGJhciB0byB0aGUgbmV4dCBzdGVwLg0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgbW92ZVN0ZXAoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIG1vdmVOZXh0KCkNCiAgICB7DQogICAgICAgICR0aGlzLT5tb3ZlU3RlcCgkdGhpcy0+X3N0ZXAgKyAxKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDaGFuZ2VzIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBiYXIgdG8gdGhlIG1pbmltdW0gc3RlcC4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqIEBzZWUgICAgICAgIG1vdmVTdGVwKCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBtb3ZlTWluKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5tb3ZlU3RlcCgkdGhpcy0+bWluKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm5zIHRoZSBwcm9ncmVzcyBiYXIgc3RydWN0dXJlIGFzIEhUTUwuDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICBzdHJpbmcNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqIEBzZWUgICAgICAgIGRpc3BsYXkoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRvSHRtbCgpDQogICAgew0KICAgICAgICAkaHRtbCA9ICcnOw0KICAgICAgICAkanMgPSAnJzsNCg0KICAgICAgICAvLyR0aGlzLT5fc2V0U3RlcCgkdGhpcy0+X3N0ZXApOw0KICAgICAgICAkcG9zaXRpb24gPSAkdGhpcy0+X2NvbXB1dGVQb3NpdGlvbigpOw0KDQogICAgICAgICRzdHlsZV9icmQgPSAncG9zaXRpb246YWJzb2x1dGU7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ3RvcDonIC4gJHRoaXMtPnRvcCAuICdweDsnDQogICAgICAgICAgICAgICAgICAgLiAnbGVmdDonIC4gJHRoaXMtPmxlZnQgLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ3dpZHRoOicgLiAkdGhpcy0+d2lkdGggLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ2hlaWdodDonIC4gJHRoaXMtPmhlaWdodCAuICdweDsnDQogICAgICAgICAgICAgICAgICAgLiAnYmFja2dyb3VuZC1jb2xvcjonIC4gJHRoaXMtPmJhY2tncm91bmRfY29sb3IgLiAnOyc7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5ib3JkZXJbJ3dpZHRoJ10gPiAwICkgew0KICAgICAgICAgICAgJHN0eWxlX2JyZCAuPSAnYm9yZGVyLXdpZHRoOicgLiAkdGhpcy0+Ym9yZGVyWyd3aWR0aCddIC4gJ3B4OycNCiAgICAgICAgICAgICAgICAgICAgICAgLiAgJ2JvcmRlci1zdHlsZTonIC4gJHRoaXMtPmJvcmRlclsnc3R5bGUnXSAuICc7Jw0KICAgICAgICAgICAgICAgICAgICAgICAuICAnYm9yZGVyLWNvbG9yOicgLiAkdGhpcy0+Ym9yZGVyWydjb2xvciddIC4gJzsnOw0KICAgICAgICB9DQogICAgICAgICRzdHlsZV9iYXIgPSAncG9zaXRpb246YWJzb2x1dGU7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ3RvcDonIC4gJHBvc2l0aW9uWyd0b3AnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgLiAnbGVmdDonIC4gJHBvc2l0aW9uWydsZWZ0J10gLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ3dpZHRoOicgLiAkcG9zaXRpb25bJ3dpZHRoJ10gLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ2hlaWdodDonIC4gJHBvc2l0aW9uWydoZWlnaHQnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgLiAnYmFja2dyb3VuZC1jb2xvcjonIC4gJHRoaXMtPmZvcmVncm91bmRfY29sb3IgLiAnOyc7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5mcmFtZVsnc2hvdyddKSB7DQogICAgICAgICAgICBpZiAoJHRoaXMtPmZyYW1lWydib3JkZXItd2lkdGgnXSA+IDApIHsNCiAgICAgICAgICAgICAgICAkYm9yZGVyID0gJ2JvcmRlci13aWR0aDonIC4gJHRoaXMtPmZyYW1lWydib3JkZXItd2lkdGgnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgICAgICAuICdib3JkZXItc3R5bGU6JyAuICR0aGlzLT5mcmFtZVsnYm9yZGVyLXN0eWxlJ10gLiAnOycNCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ2JvcmRlci1jb2xvcjonIC4gJHRoaXMtPmZyYW1lWydib3JkZXItY29sb3InXSAuICc7JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkdGhpcy0+cG9zaXRpb24gPT0gJ3JlbGF0aXZlJykgew0KICAgICAgICAgICAgICAgICRodG1sID0gJzxkaXYgaWQ9InRmcm0nIC4gJHRoaXMtPl9pZGVudCAuICciJw0KICAgICAgICAgICAgICAgICAgICAgIC4gJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dG9wOjA7bGVmdDowOyI+Jw0KICAgICAgICAgICAgICAgICAgICAgIC4gUEhQX0VPTDsNCiAgICAgICAgICAgICAgICAkdG9wID0gJGxlZnQgPSAwOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkdG9wID0gJHRoaXMtPmZyYW1lWyd0b3AnXTsNCiAgICAgICAgICAgICAgICAkbGVmdCA9ICR0aGlzLT5mcmFtZVsnbGVmdCddOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGh0bWwgLj0gJzxkaXYgaWQ9InBmcm0nIC4gJHRoaXMtPl9pZGVudCAuJyIgc3R5bGU9IicNCiAgICAgICAgICAgICAgICAgIC4gICdwb3NpdGlvbjphYnNvbHV0ZTsnDQogICAgICAgICAgICAgICAgICAuICAndG9wOicgLiAkdG9wIC4gJ3B4OycNCiAgICAgICAgICAgICAgICAgIC4gICdsZWZ0OicgLiAkbGVmdCAuICdweDsnDQogICAgICAgICAgICAgICAgICAuICAnd2lkdGg6JyAuICR0aGlzLT5mcmFtZVsnd2lkdGgnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAuICAnaGVpZ2h0OicgLiAkdGhpcy0+ZnJhbWVbJ2hlaWdodCddIC4gJ3B4OycNCiAgICAgICAgICAgICAgICAgIC4gICRib3JkZXINCiAgICAgICAgICAgICAgICAgIC4gICdiYWNrZ3JvdW5kLWNvbG9yOicgLiAkdGhpcy0+ZnJhbWVbJ2NvbG9yJ10gLiAnOyI+Jw0KICAgICAgICAgICAgICAgICAgLiAgUEhQX0VPTDsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGlmICgkdGhpcy0+cG9zaXRpb24gPT0gJ3JlbGF0aXZlJykgew0KICAgICAgICAgICAgICAgICRodG1sID0gJzxkaXYgaWQ9InRmcm0nIC4gJHRoaXMtPl9pZGVudCAuICciJw0KICAgICAgICAgICAgICAgICAgICAgIC4gJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dG9wOjA7bGVmdDowOyI+Jw0KICAgICAgICAgICAgICAgICAgICAgIC4gUEhQX0VPTDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICRodG1sIC49ICc8ZGl2IGlkPSJwYnJkJy4kdGhpcy0+X2lkZW50LiciIHN0eWxlPSInLiRzdHlsZV9icmQuJyI+Jy5QSFBfRU9MOw0KICAgICAgICAkaHRtbCAuPSAnPGRpdiBpZD0icGJhcicuJHRoaXMtPl9pZGVudC4nIiBzdHlsZT0iJy4kc3R5bGVfYmFyLiciPjwvZGl2PjwvZGl2PicuUEhQX0VPTDsNCg0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+bGFiZWwgYXMgJG5hbWUgPT4gJGRhdGEpIHsNCiAgICAgICAgICAgICRzdHlsZV9sYmwgPSAncG9zaXRpb246YWJzb2x1dGU7Jw0KICAgICAgICAgICAgICAgICAgICAgICAuICd0b3A6JyAuICRkYXRhWyd0b3AnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgICAgIC4gJ2xlZnQ6JyAuICRkYXRhWydsZWZ0J10gLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgICAgICAuICd0ZXh0LWFsaWduOicgLiAkZGF0YVsnYWxpZ24nXSAuICc7JzsNCg0KICAgICAgICAgICAgaWYgKCRkYXRhWyd3aWR0aCddID4gMCkgew0KICAgICAgICAgICAgICAgICRzdHlsZV9sYmwgLj0gJ3dpZHRoOicgLiAkZGF0YVsnd2lkdGgnXSAuICdweDsnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRkYXRhWydoZWlnaHQnXSA+IDApIHsNCiAgICAgICAgICAgICAgICAkc3R5bGVfbGJsIC49ICdoZWlnaHQ6JyAuICRkYXRhWydoZWlnaHQnXSAuICdweDsnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHN0eWxlX2xibCAuPSAnY29sb3I6JyAuICRkYXRhWydjb2xvciddIC4nOycNCiAgICAgICAgICAgICAgICAgICAgICAgLiAgJ2ZvbnQtc2l6ZTonIC4gJGRhdGFbJ2ZvbnQtc2l6ZSddIC4gJ3B4OycNCiAgICAgICAgICAgICAgICAgICAgICAgLiAgJ2ZvbnQtZmFtaWx5OicgLiAkZGF0YVsnZm9udC1mYW1pbHknXSAuICc7Jw0KICAgICAgICAgICAgICAgICAgICAgICAuICAnZm9udC13ZWlnaHQ6JyAuICRkYXRhWydmb250LXdlaWdodCddIC4gJzsnOw0KDQogICAgICAgICAgICBpZiAoJGRhdGFbJ2JhY2tncm91bmQtY29sb3InXSAhPSAnJykgew0KICAgICAgICAgICAgICAgICRzdHlsZV9sYmwgLj0gJ2JhY2tncm91bmQtY29sb3I6JyAuICRkYXRhWydiYWNrZ3JvdW5kLWNvbG9yJ10gLiAnOyc7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN3aXRjaCgkZGF0YVsndHlwZSddKSB7DQogICAgICAgICAgICBjYXNlICdidXR0b24nOg0KICAgICAgICAgICAgICAgICRodG1sIC49ICc8ZGl2PjxpbnB1dCBpZD0icGxibCcgLiAkbmFtZSAuICR0aGlzLT5faWRlbnQNCiAgICAgICAgICAgICAgICAgICAgICAuICAnIiB0eXBlPSJidXR0b24iIHZhbHVlPSInIC4gJGRhdGFbJ3ZhbHVlJ10NCiAgICAgICAgICAgICAgICAgICAgICAuICAnIiBzdHlsZT0iJyAuICRzdHlsZV9sYmwNCiAgICAgICAgICAgICAgICAgICAgICAuICAnIiBvbmNsaWNrPSInIC4gJGRhdGFbJ3RhcmdldCddDQogICAgICAgICAgICAgICAgICAgICAgLiAgJy5sb2NhdGlvbi5ocmVmPVwnJyAuICRkYXRhWydhY3Rpb24nXSAuICdcJyIgLz48L2Rpdj4nDQogICAgICAgICAgICAgICAgICAgICAgLiAgUEhQX0VPTDsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3N0ZXAnOg0KICAgICAgICAgICAgICAgICRodG1sIC49ICc8ZGl2IGlkPSJwbGJsJyAuICRuYW1lIC4gJHRoaXMtPl9pZGVudA0KICAgICAgICAgICAgICAgICAgICAgIC4gICciIHN0eWxlPSInIC4gJHN0eWxlX2xibCAuICciPicNCiAgICAgICAgICAgICAgICAgICAgICAuICAkdGhpcy0+X3N0ZXANCiAgICAgICAgICAgICAgICAgICAgICAuICAnPC9kaXY+Jw0KICAgICAgICAgICAgICAgICAgICAgIC4gIFBIUF9FT0w7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdwZXJjZW50JzoNCiAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPGRpdiBpZD0icGxibCcgLiAkbmFtZSAuICR0aGlzLT5faWRlbnQNCiAgICAgICAgICAgICAgICAgICAgICAuICAnIiBzdHlsZT0iJyAuICRzdHlsZV9sYmwgLiAnIj4nDQogICAgICAgICAgICAgICAgICAgICAgLiAgJHRoaXMtPl9jb21wdXRlUGVyY2VudCgpIC4gJyUnDQogICAgICAgICAgICAgICAgICAgICAgLiAgJzwvZGl2PicNCiAgICAgICAgICAgICAgICAgICAgICAuICBQSFBfRU9MOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAndGV4dCc6DQogICAgICAgICAgICBjYXNlICdjcm9zc2Jhcic6DQogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzxkaXYgaWQ9InBsYmwnIC4gJG5hbWUgLiAkdGhpcy0+X2lkZW50DQogICAgICAgICAgICAgICAgICAgICAgLiAgJyIgc3R5bGU9IicgLiAkc3R5bGVfbGJsIC4gJyI+Jw0KICAgICAgICAgICAgICAgICAgICAgIC4gICRkYXRhWyd2YWx1ZSddDQogICAgICAgICAgICAgICAgICAgICAgLiAgJzwvZGl2PicNCiAgICAgICAgICAgICAgICAgICAgICAuICBQSFBfRU9MOw0KICAgICAgICAgICAgICAgIGlmICgkZGF0YVsndHlwZSddID09ICdjcm9zc2JhcicpIHsNCiAgICAgICAgICAgICAgICAgICAgJGpzIC49ICdmdW5jdGlvbiBzZXRSb3RhcnlDcm9zcycuJG5hbWUuJHRoaXMtPl9pZGVudC4nKCkgeycuUEhQX0VPTDsNCiAgICAgICAgICAgICAgICAgICAgJGpzIC49ICcgY3Jvc3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxibCcuJG5hbWUuJHRoaXMtPl9pZGVudC4nIikuZmlyc3RDaGlsZC5ub2RlVmFsdWU7Jy5QSFBfRU9MOw0KICAgICAgICAgICAgICAgICAgICAkanMgLj0gJyBzd2l0Y2goY3Jvc3MpIHsnLlBIUF9FT0w7DQogICAgICAgICAgICAgICAgICAgICRqcyAuPSAnICBjYXNlICItLSI6IGNyb3NzID0gIlxcXFwiOyBicmVhazsnLlBIUF9FT0w7DQogICAgICAgICAgICAgICAgICAgICRqcyAuPSAnICBjYXNlICJcXFxcIjogY3Jvc3MgPSAifCI7IGJyZWFrOycuUEhQX0VPTDsNCiAgICAgICAgICAgICAgICAgICAgJGpzIC49ICcgIGNhc2UgInwiOiBjcm9zcyA9ICIvIjsgYnJlYWs7Jy5QSFBfRU9MOw0KICAgICAgICAgICAgICAgICAgICAkanMgLj0gJyAgZGVmYXVsdDogY3Jvc3MgPSAiLS0iOyBicmVhazsnLlBIUF9FT0w7DQogICAgICAgICAgICAgICAgICAgICRqcyAuPSAnIH0nLlBIUF9FT0w7DQogICAgICAgICAgICAgICAgICAgICRqcyAuPSAnIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbGJsJy4kbmFtZS4kdGhpcy0+X2lkZW50LiciKS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9IGNyb3NzOycuUEhQX0VPTDsNCiAgICAgICAgICAgICAgICAgICAgJGpzIC49ICd9Jy5QSFBfRU9MOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChjb3VudCgkdGhpcy0+bGFiZWwpID4gMCkgew0KICAgICAgICAgICAgJGpzIC49ICdmdW5jdGlvbiBzZXRMYWJlbFRleHQnLiR0aGlzLT5faWRlbnQuJyhuYW1lLHRleHQpIHsnLlBIUF9FT0w7DQogICAgICAgICAgICAkanMgLj0gJyBuYW1lID0gInBsYmwiICsgbmFtZSArICInLiR0aGlzLT5faWRlbnQuJyI7Jy5QSFBfRU9MOw0KICAgICAgICAgICAgJGpzIC49ICcgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmFtZSkuZmlyc3RDaGlsZC5ub2RlVmFsdWU9dGV4dDsnLlBIUF9FT0w7DQogICAgICAgICAgICAkanMgLj0gJ30nLlBIUF9FT0w7DQogICAgICAgIH0NCg0KICAgICAgICAkanMgLj0gJ2Z1bmN0aW9uIHNldEVsZW1lbnRTdHlsZScuJHRoaXMtPl9pZGVudC4nKHByZWZpeCxuYW1lLHN0eWxlcykgeycuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICcgbmFtZSA9IHByZWZpeCArIG5hbWUgKyAiJy4kdGhpcy0+X2lkZW50LiciOycuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICcgc3R5bGVzID0gc3R5bGVzLnNwbGl0KCI7Iik7Jy5QSFBfRU9MOw0KICAgICAgICAkanMgLj0gJyBzdHlsZXMucG9wKCk7Jy5QSFBfRU9MOw0KICAgICAgICAkanMgLj0gJyBmb3IodmFyIGk9MDsgaTxzdHlsZXMubGVuZ3RoOyBpKyspJy5QSFBfRU9MOw0KICAgICAgICAkanMgLj0gJyB7Jy5QSFBfRU9MOw0KICAgICAgICAkanMgLj0gJyAgIHMgPSBzdHlsZXNbaV0uc3BsaXQoIjoiKTsnLlBIUF9FT0w7DQogICAgICAgICRqcyAuPSAnICAgYyA9ICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKS5zdHlsZS4iK3NbMF0rIj1cIiIrc1sxXSsiXCIiOycuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICcgICBldmFsKGMpOycuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICcgfScuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICd9Jy5QSFBfRU9MOw0KDQogICAgICAgIGlmICgkdGhpcy0+ZnJhbWVbJ3Nob3cnXSkgew0KICAgICAgICAgICAgJGh0bWwgLj0gJzwvZGl2PicuUEhQX0VPTDsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJHRoaXMtPnBvc2l0aW9uID09ICdyZWxhdGl2ZScpIHsNCiAgICAgICAgICAgICRodG1sIC49ICc8L2Rpdj4nLlBIUF9FT0w7DQogICAgICAgIH0NCg0KICAgICAgICAkaHRtbCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPicuUEhQX0VPTDsNCiAgICAgICAgJGh0bWwgLj0gJGpzOw0KICAgICAgICAkaHRtbCAuPSAnPC9zY3JpcHQ+Jy5QSFBfRU9MOw0KDQogICAgICAgIHJldHVybiAkaHRtbDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTaG93IHRoZSByZW5kZXJzIG9mIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKiBAc2VlICAgICAgICB0b0h0bWwoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGRpc3BsYXkoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9zdGF0dXMgPSAnc2hvdyc7DQogICAgICAgIGVjaG8gJHRoaXMtPnRvSHRtbCgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEhpZGVzIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBoaWRlKCkNCiAgICB7DQogICAgICAgIGlmICgkdGhpcy0+X3N0YXR1cz09J3Nob3cnKSB7DQogICAgICAgICAgICAkdGhpcy0+X3N0YXR1cyA9ICdoaWRlJzsNCiAgICAgICAgICAgICR0aGlzLT5faGlkZSgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2hvd3MgYSBwcm9ncmVzcyBiYXIgaGlkZGVuLg0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gc2hvdygpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXM9PSdoaWRlJykgew0KICAgICAgICAgICAgJHRoaXMtPl9zdGF0dXMgPSAnc2hvdyc7DQogICAgICAgICAgICAkdGhpcy0+X2hpZGUoKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNob3cgb3IgSGlkZSBhIHByb2dyZXNzIGJhciBkZXBlbmRpbmcgb2YgaXRzIGN1cnJlbnQgc3RhdHVzLg0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHJpdmF0ZQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9oaWRlKCkNCiAgICB7DQogICAgICAgIGlmICgkdGhpcy0+X3N0YXR1cyA9PSAnaGlkZScpIHsNCiAgICAgICAgICAgICRjc3NUZXh0ID0gJ3Zpc2liaWxpdHk6aGlkZGVuOyc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkY3NzVGV4dCA9ICd2aXNpYmlsaXR5OnZpc2libGU7JzsNCiAgICB9DQogICAgICAgICRiYXIgID0gb2JfZ2V0X2NsZWFuKCk7DQoNCiAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUVsZW1lbnRTdHlsZSgncGJyZCcsICcnLCAkY3NzVGV4dCk7DQogICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BiYXInLCAnJywgJGNzc1RleHQpOw0KDQogICAgICAgIGlmICgkdGhpcy0+ZnJhbWVbJ3Nob3cnXSkgew0KICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUVsZW1lbnRTdHlsZSgncGZybScsICcnLCAkY3NzVGV4dCk7DQogICAgICAgIH0NCiAgICAgICAgZm9yZWFjaCgkdGhpcy0+bGFiZWwgYXMgJG5hbWUgPT4gJGRhdGEpIHsNCiAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BsYmwnLCAkbmFtZSwgJGNzc1RleHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZWNobyAkYmFyIC4gUEhQX0VPTDsNCiAgICAgICAgb2Jfc3RhcnQoKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDYWxjdWxhdGUgdGhlIGN1cnJlbnQgcGVyY2VudCBvZiBwcm9ncmVzcy4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIGludGVnZXINCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfY29tcHV0ZVBlcmNlbnQoKQ0KICAgIHsNCiAgICAgICAgJHBlcmNlbnQgPSByb3VuZCgoJHRoaXMtPl9zdGVwIC0gJHRoaXMtPm1pbikgLyAoJHRoaXMtPm1heCAtICR0aGlzLT5taW4pICogMTAwKTsNCiAgICAgICAgaWYgKCRwZXJjZW50ID4gMTAwKSB7DQogICAgICAgICAgICAkcGVyY2VudCA9IDEwMDsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJHBlcmNlbnQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ2FsY3VsYXRlIHRoZSBuZXcgcG9zaXRpb24gaW4gcGl4ZWwgb2YgdGhlIHByb2dyZXNzIGJhciB2YWx1ZS4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfY29tcHV0ZVBvc2l0aW9uKCkNCiAgICB7DQogICAgICAgIHN3aXRjaCAoJHRoaXMtPmRpcmVjdGlvbikgew0KICAgICAgICBjYXNlICdyaWdodCc6DQogICAgICAgIGNhc2UgJ2xlZnQnOg0KICAgICAgICAgICAgJGJhciA9ICR0aGlzLT53aWR0aDsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICdkb3duJzoNCiAgICAgICAgY2FzZSAndXAnOg0KICAgICAgICAgICAgJGJhciA9ICR0aGlzLT5oZWlnaHQ7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICAkcGl4ZWwgPSByb3VuZCggICgkdGhpcy0+X3N0ZXAgLSAkdGhpcy0+bWluKSAqICgkYmFyIC0gKCR0aGlzLT5wYWRkaW5nICogMikpDQogICAgICAgICAgICAgICAgICAgICAgIC8gKCR0aGlzLT5tYXggLSAkdGhpcy0+bWluKSApOw0KICAgICAgICBpZiAoJHRoaXMtPl9zdGVwIDw9ICR0aGlzLT5taW4pIHsNCiAgICAgICAgICAgICRwaXhlbCA9IDA7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCR0aGlzLT5fc3RlcCA+PSAkdGhpcy0+bWF4KSB7DQogICAgICAgICAgICAkcGl4ZWwgPSAkYmFyIC0gKCR0aGlzLT5wYWRkaW5nICogMik7DQogICAgICAgIH0NCg0KICAgICAgICBzd2l0Y2ggKCR0aGlzLT5kaXJlY3Rpb24pIHsNCiAgICAgICAgY2FzZSAncmlnaHQnOg0KICAgICAgICAgICAgJHBvc2l0aW9uWydsZWZ0J10gPSAkdGhpcy0+cGFkZGluZzsNCiAgICAgICAgICAgICRwb3NpdGlvblsndG9wJ10gPSAkdGhpcy0+cGFkZGluZzsNCiAgICAgICAgICAgICRwb3NpdGlvblsnd2lkdGgnXSA9ICRwaXhlbDsNCiAgICAgICAgICAgICRwb3NpdGlvblsnaGVpZ2h0J10gPSAkdGhpcy0+aGVpZ2h0IC0gKCR0aGlzLT5wYWRkaW5nICogMik7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAnbGVmdCc6DQogICAgICAgICAgICAkcG9zaXRpb25bJ2xlZnQnXSA9ICR0aGlzLT53aWR0aCAtICR0aGlzLT5wYWRkaW5nIC0gJHBpeGVsOw0KICAgICAgICAgICAgJHBvc2l0aW9uWyd0b3AnXSA9ICR0aGlzLT5wYWRkaW5nOw0KICAgICAgICAgICAgJHBvc2l0aW9uWyd3aWR0aCddID0gJHBpeGVsOw0KICAgICAgICAgICAgJHBvc2l0aW9uWydoZWlnaHQnXSA9ICR0aGlzLT5oZWlnaHQgLSAoJHRoaXMtPnBhZGRpbmcgKiAyKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICdkb3duJzoNCiAgICAgICAgICAgICRwb3NpdGlvblsnbGVmdCddID0gJHRoaXMtPnBhZGRpbmc7DQogICAgICAgICAgICAkcG9zaXRpb25bJ3RvcCddID0gJHRoaXMtPnBhZGRpbmc7DQogICAgICAgICAgICAkcG9zaXRpb25bJ3dpZHRoJ10gPSAkdGhpcy0+d2lkdGggLSAoJHRoaXMtPnBhZGRpbmcgKiAyKTsNCiAgICAgICAgICAgICRwb3NpdGlvblsnaGVpZ2h0J10gPSAkcGl4ZWw7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAndXAnOg0KICAgICAgICAgICAgJHBvc2l0aW9uWydsZWZ0J10gPSAkdGhpcy0+cGFkZGluZzsNCiAgICAgICAgICAgICRwb3NpdGlvblsndG9wJ10gPSAkdGhpcy0+aGVpZ2h0IC0gJHRoaXMtPnBhZGRpbmcgLSAkcGl4ZWw7DQogICAgICAgICAgICAkcG9zaXRpb25bJ3dpZHRoJ10gPSAkdGhpcy0+d2lkdGggLSAoJHRoaXMtPnBhZGRpbmcgKiAyKTsNCiAgICAgICAgICAgICRwb3NpdGlvblsnaGVpZ2h0J10gPSAkcGl4ZWw7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJHBvc2l0aW9uOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNldHMgdGhlIG5ldyBzdGVwIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBpbnRlZ2VyICAgJHN0ZXAgICAgICAgICAgbmV3IHN0ZXAgdmFsdWUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfc2V0U3RlcCgkc3RlcCkNCiAgICB7DQogICAgICAgIGlmKCRzdGVwID4gJHRoaXMtPm1heCkgew0KICAgICAgICAgICAgJHN0ZXAgPSAkdGhpcy0+bWF4Ow0KICAgICAgICB9DQogICAgICAgIGlmKCRzdGVwIDwgJHRoaXMtPm1pbikgew0KICAgICAgICAgICAgJHN0ZXAgPSAkdGhpcy0+bWluOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fc3RlcCA9ICRzdGVwOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNlbmRzIGEgRE9NIGNvbW1hbmQgKGVtdWxhdGUgY3NzVGV4dCBhdHRyaWJ1dGUpIHRocm91Z2ggYSBqYXZhc2NyaXB0IGZ1bmN0aW9uDQogICAgICogdG8gY2hhbmdlIHN0eWxlcyBvZiBhIHByb2dyZXNzIGJhcidzIGVsZW1lbnQuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJHByZWZpeCAgICAgICAgcHJlZml4IGlkZW50aWZpZXIgb2YgdGhlIGVsZW1lbnQNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJGVsZW1lbnQgICAgICAgZWxlbWVudCBuYW1lIChsYWJlbCBpZC4pDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRzdHlsZXMgICAgICAgIHN0eWxlcyBvZiBhIERPTSBlbGVtZW50DQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICBzdHJpbmcNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfY2hhbmdlRWxlbWVudFN0eWxlKCRwcmVmaXgsICRlbGVtZW50LCAkc3R5bGVzKQ0KICAgIHsNCiAgICAgICAgJGNtZCA9ICc8c2NyaXB0IHR5cGU9InRleHQvSmF2YVNjcmlwdCI+Jw0KICAgICAgICAgICAgIC4gJ3NldEVsZW1lbnRTdHlsZScgLiAkdGhpcy0+X2lkZW50DQogICAgICAgICAgICAgLiAnKCInIC4gJHByZWZpeCAuICciLCInIC4gJGVsZW1lbnQgLiAnIiwiJyAuICRzdHlsZXMgLiAnIik7Jw0KICAgICAgICAgICAgIC4gJzwvc2NyaXB0Pic7DQoNCiAgICAgICAgcmV0dXJuICRjbWQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2VuZHMgYSBET00gY29tbWFuZCAoZW11bGF0ZSBmaXJzdENoaWxkLm5vZGVWYWx1ZSkgdGhyb3VnaCBhIGphdmFzY3JpcHQgZnVuY3Rpb24NCiAgICAgKiB0byBjaGFuZ2UgbGFiZWwgdmFsdWUgb2YgYSBwcm9ncmVzcyBiYXIncyBlbGVtZW50Lg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRlbGVtZW50ICAgICAgIGVsZW1lbnQgbmFtZSAobGFiZWwgaWQuKQ0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkdGV4dCAgICAgICAgICBlbGVtZW50IHZhbHVlIChsYWJlbCBjb250ZW50KQ0KICAgICAqDQogICAgICogQHJldHVybiAgICAgc3RyaW5nDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwcml2YXRlDQogICAgICovDQogICAgZnVuY3Rpb24gX2NoYW5nZUxhYmVsVGV4dCgkZWxlbWVudCwgJHRleHQpDQogICAgew0KICAgICAgICAkY21kID0gJzxzY3JpcHQgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4nDQogICAgICAgICAgICAgLiAnc2V0TGFiZWxUZXh0JyAuICR0aGlzLT5faWRlbnQNCiAgICAgICAgICAgICAuICcoIicgLiAkZWxlbWVudCAuICciLCInIC4gJHRleHQgLiAnIik7Jw0KICAgICAgICAgICAgIC4gJzwvc2NyaXB0Pic7DQoNCiAgICAgICAgcmV0dXJuICRjbWQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2VuZHMgYSBET00gY29tbWFuZCB0aHJvdWdoIGEgamF2YXNjcmlwdCBmdW5jdGlvbg0KICAgICAqIHRvIGNoYW5nZSB0aGUgbmV4dCBmcmFtZSBhbmltYXRpb24gb2YgYSBjcm9zcyBiYXIncyBlbGVtZW50Lg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRlbGVtZW50ICAgICAgIGVsZW1lbnQgbmFtZSAoY3Jvc3MgaWQuKQ0KICAgICAqDQogICAgICogQHJldHVybiAgICAgc3RyaW5nDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwcml2YXRlDQogICAgICovDQogICAgZnVuY3Rpb24gX2NoYW5nZUNyb3NzSXRlbSgkZWxlbWVudCkNCiAgICB7DQogICAgICAgICRjbWQgPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPicNCiAgICAgICAgICAgICAuICdzZXRSb3RhcnlDcm9zcycgLiAkZWxlbWVudCAuICR0aGlzLT5faWRlbnQgLiAnKCk7Jw0KICAgICAgICAgICAgIC4gJzwvc2NyaXB0Pic7DQoNCiAgICAgICAgcmV0dXJuICRjbWQ7DQogICAgfQ0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKJHRhYm9wb3RhcnJheSA9IGFycmF5KCAnbXlzcWwnID0+ICdUWVBFPU15SVNBTScgKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKCi8vIHRhYmxlcwokZmxkcyA9ICJpZCAgIEkgS0VZIEFVVE8sCiAgICAgICAgIGNvZGUgQygyKSBLRVksCiAgICAgICAgIG5hbWUgQyg1MCksCiAgICAgICAgIHNvcnRpbmcgSSBERUZBVUxUIDAiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoQ0dFWFRFTlNJT05TX1RBQkxFX0NPVU5UUklFUywkZmxkcywkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChDR0VYVEVOU0lPTlNfVEFCTEVfU1RBVEVTLCRmbGRzLCR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCgovLyBkZWZhdWx0IGNvbnRlbnQKJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwnY291bnRyaWVzLnR4dCcpOwokcmF3X2NvdW50cmllcyA9IEBmaWxlKCRmbik7CiRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLkNHRVhURU5TSU9OU19UQUJMRV9DT1VOVFJJRVMuJyAoY29kZSxuYW1lLHNvcnRpbmcpIFZBTFVFUyAoPyw/LDApJzsKZm9yZWFjaCgkcmF3X2NvdW50cmllcyBhcyAkb25lKQp7CiAgbGlzdCgkYWNyb255bSwkY291bnRyeV9uYW1lKSA9IHNwbGl0KCcsJywkb25lKTsKICAkYWNyb255bSA9IHRyaW0oJGFjcm9ueW0pOwogICRjb3VudHJ5X25hbWUgPSB0cmltKCRjb3VudHJ5X25hbWUpOwogICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGFjcm9ueW0sJGNvdW50cnlfbmFtZSkpOwp9CgokZm4gPSBjbXNfam9pbl9wYXRoKGRpcm5hbWUoX19GSUxFX18pLCdzdGF0ZXMudHh0Jyk7CiRyYXdfc3RhdGVzID0gQGZpbGUoJGZuKTsKJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuQ0dFWFRFTlNJT05TX1RBQkxFX1NUQVRFUy4nIChjb2RlLG5hbWUsc29ydGluZykgVkFMVUVTICg/LD8sMCknOwpmb3JlYWNoKCRyYXdfc3RhdGVzIGFzICRvbmUpCnsKICBsaXN0KCRhY3JvbnltLCRzdGF0ZV9uYW1lKSA9IHNwbGl0KCcsJywkb25lKTsKICAkYWNyb255bSA9IHRyaW0oJGFjcm9ueW0pOwogICRzdGF0ZV9uYW1lID0gdHJpbSgkc3RhdGVfbmFtZSk7CiAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkYWNyb255bSwkc3RhdGVfbmFtZSkpOwp9CgoKLy8gUHJlZmVyZW5jZXMKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ltYWdlZXh0ZW5zaW9ucycsJ2pwZyxwbmcsZ2lmJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aHVtYm5haWxzaXplJyw3NSk7CgoKLy8gdGVtcGxhdGVzCiR0aGlzLT5SZXNldEVycm9yVGVtcGxhdGUoKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRXh0ZW5zaW9ucyAoYykgMjAwOCBieSBSb2JlcnQgQ2FtcGJlbGwgCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzEuOCcpIDwgMCApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHRhYm9wb3RhcnJheSA9IGFycmF5KCAnbXlzcWwnID0+ICdUWVBFPU15SVNBTScgKTsKICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKICAgIAogICAgCiAgICAvLyB0YWJsZXMKICAgICRmbGRzID0gImlkICAgSSBLRVkgQVVUTywKICAgICAgICAgICAgIGNvZGUgQygyKSBLRVksCiAgICAgICAgICAgICBuYW1lIEMoNTApLAogICAgICAgICAgICAgc29ydGluZyBJIERFRkFVTFQgMCI7CiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoQ0dFWFRFTlNJT05TX1RBQkxFX0NPVU5UUklFUywkZmxkcywkdGFib3B0YXJyYXkpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKENHRVhURU5TSU9OU19UQUJMRV9TVEFURVMsJGZsZHMsJHRhYm9wdGFycmF5KTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgIAogICAgCiAgICAvLyBkZWZhdWx0IGNvbnRlbnQKICAgICRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ2NvdW50cmllcy50eHQnKTsKICAgICRyYXdfY291bnRyaWVzID0gQGZpbGUoJGZuKTsKICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLkNHRVhURU5TSU9OU19UQUJMRV9DT1VOVFJJRVMuJyAoY29kZSxuYW1lLHNvcnRpbmcpIFZBTFVFUyAoPyw/LDApJzsKICAgIGZvcmVhY2goJHJhd19jb3VudHJpZXMgYXMgJG9uZSkKICAgICAgewoJbGlzdCgkYWNyb255bSwkY291bnRyeV9uYW1lKSA9IHNwbGl0KCcsJywkb25lKTsKCSRhY3JvbnltID0gc3RydG91cHBlcih0cmltKCRhY3JvbnltKSk7CgkkY291bnRyeV9uYW1lID0gdHJpbSgkY291bnRyeV9uYW1lKTsKCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGFjcm9ueW0sJGNvdW50cnlfbmFtZSkpOwogICAgICB9CiAgICAKICAgICRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ3N0YXRlcy50eHQnKTsKICAgICRyYXdfc3RhdGVzID0gQGZpbGUoJGZuKTsKICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLkNHRVhURU5TSU9OU19UQUJMRV9TVEFURVMuJyAoY29kZSxuYW1lLHNvcnRpbmcpIFZBTFVFUyAoPyw/LDApJzsKICAgIGZvcmVhY2goJHJhd19zdGF0ZXMgYXMgJG9uZSkKICAgICAgewoJbGlzdCgkYWNyb255bSwkc3RhdGVfbmFtZSkgPSBzcGxpdCgnLCcsJG9uZSk7CgkkYWNyb255bSA9IHN0cnRvdXBwZXIodHJpbSgkYWNyb255bSkpOwoJJHN0YXRlX25hbWUgPSB0cmltKCRzdGF0ZV9uYW1lKTsKCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGFjcm9ueW0sJHN0YXRlX25hbWUpKTsKICAgICAgfQoKICB9IC8vIHZlcnNpb25fY29tcGFyZQoKCj8+]]></data>
	</file>
	<file>
	  <filename>/states.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QUwsQWxhYmFtYQpBSyxBbGFza2EKQVMsQW1lcmljYW4gU2Ftb2EKQVosQXJpem9uYQpBUixBcmthbnNhcwpDQSxDYWxpZm9ybmlhCkNPLENvbG9yYWRvCkNULENvbm5lY3RpY3V0CkRFLERlbGF3YXJlCkRDLERpc3RyaWN0IG9mIENvbHVtYmlhCkZNLEZlZC4gU3RhdGVzIG9mIE1pY3JvbmVzaWEKRkwsRmxvcmlkYQpHQSxHZW9yZ2lhCkdVLEd1YW0KSEksSGF3YWlpCklELElkYWhvCklMLElsbGlub2lzCklOLEluZGlhbmEKSUEsSW93YQpLUyxLYW5zYXMKS1ksS2VudHVja3kKTEEsTG91aXNpYW5hCk1FLE1haW5lCk1ILE1hcnNoYWxsIElzbGFuZHMKTUQsTWFyeWxhbmQKTUEsTWFzc2FjaHVzZXR0cwpNSSxNaWNoaWdhbgpNTixNaW5uZXNvdGEKTVMsTWlzc2lzc2lwcGkKTU8sTWlzc291cmkKTVQsTW9udGFuYQpORSxOZWJyYXNrYQpOVixOZXZhZGEKTkgsTmV3IEhhbXBzaGlyZQpOSixOZXcgSmVyc2V5Ck5NLE5ldyBNZXhpY28KTlksTmV3IFlvcmsKTkMsTm9ydGggQ2Fyb2xpbmEKTkQsTm9ydGggRGFrb3RhCk1QLE5vcnRoZXJuIE1hcmlhbmEgSXMuCk9ILE9oaW8KT0ssT2tsYWhvbWEKT1IsT3JlZ29uClBXLFBhbGF1ClBBLFBlbm5zeWx2YW5pYQpQUixQdWVydG8gUmljbwpSSSxSaG9kZSBJc2xhbmQKU0MsU291dGggQ2Fyb2xpbmEKU0QsU291dGggRGFrb3RhClROLFRlbm5lc3NlZQpUWCxUZXhhcwpVVCxVdGFoClZULFZlcm1vbnQKVkEsVmlyZ2luaWEKVkksVmlyZ2luIElzbGFuZHMKV0EsV2FzaGluZ3RvbgpXVixXZXN0IFZpcmdpbmlhCldJLFdpc2NvbnNpbgpXWSxXeW9taW5nCkFCLEFsYmVydGEKQkMsQnJpdGlzaCBDb2x1bWJpYQpNQixNYW5pdG9iYQpOQixOZXcgQnJ1bnN3aWNrCk5GLE5ld2ZvdW5kbGFuZApOVCxOb3J0aHdlc3QgVGVycml0b3JpZXMKTlMsTm92YSBTY290aWEKT04sT250YXJpbwpQRSxQcmluY2UgRWR3YXJkIElzbGFuZApRQyxRdWViZWMKU0ssU2Fza2F0Y2hld2FuCllULFl1a29u]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogYWRtaW4gcGFuZWwgdGVtcGxhdGUgKn0KeyRmb3Jtc3RhcnR9CjxmaWVsZHNldD4KPGxlZ2VuZD57JHByb21wdF90ZW1wbGF0ZX08L2xlZ2VuZD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RlbXBsYXRlfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90ZW1wbGF0ZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0X3RlbXBsYXRlfSZuYnNwO3skcmVzZXR9PC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pbWFnZWV4dGVuc2lvbnN9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ltYWdlZXh0ZW5zaW9uc308L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfcHJpb3JpdHljb3VudHJpZXN9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3ByaW9yaXR5Y291bnRyaWVzfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndGh1bWJuYWlsX3NpemUnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdGh1bWJuYWlsc2l6ZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KPC9kaXY+CnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/dflt_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90ZW1wbGF0ZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9Jm5ic3A7eyRyZXNldH08L3A+CiAgPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/editdefaulttemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8aDQ+eyRkZWZhdWx0dGVtcGxhdGVmb3JtX3RpdGxlfTwvaDQ+CiAgICAgICAgPGVtPnskaW5mb190aXRsZX08L2VtPjxici8+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdGVtcGxhdGV9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RlbXBsYXRlfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JHJlc2V0fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19Cjxici8+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskdGl0bGV9PC9oMz4KPC9kaXY+CnskZm9ybXN0YXJ0fXskaGlkZGVufQp7aWYgaXNzZXQoJHRlbXBsYXRlX2luZm8pfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIHskdGVtcGxhdGVfaW5mb30KPC9kaXY+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZW5hbWV9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlbmFtZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdGVtcGxhdGV9OjwvcD4KICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskdGVtcGxhdGV9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9PC9wPgo8L2Rpdj4KeyRmb3JtZW5kfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/templates/listtemplates.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aCB3aWR0aD0iNzUlIj57JG5hbWVwcm9tcHR9PC90aD4KICAgICAgPHRoPnskZGVmYXVsdHByb21wdH08L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogICB7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIiIGFzc2lnbj0ncm93Y2xhc3MnfQogICA8dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgogICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmRlZmF1bHR9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgogICA8L3RyPgp7L2ZvcmVhY2h9CjwvdGFibGU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRuZXd0ZW1wbGF0ZWxpbmt9PC9wPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_error_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogb3JpZ2luYWwgdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgZnJvbnRlbmQgZXJyb3JzICp9CjxkaXYgY2xhc3M9InskY2dfZXJyb3JjbGFzc30iPnskY2dfZXJyb3Jtc2d9PC9kaXY+]]></data>
	</file>
</module>
