<?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>SnapshotMgr</name>
	<version>1.1</version>
    <mincmsversion>2.2</mincmsversion>
	<help><![CDATA[PGRpdiBpZD0icGFnZV90YWJzIj48ZGl2IGlkPSJzdXBwb3J0Ij5TdXBwb3J0PC9kaXY+CjxkaXYgaWQ9ImdlbmVyYWwiPkdlbmVyYWw8L2Rpdj4KPGRpdiBpZD0iaG93dG91c2UiPkhvdyBUbyBVc2U8L2Rpdj4KPGRpdiBpZD0iY29weXJpZ2h0Ij5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2Rpdj4KCgo8L2Rpdj48IS0tIEVuZFRhYkhlYWRlcnMgLS0+PGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj48ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPjxkaXYgaWQ9InN1cHBvcnRfYyI+CiAgPGgzPlRoaXMgbW9kdWxlIGlzIGJyb3VnaHQgdG8geW91IGJ5OjwvaDM+CiAgPHA+PGEgaHJlZj0iaHR0cHM6Ly9jbXNjYW5iZXNpbXBsZS5vcmcvYnV5LXJvbGYtYS1jdXAtb2YtY29mZmVlIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSIuLi9tb2R1bGVzL1NuYXBzaG90TWdyL2ltYWdlcy9jbXMtY2FuLWJlLXNpbXBsZS1vcmcucG5nIiBhbHQ9IiIgd2lkdGg9IjUwMCIgLz4KICA8L2E+PC9wPgogIDxiciAvPgogIDxwPjxiPlRpcHMsIHRyaWNrcyBhbmQgdHV0b3JpYWxzIHRvIG1ha2UgaXQgZXZlbiBlYXNpZXIgdG8gd29yayB3aXRoIENNUyBNYWRlIFNpbXBsZSZ0cmFkZTsuPC9iPjwvcD4KICA8YnIgLz4KICA8cD5Zb3UgY2FuIGZpbmQgbWUgYXQ6PC9wPgogIDx1bD4KICAgIDxsaT48YSBocmVmPSJodHRwczovL2Ntc2NhbmJlc2ltcGxlLm9yZyIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+Y21zY2FuYmVzaW1wbGUub3JnPC9hPiAmcmFxdW87PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2Ntc2NhbmJlc2ltcGxlIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj50d2l0dGVyLmNvbTwvYT4gJnJhcXVvOzwvbGk+CiAgPC91bD4KICAgIAogIDxoMz5TdXBwb3J0IG1lIGZvciBzdXBwb3J0aW5nIHlvdSE8L2gzPgogIDxwPkRvIHlvdSBsaWtlIHRoaXMgbW9kdWxlIGFuZCB0aGUgaGVscCB5b3UgZ2V0IGF0IENNUyBDYW4gQmUgU2ltcGxlPzxwPgogIDxwPllvdSBjYW4gZG9uYXRlIHNvbWUgbW9uZXkgdG8gYnV5IG1lIGEgdmlydHVhbCBjdXAgb2YgY29mZmVlIGFzIGEgc21hbGwgdG9rZW4gb2YgYXBwcmVjaWF0aW9uLjxwPgogIDxwPjxiPjxhIGhyZWY9Imh0dHBzOi8vY21zY2FuYmVzaW1wbGUub3JnL2J1eS1yb2xmLWEtY3VwLW9mLWNvZmZlZSIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+RE9OQVRFIE5PVzwvYT4gJnJhcXVvOzwvYj48L3A+CiAgCiAgPGgzPlN1cHBvcnQ8L2gzPgogIDxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGNvbnRhaW4gYW55IGNvbW1lcmNpYWwgc3VwcG9ydC4gSWYgeW91IGhhdmUgcHJvYmxlbXMsIGFzayBmb3IgaGVscCBpbiB0aGU6PC9wPgogIDx1bD4KICAgIDxsaT48YSBocmVmPSJodHRwczovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnLyIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+Q01TIE1hZGUgU2ltcGxlIGZvcnVtczwvYT47PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9zdXBwb3J0L2RvY3VtZW50YXRpb24vY2hhdC8iIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPlNsYWNrIGNoYXQ8L2E+OzwvbGk+CiAgICA8bGk+b3Igd3JpdGUgYW4gZW1haWwgdG8gdGhlIGF1dGhvci48L2xpPgogIDwvdWw+CgoKPC9kaXY+IDwhLS0gRW5kVGFiIC0tPjxkaXYgaWQ9ImdlbmVyYWxfYyI+CiAgPGgzPlRoYW5rcyBmb3IgdXNpbmcgU25hcHNob3RNZ3IuPC9oMz4KCiAgPHA+VGhpcyBpcyBhIHV0aWxpdHkgbW9kdWxlIHRvIGFsbG93IGF1dGhvcml6ZWQgcGVyc29uZWxsIHRvIGdlbmVyYXRlIHNuYXBzaG90cyBvZiBhbGwgb2YgdGhlIGZpbGVzIGFuZCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZGF0YWJhc2Ugb2YgYSBDTVNNUyBpbnN0YWxsYXRpb24gYW5kIGRvd25sb2FkIGl0IHRvIHlvdXIgbG9jYWwgY29tcHV0ZXIuICBUaGlzIGlzIHVzZWZ1bCB3aGVuIHVuZGVydGFraW5nIHNpdGUgdXBncmFkZXMsIG9yIHdoZW4gbW92aW5nIGEgc2l0ZSB0byBhIG5ldyBob3N0LjwvcD4KICA8YnIgLz4KICA8cD5UaGUgc25hcHNob3RzIGdlbmVyYXRlZCBhcmUgc3RvcmVkIGluIHN0YW5kYXJkIC56aXAgZmlsZXMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVzdG9yZSB0aGUgc2l0ZSBhdCBhbnkgdGltZSwgZWl0aGVyIG1hbnVhbGx5IG9yIHdpdGggYW4gaW50ZXJhY3RpdmUgQ0xJIGJhc2VkIHBocCBzY3JpcHQuPC9wPgogIDxiciAvPgogIDxwPjxiPk5vdGU6PC9iPiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjwvcD4KCgo8L2Rpdj4gPCEtLSBFbmRUYWIgLS0+PGRpdiBpZD0iaG93dG91c2VfYyI+CiAgPGgzPkhvdyBkbyBJIHVzZSBpdDwvaDM+CiAgPHA+QWZ0ZXIgaW5zdGFsbGluZyB0aGUgbW9kdWxlLCB2aXNpdCB0aGUgU2l0ZSBBZG1pbiA+PiBTbmFwc2hvdE1nciBtZW51IGl0ZW0gYW5kIGNsaWNrICdDcmVhdGUgU25hcHNob3QgTm93Jy4gIFRoaXMgd2lsbCBnZW5lcmF0ZSB0aGUgc25hcHNob3QgZmlsZSBhbmQgc2VuZCBpdCB0byB5b3VyIGxvY2FsIGJyb3dzZXIuPC9wPgoKICA8aDM+Q2F1dGlvbjwvaDM+CiAgPHA+U25hcHNob3QgZmlsZXMgYXJlIHR5cGljYWx5IGxhcmdlLCBhbmQgY2FuIGNvbnN1bWUgYSBzaWduaWZpY2FudCBhbW91bnQgb2Ygc2VydmVyIHJlc291cmNlcyBpbiBnZW5lcmF0aW5nIHRoZW0sIGFuZCBkb3dubG9hZGluZyB0aGVtLiAgVGhpcyB1dGlsaXR5IG1heSBub3Qgd29yayB3ZWxsIGZvciBzaXRlcyB0aGF0IGNvbnN1bWUgbXVsdGktZ2lnYWJ5dGVzIG9mIGRpc2sgc3BhY2UsIG9yIG9uIGEgc2VydmVyIHdpdGggbGltaXRlZCByZXNvdXJjZXMuICAgVXNlIGF0IHlvdXIgb3duIHJpc2suPC9wPgogIDxwPlNuYXBzaG90IGZpbGVzIGFyZSBnZW5lcmF0ZWQgYW5kIHN0b3JlZCBvbiB0aGUgc2VydmVyIHVudGlsIHN1Y2ggdGltZSBhcyB0aGV5IGVpdGhlciBleHBpcmUgKGEgc2V0dGluZyBpbiBDTVNNUykgb3IgdGhlIHNlcnZlciBjYWNoZSBpcyBjbGVhcmVkLiAgVGhlc2UgY2FuIHRha2UgdXAgYSBzaWduaWZpY2FudCBhbW91bnQgb2Ygc3BhY2UsIHNvIHVzZSBjYXV0aW9uIHdoZW4gZ2VuZXJhdGluZyB0aGVtLjwvcD4KICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBkYXRhYmFzZSBiYWNrdXAgd2lsbCBub3QgZXhwb3J0IGFkdmFuY2VkIGNvbnN0cnVjdHMgc3VjaCBhcyBzdG9yZWQgcHJvY2VkdXJlcywgdmlld3MsIG9yIHRyaWdnZXJzLiAgQnV0IGl0IHNob3VsZCB3b3JrIGZvciBtb3N0IENNU01TIHdlYnNpdGVzLjwvcD4KCiAgPGgzPlJlc3RvcmluZzwvaDM+CiAgPHA+VGhlIFNuYXBzaG90TWdyIG1vZHVsZSBwcm92aWRlcyBhbiBpbnRlcmFjdGl2ZSBDTEkgYmFzZWQgcGhwIHNjcmlwdCAoYWN0dWFsbHkgYSBiaW5hcnkgLnBoYXIgZmlsZSkgdG8gYWlkZSBpbiByZXN0b3JpbmcgdGhlIHNuYXBzaG90LiAgVGhpcyBmaWxlIGlzIGxvY2F0ZWQgaW4gdG1wL3Jlc3RvcmUucGhwIGluIHRoZSBpbmNsdWRlZCBzbmFwc2hvdCwgIGFuZCBjYW4gYWxzbyBiZSBkb3dubG9hZGVkIHNlcGFyYXRlbHkgZnJvbSB3aXRoaW4gdGhlIFNuYXBzaG90TWdyIGFkbWluIHBhbmVsLjwvcD4KICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBpbnRlcmFjdGl2ZSByZXN0b3JlIHNjcmlwdCBjdXJyZW50bHkgb25seSBvcGVyYXRlcyBpZiB5b3UgYmFja2VkIHVwIGJvdGggdGhlIGZpbGVzIGFuZCB0aGUgZGF0YWJhc2UuPC9wPgogIDxwPlRvIGRvIGFuIGludGVyYWN0aXZlIHJlc3RvcmUgeW91IHdpbGwgbmVlZCBzaGVsbCBhY2NjZXNzIChpbiBhIGxpbnV4IGVudmlyb25tZW50KSB0byB0aGUgZGVzdGluYXRpb24gc2VydmVyLjwvcD4KICA8cD5JbnN0cnVjdGlvbnM6PC9wPgogIDxvbD4KICAgIDxsaT5VcGxvYWQgdGhlIHNuYXBzaG90IC56aXAgZmlsZSBpbiBpdHMgZW50aXJldHkgKGRvIG5vdCBleHBhbmQgaXQpIHRvIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXIuICBVc2luZyBTU0ggaXMgdGhlIGJlc3QgbWV0aG9kLjwvbGk+CiAgICA8bGk+VXBsb2FkIHRoZSByZXN0b3JlIHNjcmlwdCAodXN1YWxseSBuYW1lZCAiU25hcHNob3RNZ3ItUmVzdG9yZS5waHAiKSBmaWxlIChJTiBCSU5BUlkgTU9ERSkgdG8gdGhlIGRlc3RpbmF0aW9uIGZvbGRlci48L2xpPgogICAgPGxpPlVzaW5nIFNTSCBvciBhbm90aGVyIG1lY2hhbmlzbSBjb25uZWN0IHRvIHlvdXIgc2VydmVycyBzaGVsbCBjb25zb2xlLjwvbGk+CiAgICA8bGk+TmF2aWdhdGUgdG8geW91ciBkZXN0aW5hdGlvbiBmb2xkZXIgKHRoZSBzYW1lIGZvbGRlciB5b3UgdXNlZCBpbiB0aGUgZmlyc3QgdHdvIHN0ZXBzKS48L2xpPgogICAgPGxpPkV4ZWN1dGU6ICBwaHAgU25hcHNob3RNZ3ItUmVzdG9yZS5waHAKICAgICAgIDxwPlRoaXMgd2lsbCBicmluZyB1cCBhbiBpbnRlcmFjdGl2ZSwgY29uc29sZSBkcml2ZW4gdXRpbGl0eSB0aGF0IHdpbGwgYWxsb3cgeW91IHRvIGVudGVyIHRoZSBuYW1lIG9mIHRoZSBzbmFwc2hvdCBmaWxlLCBhbmQgZW50ZXIgZGF0YWJhc2UgY3JlZGVudGlhbCBpbmZvcm1hdGlvbi48L3A+CiAgICAgICA8cD5UaGUgc2NyaXB0IHdpbGwgdGhlbiB2ZXJpZnkgdGhlIGRhdGFic2UgY3JlZGVudGlhbHMsIGFuZCB0aGF0IHRoZSBkYXRhYmFzZSBpcyBlbXB0eS48L3A+CiAgICAgICA8cD5Gb2xsb3dpbmcgdGhpcyB0aGUgZGF0YWJhc2UgZHVtcCB3aWxsIGJlIGltcG9ydGVkIHRvIHRoZSBuZXcgZGF0YWJhc2UsIGFuZCB0aGUgemlwIGZpbGUgZXhwYW5kZWQuPC9wPgogICAgICAgPHA+VGhpcyBzY3JpcHQgd2lsbCB0aGVuIGdlbmVyYXRlIGEgbmV3IGNvbmZpZy5waHAsIGdlbmVyYXRlIHRoZSBzcGVjaWFsIENNU01TIHRlbXBvcmFyeSBkaXJlY3RvcmllcywgYW5kIHBlcmZvcm0gY2xlYW51cC48L3A+CiAgICAgICA8cD5UaGUgdXRpbGl0eSB3aWxsIGF1dG9tYXRpY2FsbHkgZGVsZXRlIGl0c2VsZiwgYW5kIHJlbW92ZSB0aGUgemlwIGZpbGUgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRlaW9uLjwvcD4KICAgIDwvbGk+CiAgPC9vbD4KCiAgPGgzPkFmdGVyIFJlc3RvcmF0aW9uPC9oMz4KICA8cD5BZnRlciByZXN0b3JhdGlvbiwgcGFydGljdWxhcmx5IGlmIHlvdSBhcmUgcmVzdG9yaW5nIHRvIGEgZGlmZmVyZW50IGhvc3QgdGhlbiB5b3UgbWF5IG5lZWQgdG8gbWFrZSBhZGp1c3RtZW50cyB0byBzb21lIGZpbGVzLiAgSW5jbHVkaW5nOjwvcD4KICA8dWw+CiAgICA8bGk+QWRqdXN0aW5nIHRoZSAuaHRhY2Nlc3MgZmlsZSBmb3IgdGhlIHJld3JpdGVfYmFzZSBhbmQgYW55IG90aGVyIHJlZGlyZWN0IHJ1bGVzLjwvbGk+CiAgICA8bGk+QWRqdXN0aW5nIHBhdGhzIGluIHRoZSBjb25maWcucGhwIGZpbGUuPC9saT4KICAgIDxsaT5BZGp1c3RpbmcgcGVybWlzc2lvbnMKICAgICAgIDxwPkRlcGVuZGluZyB1cG9uIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgZW52aXJvbm1lbnQsIGFuZCB0aGUgYWNjb3VudHMgdGhhdCB5b3UgYXJlIHVzaW5nIHRvIGNvbm5lY3QgdmlhIHNoZWxsLCBhbmQgZm9yIHRoZSB3ZWIgc2VydmVyLCB5b3UgbWF5IG5lZWQgdG8gYWRqdXN0IHBlcm1pc3Npb25zIG9mIHNvbWUgZmlsZXMgb3IgZGlyZWN0b3JpZXMgZm9yIENNU01TIHRvIHdvcmsgcHJvcGVybHkuPC9wPgogICAgICAgPHA+SW5mb3JtYXRpb24gYWJvdXQgcHJvcGVyIHBlcm1pc3Npb25zIGZvciBDTVNNUyBpcyB3ZWxsIGRvY3VtZW50ZWQgb24gdGhlIENNU01TIGRvY3VtZW50YXRpb24gc2l0ZSBhdCA8YSBocmVmPSJodHRwOi8vZG9jcy5jbXNtYWRlc2ltcGxlLm9yZyI+ZG9jcy5jbXNtYWRlc2ltcGxlLm9yZzwvYT4KICAgIDwvbGk+CiAgPC91bD4KCiAgPGgzPlNwZWNpYWwgRmlsZXM8L2gzPgogIDxwPklmIHBlcmZvcm1pbmcgYSBtYW51YWwgcmVzdG9yYXRpb24sIHRoZXJlIGFyZSBzb21lIHNwZWNpYWwgZmlsZXMgaW4gdGhlIGFyY2hpdmUgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIGRlbGV0ZSBhZnRlciBtYW51YWxseSBleHBhbmRpbmcgdGhlIC56aXAgZmlsZTo8L3A+CiAgPHVsPgogICAgPGxpPnRtcC9fX215c3FsZHVtcC5zcWwgLSBUaGlzIGlzIHRoZSBkdW1wIG9mIHRoZSBkYXRhYmFzZSwgaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhpcyBmaWxlIGJlIGRlbGV0ZWQgb24gbGl2ZSBzaXRlcy48L2xpPgogICAgPGxpPnRtcC8uc25hcHNob3RtZ3IgLSBUaGlzIGlzIGEgbWFnaWMgZmlsZSB1c2VkIGJ5IHRoZSBpbnRlcmFjdGl2ZSByZXN0b3JhdGlvbiBzY3JpcHQuIEl0IHNob3VsZCBiZSBkZWxldGVkIG9uIGxpdmUgc2l0ZXMuPC9saT4KICA8L3VsPgoKICA8aDM+UmVxdWlyZW1lbnRzPC9oMz4KICA8cD5UaGlzIG1vZHVsZSBoYXMgdGhlc2Ugc3BlY2lhbCByZXF1aXJlbWVudHM6PC9wPgogIDx1bD4KICAgIDxsaT5WYWxpZCwgYW5kIHdyaXRhYmxlIHN5c3RlbSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgogICAgICAgPHA+VGhlIHBocCBmdW5jdGlvbiBzeXNfZ2V0X3RlbXBfZGlyKCkgbXVzdCByZXR1cm4gYSB2YWxpZCwgd3JpdGFibGUgZGlyZWN0b3J5LjwvcD4KICAgIDwvbGk+CiAgICA8bGk+U3VwcG9ydCBmb3IgdGhlIFBIUCBaaXBBcmNoaXZlIGNsYXNzLjwvbGk+CiAgICA8bGk+VGhlIGFiaWxpdHkgdG8gYWRqdXN0IHRoZSBwaHAgc2NyaXB0IHRpbWUgbGltaXQuCiAgICAgIDxwPnRoZSBzZXRfdGltZV9saW1pdCg5OTk5KSBtZXRob2QgbXVzdCB3b3JrIHByb3Blcmx5LjwvcD4KICAgIDwvbGk+CiAgPC91bD4KCgo8L2Rpdj4gPCEtLSBFbmRUYWIgLS0+PGRpdiBpZD0iY29weXJpZ2h0X2MiPgogIDxiciAvPgogIDxwPlRoaXMgbW9kdWxlIGlzIGEgZm9yayBvZiB0aGUgQ0dTbmFwc2hvdCBtb2R1bGUuPGJyIC8+CiAgICBDb3B5cmlnaHQgJmNvcHk7IDIwMTUgLSAyMDIxLCBSb2JlcnQgQ2FtcGJlbGwuPC9wPgoKICA8aDM+U25hcHNob3RNZ3I8L2gzPgogIDxwPkNvcHlyaWdodCAmY29weTsgMjAyMSBhbmQgYmV5b25kLCBSb2xmIFRqYXNzZW5zIFtpbmZvIGF0IGNtc2NhbmJlc2ltcGxlIGRvdCBvcmddLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CiAgPGJyIC8+CiAgPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+R05VIFB1YmxpYyBMaWNlbnNlIHYzPC9hPjwvYj4uPC9wPgogIDxwPjxiPkhvd2V2ZXI8L2I+LCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZSZ0cmFkZTsuPGJyIC8+CiAgWW91IG1heSBvbmx5IHVzZSB0aGlzIHNvZnR3YXJlIHdoZW4gdGhlcmUgaXMgYSBjbGVhciBhbmQgb2J2aW91cyBpbmRpY2F0aW9uIGluIHRoZSBhZG1pbiBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggPGI+Q01TIE1hZGUgU2ltcGxlJnRyYWRlOzwvYj4uPC9wPgoKPC9kaXY+IDwhLS0gRW5kVGFiIC0tPjwvZGl2PiA8IS0tIEVuZFRhYkNvbnRlbnQgLS0+Cgo8c2NyaXB0PgogICAgJCgiaW1nIikuZXJyb3IoZnVuY3Rpb24oKSB7IAogICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAnLi4vYXNzZXRzL21vZHVsZXMvU25hcHNob3RNZ3IvaW1hZ2VzL2Ntcy1jYW4tYmUtc2ltcGxlLW9yZy5wbmcnKTsKICB9ICk7Cjwvc2NyaXB0PjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q01TTVNFeHQgPSZndDsgMS4wPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBSb2xmIFRqYXNzZW5zICZsdDtpbmZvIFthdF0gY21zY2FuYmVzaW1wbGUgW2RvdF0gb3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMTxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjx1bD4KCTxwPjxiPlZlcnNpb24gMS4xPC9iPiAoMTctMTAtMjAyMSkKCTx1bD4KICAgCQk8bGk+TWlub3IgaW1wcm92ZW1lbnRzLjwvbGk+CiAgIAk8L3VsPgogICAJPC9wPgoJPHA+PGI+VmVyc2lvbiAxLjAuMTwvYj4gKDA5LTAzLTIwMjEpCgk8dWw+CiAgIAkJPGxpPk1pbm9yIGltcHJvdmVtZW50IHRvIGFyY2hpdmUgZmlsZSBuYW1lLjwvbGk+CiAgIAk8L3VsPgogICAJPC9wPgoJPHA+PGI+VmVyc2lvbiAxLjA8L2I+ICgwMy0wMy0yMDIxKQoJPHVsPgoJCTxsaT5Jbml0aWFsIFJlbGVhc2UuPC9saT4KCTwvdWw+Cgk8L3A+CjwvdWw+PGJyIC8+]]></about>
	<description><![CDATA[A module to create snapshots of the CMSMS filesystem and database. Useful for quick backups or site moves.]]></description>
	<requires>
	  <requiredname>CMSMSExt</requiredname>
	  <requiredversion>1.0</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoICFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykgKSBleGl0OwoKaWYoICEkdGhpcy0+VmlzaWJsZVRvQWRtaW5Vc2VyKCkgKSByZXR1cm47Cgp0cnkgewogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3NuYXBzaG90bm93J10pICkgewogICAgICAgICRhZGRyID0gbnVsbDsKICAgICAgICAkbWFpbGVyID0gbnVsbDsKICAgICAgICAkZGlzcG9zZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdkaXNwb3NlJywnZG93bmxvYWQnKTsKICAgICAgICAkd2hhdCA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdwcmVmX3doYXQnLCdib3RoJyk7CiAgICAgICAgJGV4Y2x1ZGVzID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3ByZWZfZXhjbHVkZXMnKTsKICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJlZl9kaXNwb3NlJywkZGlzcG9zZSk7CiAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ByZWZfd2hhdCcsJHdoYXQpOwogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwcmVmX2V4Y2x1ZGVzJywkZXhjbHVkZXMpOwoKICAgICAgICAvLyB2YWxpZGF0ZSBkaXNwb3NpdGlvbnMKICAgICAgICBzd2l0Y2goICRkaXNwb3NlICkgewogICAgICAgIGNhc2UgJ2VtYWlsMSc6CiAgICAgICAgICAgICRhZGRyID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2VtYWlsMScpOwogICAgICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJlZl9lbWFpbDEnLCRhZGRyKTsKICAgICAgICAgICAgaWYoICFpc19lbWFpbCgkYWRkcikgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycl9pbnZhbGlkX2VtYWlsJykpOwoKICAgICAgICAgICAgJG1haWxlciA9IG5ldyBcY21zX21haWxlcjsKICAgICAgICAgICAgaWYoICEkbWFpbGVyICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJfY21zbWFpbGVyJykpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIC8vIHZhbGlkYXRlZCwgbm93IGNyZWF0ZSB0aGUgc25hcHNob3QKICAgICAgICBAc2V0X3RpbWVfbGltaXQoOTk5OSk7CgogICAgICAgICR0aGlzLT5TZW5kRXZlbnQoJ0JlZm9yZUNyZWF0ZVNuYXBzaG90JyxbJ3ByZWZfZGlzcG9zZSc9PiRkaXNwb3NlLCdwcmVmX3doYXQnPT4kd2hhdCwnZXhjbHVkZXMnPT4mJGV4Y2x1ZGVzLCdlbWFpbCc9PiRhZGRyXSk7CiAgICAgICAgJGxvZ2dlciA9IG5ldyBcU25hcHNob3RNZ3JcZmlsZV9sb2dnZXIoXFNuYXBzaG90TWdyXGZpbGVfbG9nZ2VyOjpMVkxfREVCVUcpOwogICAgICAgICRjcmVhdG9yID0gbmV3IFxTbmFwc2hvdE1nclxzbmFwc2hvdF9jcmVhdG9yOwogICAgICAgICRjcmVhdG9yLT5leGNsdWRlcyA9ICRleGNsdWRlczsKICAgICAgICBzd2l0Y2goICR3aGF0ICkgewogICAgICAgIGNhc2UgJ2JvdGgnOgogICAgICAgICAgICAkY3JlYXRvci0+bXlzcWxkdW1wID0gVFJVRTsKICAgICAgICAgICAgJGNyZWF0b3ItPmZpbGVzID0gVFJVRTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZmlsZXMnOgogICAgICAgICAgICAkY3JlYXRvci0+bXlzcWxkdW1wID0gRkFMU0U7CiAgICAgICAgICAgICRjcmVhdG9yLT5maWxlcyA9IFRSVUU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2RiJzoKICAgICAgICAgICAgJGNyZWF0b3ItPm15c3FsZHVtcCA9IFRSVUU7CiAgICAgICAgICAgICRjcmVhdG9yLT5maWxlcyA9IEZBTFNFOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgJGNyZWF0b3ItPnNldF9sb2dnZXIoJGxvZ2dlcik7CiAgICAgICAgJHNuYXBzaG90ID0gJGNyZWF0b3ItPmV4ZWN1dGUoKTsKCiAgICAgICAgLy8gbm93IHdlIGhhdmUgdGhlIGRvd25sb2FkLCB3aGF0IGRvIHdlIHdhbnQgdG8gZG8gd2l0aCBpdAogICAgICAgICRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgc3dpdGNoKCAkZGlzcG9zZSApIHsKICAgICAgICBjYXNlICdlbWFpbDEnOgogICAgICAgICAgICAkY29udGVudG9wcyA9IFxDb250ZW50T3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgICAgICRjb2RlID0gbWQ1KF9fRElSX18uJHRoaXMtPkdldE5hbWUoKS5iYXNlbmFtZSgkc25hcHNob3QpKTsKICAgICAgICAgICAgJHNuYXBzaG90X3VybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnZ2V0X3NuYXBzaG90JywkY29udGVudG9wcy0+R2V0RGVmYXVsdENvbnRlbnQoKSxhcnJheSgnc25hcHNob3QnPT4kY29kZSkpOwoKICAgICAgICAgICAgJGF1dG9fY2xlYXJfY2FjaGVfYWdlID0gKGludCkgXGNtc19zaXRlcHJlZnM6OmdldCgnYXV0b19jbGVhcl9jYWNoZV9hZ2UnKTsKICAgICAgICAgICAgJGF1dG9fY2xlYXJfY2FjaGVfYWdlID0gbWF4KDAsJGF1dG9fY2xlYXJfY2FjaGVfYWdlKTsKICAgICAgICAgICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnZGlzcG9zZV9lbWFpbDEudHBsJyk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignYXV0b19jbGVhcl9jYWNoZV9hZ2UnLCRhdXRvX2NsZWFyX2NhY2hlX2FnZSk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignc25hcHNob3RfdXJsJywkc25hcHNob3RfdXJsKTsKICAgICAgICAgICAgJGJvZHkgPSAkdHBsLT5mZXRjaCgpOwogICAgICAgICAgICAkc3ViamVjdCA9ICdTbmFwc2hvdCBvZiAnIC4gXGNtc19zaXRlcHJlZnM6OmdldCgnc2l0ZW5hbWUnKSAuICcsIGNyZWF0ZWQgb24gJyAuIHN0cmZ0aW1lKCclWS0lbS0lZCAlSC4lTScpOwoKICAgICAgICAgICAgJG1haWxlci0+cmVzZXQoKTsKICAgICAgICAgICAgJG1haWxlci0+U2V0UHJpb3JpdHkoMSk7CiAgICAgICAgICAgICRtYWlsZXItPklzSFRNTChUUlVFKTsKICAgICAgICAgICAgJG1haWxlci0+QWRkQWRkcmVzcygkYWRkcik7CiAgICAgICAgICAgICRtYWlsZXItPlNldFN1YmplY3QoJHN1YmplY3QpOwogICAgICAgICAgICAkbWFpbGVyLT5TZXRCb2R5KCRib2R5KTsKICAgICAgICAgICAgJG1haWxlci0+U2VuZCgpOwogICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdDcmVhdGVkIGEgc25hcHNob3QsIGFuZCBhbiBlbWFpbCBsaW5rIHRvIGl0Jyk7CgogICAgICAgICAgICBlY2hvICR0aGlzLT5MYW5nKCdtc2dfZW1haWxfc2VudCcpOwogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGNhc2UgJ2Rvd25sb2FkJzoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAkZm4gPSAkY29uZmlnWydyb290X3VybCddOwogICAgICAgICAgICBpZiggc3RhcnRzd2l0aCgkZm4sJ2h0dHBzOicpICkgJGZuID0gc3Vic3RyKCRmbiw2KTsKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoJGZuLCdodHRwOicpICkgJGZuID0gc3Vic3RyKCRmbiw1KTsKICAgICAgICAgICAgJGZuID0gdHJpbSgkZm4sJy8nKTsKICAgICAgICAgICAgJGZuID0gc3RyX3JlcGxhY2UoJy8nLCctJywkZm4pOwogICAgICAgICAgICAkZm4gPSBtdW5nZV9zdHJpbmdfdG9fdXJsKCRmbik7CiAgICAgICAgICAgICRyZWFkYWJsZV9uYW1lID0gJ1NuYXBzaG90TWdyLScgLiAkZm4gLiAnLScgLiBzdHJmdGltZSgnJVktJW0tJWQtJUguJU0nKSAuICcuemlwJzsKCiAgICAgICAgICAgIC8vIGFkZCBtZW50aW9uIHRvIGFkbWluIGxvZwogICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdEb3dubG9hZGVkICcuJHJlYWRhYmxlX25hbWUpOwogICAgICAgICAgICAKICAgICAgICAgICAgXHh0X3V0aWxzOjpzZW5kX2ZpbGVfYW5kX2V4aXQoJHNuYXBzaG90LDEwMCoxMDI0LCcnLCRyZWFkYWJsZV9uYW1lKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZS0+R2V0TWVzc2FnZSgpKTsKfQoKJHdoYXRsaXN0ID0gYXJyYXkoJ2JvdGgnPT4kdGhpcy0+TGFuZygnd2hhdF9ib3RoJyksJ2ZpbGVzJz0+JHRoaXMtPkxhbmcoJ3doYXRfZmlsZXMnKSwnZGInPT4kdGhpcy0+TGFuZygnd2hhdF9kYicpKTsKJGRpc3Bvc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJlZl9kaXNwb3NlJywnZG93bmxvYWQnKTsKCiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2RlZmF1bHRhZG1pbi50cGwnKTsKICAgICR0cGwtPmFzc2lnbigncHJlZl9kaXNwb3NlJywkZGlzcG9zZSk7CiAgICAkdHBsLT5hc3NpZ24oJ3doYXRsaXN0Jywkd2hhdGxpc3QpOwogICAgJHRwbC0+YXNzaWduKCdwcmVmX3doYXQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcmVmX3doYXQnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3ByZWZfZXhjbHVkZXMnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcmVmX2V4Y2x1ZGVzJykpOwogICAgJHRwbC0+YXNzaWduKCdhZG1pbl9lbWFpbCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3ByZWZfZW1haWwxJykpOwogICAgJHRwbC0+YXNzaWduKCdkb3dubG9hZCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3ByZWZfZG93bmxvYWQnKSk7CiAgICAkcmVzdG9yZV9zY3JpcHQgPSAkdGhpcy0+R2V0TW9kdWxlUGF0aCgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdwaGFyJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnU25hcHNob3RNZ3ItUmVzdG9yZS5waHAnOwogICAgaWYoIGlzX2ZpbGUoJHJlc3RvcmVfc2NyaXB0KSApIHsKICAgICAgICAkcmVzdG9yZV91cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2dldF9yZXN0b3JlX3NjcmlwdCcpOwogICAgICAgICR0cGwtPmFzc2lnbigncmVzdG9yZV91cmwnLCRyZXN0b3JlX3VybCk7CiAgICB9CiR0cGwtPmRpc3BsYXkoKTsKCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/action.get_restore_script.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoICFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykgKSBleGl0OwoKaWYoICEkdGhpcy0+VmlzaWJsZXRvQWRtaW5Vc2VyKCkgKSBleGl0OwoKJHJlc3RvcmVfc2NyaXB0ID0gJHRoaXMtPkdldE1vZHVsZVBhdGgoKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAncGhhcicgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ1NuYXBzaG90TWdyLVJlc3RvcmUucGhwJzsKaWYoICFpc19maWxlKCRyZXN0b3JlX3NjcmlwdCkgKSB0aHJvdyBuZXcgXENtc0Vycm9yNDA0RXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCByZXN0b3JlIHNjcmlwdCBpbiBmaWxlc3lzdGVtJyk7CgpceHRfdXRpbHM6OnNlbmRfZmlsZV9hbmRfZXhpdCgkcmVzdG9yZV9zY3JpcHQpOwoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/action.get_snapshot.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoICFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykgKSBleGl0OwoKdHJ5IHsKICAgICRjb2RlID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3NuYXBzaG90Jyk7CiAgICBpZiggISRjb2RlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJfbWlzc2luZ3BhcmFtJykpOwoKICAgIC8vIGZpbmQgYWxsIG9mIHRoZSBzbmFwc2hvdCBmaWxlcyBpbiB0aGUgVE1QX0NBQ0hFIGRpcmVjdG9yeQogICAgLy8gYnVpbGQgYSBtYXAgb2YgdGhlaXIgY29kZXMKICAgICRmaWxlcyA9IGdsb2IoVE1QX0NBQ0hFX0xPQ0FUSU9OLicvX3NwKi56aXAnKTsKICAgIGlmKCAhY291bnQoJGZpbGVzKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyX25vc25hcHNob3RzJykpOwoKICAgICRtYXAgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJGZpbGVzIGFzICRvbmUgKSB7CiAgICAgICAgJGJuID0gYmFzZW5hbWUoJG9uZSk7CiAgICAgICAgJHRfY29kZSA9IG1kNShfX0RJUl9fLiR0aGlzLT5HZXROYW1lKCkuJGJuKTsKICAgICAgICAkbWFwWyR0X2NvZGVdID0gJG9uZTsKICAgIH0KICAgIGlmKCAhaXNzZXQoJG1hcFskY29kZV0pICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJfc25hcHNob3Rub3Rmb3VuZCcpKTsKCiAgICAkb25lID0gJG1hcFskY29kZV07CiAgICAkY3RpbWUgPSBmaWxlY3RpbWUoJG9uZSk7CiAgICAkcmVhZGFibGVfbmFtZSA9ICdTbmFwc2hvdE1nci0nIC4gXGNtc19zaXRlcHJlZnM6OmdldCgnc2l0ZW5hbWUnKSAuICctJyAuIHN0cmZ0aW1lKCclWS0lbS0lZC0lSC4lTScsJGN0aW1lKSAuICcuemlwJzsKICAgIFx4dF91dGlsczo6c2VuZF9maWxlX2FuZF9leGl0KCRvbmUsMTAwKjEwMjQsJycsJHJlYWRhYmxlX25hbWUpOwp9CgpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIGVjaG8gJHRoaXMtPkRpc3BsYXlFcnJvck1lc3NhZ2UoJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/cms-can-be-simple-org.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAtEAAABHCAYAAADBaRtwAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4JWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMwNjcgNzkuMTU3NzQ3LCAyMDE1LzAzLzMwLTIzOjQwOjQyICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTctMDUtMDdUMTM6NDU6NDErMDI6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNy0wNS0wN1QxNDo1NTowOCswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTctMDUtMDdUMTQ6NTU6MDgrMDI6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NmM4NTczM2UtZTJiMS01MDQ1LTgxNjktOTZhYzZkMjY3N2YwPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjZjODU3MzNlLWUyYjEtNTA0NS04MTY5LTk2YWM2ZDI2NzdmMDwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjZjODU3MzNlLWUyYjEtNTA0NS04MTY5LTk2YWM2ZDI2NzdmMDwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo2Yzg1NzMzZS1lMmIxLTUwNDUtODE2OS05NmFjNmQyNjc3ZjA8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTctMDUtMDdUMTM6NDU6NDErMDI6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzIxPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjcxPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5H6g/qAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAABkqSURBVHja7J1BbttI04bfGNl/HGhLYGiA+1FOEPoEpk9g6QCSzRPYPoFk6QCST2DlBFZOEM5egDmAtsTwP8H8C5YUxpGtarKbbJH1AEYyE5oSm9XVb3VXV3+CQUbjqA/Aof/06AcA1vRnNp9NYgjWUHhnDoA+/e8YQNaG95W6/lGb7G03YpOC0B761M/7H1wTA0joT0EQBBafNIovD0AA4Cs5q77Cr8f08x3Aaj6bZPJqahHMDr2zS8V3ti68K2sHndT1tdlkb7sRmxSE0xHNIfX7oMTvrwF8oz91+LdA4XNN3PcQWQMBQ1Dx91Xax1H09yrE1H4m8fBzgucjEvqpG+73qxMt74V0A+fZ4t52k1US0STCBgCuNRvsGsDTfDZZlvhO9wDuSn7uxXw2WZt+06Nx9FrSANfz2eRCU8BzRwONU/F2CYBHAEuV4Cd1/XsA6G0395qFs1Gb7G03yzq9ArXTMXs+7203iSXf5bc+1dtu1g1+n3Vvu7louA1U7SwG8Lfu4C11/f9sGOl6280nA7fd9fsbzYN7TP5tVWGA5rb7J0P3fc9vn9csul4r3kOlfQIAL4afaSdgv5OdrDWKa66feaBr68a0Hyyl30oEolV8/EVvu1mflRVho3G0oE4xMRDxBQAWo3H0OhpHgxpfwnUNArrfVAQ3GkdO4b0NNAjonXOcAHilAKYRUtf3Utc3bpOp67+mrj+o6ZkcEgXHGMBeJhBU7ewWwALAv6nrP6euH0izfMhtod/r9q19ehevDYkVk6I2rPHzblpodx711zsAzwD+pT8H0iW7g5KIJhF2r1mEHTPSnZiuYyAJaXa9dc5kNI7CwnszgQPgbjSOflCgUJd4dihyrNUmSUybtsmQ+Tw2D1D93aqDUNoGXlLXf6FlRuFXgfuDxLPpfu+QWPoBc2kCdXNdsx13pb8uDI+1wimKaBKxP9DMFL4H4GU0jkzPajk1dPbanQnN5j/XMNDsB7Y6VhBIxDZqk6nrm7RJ7nM5dc2Olw0cRQBWJgDwgzbGCrmfeWlA0O6EexsEEjdI1/E5Xev/Honpl5raWLBZRNPs84sFHeF2NI5eDM8WXxoUs2HdHYrE7KIJ4WRYQFtjkzRL6Gh+vkDx2WyejXYgaR262vFFhPReQDcpTr62pC3rCAauO2yrAfJZaQl+uyqiKYf2zjKjNCkKQ9p4d/LOhFYPmhDQMfIkf1MCugs2qfp8fctzZ8PU9UNxudqEtNPR5/csENBLAMOWtOdNDe8rlD4rM9KdFNEkoHVFqhn0lQwKDacLaO/0NHtetzMpI+xiGiQeCj9ThfeWIa9ykhkU0FbapK6UikJpPquDtBJMOiz+dA/Ki44++6KkGFmTLxtSgH8B4Ir+36qjAnonck0G3wPprvs++yzN0D4+GxLQGTmm78jLsiXviMoA+bJYCP7SdQYgKlP+TlGMTG0X5kdE+z3U0gGWAB4OvavCPT2auRi8M5DZLKB/sclDJeFI4JW2SY3l78rOsg9S13+oo9xdhQH7DkDUcr+aKQRmHsqlJIWp6wemygdaykBR8GWg8pt4v5buqiByQrJPryMCujjerQ3e23ZUnr1KwBGQDS8htFtEkwArI1YSEmJHjYSE1op+IsoXvjlipAmAqxoO+OiPxlFf8+fU7UyuFd4Zq01JYEejcfSAfEYoPCCgjbwbyoEubZMcgUs1efc2SekHLJvUdcohCfkqAdcAdpfiuk1d/6nlp0LGqrWpydYuFW3chPh50F27XSMqqQcx8plmbkCZkbhZIi+Zd/dmoqCtAnrnMyLoP0AkwGlsKFRNPdz56MsSvvquYyK6qTrWtXF2QEAHKDcT9jCfTc7LzhDPZ5MVHSTyXmdeA/hS4wl52kRv4TTHWlCoRV1K+M5nk2w+m1y9GVSGBgV0aZvsbTfnZWeIe9vNisTQhzapWRAOUC137hTqsXY1FeGYrQ2RH4DBtaegQ03UB39zVkzCKCn5WVMAXwrvoc0Cuuh3rB1DLWMXcF0p9ldAcsTbLaIpxUJ1gEtI3GqJNuazyZQcYFG0TOezic40Ac59dBp63Z2G+3nRR+kbjHe1G1yG89lkZUhAl7ZJXTNqve3moE32tpsLA8eBVxXBtpe7A/JNkLfifg/aWnLA1t4dkDuUY64SMOiYVd29h4cTF9Bc/647+HaYwjw+cbtMKOBSGf++QminiEa+jOUp/H4MA7PDdL/dQDKczya6cyg5Bu9RikldwkinCP1TQQRXfVdLw/nppWxSd7oA3W9vk73tRnteL4lfj/F8dQ+IJriTTYbv2lqGPJeXFZB0pFkchf6/1vSZGU5/KfqJG5BptiVuIP/YEvscKgRuXemz3RLRNAutmnNmbBPZfDaJ57PJH4YE2j9MR1u5ZjQztSIB8LfG5+OIzrXtxqlw7PUvNmlgdngvpHvbzR8aNxC+hbP8ecVx0g2Xu+PYlgNJ6zjp/lkzX6XdSsP1VzqDb44vy9Ce/GCVZxER3UYRjXzGz1EwmKEpAV1jhH4MHceAc5zJo5jiQZRt0pSAriFg6OP4kvWSlvs5zrrJ2Wju8ndoeW3rJomlCUrxf9IEpceXEHpqGfeZQnHZsnb+xrzOEZNsp4hWGXQfatzgZ4oVji+/OKiezzyw1Jl4J/COlGzyxCs+cJ71m0oA2NRR2yT0H5iXLySto9JAm0lT/YLkm/5OAv7qUKjh87h+WyaPhHaIaDq4hOu017T576QplNg7RukdxsxjvlcNzeh7Bk9mrAzlB7Ntkjb/nSQkIo8FW0lvu1mRSF2Dt2GoydnoKfM7eshXHIRf6TMDlrgj7ZEwrwsgM32HeGJeV3ljM1OIr1G+eoog2CWioZb7+9Ci5+c4lqCC2LzU9B1U+c68bmLxu+mSTd6WsBOO3QyamuWltBpuWscdpbMIava/7lB7/KNwreTa/84SvFWLPqrl7IbMIOaphW3siZl1V0SHzOvj+WzSGsdNz5IwHYMSlEs9OHJZZqg0HDfCD+lkShth22QLTm3jzP4sj/z3IRw0WJOU3gvXvicQAOzz4weMS5861CwqfTwUIc3yIVX80Xt0bUOh6rMDst+hXSKaDlfh0kanzXmmMk6FI15MORKVAWcwGkcvNqV2KG42O2mbZKat/HZMOf035z3fNfyI3Jq9wQnUt65LQL9wAmWDVWJsFdGZwvUDAK/o1oE0xzC9wdBjtncbc6FDBVsTEd0mEQ21pZtVR6Nzj0rVqdBUKsfueG4VIR0AeB2No2eNtbGr0CWbvKlgJxz78ZqsgKG4yXDS1U2Gqet7dLT9D6aAGXawmVT7ukcBySvU6823Ee644KDcChZ3sqltwV8AtZWP7xBaw2cAf3E7YJXT7WxlPpsko3G0ZkSR19wIkmZ1jzmh2HCFkweoz8KEyFM8Mhqwvpk6ifAIbJt8O0N7YsIpYAQM2QczjivkaRDHRNcNGsyf7W0309T1rxnP6tDznLpAdBiBS5+e93/UT1UCx6HBFKY/DQZdWcWNkA8oN0vqkV1NyId/o74To3s8MceF6xJid8AMhNqiIzzkK30Dxd9bdcje/kQ9q0GNjW+fFaLzdYtfNMexDJAvTXPFKOczTQYH69E4WpWcUXDoeQcNCequ2CQnh271gTjNUtdfMZx4mLq+13DAEYGXpjBIXf/pxPPc+8xnVRahACLDaRyDEqJAZaC7qPD7CQnpScV30yfxs/dtHRI2S2bgHZAfThTshhPcnHL6nYefJzt+LTm2TtGtspQm/UmRT0094JnCtf+0+EWvGIbtKKQ6cMTRsobnGqL6bMtOUD+PxtG/o3G0KJHaYoqTtUmq4cxxLo8V/31Ho0eBkyieMi+XTWHvCNCO5UG/J0J0tcHetwH4l+wu7EAbcttPxWdw0hcTS4OV/5g/rxQcT0raSYZ2VTcTSEQHCrMArUShZvRRR0EC85jIrKU2NH3GUGPkuxt0fozG0Q+qL26CLtgkZ4CKjy1/079z2mFgQb7xA9MWd/nBwk/xfNGhmtCcyQHdwURRUL8CuEd7601zA2+uf/dgwerrCXAFORyplSKaS9LytuAc2TlgHAPOmYWuzZlQ3vU59Of/9QEsqLJHv6F3dpI2yTxcRWWw41znoOFZNqodzU2JumvqxEULuZQ62geFdGTo3h7ydI/dhsS2kYC/wZDjp7hie9lxe11Lt+22iG41lO/LEWVhxX9P6t6sN59Nsvls8gX8mUAVAuQz0wOxIjYheLNcXDvhXtd0uTtQOgJ3MJG0jrx/3QL4kbr+q5QB/IUpgC8GxYmDfOn+Be2r7MGdyLnWdM0S3TyhMIOZlRNBRLSVcMTIu8vwlDPtafgMU2L6ngadqQExvbD44Bbb4IjZJc3ccoRpwrSrRsvdFeDOIErt6DfvD8Aidf2XrpYCPECMfLPihUGhEiAvPdhvUbstmWNAcGRM44x5KqK9TawN26VwYiK634H24CyL9z84mORS02eYFNLJfDaJkKd46F5iGozG0X2Nj3NyNkki1sSg84153U3TbUC5vVI7uqKokxSP3wTLEMAfFKTFmu/vIJ+RbpuQruozuBsK1x2yxZhs8QJysErr+UzGHTCdSKuhmtExw1EOkG882UO50uGxzmVLrW3adLgEsCzUtebU8j3G3WgcrSseD99mm+TMQieqJd56280ydX1O6Sobyt0B+WrINSOgcKjNohN6x5ni4OmU6HcegOfU9b9wVyyYJDC37B7X1PZT+tn55Evo2Q+wE9LnaMcGsUfwcr4H7/Q/B3r3dpwyCfLVwCcRzrX5E2tENJe/OvLSH3E8F/P6rYgGL8/VSmdCwn4KYKpJUC9ooDHNSdkkbZTjBAdllz5XzEHtDg0faEI1riPk1RCOcZu6/rcTqh0d97abixL20Sf7uAFvtcKjvnal8bs/9bab+5b48v1EQcFHX6L8sdY74ai7zZsWfiHjmUP8njI2YH7OskX6YBcgZwD+pr/H6Ga+N8ufHNBKreJMIWryOvLSV5y2OFCR4lLTvRsX1PPZZEobEc9RbjOiV3GjYVttkruxr+ygww3SQhtSJHrbzUqhT0zQcnrbTdzbbqa97WaXapUx32UAgevbdykfVxX6WYj2pHVU2WDISQ1bwv5Z+08KP38gT9O4InG4EgHdbT5TNMWhPxpHXhuP/n4jIrPROFoyouwbcsjcVI5lHbWhdQtqAPejcTQlAXir8OuXFQYptk1akppwFBKtIePSBHlN57IfleH4LJtD9j21oGki5LOvDuNd37dolvSYoF6mrh8j39DGEThrGc6UBfUKP09ADBV/f+//W9AOCWNCIsSvJxj2IRsKBQGfoZa/E6AbO02/MUR0WHCiA+Y9TzawABCNxtE35MvvDuPXwgof2UabHDDbzUM9pehubBDRve0mSV3/kfnMN6nrL08haNLUNnHq+pyAPmyJoGuCBPms4gBqJRWDFrXBE7P/DfBzaf6G2bYS3Amt5owO48iY1193oVGYNaOLx4Afa5faa0Mbape1ymA9GkelBhqq3tA2m7yx7Pt4qeuHNnwRml3mBE4Oulc7mnWQjlTqqMxSMRDx0J7N9txJiOtCP+T4DjniWmi/iKY/uQIvaPB0urrhtMk1bcTra7jXKQUYS0vaH8hrCVttk1Tr2BNh/yEqtaNDdASFo74dCDrEpIpva8tYmDD9rUfiOWTYW9amcU8QjololVSDu460DWcGKGS2R9tK/Hyz7DNst0lbZ8sDW47WpsobXAEjtaPbK+hOwe+3EZUNhpzge4V2lAEUuhlMXzB+4r2IVjjyGgDCssv0pwRtqosZlw6O/Pu6hZsxjT8PVW5g26StFQoKZctsxaYAJGIOvF6HgnkuElToIe7oc3P9bcgM2B7FlIRTpLfdJL3tZs34yfYiWjESBfIjnrvgtJ8suUdXUbJJS2cnbyxv49CWdiOnxE3ruEUHatcrrBTEEAQ7xqpY7FHoCkURPQV/+cUD75CESozG0X3Nx0i/ZVnx9zNYkBdmIOCpS3RZZ5Op69+nrn/PvNYB/0CCprDqO/a2myX4O/rDDvjoQMHXCPX6tra1+VLTfWQWWugM+xMLqT7yrmYmy7mPxtFiPpsYKa1Eh3Xc0d8vAVzVnRZBbbKqMFivmq4NTRtBX0bj6KriUdxFLpnXVZqNoFPtlGwydf1Fb7sxYpO0QfCO/n4J4OpIubVb5q3XAL4b+MpfmSLMinJ3BSLw6iO3GgrCuGkrSYeaxin4BN19XcXXxy1r1wS8EwyPBRYrkVZC50Q0icbpaBypHPc8oOoUVzrFIs0+FwePPoAfo3EUzWeTZc1t9FTBqTSaykGByIQGnefROLqgkoZV7umAN3OZ6LCJ3nYzTV1fySZpCfxql7OkSdActMnU9SOaPX1PnHIYmqh9TO3wyrjUS10/pDz0xqH6yA/ocN4zCegX8Kq6JF2pnU2+7OWNP9AppLk2t25p+1YZ74DTOKFQELjjZ4g8bdCjoPlvAKuitjg7NKArflYA4LVQM7mKQPNG4+jlHUfmIM/Ffq4zH5s2XZZxConGmd+yAnqBn8uTDgUitxVvzT1sRacgK2WTOkqhpa7vpa7/oU2mrv/8Nq+YZq057bQ2JYDovlwbtC13e4qOHqdLm2RfFALHVUeapo98haLYLgNqKx1jwgL8UpTfWtrGq4r9TlI5hDb44AnyCagJ+ZgA+cry4q22+HxANMajcRSBv4S+ExPPo3G0BvCoerAIzWYPaCA/5gxD5KkkVzWK1CXUjrzeRfRNC+hDTCg9ZqiSHkOByzP4OZranp9mJkvZZOr6awCPqrOsFIUq2WTq+ldUqk1FlJq2kyfmOwtsOkKdUnki1JDnbonT7tN7Ull1MSFc/qyp0o3q7Hn/A7Ec0ID3CLV9FEVfsRssVcRmW+GeYPjbhEBXA1+hVb54ccQX7LTFsLfdLD8fuoLSOv6C+oajgARuRk7mOw7MyJIg69PPV6gvHznI83zPa8qTfiohopcNCehbhtgMkK8erAA8fRT0KAY4e2daNW3kgKiapq5f2iZT1//FJgtid9dxtNhk6vrnyGezOEIo+yAVRFe7LSmq5ry7O1h0fHRvu1lREBTgtOjT6gVXHDoVPkv3MegD1LPR9AE/j5DmfKcFo//dkZ9aks+OGb8T0u95ir69zWJxWVJESyWq+rmD2bS3C1RLXTL9/Q4FchcVBLSK/1ukrr/+/N6/zmeT4WgcoaRDdYrOmO6jm2FdGw1pdj4Gf4aokdrQo3G0UHxfIfK638VZhH/o3/5SEINvMfLCe9vNMHV9LTZJ99Fuk73tJkldn+s06gq0lswgMKQc78yiQWKIfAnfweng1CT8M1N9zSLuFQdhh2z9lvxZjDyPscj/yK8F0uYHSaC+wTBDQxNHgqAR1bTGm89HxGMVIW10YG1og2Ff4dpTQ9eg/6B7FlqjkDZqkzTr6yl8t7ryBx+ZInonQO5taVQKSh4hh6scEi0XlgU8Jris8Lsefh5VrTOoyzpgX6obDEVAC22gr3r92bErqITdtOMCWsVJZGgoX47eVZPObD2fTYwLMCphZ5VNFtIyuJFsXFf+MX0O1yatO6K8t93cQ3ItDwnouAPPuj9e1wKm6M4mzpVin5MNhUInOeNcNJ9NIgBXDUfgGYCLhgQ0qFwbx4E2Whu6waAnJhupS1hZY5M7Aa14uErdgw53dcSjvDDbGELY9bOuCOh9H7NAvC7R/jSOsj5DVXALgq2o2vH3M+6VtPnsHM3MdK4AnDdZMk7BqTQekTcQ9Czns8mXuoMHqrjRqE2+2aAYgpe7yw3IdLcV10HYOBu9RreXjBPkKx5fOiSgi/3likRs1sBnDzsaxHH7m2woFLoWOO77yJnK1fPZJKOZzrqES4x89vmq6ZP/CoHER98jMZkPXOK7niPfBW+q7RLkB+00NsD0tpuM0jtqtcnednPoMBdu3u6qoVxWroMIqOSabTQhoppmReL53HQllxNgWoNPK7IG8KXDwVvCCPY51wjCSUCpg1wNN+xtN8lZmQ+azyZJQUxPoX8pZ0Xi+YsFs8+Hvtt7WJUXRkHPPb2nSON7SpDnpp+r1gQ3aPxJQUwbs0maCfzNJqn4use8V1N2oiIGbDt8BRR4PLTYh8ck3B6Qz7z+QcFa18VzkQz5xlfdPu23vk4/Scfb+6nivwvCqXFxZKzMUNgH9UnXp47GUR/5cvZXqNc+TWjw+I6Gc4rbDr2nAPmud5X3tKZB/smW2fZj0GyqFpvsQBUEQThVij4tKCnM933dgHDmfqe1gfsmGp4nOBL4ZRa2jwOFkrQW2rQHtdrlJgP7zOLvd6gva9Enb/TD7t7fkdfm37fJJ1NPUjhQ5VCD71+MhTPNXRPVxXcTHHhH2amIZkanYNnkoZlmQRBOSlQ7DHG21iQyBUEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQ7OVT6vr/STMIgiAIgiAIApv1mbSBIAiCIAiCIKghIloQBEEQBEEQREQLgiAIgiAIgohoQRAEQRAEQRARLQiCIAiCIAgiogVBEARBEAShQ/z/AHrjb9oIFu5qAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></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[PD9waHAKCi8vIEEKJGxhbmdbJ2FkZHJlc3MnXSA9ICdBZGRyZXNzJzsKCi8vIEMKJGxhbmdbJ2NyZWF0b3JfY2xlYW51cCddID0gJ0NsZWFuaW5nIHVwJzsKJGxhbmdbJ2NyZWF0b3JfZ2V0ZmlsZWxpc3QnXSA9ICdHZXR0aW5nIGZpbGUgbGlzdCc7CiRsYW5nWydjcmVhdG9yX21ha2VkYXRhZmlsZSddID0gJ0NyZWF0aW5nIGVtYmVkZGVkIGRhdGEgZmlsZSB3aXRoIGNvbmZpZyBpbmZvIGZvciB1c2UgaW4gcmVzdG9yZSBzY3JpcHQnOwokbGFuZ1snY3JlYXRvcl9ta3JlYWRtZSddID0gJ0NyZWF0aW5nIFJFQURNRSBmaWxlIGluIHRtcCBkaXJlY3RvcnknOwokbGFuZ1snY3JlYXRvcl9ta3Jlc3RvcmUnXSA9ICdDcmVhdGluZyByZXN0b3JlIHNjcmlwdCBpbiB0bXAgZGlyZWN0b3J5JzsKJGxhbmdbJ2NyZWF0b3JfbXlzcWxkdW1wJ10gPSAnRHVtcGluZyBkYXRhYmFzZSc7CiRsYW5nWydjcmVhdG9yX21rYXJjaGl2ZSddID0gJ0NyZWF0aW5nIGFyY2hpdmUnOwoKLy8gRAokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdBIG1vZHVsZSB0byBjcmVhdGUgc25hcHNob3RzIG9mIHRoZSBDTVNNUyBmaWxlc3lzdGVtIGFuZCBkYXRhYmFzZS4gVXNlZnVsIGZvciBxdWljayBiYWNrdXBzIG9yIHNpdGUgbW92ZXMuJzsKJGxhbmdbJ2Rpc3Bvc2VfZG93bmxvYWQnXSA9ICdEb3dubG9hZCc7CiRsYW5nWydkaXNwb3NlX2VtYWlsJ10gPSAnU2VuZCBsaW5rIHZpYSBFbWFpbCc7CgovLyBFCiRsYW5nWydlcnJfY21zbWFpbGVyJ10gPSAnV2UgY291bGQgbm90IGdldCBhbiBpbnN0YW5jZSBvZiBDTVNNYWlsZXIgbW9kdWxlJzsKJGxhbmdbJ2Vycl9pbnZhbGlkX2VtYWlsJ10gPSAnVGhlIGVtYWlsIGFkZHJlc3MgeW91IHNwZWNpZmllZCBhcHBlYXJzIHRvIGJlIGludmFsaWQuJzsKJGxhbmdbJ2Vycl9taXNzaW5ncGFyYW0nXSA9ICdPbmUgb3IgbW9yZSBleHBlY3RlZCBwYXJhbWV0ZXJzIGFyZSBtaXNzaW5nIG9yIGludmFsaWQuJzsKJGxhbmdbJ2Vycl9ub3NuYXBzaG90cyddID0gJ1NvcnJ5LCBpdCBhcHBlYXJzIHRoYXQgeW91IGFyZSB0b28gbGF0ZS4gV2UgY291bGQgbm90IGZpbmQgYW55IFNuYXBzaG90TWdyIGZpbGVzIG9uIHRoZSBzZXJ2ZXIuJzsKJGxhbmdbJ2Vycl9zbmFwc2hvdG5vdGZvdW5kJ10gPSAnU29ycnksIGJ1dCB0aGUgc25hcHNob3Qgc3BlY2lmaWVkIGNvdWxkIG5vdCBiZSBsb2NhdGVkLic7CiRsYW5nWydldmVudGRlc2MtQmVmb3JlQ3JlYXRlU25hcHNob3QnXSA9ICdTZW50IGJlZm9yZSBhIHNuYXBzaG90IGlzIGNyZWF0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLUJlZm9yZUNyZWF0ZVNuYXBzaG90J10gPSA8PDxFT1QKUGFyYW1ldGVyczoKPHVsPgogIDxsaT5kaXNwb3NlIChzdHJpbmcpIC0gSW5kaWNhdGVzIHRoZSBzZWxlY3RlZCBkaXNwb3NpdGlvbiB0eXBlLjwvbGk+CiAgPGxpPndoYXQgKHN0cmluZykgLSBJbmRpY2F0ZXMgd2hhdCBoYXMgYmVlbiBzZWxlY3RlZCB0byBiZSBiYWNrZWQgdXAuPC9saT4KICA8bGk+ZXhjbHVkZXMgKHN0cmluZyByZWZlcmVuY2UpIC0gQSByZWZlcmVuY2UgdG8gYSBzdHJpbmcgY29udGFpbmluZyBhIG5ld2xpbmUgc2VwYXJhdGVkIGxpc3Qgb2YgZmlsZXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBiYWNrdXAuIFdpbGRjYXJkcyBhcmUgc3VwcG9ydGVkLjwvbGk+CiAgPGxpPmVtYWlsIChzdHJpbmcpIC0gSWYgdXNpbmcgZW1haWwgZGlzcG9zaXRpb24sIHRoZSBlbWFpbCBhZGRyZXNzIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBtZXNzYWdlLjwvbGk+CjwvdWw+CkVPVDsKCi8vIEYKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1NuYXBzaG90TWdyJzsKCi8vIEcKJGxhbmdbJ2dldF9yZXN0b3JlX3NjcmlwdCddID0gJ0Rvd25sb2FkIHJlc3RvcmUgc2NyaXB0JzsKCi8vIEkKJGxhbmdbJ2luZm9fY3JlYXRlX3NuYXBzaG90J10gPSAnVGhpcyBhY3Rpb24gd2lsbCBjcmVhdGUgYSBzbmFwc2hvdCBvZiB5b3VyIENNUyBNYWRlIFNpbXBsZSBpbnN0YWxsYXRpb24sIGluY2x1ZGluZyB0aGUgZGF0YWJhc2UgYW5kIGNyZWF0ZSBhIHppcCBmaWxlIHN1aXRhYmxlIGZvciB1c2UgYXMgYSBiYWNrdXAuIEl0IHdpbGwgbm90IGJhY2t1cCB0ZW1wb3JhcnkgZmlsZXMuJzsKJGxhbmdbJ2luZm9fZXhjbHVkZXMnXSA9ICdPbmUgZW50cnkgcGVyIGxpbmUsIHdpbGRjYXJkIHBhdHRlcm5zIGFuZCBzdWJkaXJlY3RvcmllcyBhcmUgcGVybWl0dGllZC4gaS5lOiB0bXAvKmd6JzsKCi8vIEwKJGxhbmdbJ2xlZ2VuZF9zbmFwc2hvdF9kaXNwb3NpdGlvbiddID0gJ1doYXQgZG8geW91IHdhbnQgdG8gZG8gd2l0aCB0aGUgc25hcHNob3Q/JzsKJGxhbmdbJ2xlZ2VuZF93aGF0J10gPSAnQXJjaGl2ZSBPcHRpb25zJzsKCi8vIE0KJGxhbmdbJ21zZ19lbWFpbF9zZW50J10gPSAnWW91ciBzbmFwc2hvdCBoYXMgYmVlbiBnZW5lcmF0ZWQgYW5kIGFuIGVtYWlsIHNlbnQgdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzLic7CgovLyBQCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1RoZSBTbmFwc2hvdE1nciBtb2R1bGUgaGFzIGJlZW4gaW5zdGFsbGVkISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVGhlIFNuYXBzaG90TWdyIG1vZHVsZSBoYXMgYmVlbiB1bmluc3RhbGxlZC4uLic7CiRsYW5nWydwcm9tcHRfZXhjbHVkZXMnXSA9ICdFeGNsdWRlcyc7CiRsYW5nWydwcm9tcHRfd2hhdCddID0gJ0FyY2hpdmUgQ29udGVudHMnOwoKLy8gUwokbGFuZ1snc25hcHNob3Rub3cnXSA9ICdDcmVhdGUgU25hcHNob3QgTm93JzsKCi8vIFcKJGxhbmdbJ3dhcm5fY3JlYXRlX3NuYXBzaG90J10gPSAnPGI+V2FybmluZzo8L2I+IFRoaXMgaXMgYSB2ZXJ5IGRhdGFiYXNlIGFuZCBtZW1vcnkgaW50ZW5zaXZlIG9wZXJhdGlvbi4gWW91IG1heSBuZWVkIHRvIGFkanVzdCBzZXJ2ZXIgcmVzb3VyY2VzIHRvIHV0aWxpemUgdGhpcyBhY3Rpb24uJzsKJGxhbmdbJ3doYXRfYm90aCddID0gJ0ZpbGVzIGFuZCBEYXRhYmFzZSc7CiRsYW5nWyd3aGF0X2ZpbGVzJ10gPSAnRmlsZXMgb25seSc7CiRsYW5nWyd3aGF0X2RiJ10gPSAnRGF0YWJhc2Ugb25seSc7CgojCiMgRU9GCiM=]]></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/class.fancy_stderr_logger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3I7CgpjbGFzcyBmYW5jeV9zdGRlcnJfbG9nZ2VyIGV4dGVuZHMgc3RkZXJyX2xvZ2dlcgp7CiAgICBwcm90ZWN0ZWQgJG1vZDsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChcU25hcHNob3RNZ3IgJG1vZCwgJGx2bCA9IHNlbGY6OkxWTF9JTkZPKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRsdmwgKTsKICAgICAgICAkdGhpcy0+bW9kID0gJG1vZDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdHJhbnNsYXRlKCRzdHIpCiAgICB7CiAgICAgICAgaWYoIHN0YXJ0c3dpdGgoJHN0ciwnbGFuZzonKSApIHsKICAgICAgICAgICAgJHN0ciA9IHN1YnN0cigkc3RyLDUpOwogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1vZC0+TGFuZygkc3RyKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRzdHI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlYnVnKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5sZXZlbCgpIDwgc2VsZjo6TFZMX0RFQlVHICkgcmV0dXJuOwogICAgICAgICR0aGlzLT53cml0ZSgnREVCVUc6ICcuJHRoaXMtPnRyYW5zbGF0ZSgkc3RyKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZlcmJvc2UoJHN0cikKICAgIHsKICAgICAgICBpZiggJHRoaXMtPmxldmVsKCkgPCBzZWxmOjpMVkxfVkVSQk9TRSApIHJldHVybjsKICAgICAgICAkdGhpcy0+d3JpdGUoJ1ZFUkJPU0U6ICcuJHRoaXMtPnRyYW5zbGF0ZSgkc3RyKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGluZm8oJHN0cikKICAgIHsKICAgICAgICBpZiggJHRoaXMtPmxldmVsKCkgPCBzZWxmOjpMVkxfSU5GTyApIHJldHVybjsKICAgICAgICAkdGhpcy0+d3JpdGUoJ0lORk86ICcuJHRoaXMtPnRyYW5zbGF0ZSgkc3RyKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdhcm5pbmcoJHN0cikKICAgIHsKICAgICAgICBpZiggJHRoaXMtPmxldmVsKCkgPCBzZWxmOjpMVkxfV0FSTklORyApIHJldHVybjsKICAgICAgICAkdGhpcy0+d3JpdGUoJ1dBUk5JTkc6ICcuJHRoaXMtPnRyYW5zbGF0ZSgkc3RyKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVycm9yKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5sZXZlbCgpIDwgc2VsZjo6TFZMX0VSUk9SICkgcmV0dXJuOwogICAgICAgICR0aGlzLT53cml0ZSgnRVJST1I6ICcuJHRoaXMtPnRyYW5zbGF0ZSgkc3RyKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGZhdGFsKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5sZXZlbCgpIDwgc2VsZjo6TFZMX0ZBVEFMICkgcmV0dXJuOwogICAgICAgICR0aGlzLT53cml0ZSgnRkFUQUw6ICcuJHRoaXMtPnRyYW5zbGF0ZSgkc3RyKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRpc3BsYXlfcHJvZ3Jlc3MoJHBlcmNlbnQpCiAgICB7CiAgICAgICAgLy8gZG8gbm90aGluZwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.file_logger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3I7CgpjbGFzcyBmaWxlX2xvZ2dlciBleHRlbmRzIGxvZ2dlcgp7CiAgICBwcml2YXRlICRfZmlsZW5hbWU7CiAgICBwcml2YXRlICRfbHZsOwoKICAgIGNvbnN0IExWTF9GQVRBTCA9IDA7CiAgICBjb25zdCBMVkxfRVJST1IgPSAxOwogICAgY29uc3QgTFZMX1dBUk5JTkcgPSAyOwogICAgY29uc3QgTFZMX0lORk8gPSAzOwogICAgY29uc3QgTFZMX1ZFUkJPU0UgPSA0OwogICAgY29uc3QgTFZMX0RFQlVHID0gNTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGx2bCA9IHNlbGY6OkxWTF9JTkZPLCRmaWxlbmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYoICEkZmlsZW5hbWUgKSB7CiAgICAgICAgICAgICRmaWxlbmFtZSA9IFRNUF9DQUNIRV9MT0NBVElPTiAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBiYXNlbmFtZShfX0NMQVNTX18pLicubG9nJzsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5fZmlsZW5hbWUgPSAkZmlsZW5hbWU7CiAgICAgICAgJHRoaXMtPl9sdmwgPSAkbHZsOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiB3cml0ZSgkc3RyKQogICAgewogICAgICAgICRzdHIgPSB0cmltKCRzdHIpOwogICAgICAgIGlmKCAhJHN0ciApIHJldHVybjsKICAgICAgICBpZiggIWVuZHN3aXRoKCAkc3RyLCAiXG4iKSApICRzdHIgLj0gIlxuIjsKICAgICAgICAkZmggPSBmb3BlbigkdGhpcy0+X2ZpbGVuYW1lLCdhJyk7CiAgICAgICAgaWYoICEkZmggKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Byb2JsZW0gb3BlbmluZyBmaWxlIGZvciB3cml0aW5nOiAnLiR0aGlzLT5fZmlsZW5hbWUpOwogICAgICAgIGZ3cml0ZSgkZmgsJHN0cik7CiAgICAgICAgZmNsb3NlKCRmaCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlYnVnKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fbHZsIDwgc2VsZjo6TFZMX0RFQlVHICkgcmV0dXJuOwogICAgICAgICR0aGlzLT53cml0ZSgnREVCVUc6ICcuJHN0cik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZlcmJvc2UoJHN0cikKICAgIHsKICAgICAgICBpZiggJHRoaXMtPl9sdmwgPCBzZWxmOjpMVkxfVkVSQk9TRSApIHJldHVybjsKICAgICAgICAkdGhpcy0+d3JpdGUoJ1ZFUkJPU0U6ICcuJHN0cik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGluZm8oJHN0cikKICAgIHsKICAgICAgICBpZiggJHRoaXMtPl9sdmwgPCBzZWxmOjpMVkxfSU5GTyApIHJldHVybjsKICAgICAgICAkdGhpcy0+d3JpdGUoJ0lORk86ICcuJHN0cik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdhcm5pbmcoJHN0cikKICAgIHsKICAgICAgICBpZiggJHRoaXMtPl9sdmwgPCBzZWxmOjpMVkxfV0FSTklORyApIHJldHVybjsKICAgICAgICAkdGhpcy0+d3JpdGUoJ1dBUk5JTkc6ICcuJHN0cik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVycm9yKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fbHZsIDwgc2VsZjo6TFZMX0VSUk9SICkgcmV0dXJuOwogICAgICAgICR0aGlzLT53cml0ZSgnRVJST1I6ICcuJHN0cik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGZhdGFsKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fbHZsIDwgc2VsZjo6TFZMX0ZBVEFMICkgcmV0dXJuOwogICAgICAgICR0aGlzLT53cml0ZSgnRkFUQUw6ICcuJHN0cik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRpc3BsYXlfcHJvZ3Jlc3MoJHBlcmNlbnQpCiAgICB7CiAgICAgICAgLy8gZG8gbm90aGluZwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.logger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3I7CgphYnN0cmFjdCBjbGFzcyBsb2dnZXIKewogICAgcHJpdmF0ZSAkX2N1cl9zdGVwID0gMDsKICAgIHByaXZhdGUgJF90b3RhbF9zdGVwcyA9IDE7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR0b3RhbF9zdGVwcykKICAgIHsKICAgICAgICAkdGhpcy0+dG90YWxfc3RlcHMgPSBtYXgoMSwoaW50KSR0b3RhbF9zdGVwcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkdmFuY2UoKQogICAgewogICAgICAgICR0aGlzLT5fY3VyX3N0ZXAgPSBtaW4oJHRoaXMtPl9jdXJfc3RlcCArIDEsJHRoaXMtPl90b3RhbF9zdGVwcyk7CiAgICAgICAgJHRoaXMtPmRpc3BsYXlfcHJvZ3Jlc3MoJHRoaXMtPmdldF9wZXJjZW50X2NvbXBsZXRlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkb25lKCkKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5fY3VyX3N0ZXAgPT0gJHRoaXMtPl90b3RhbF9zdGVwcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9wZXJjZW50X2NvbXBsZXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gKGZsb2F0KSAkdGhpcy0+X2N1cl9zdGVwIC8gKGZsb2F0KSAkdGhpcy0+X3RvdGFsX3N0ZXBzICogMTAwLjA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlc2V0KCkKICAgIHsKICAgICAgICAkdGhpcy0+X2N1cl9zdGVwID0gMDsKICAgICAgICAkdGhpcy0+ZGlzcGxheV9wcm9ncmVzcygkdGhpcy0+Z2V0X3BlcmNlbnRfY29tcGxldGUoKSk7CiAgICB9CgogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGRlYnVnKCRzdHIpOwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHZlcmJvc2UoJHN0cik7CiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gaW5mbygkc3RyKTsKICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiB3YXJuaW5nKCRzdHIpOwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGVycm9yKCRzdHIpOwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGZhdGFsKCRzdHIpOwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGRpc3BsYXlfcHJvZ3Jlc3MoJHBlcmNlbnQpOwoKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.secure_ini_file.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3I7CgpjbGFzcyBzZWN1cmVfaW5pX2ZpbGUKewogICAgcHJpdmF0ZSAkX2ZpbGVuYW1lOwogICAgcHJpdmF0ZSAkX2ZpcnN0X3NlY3Rpb24gPSBUUlVFOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZmlsZW5hbWUgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5zZXRfZmlsZW5hbWUoJGZpbGVuYW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2ZpbGVuYW1lKCRmaWxlbmFtZSkKICAgIHsKICAgICAgICAkdGhpcy0+X2ZpbGVuYW1lID0gdHJpbSgkZmlsZW5hbWUpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gX3NvcnRfZGF0YSgkZGF0YSkKICAgIHsKICAgICAgICAkb3V0ID0gJGRhdGE7CiAgICAgICAgZm9yZWFjaCggJG91dCBhcyAka2V5ID0+ICYkdmFsICkgewogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbCkgKSAkdmFsID0gJHRoaXMtPl9zb3J0X2RhdGEoJHZhbCk7CiAgICAgICAgfQogICAgICAgIGtzb3J0KCRvdXQpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHByb3RlY3RlZCBmaW5hbCBmdW5jdGlvbiBfY2FsY19jaGVja3N1bSgkZGF0YSkKICAgIHsKICAgICAgICAkc29ydGVkID0gJHRoaXMtPl9zb3J0X2RhdGEoJGRhdGEpOwogICAgICAgICRzaWcgPSBtZDUoX19DTEFTU19fLl9fRElSX18uc2VyaWFsaXplKCRzb3J0ZWQpKTsKICAgICAgICByZXR1cm4gJHNpZzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3dyaXRlX2luaV9zZWN0aW9uKCRzZWN0aW9uKQogICAgewogICAgICAgICRvdXQgPSBudWxsOwogICAgICAgIGlmKCAhJHRoaXMtPl9maXJzdF9zZWN0aW9uICkgewogICAgICAgICAgICAkdGhpcy0+X2ZpcnN0X3NlY3Rpb24gPSBGQUxTRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRvdXQgLj0gIlxuIjsKICAgICAgICB9CgogICAgICAgICRvdXQgLj0gJ1snLnRyaW0oJHNlY3Rpb24pLiJdXG4iOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfd3JpdGVfaW5pX3ZhbCgka2V5LCR2YWwpCiAgICB7CiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgLy8gQHRvZG8gY2hlY2sgZm9yIGludmFsaWQgY2hhcnMgaW4gdGhlIGtleSBhbmQgdGhyb3cgYW4gZXhjZXB0aW9uCiAgICAgICAgJG5rZXkgPSB0cmltKCRrZXkpOwogICAgICAgICRudmFsID0gdHJpbSgkdmFsKTsKICAgICAgICBpZiggISRua2V5ICkgcmV0dXJuOwogICAgICAgICR0eXBlID0gZ2V0dHlwZSgkdmFsKTsKICAgICAgICBpZiggJHR5cGUgPT0gJ29iamVjdCcgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdPYmplY3RzIGNhbm5vdCBiZSBzdG9yZWQnKTsKCiAgICAgICAgJGZuZCA9IDA7CiAgICAgICAgJGJhZGNoYXJzID0gYXJyYXkoIlxuIiwiXHIiLCI7IiwiJyIsJyInKTsKICAgICAgICBmb3JlYWNoKCAkYmFkY2hhcnMgYXMgJGNoICkgewogICAgICAgICAgICBpZiggc3RycG9zKCRudmFsLCRjaCkgIT09IEZBTFNFICkgewogICAgICAgICAgICAgICAgJGZuZCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiggJGZuZCApIHsKICAgICAgICAgICAgLy8gdGhlcmUgYXJlIGJhZCBjaGFyYWN0cnMuIGdvdHRhIGVzY2FwZSB0aGUgZG91YmxlIHF1b3RlcwogICAgICAgICAgICAkbnZhbCA9IHN0cl9yZXBsYWNlKCciJywnXCInLCRudmFsKTsKICAgICAgICB9CiAgICAgICAgJG52YWwgPSAiJyIuJHR5cGUuJ3w6fCcuJG52YWwuIiciOwogICAgICAgICRvdXQgLj0gc3ByaW50ZigiJXMgPSAlc1xuIiwka2V5LCRudmFsKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3dyaXRlX2ZpbGVfaGVhZGVyKCRjaGVja3N1bSkKICAgIHsKICAgICAgICAkb3V0ID0gJzs8P3BocCBkaWUoKTsgLyogU0lHPScuJGNoZWNrc3VtLicgKi8gPz4nLiJcbiI7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF93cml0ZV9pbmlfYXJyYXkoJGFyciwkc2VjdGlvbiA9IG51bGwpCiAgICB7CiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgJHNlY3Rpb24gPSB0cmltKCRzZWN0aW9uKTsKICAgICAgICAkaXNfYXNzb2MgPSAoYXJyYXlfa2V5cygkYXJyKSAhPT0gcmFuZ2UoMCwgY291bnQoJGFycikgLSAxKSk7CgogICAgICAgIGlmKCAkaXNfYXNzb2MgKSB7CiAgICAgICAgICAgIC8vIHBhc3Mgb25lLCBub3JtYWwgdmFsdWVzCiAgICAgICAgICAgIGZvcmVhY2goICRhcnIgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAgICAgaWYoICFpc19hcnJheSgkdmFsKSApICRvdXQgLj0gJHRoaXMtPl93cml0ZV9pbmlfdmFsKCRrZXksJHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICRvdXQgKSB7CiAgICAgICAgICAgICAgICBpZiggISRzZWN0aW9uICkgJHNlY3Rpb24gPSAnbWFpbic7CiAgICAgICAgICAgICAgICAkb3V0ID0gJHRoaXMtPl93cml0ZV9pbmlfc2VjdGlvbigkc2VjdGlvbikgLiAkb3V0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBwYXNzIHR3bywgbmVzdGVkIGFycmF5cwogICAgICAgICAgICBmb3JlYWNoKCAkYXJyIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHZhbCkgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCBhcnJheV9rZXlzKCR2YWwpICE9PSByYW5nZSgwLCBjb3VudCgkdmFsKSAtIDEpICkgewogICAgICAgICAgICAgICAgICAgIC8vIGFzc29jaWF0aXZlIGNoaWxkIGFycmF5CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYoICRzZWN0aW9uICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gJHNlY3Rpb24uIiA6ICRrZXkiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICRrZXk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRvdXQgLj0gJHRoaXMtPl93cml0ZV9pbmlfYXJyYXkoJHZhbCwkdG1wKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbCBjaGlsZCBhcnJheQogICAgICAgICAgICAgICAgICAgICRvdXQgLj0gJHRoaXMtPl93cml0ZV9pbmlfYXJyYXkoJHZhbCwka2V5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYoICEkc2VjdGlvbiApICRzZWN0aW9uID0gJ21haW4nOwogICAgICAgICAgICBmb3IoICRpID0gMCwgJG4gPSBjb3VudCgkYXJyKTsgJGkgPCAkbjsgJGkrKyApIHsKICAgICAgICAgICAgICAgICRvdXQgLj0gJHRoaXMtPl93cml0ZV9pbmlfdmFsKCRzZWN0aW9uLidbXScsJGFyclskaV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZSgkZGF0YSkKICAgIHsKICAgICAgICAkY2tzdW0gPSAkdGhpcy0+X2NhbGNfY2hlY2tzdW0oJGRhdGEpOwogICAgICAgICRvdXQgPSAkdGhpcy0+X3dyaXRlX2ZpbGVfaGVhZGVyKCRja3N1bSk7CiAgICAgICAgJG91dCAuPSAkdGhpcy0+X3dyaXRlX2luaV9hcnJheSgkZGF0YSk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRkYXRhLCRmaWxlbmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYoICEkZmlsZW5hbWUgKSAkZmlsZW5hbWUgPSAkdGhpcy0+X2ZpbGVuYW1lOwogICAgICAgIGlmKCAhJGZpbGVuYW1lICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdObyBmaWxlbmFtZSBzcGVjaWZpZWQgdG8gaW5zdGFuY2Ugb2YgJy5fX0NMQVNTX18pOwogICAgICAgICRkaXIgPSBkaXJuYW1lKCR0aGlzLT5fZmlsZW5hbWUpOwogICAgICAgIGlmKCAoaXNfZmlsZSgkZmlsZW5hbWUpICYmICFpc193cml0YWJsZSgkdGhpcy0+X2ZpbGVuYW1lKSkgfHwgIWlzX3dyaXRhYmxlKCRkaXIpICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIk5vIHBlcm1pc3Npb24gdG8gd3JpdGUgdG8gIi4kdGhpcy0+X2ZpbGVuYW1lKTsKICAgICAgICB9CgogICAgICAgICRmaCA9IGZvcGVuKCRmaWxlbmFtZSwndycpOwogICAgICAgIGZ3cml0ZSgkZmgsJHRoaXMtPmdlbmVyYXRlKCkpOwogICAgICAgIGZjbG9zZSgkZmgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlKCRkYXRhKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d3JpdGUoJGRhdGEpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfY29udmVydF92YWx1ZXMoJGRhdGEpCiAgICB7CiAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJGRhdGEgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAkb3V0WyRrZXldID0gJHRoaXMtPl9jb252ZXJ0X3ZhbHVlcygkdmFsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGxpc3QoJHR5cGUsJHZhbCkgPSBleHBsb2RlKCd8OnwnLCR2YWwsMik7CiAgICAgICAgICAgICAgICBzd2l0Y2goICR0eXBlICkgewogICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6CiAgICAgICAgICAgICAgICAgICAgJG91dFska2V5XSA9IChib29sKSAkdmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnaW50ZWdlcic6CiAgICAgICAgICAgICAgICAgICAgJG91dFska2V5XSA9IChpbnQpICR2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdyZWFsJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzoKICAgICAgICAgICAgICAgIGNhc2UgJ2RvdWJsZSc6CiAgICAgICAgICAgICAgICAgICAgJG91dFska2V5XSA9IChmbG9hdCkgJHZhbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICRvdXRbJGtleV0gPSAoc3RyaW5nKSAkdmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZSgkY29udGVudHMsJHZlcmlmeSA9IFRSVUUpCiAgICB7CiAgICAgICAgLy8gZ2V0IHRoZSBmaXJzdCBsaW5lCiAgICAgICAgJGZpcnN0X2xpbmUgPSBleHBsb2RlKCJcbiIsJGNvbnRlbnRzLDIpWzBdOwogICAgICAgICRmaWxlX3NpZyA9IG51bGw7CiAgICAgICAgJG1hdGNoZXMgPSBudWxsOwogICAgICAgIHByZWdfbWF0Y2goJy9ccytTSUc9KFswLTlBLVphLXpdezMyfSlccysvJywkZmlyc3RfbGluZSwkbWF0Y2hlcyk7CiAgICAgICAgaWYoICRtYXRjaGVzWzFdICkgJGZpbGVfc2lnID0gJG1hdGNoZXNbMV07CiAgICAgICAgdW5zZXQoJG1hdGNoZXMpOwoKICAgICAgICAkcmF3X2RhdGEgPSBwYXJzZV9pbmlfc3RyaW5nKCRjb250ZW50cyxUUlVFKTsKCiAgICAgICAgLy8gd2UgaGF2ZSBhIGZsYXQgbGlzdCBvZiBzZWN0aW9ucywgZWFjaCBzZWN0aW9uIGlzIGFuIGFycmF5CiAgICAgICAgLy8gdGhlIHRvcCBzZWN0aW9uIHNob3VsZCBub3QgaGF2ZSBhbnkgbmVzdGluZwogICAgICAgICRhbGxfa2V5cyA9IGFycmF5X2tleXMoJHJhd19kYXRhKTsKICAgICAgICAka2V5MCA9ICRhbGxfa2V5c1swXTsKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcgOiAnLCRrZXkwKTsKICAgICAgICBpZiggJHBhcnRzWzBdICE9ICRrZXkwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIGZpbGUgZm9ybWF0LCBmb3VuZCBuZXN0ZWQgY2hpbGQgYXMgZmlyc3QgZWxlbWVudCcpOwoKICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkcmF3X2RhdGEgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcgOiAnLCRrZXkpOwogICAgICAgICAgICAvL2lmKCAkcGFydHNbMF0gIT0gJGtleTAgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgZmlsZSBmb3JtYXQnKTsKCiAgICAgICAgICAgIGlmKCBjb3VudCgkcGFydHMpID09IDEgKSB7CiAgICAgICAgICAgICAgICAkb3V0WyRrZXldID0gJHRoaXMtPl9jb252ZXJ0X3ZhbHVlcygkdmFsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICR0bXAgPSYgJG91dDsKICAgICAgICAgICAgICAgICRpID0gbnVsbDsKICAgICAgICAgICAgICAgIGZvciggJGkgPSAxLCAkbiA9IGNvdW50KCRwYXJ0cykgLSAxOyAkaSA8ICRuOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgICRwYXJ0ID0gJHBhcnRzWyRpXTsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0bXBbJHBhcnRdKSApICR0bXBbJHBhcnRdID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkdG1wID0mICR0bXBbJHBhcnRdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRtcFskcGFydHNbJGldXSA9ICR0aGlzLT5fY29udmVydF92YWx1ZXMoJHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCBjb3VudCgkb3V0KSA9PSAxICYmIGlzc2V0KCRvdXRbJGtleTBdKSApIHsKICAgICAgICAgICAgJG91dCA9ICRvdXRbJGtleTBdOwogICAgICAgIH0KCiAgICAgICAgaWYoICR2ZXJpZnkgKSB7CiAgICAgICAgICAgICRjYWxjX3NpZyA9ICR0aGlzLT5fY2FsY19jaGVja3N1bSgkb3V0KTsKICAgICAgICAgICAgaWYoICRmaWxlX3NpZyAhPSAkY2FsY19zaWcgKSB0aHJvdyBuZXcgXFJhbmdlRXhjZXB0aW9uKCJJTkkgRmlsZSBzaWduYXR1cmUgZGlkIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBmaWxlIGNvbnRlbnRzIik7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRmaWxlbmFtZSA9IG51bGwsJHZlcmlmeSA9IFRSVUUpCiAgICB7CiAgICAgICAgaWYoICRmaWxlbmFtZSApICR0aGlzLT5zZXRfZmlsZW5hbWUoJGZpbGVuYW1lKTsKCiAgICAgICAgaWYoICFpc19maWxlKCR0aGlzLT5fZmlsZW5hbWUpIHx8ICFpc19yZWFkYWJsZSgkdGhpcy0+X2ZpbGVuYW1lKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbihzcHJpbnRmKCJGaWxlICVzIGNvdWxkIG5vdCBiZSByZWFkIiwkdGhpcy0+X2ZpbGVuYW1lKSk7CiAgICAgICAgJGNvbnRlbnRzID0gZmlsZV9nZXRfY29udGVudHMoJHRoaXMtPl9maWxlbmFtZSk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZSgkY29udGVudHMsJHZlcmlmeSk7CiAgICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/lib/class.snapshot_creator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3I7CgpjbGFzcyBzbmFwc2hvdF9jcmVhdG9yCnsKICAgIHVzZSBsb2dnYWJsZTsKICAgIHByaXZhdGUgJF9vcHRzID0gYXJyYXkoJ215c3FsZHVtcCc9PlRSVUUsJ3JlYWRtZSc9PidGQUxTRScsJ2VuY3J5cHQnPT4nRkFMU0UnLCdmaWxlcyc9PlRSVUUsJ2V4Y2x1ZGVzJz0+bnVsbCk7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRwYXJhbXMgPSBudWxsKQogICAgewogICAgICAgIGlmKCBpc19hcnJheSgkcGFyYW1zICYmIGNvdW50KCRwYXJhbXMpICkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICRwYXJhbXMgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAgICAgJHRoaXMtPiRrZXkgPSAkdmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgka2V5KQogICAgewogICAgICAgIGlmKCAhYXJyYXlfa2V5X2V4aXN0cygka2V5LCR0aGlzLT5fb3B0cykgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCIka2V5IGlzIG5vdCBhIHZhbGlkIG1lbWJlciBvZiAiLl9fQ0xBU1NfXyk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fb3B0c1ska2V5XTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoJGtleSwkdmFsKQogICAgewogICAgICAgIGlmKCAka2V5ID09ICdteXNxbCcgKSAka2V5ID0gJ215c3FsZHVtcCc7CgogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdteXNxbGR1bXAnOgogICAgICAgIGNhc2UgJ2ZpbGVzJzoKICAgICAgICBjYXNlICdyZWFkbWUnOgogICAgICAgIGNhc2UgJ2VuY3J5cHQnOgogICAgICAgICAgICAkdGhpcy0+X29wdHNbJGtleV0gPSAoYm9vbCkgJHZhbDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZXhjbHVkZXMnOgogICAgICAgICAgICAkdGhpcy0+X29wdHNbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSB2YWxpZCBtZW1iZXIgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X2ZpbGVfbGlzdCgkc3RhcnRkaXIsJGFkdmFuY2VkID0gZmFsc2UpCiAgICB7CiAgICAgICAgLy8gZ2V0IGFsbCBmaWxlcyAoZXhjZXB0IHRtcCBhbmQgYmFja3VwIGZpbGVzKSBmcm9tIHRoZSByb290IHBhdGgKICAgICAgICBpZiggIWlzX2Rpcigkc3RhcnRkaXIpICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiaW52YWxpZCBwYXRoIHBhc3NlZCB0byAiLl9fTUVUSE9EX18pOwoKICAgICAgICAvLyBpZiB3ZSBoYXZlIGV4Y2x1ZGVzLCBjbGVhbiB0aGVtIHVwCiAgICAgICAgJGV4Y2x1ZGVzID0gWyAnIyojJywgJy4jKicsICcqficsICcqLnRtcCcsICcqLmJhaycsICcuZ2l0KicsICcuc3ZuKicgXTsKICAgICAgICBpZiggJHRoaXMtPmV4Y2x1ZGVzICkgewogICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgiXG4iLCR0aGlzLT5leGNsdWRlcyk7CiAgICAgICAgICAgIGZvcmVhY2goICR0bXAgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICRvbmUgPSB0cmltKCRvbmUpOwogICAgICAgICAgICAgICAgaWYoICEkb25lICkgY29udGludWU7CiAgICAgICAgICAgICAgICAkZXhjbHVkZXNbXSA9ICRvbmU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRkaXJfaXRlcmF0b3IgPSBuZXcgXFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCRzdGFydGRpcik7CiAgICAgICAgJGZpbHRlcl9pdGVyYXRvciA9IG5ldyBcUmVjdXJzaXZlQ2FsbGJhY2tGaWx0ZXJJdGVyYXRvcigkZGlyX2l0ZXJhdG9yLGZ1bmN0aW9uKCRjdXJyZW50LCRrZXksJGl0ZXJhdG9yKSB1c2UgKCRhZHZhbmNlZCwkZXhjbHVkZXMsJHN0YXJ0ZGlyKSB7CiAgICAgICAgICAgICAgICAkZm4gPSAkY3VycmVudC0+Z2V0RmlsZW5hbWUoKTsKICAgICAgICAgICAgICAgICRkaXJuYW1lID0gZGlybmFtZSgkY3VycmVudC0+Z2V0UGF0aG5hbWUoKSk7CiAgICAgICAgICAgICAgICBpZiggJGZuID09ICcuJyB8fCAkZm4gPT0gJy4uJyApIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRleGNsdWRlcyBhcyAkb25lICkgewogICAgICAgICAgICAgICAgICAgICRibiA9IGJhc2VuYW1lKCRvbmUpOwogICAgICAgICAgICAgICAgICAgICRkbiA9IGRpcm5hbWUoJG9uZSk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkZG4gfHwgJGRuID09ICcuJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGZubWF0Y2goJG9uZSwgJGZuKSApIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAkZGlybmFtZSA9PSAiJHN0YXJ0ZGlyLyRkbiIgJiYgZm5tYXRjaCgkYm4sICRmbikgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiggISRhZHZhbmNlZCAmJiBzdGFydHN3aXRoKCRkaXJuYW1lLCBUTVBfQ0FDSEVfTE9DQVRJT04pICkgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgaWYoICEkYWR2YW5jZWQgJiYgc3RhcnRzd2l0aCgkZGlybmFtZSwgVE1QX1RFTVBMQVRFU19DX0xPQ0FUSU9OKSApIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgICAgICB9KTsKICAgICAgICAkaXRlcmF0b3IgPSBuZXcgXFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IoJGZpbHRlcl9pdGVyYXRvcik7CiAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJGl0ZXJhdG9yIGFzICRpbmZvICkgewogICAgICAgICAgICBpZiggaXNfZGlyKCRpbmZvLT5nZXRQYXRoTmFtZSgpKSApIGNvbnRpbnVlOwogICAgICAgICAgICAkb3V0W10gPSBzdWJzdHIoJGluZm8tPmdldFBhdGhuYW1lKCksc3RybGVuKCRzdGFydGRpcikrMSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICAkY29uZmlnID0gXGNtc19jb25maWc6OmdldF9pbnN0YW5jZSgpOwogICAgICAgIC8vIGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuCiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX1NOQVBTSE9UTUdSKTsKICAgICAgICAkc2lnID0gbWQ1KF9fRElSX18uJG1vZC0+R2V0TmFtZSgpLiRtb2QtPkdldFZlcnNpb24oKS5nZXRfdXNlcmlkKEZBTFNFKS50aW1lKCkpOwoKICAgICAgICAkbGlzdCA9IFtdOwogICAgICAgICR0aGlzLT52ZXJib3NlKCdsYW5nOmNyZWF0b3JfZ2V0ZmlsZWxpc3QnKTsKICAgICAgICBpZiggJHRoaXMtPmZpbGVzICkgJGxpc3QgPSAkdGhpcy0+Z2V0X2ZpbGVfbGlzdCgkY29uZmlnWydyb290X3BhdGgnXSk7CiAgICAgICAgJHRtcGZpbGVzID0gYXJyYXkoKTsKCiAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIHJlYWRtZQogICAgICAgIGlmKCAkdGhpcy0+ZmlsZXMgJiYgJHRoaXMtPm15c3FsZHVtcCAmJiAkdGhpcy0+cmVhZG1lICkgewogICAgICAgICAgICAkdGhpcy0+dmVyYm9zZSgnbGFuZzpjcmVhdG9yX21rcmVhZG1lJyk7CiAgICAgICAgICAgICR0cGwgPSAkbW9kLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgncmVhZG1lLnRwbCcpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ2ZpbGVzJywkdGhpcy0+ZmlsZXMpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ215c3FsZHVtcCcsJHRoaXMtPm15c3FsZHVtcCk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignbW9kdWxlX25hbWUnLCRtb2QtPkdldE5hbWUoKSk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignbW9kdWxlX3ZlcnNpb24nLCRtb2QtPkdldFZlcnNpb24oKSk7CiAgICAgICAgICAgICRvdXQgPSAkdHBsLT5mZXRjaCgpOwogICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkY29uZmlnWydyb290X3BhdGgnXSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndG1wJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnUkVBRE1FLVNOQVBTSE9UTUdSLnR4dCcsJG91dCk7CiAgICAgICAgICAgICRsaXN0W10gPSAndG1wJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnUkVBRE1FLVNOQVBTSE9UTUdSLnR4dCc7CiAgICAgICAgICAgICR0bXBmaWxlc1tdICA9ICd0bXAnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdSRUFETUUtU05BUFNIT1RNR1IudHh0JzsKICAgICAgICB9CgogICAgICAgIC8vIGRvIHRoZSBteXNxbCBkdW1wCiAgICAgICAgJGR1bXBmaWxlID0gbnVsbDsKICAgICAgICBpZiggJHRoaXMtPm15c3FsZHVtcCApIHsKICAgICAgICAgICAgJHRoaXMtPnZlcmJvc2UoJ2xhbmc6Y3JlYXRvcl9teXNxbGR1bXAnKTsKICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgICAgICAgJHBhcm1zWydzZXRfbmFtZXMnXSA9ICRjb25maWdbJ3NldF9uYW1lcyddOwogICAgICAgICAgICAkcGFybXNbJ2hvc3QnXSA9ICRjb25maWdbJ2RiX2hvc3RuYW1lJ107CiAgICAgICAgICAgICRwYXJtc1sndXNlciddID0gJGNvbmZpZ1snZGJfdXNlcm5hbWUnXTsKICAgICAgICAgICAgJHBhcm1zWydwYXNzd29yZCddID0gJGNvbmZpZ1snZGJfcGFzc3dvcmQnXTsKICAgICAgICAgICAgJHBhcm1zWyd1c2VyJ10gPSAkY29uZmlnWydkYl91c2VybmFtZSddOwogICAgICAgICAgICAkcGFybXNbJ2RiJ10gPSAkY29uZmlnWydkYl9uYW1lJ107CiAgICAgICAgICAgICRwYXJtc1sndGFibGVfc3RydWN0dXJlJ10gPSAxOwogICAgICAgICAgICAkcGFybXNbJ3RhYmxlX2RhdGEnXSA9IDE7CiAgICAgICAgICAgICRwYXJtc1sndmlld3MnXSA9IDE7CiAgICAgICAgICAgICRkdW1wZXIgPSBuZXcgc3BfbXlzcWxkdW1wKCRwYXJtcyk7CiAgICAgICAgICAgICRkdW1wZXItPmR1bXBmaWxlID0gJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3RtcCcgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ19fbXlzcWxkdW1wLnNxbCc7CiAgICAgICAgICAgICRkdW1wZXItPmR1bXAoKTsKICAgICAgICAgICAgJGxpc3RbXSA9ICd0bXAnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdfX215c3FsZHVtcC5zcWwnOwogICAgICAgICAgICAkdG1wZmlsZXNbXSAgPSAndG1wJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnX19teXNxbGR1bXAuc3FsJzsKICAgICAgICAgICAgdW5zZXQoJGR1bXBlcik7CiAgICAgICAgfQoKICAgICAgICBpZiggJHRoaXMtPmZpbGVzICYmICR0aGlzLT5teXNxbGR1bXAgKSB7CiAgICAgICAgICAgICR0aGlzLT52ZXJib3NlKCdsYW5nOmNyZWF0b3JfbWtyZXN0b3JlJyk7CiAgICAgICAgICAgICRyZXN0b3JlX3NjcmlwdCA9ICRtb2QtPkdldE1vZHVsZVBhdGgoKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAncGhhcicgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ1NuYXBzaG90TWdyLVJlc3RvcmUucGhwJzsKICAgICAgICAgICAgaWYoIGZpbGVfZXhpc3RzKCRyZXN0b3JlX3NjcmlwdCkgKSB7CiAgICAgICAgICAgICAgICAkb3V0ZmlsZSA9ICRjb25maWdbJ3Jvb3RfcGF0aCddIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICd0bXAnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdyZXN0b3JlLnBocCc7CiAgICAgICAgICAgICAgICBAY29weSgkcmVzdG9yZV9zY3JpcHQsJG91dGZpbGUpOwogICAgICAgICAgICAgICAgJGxpc3RbXSA9ICd0bXAnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdyZXN0b3JlLnBocCc7CiAgICAgICAgICAgICAgICAkdG1wZmlsZXNbXSA9ICd0bXAnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdyZXN0b3JlLnBocCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGRvIHRoZSAuc25hcHNob3RtZ3IgZGF0YSBmaWxlCiAgICAgICAgJHRoaXMtPnZlcmJvc2UoJ2xhbmc6Y3JlYXRvcl9tYWtlZGF0YWZpbGUnKTsKICAgICAgICAkbWFpbiA9IGFycmF5KCk7CiAgICAgICAgJG1haW5bJ2NyZWF0ZWQnXSA9IHRpbWUoKTsKICAgICAgICAkbWFpblsnY3JlYXRlZF9ieSddID0gZ2V0X3VzZXJpZCgpOwogICAgICAgICRtYWluWyd2ZXJzaW9uJ10gPSAkbW9kLT5HZXRWZXJzaW9uKCk7CiAgICAgICAgJG1haW5bJ2ZpbGVzX2V4cG9ydGVkJ10gPSAoJHRoaXMtPmZpbGVzKSA/ICd5ZXMnIDogJ25vJzsKICAgICAgICAkbWFpblsnZGJfZXhwb3J0ZWQnXSA9ICgkdGhpcy0+bXlzcWxkdW1wKSA/ICd5ZXMnIDogJ25vJzsKICAgICAgICAkd2Vic2l0ZSA9IGFycmF5KCk7CiAgICAgICAgJHdlYnNpdGVbJ2Ntc192ZXJzaW9uJ10gPSBDTVNfVkVSU0lPTjsKICAgICAgICAkd2Vic2l0ZVsncm9vdF91cmwnXSA9ICRjb25maWdbJ3Jvb3RfdXJsJ107CiAgICAgICAgJHdlYnNpdGVbJ3Jvb3RfcGF0aCddID0gJGNvbmZpZ1sncm9vdF9wYXRoJ107CiAgICAgICAgJHdlYnNpdGVbJ3VybF9yZXdyaXRpbmcnXSA9ICRjb25maWdbJ3VybF9yZXdyaXRpbmcnXTsKICAgICAgICAkd2Vic2l0ZVsnc2l0ZW5hbWUnXSA9IFxjbXNfc2l0ZXByZWZzOjpnZXQoJ3NpdGVuYW1lJyk7CiAgICAgICAgJGRhdGEgPSBhcnJheSgnbWFpbic9PiRtYWluLCd3ZWJzaXRlJz0+JHdlYnNpdGUpOwogICAgICAgICRpbmkgPSBuZXcgc2VjdXJlX2luaV9maWxlKCd0bXAnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICcuc25hcHNob3RtZ3InKTsKICAgICAgICAkb3V0ID0gJGluaS0+Z2VuZXJhdGUoJGRhdGEpOwogICAgICAgICRzbmFwc2hvdG1ncl9maWxlID0gJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3RtcCcgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJy5zbmFwc2hvdG1ncic7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJHNuYXBzaG90bWdyX2ZpbGUsJG91dCk7CiAgICAgICAgJGxpc3RbXSA9ICd0bXAnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICcuc25hcHNob3RtZ3InOwogICAgICAgICR0bXBmaWxlc1tdID0gJ3RtcCcgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJy5zbmFwc2hvdG1ncic7CiAgICAgICAgdW5zZXQoJGRhdGEpOwoKICAgICAgICAvLyBjcmVhdGUgdGhlIGFyY2hpdmUKICAgICAgICAkdGhpcy0+dmVyYm9zZSgnbGFuZzpjcmVhdG9yX21rYXJjaGl2ZScpOwogICAgICAgICR6aXAgPSBuZXcgXFppcEFyY2hpdmUoKTsKICAgICAgICAkZm4xID0gdGVtcG5hbShUTVBfQ0FDSEVfTE9DQVRJT04sJ19zcCcpOwogICAgICAgICRmbiA9ICRmbjEuJy56aXAnOwogICAgICAgIHVubGluaygkZm4xKTsKICAgICAgICAkemlwLT5vcGVuKCRmbixcWmlwQXJjaGl2ZTo6Q1JFQVRFIHwgXFppcEFyY2hpdmU6Ok9WRVJXUklURSk7CiAgICAgICAgZm9yZWFjaCggJGxpc3QgYXMgJG9uZSApIHsKICAgICAgICAgICAgJHNyY2ZpbGUgPSAkY29uZmlnWydyb290X3BhdGgnXSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkb25lOwogICAgICAgICAgICAkemlwLT5hZGRGaWxlKCAkc3JjZmlsZSwgJG9uZSApOwogICAgICAgICAgICAkdGhpcy0+ZGVidWcoJysgJy4kb25lKTsKICAgICAgICB9CiAgICAgICAgJHppcC0+Y2xvc2UoKTsKICAgICAgICB1bnNldCgkbGlzdCk7CgogICAgICAgIC8vIGNsZWFudXAKICAgICAgICAkdGhpcy0+dmVyYm9zZSgnbGFuZzpjcmVhdG9yX2NsZWFudXAnKTsKICAgICAgICBmb3JlYWNoKCAkdG1wZmlsZXMgYXMgJGZpbGUgKSB7CiAgICAgICAgICAgICR0Zm4gPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3Jvb3RfcGF0aCddLCRmaWxlKTsKICAgICAgICAgICAgQHVubGluaygkdGZuKTsKICAgICAgICB9CiAgICAgICAgaWYoICR0aGlzLT5teXNxbGR1bXAgJiYgJGR1bXBmaWxlICkgQHVubGluaygkZHVtcGZpbGUpOwogICAgICAgIGlmKCAkc25hcHNob3RtZ3JfZmlsZSApIEB1bmxpbmsoJHNuYXBzaG90bWdyX2ZpbGUpOwogICAgICAgIHJldHVybiAkZm47CiAgICB9CiAgICAKfSAjIGVuZCBvZiBjbGFzcwoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/lib/class.sp_mysqldump.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3I7CgpjbGFzcyBzcF9teXNxbGR1bXAKewogICAgcHJpdmF0ZSAkX2R1bXBmaDsKICAgIHByaXZhdGUgJF9jb25uOwogICAgcHJpdmF0ZSAkX2NvbmZpZzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHBhcmFtcyA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9jb25maWcgPSBhcnJheSgnc2tpcF9mb3JlaWduX2tleSc9PjEsJ3NldF9uYW1lcyc9PjEpOwogICAgICAgICRjb25maWcgPSBudWxsOwogICAgICAgIGlmKCAkcGFyYW1zIGluc3RhbmNlb2YgXGNtc19jb25maWcgKSB7CiAgICAgICAgICAgICRjb25maWcgPSBhcnJheSgpOwogICAgICAgICAgICAkY29uZmlnWydob3N0J10gPSAkcGFyYW1zWydkYl9ob3N0bmFtZSddOwogICAgICAgICAgICAkY29uZmlnWyd1c2VyJ10gPSAkcGFyYW1zWydkYl91c2VybmFtZSddOwogICAgICAgICAgICAkY29uZmlnWydwYXNzd29yZCddID0gJHBhcmFtc1snZGJfcGFzc3dvcmQnXTsKICAgICAgICAgICAgJGNvbmZpZ1snZGInXSA9ICRwYXJhbXNbJ2RiX25hbWUnXTsKICAgICAgICAgICAgJGNvbmZpZ1sncHJlZml4J10gPSBudWxsOwogICAgICAgIH0KICAgICAgICBlbHNlaWYoIGlzX2FycmF5KCRwYXJhbXMpICkgewogICAgICAgICAgICAkY29uZmlnID0gJHBhcmFtczsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPl9jb25maWcgPSBhcnJheV9tZXJnZSgkdGhpcy0+X2NvbmZpZywkY29uZmlnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJGtleSkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnZGJfaG9zdG5hbWUnOgogICAgICAgIGNhc2UgJ2hvc3QnOgogICAgICAgIGNhc2UgJ2hvc3RuYW1lJzoKICAgICAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fY29uZmlnWydob3N0J10pICkgcmV0dXJuICR0aGlzLT5fY29uZmlnWydob3N0J107CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdkYl91c2VybmFtZSc6CiAgICAgICAgY2FzZSAndXNlcic6CiAgICAgICAgY2FzZSAndXNlcm5hbWUnOgogICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9jb25maWdbJ3VzZXInXSkgKSByZXR1cm4gJHRoaXMtPl9jb25maWdbJ3VzZXInXTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2RiX3Bhc3N3b3JkJzoKICAgICAgICBjYXNlICdwdyc6CiAgICAgICAgY2FzZSAncGFzc3dvcmQnOgogICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9jb25maWdbJ3Bhc3N3b3JkJ10pICkgcmV0dXJuICR0aGlzLT5fY29uZmlnWydwYXNzd29yZCddOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZGJfbmFtZSc6CiAgICAgICAgY2FzZSAnZGInOgogICAgICAgIGNhc2UgJ2RibmFtZSc6CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2NvbmZpZ1snZGInXSkgKSByZXR1cm4gJHRoaXMtPl9jb25maWdbJ2RiJ107CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdkcm9wX3RhYmxlJzoKICAgICAgICBjYXNlICd0YWJsZV9zdHJ1Y3R1cmUnOgogICAgICAgIGNhc2UgJ3ZpZXdzJzoKICAgICAgICBjYXNlICd0YWJsZV9kYXRhJzoKICAgICAgICBjYXNlICdza2lwX2ZvcmVpZ25fa2V5JzoKICAgICAgICBjYXNlICdzZXRfbmFtZXMnOgogICAgICAgICAgICAkb3V0ID0gKGlzc2V0KCR0aGlzLT5fY29uZmlnWyRrZXldKSkgPyAkdGhpcy0+X2NvbmZpZ1ska2V5XSA6IFRSVUU7CiAgICAgICAgICAgIHJldHVybiAkb3V0OwoKICAgICAgICBjYXNlICdkYl9wcmVmaXgnOgogICAgICAgIGNhc2UgJ3ByZWZpeCc6CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2NvbmZpZ1sncHJlZml4J10pICkgcmV0dXJuICR0aGlzLT5fY29uZmlnWydwcmVmaXgnXTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2R1bXBmaWxlJzoKICAgICAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fY29uZmlnWydkdW1wZmlsZSddKSApIHJldHVybiAkdGhpcy0+X2NvbmZpZ1snZHVtcGZpbGUnXTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgdmFsaWQgbWVtYmVyIG9mICIuX19DTEFTU19fKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fc2V0KCRrZXksJHZhbCkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnZGJfaG9zdG5hbWUnOgogICAgICAgIGNhc2UgJ2hvc3QnOgogICAgICAgIGNhc2UgJ2hvc3RuYW1lJzoKICAgICAgICAgICAgJHRoaXMtPl9jb25maWdbJ2hvc3QnXSA9IHRyaW0oJHZhbCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdkYl91c2VybmFtZSc6CiAgICAgICAgY2FzZSAndXNlcic6CiAgICAgICAgY2FzZSAndXNlcm5hbWUnOgogICAgICAgICAgICAkdGhpcy0+X2NvbmZpZ1sndXNlciddID0gdHJpbSgkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2RiX3Bhc3N3b3JkJzoKICAgICAgICBjYXNlICdwdyc6CiAgICAgICAgY2FzZSAncGFzc3dvcmQnOgogICAgICAgICAgICAkdGhpcy0+X2NvbmZpZ1sncGFzc3dvcmQnXSA9IHRyaW0oJHZhbCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdkYl9uYW1lJzoKICAgICAgICBjYXNlICdkYic6CiAgICAgICAgY2FzZSAnZGJuYW1lJzoKICAgICAgICAgICAgJHRoaXMtPl9jb25maWdbJ2RiJ10gPSB0cmltKCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZGJfcHJlZml4JzoKICAgICAgICBjYXNlICdwcmVmaXgnOgogICAgICAgICAgICAkdGhpcy0+X2NvbmZpZ1sncHJlZml4J10gPSB0cmltKCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZHJvcF90YWJsZSc6CiAgICAgICAgY2FzZSAndGFibGVfc3RydWN0dXJlJzoKICAgICAgICBjYXNlICd2aWV3cyc6CiAgICAgICAgY2FzZSAndGFibGVfZGF0YSc6CiAgICAgICAgY2FzZSAnc2tpcF9mb3JlaWduX2tleSc6CiAgICAgICAgY2FzZSAnc2V0X25hbWVzJzoKICAgICAgICAgICAgJHRoaXMtPl9jb25maWdbJGtleV0gPSBceHRfdXRpbHM6OnRvX2Jvb2woJHZhbCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdkdW1wZmlsZSc6CiAgICAgICAgICAgICR0aGlzLT5fY29uZmlnWydkdW1wZmlsZSddID0gdHJpbSgkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgdmFsaWQgbWVtYmVyIG9mICIuX19DTEFTU19fKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBpZiggISR0aGlzLT5fY29uZmlnWydob3N0J10gKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIk5vIGRhdGFiYXNlIGhvc3Qgc3BlY2lmaWVkIGZvciAiLl9fQ0xBU1NfXyk7CiAgICAgICAgaWYoICEkdGhpcy0+X2NvbmZpZ1sndXNlciddICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJObyBkYXRhYmFzZSB1c2VybmFtZSBzcGVjaWZpZWQgZm9yICIuX19DTEFTU19fKTsKICAgICAgICBpZiggISR0aGlzLT5fY29uZmlnWydwYXNzd29yZCddICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJObyBkYXRhYmFzZSBwYXNzd29yZCBzcGVjaWZpZWQgZm9yICIuX19DTEFTU19fKTsKICAgICAgICBpZiggISR0aGlzLT5fY29uZmlnWydkYiddICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJObyBkYXRhYmFzZSBuYW1lIHNwZWNpZmllZCBmb3IgIi5fX0NMQVNTX18pOwogICAgICAgIGlmKCAhJHRoaXMtPmR1bXBmaWxlICkgewogICAgICAgICAgICAkZGlyID0gc3lzX2dldF90ZW1wX2RpcigpOwogICAgICAgICAgICBpZiggISRkaXIgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBnZXQgc3lzdGVtIHRlbXBvcmFyeSBkaXJlY3RvcnknKTsKICAgICAgICAgICAgJHRoaXMtPmR1bXBmaWxlID0gJGRpci4nLycubWQ1KF9fQ0xBU1NfXy5fX0ZJTEVfXy50aW1lKCkpLicudG1wJzsKICAgICAgICB9CiAgICAgICAgJGRuID0gZGlybmFtZSgkdGhpcy0+ZHVtcGZpbGUpOwogICAgICAgIGlmKCAhaXNfd3JpdGFibGUoJGRuKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignV2UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byB3cml0ZSB0byBkZXN0aW5hdGlvbiBkaXJlY3RvcnknKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gd3JpdGUoJHR4dCkKICAgIHsKICAgICAgICBpZiggISR0aGlzLT5fZHVtcGZoICkgJHRoaXMtPl9kdW1wZmggPSBmb3BlbigkdGhpcy0+ZHVtcGZpbGUsJ3cnKTsKICAgICAgICBpZiggISR0aGlzLT5fZHVtcGZoICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdXZSBjb3VsZCBub3Qgb3BlbiB0aGUgZHVtcCBmaWxlIGZvciB3cml0aW5nJyk7CgogICAgICAgIGZ3cml0ZSgkdGhpcy0+X2R1bXBmaCwkdHh0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZHVtcCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbGlkYXRlKCk7CiAgICAgICAgJHRoaXMtPl9jb25uID0gbXlzcWxpX2Nvbm5lY3QoJHRoaXMtPl9jb25maWdbJ2hvc3QnXSwkdGhpcy0+X2NvbmZpZ1sndXNlciddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5fY29uZmlnWydwYXNzd29yZCddLCR0aGlzLT5fY29uZmlnWydkYiddKTsKICAgICAgICBpZiggbXlzcWxpX2Nvbm5lY3RfZXJybm8oKSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKF9fQ0xBU1NfXy4nIGNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZScpOwogICAgICAgIH0KCiAgICAgICAgaWYoICR0aGlzLT5zZXRfbmFtZXMgKSB7CiAgICAgICAgICAgIG15c3FsaV9xdWVyeSgkdGhpcy0+X2Nvbm4sIlNFVCBOQU1FUyB1dGY4Iik7CiAgICAgICAgICAgICR0aGlzLT53cml0ZSgiU0VUIE5BTUVTIHV0Zjg7XG4iKTsKICAgICAgICB9CiAgICAgICAgaWYoICR0aGlzLT5za2lwX2ZvcmVpZ25fa2V5ICkgJHRoaXMtPndyaXRlKCJTRVQgRk9SRUlHTl9LRVlfQ0hFQ0tTPTA7XG4iKTsKCiAgICAgICAgJHRhYmxlcyA9IFtdOwogICAgICAgICR2aWV3cyA9IFtdOwogICAgICAgICRzcWwgPSAnU0hPVyBUQUJMRVM7JzsKICAgICAgICAkcmVzID0gbXlzcWxpX3F1ZXJ5KCR0aGlzLT5fY29ubiwkc3FsKTsKICAgICAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oX19DTEFTU19fLicgY291bGQgbm90IGdldCB0YWJsZSBsaXN0Jyk7CiAgICAgICAgd2hpbGUoICRyb3cgPSBteXNxbGlfZmV0Y2hfcm93KCRyZXMpICkgewogICAgICAgICAgICAkdGFibGVzW10gPSAkcm93WzBdOwogICAgICAgIH0KCiAgICAgICAgJHNxbCA9ICdTSE9XIEZVTEwgVEFCTEVTIElOICcuJHRoaXMtPl9jb25maWdbJ2RiJ10uJyBXSEVSRSBUQUJMRV9UWVBFIExJS0UgXCdWSUVXXCcnOwogICAgICAgICRyZXMgPSBteXNxbGlfcXVlcnkoJHRoaXMtPl9jb25uLCRzcWwpOwogICAgICAgIGlmKCAkcmVzICkgewogICAgICAgICAgICB3aGlsZSggJHJvdyA9IG15c3FsaV9mZXRjaF9yb3coJHJlcykgKSB7CiAgICAgICAgICAgICAgICAkdmlld3NbXSA9ICRyb3dbMF07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCAkdGhpcy0+dGFibGVfc3RydWN0dXJlICYmIGNvdW50KCR0YWJsZXMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkdGFibGVzIGFzICR0YWJsZSApIHsKICAgICAgICAgICAgICAgIGlmKCAhaW5fYXJyYXkoJHRhYmxlLCR2aWV3cykgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmRvX3RhYmxlX3N0cnVjdHVyZSgkdGFibGUpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkdGhpcy0+dGFibGVfZGF0YSApICR0aGlzLT5kb190YWJsZV9kYXRhKCR0YWJsZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoICR0aGlzLT52aWV3cykgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5kb192aWV3KCR0YWJsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15c3FsaV9jbG9zZSgkdGhpcy0+X2Nvbm4pOwogICAgICAgICR0aGlzLT5fY29ubiA9IG51bGw7CiAgICAgICAgZmNsb3NlKCR0aGlzLT5fZHVtcGZoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZG9fdmlldygkdGFibGUpCiAgICB7CiAgICAgICAgJHR4dCA9ICIvKiBzdHJ1Y3R1cmUgZm9yIHZpZXcgYCR0YWJsZWAgKi9cbiI7CiAgICAgICAgaWYoICR0aGlzLT5kcm9wX3RhYmxlICkgewogICAgICAgICAgICAkdHh0IC49ICJEUk9QIFZJRVcgSUYgRVhJU1RTIGAkdGFibGVgO1xuXG4iOwogICAgICAgIH0KICAgICAgICAkc3FsID0gIlNIT1cgQ1JFQVRFIFZJRVcgYCR0YWJsZWA7IjsKICAgICAgICAkcmVzID0gbXlzcWxpX3F1ZXJ5KCR0aGlzLT5fY29ubiwkc3FsKTsKICAgICAgICBpZiggJHJlcyApIHsKICAgICAgICAgICAgaWYoICRyb3cgPSBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlcykgKSB7CiAgICAgICAgICAgICAgICAkdG1wID0gJHJvd1snQ3JlYXRlIFZpZXcnXTsKICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSBERUZJTkVSIC4uLi4gREVGSU5FUgogICAgICAgICAgICAgICAgJGtleSA9ICdERUZJTkVSJzsKICAgICAgICAgICAgICAgICRzX3BvcyA9IHN0cnBvcygkdG1wLCRrZXkpOwogICAgICAgICAgICAgICAgJGVfcG9zID0gc3RycnBvcygkdG1wLCRrZXkpOwogICAgICAgICAgICAgICAgaWYoICRzX3BvcyAhPT0gRkFMU0UgJiYgJGVfcG9zICE9PSBGQUxTRSApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wMiA9IHN1YnN0cigkdG1wLDAsJHNfcG9zKTsKICAgICAgICAgICAgICAgICAgICAkdG1wMiAuPSBzdWJzdHIoJHRtcCwkZV9wb3Mrc3RybGVuKCRrZXkpKTsKICAgICAgICAgICAgICAgICAgICAkdG1wID0gJHRtcDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdHh0IC49ICR0bXAuIjtcblxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBteXNxbGlfZnJlZV9yZXN1bHQoJHJlcyk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT53cml0ZSgkdHh0KTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZG9fdGFibGVfc3RydWN0dXJlKCR0YWJsZSkKICAgIHsKICAgICAgICAkdHh0ID0gIi8qIFRhYmxlIHN0cnVjdHVyZSBmb3IgdGFibGUgYCR0YWJsZWAgKi9cbiI7CiAgICAgICAgaWYoICR0aGlzLT5kcm9wX3RhYmxlICkgewogICAgICAgICAgICAkdHh0IC49ICJEUk9QIFRBQkxFIElGIEVYSVNUUyBgJHRhYmxlYDtcblxuIjsKICAgICAgICB9CiAgICAgICAgJHNxbCA9ICJTSE9XIENSRUFURSBUQUJMRSBgJHRhYmxlYDsiOwogICAgICAgICRyZXMgPSBteXNxbGlfcXVlcnkoJHRoaXMtPl9jb25uLCRzcWwpOwogICAgICAgIGlmKCAkcmVzICkgewogICAgICAgICAgICBpZiggJHJvdyA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzKSApIHsKICAgICAgICAgICAgICAgICR0eHQgLj0gJHJvd1snQ3JlYXRlIFRhYmxlJ10uIjtcblxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBteXNxbGlfZnJlZV9yZXN1bHQoJHJlcyk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT53cml0ZSgkdHh0KTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZG9fdGFibGVfZGF0YSgkdGFibGUpCiAgICB7CiAgICAgICAgJHR4dCA9ICcnOwogICAgICAgICRzcWwgPSAiU0VMRUNUICogRlJPTSBgJHRhYmxlYDsiOwogICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJHRoaXMtPl9jb25uLCRzcWwpOwogICAgICAgIGlmKCAhJHJlc3VsdCApIHJldHVybjsKCiAgICAgICAgJG51bV9yb3dzID0gbXlzcWxpX251bV9yb3dzKCRyZXN1bHQpOwogICAgICAgICRudW1fZmllbGRzID0gbXlzcWxpX251bV9maWVsZHMoJHJlc3VsdCk7CgogICAgICAgIGlmKCAkbnVtX3Jvd3MgKSB7CiAgICAgICAgICAgICR0eHQgLj0gIi8qIHRhYmxlIGNvbnRlbnRzIGZvciB0YWJsZSBgJHRhYmxlYCAqL1xuIjsKCiAgICAgICAgICAgIC8vIGdldCBjb2x1bXVuIHR5cGVzCiAgICAgICAgICAgICRmaWVsZF90eXBlID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgJG51bV9maWVsZHM7ICRpKysgKSB7CiAgICAgICAgICAgICAgICAkbWV0YSA9IG15c3FsaV9mZXRjaF9maWVsZCgkcmVzdWx0KTsKICAgICAgICAgICAgICAgICRmaWVsZF90eXBlW10gPSAkbWV0YS0+dHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHR4dCAuPSAiSU5TRVJUIElOVE8gYCR0YWJsZWAgdmFsdWVzXG4iOwogICAgICAgICAgICBmb3IoICRyID0gMDsgJHIgPCAkbnVtX3Jvd3M7ICRyKysgKSB7CiAgICAgICAgICAgICAgICAkcm93ID0gbXlzcWxpX2ZldGNoX3JvdygkcmVzdWx0KTsKICAgICAgICAgICAgICAgICRjb2xzID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgIGZvciggJGkgPSAwOyAkaSA8ICRudW1fZmllbGRzOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgIGlmKCBpc19udWxsKCRyb3dbJGldKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbHNbXSA9ICdudWxsJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goICRmaWVsZF90eXBlWyRpXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI0NjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xzW10gPSAkcm93WyRpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibG9iJzoKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xzW10gPSAiJyIubXlzcWxpX3JlYWxfZXNjYXBlX3N0cmluZygkdGhpcy0+X2Nvbm4sJHJvd1skaV0pLiInIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHR4dCAuPSAnKCcuaW1wbG9kZSgnLCcsJGNvbHMpLicpJzsKICAgICAgICAgICAgICAgIGlmKCAkciA8ICRudW1fcm93cyAtIDEgKSB7CiAgICAgICAgICAgICAgICAgICAgJHR4dCAuPSAiLCBcbiI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0eHQgLj0gIjsgXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteXNxbGlfZnJlZV9yZXN1bHQoJHJlc3VsdCk7CiAgICAgICAgJHR4dCAuPSAiXG4iOwogICAgICAgICR0aGlzLT53cml0ZSgkdHh0KTsKICAgIH0KICAgIAp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/lib/class.stderr_logger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3I7CgpjbGFzcyBzdGRlcnJfbG9nZ2VyIGV4dGVuZHMgbG9nZ2VyCnsKICAgIHByaXZhdGUgJF9sdmw7CgogICAgY29uc3QgTFZMX0ZBVEFMID0gMDsKICAgIGNvbnN0IExWTF9FUlJPUiA9IDE7CiAgICBjb25zdCBMVkxfV0FSTklORyA9IDI7CiAgICBjb25zdCBMVkxfSU5GTyA9IDM7CiAgICBjb25zdCBMVkxfVkVSQk9TRSA9IDQ7CiAgICBjb25zdCBMVkxfREVCVUcgPSA1OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbHZsID0gc2VsZjo6TFZMX0lORk8pCiAgICB7CiAgICAgICAgJHRoaXMtPl9sdmwgPSAkbHZsOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsZXZlbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fbHZsOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiB3cml0ZSgkc3RyKQogICAgewogICAgICAgICRzdHIgPSB0cmltKCRzdHIpOwogICAgICAgIGlmKCAhJHN0ciApIHJldHVybjsKICAgICAgICBpZiggIWVuZHN3aXRoKCAkc3RyLCAiXG4iKSApICRzdHIgLj0gIlxuIjsKICAgICAgICBmd3JpdGUoU1RERVJSLCRzdHIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZWJ1Zygkc3RyKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+bGV2ZWwoKSA8IHNlbGY6OkxWTF9ERUJVRyApIHJldHVybjsKICAgICAgICAkdGhpcy0+d3JpdGUoJ0RFQlVHOiAnLiRzdHIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJib3NlKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5sZXZlbCgpIDwgc2VsZjo6TFZMX1ZFUkJPU0UgKSByZXR1cm47CiAgICAgICAgJHRoaXMtPndyaXRlKCdWRVJCT1NFOiAnLiRzdHIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpbmZvKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5sZXZlbCgpIDwgc2VsZjo6TFZMX0lORk8gKSByZXR1cm47CiAgICAgICAgJHRoaXMtPndyaXRlKCdJTkZPOiAnLiRzdHIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3YXJuaW5nKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5sZXZlbCgpIDwgc2VsZjo6TFZMX1dBUk5JTkcgKSByZXR1cm47CiAgICAgICAgJHRoaXMtPndyaXRlKCdXQVJOSU5HOiAnLiRzdHIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcnJvcigkc3RyKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+bGV2ZWwoKSA8IHNlbGY6OkxWTF9FUlJPUiApIHJldHVybjsKICAgICAgICAkdGhpcy0+d3JpdGUoJ0VSUk9SOiAnLiRzdHIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBmYXRhbCgkc3RyKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+bGV2ZWwoKSA8IHNlbGY6OkxWTF9GQVRBTCApIHJldHVybjsKICAgICAgICAkdGhpcy0+d3JpdGUoJ0ZBVEFMOiAnLiRzdHIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkaXNwbGF5X3Byb2dyZXNzKCRwZXJjZW50KQogICAgewogICAgICAgIC8vIGRvIG5vdGhpbmcKICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzCgojCiMgRU9GCiM=]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/Commands/class.Dump.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3JcQ29tbWFuZHM7Cgp1c2UgXENNU01TXENMSVxBcHA7CnVzZSBcQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgXENNU01TXENMSVxHZXRPcHRFeHRcT3B0aW9uOwp1c2UgXENNU01TXENMSVxHZXRPcHRFeHRcR2V0T3B0Owp1c2UgXEdldE9wdFxPcGVyYW5kOwp1c2UgXFNuYXBzaG90TWdyXGZhbmN5X3N0ZGVycl9sb2dnZXI7CnVzZSBcU25hcHNob3RNZ3Jcc25hcHNob3RfY3JlYXRvcjsKCmNsYXNzIER1bXAgZXh0ZW5kcyBDb21tYW5kCnsKICAgIHByb3RlY3RlZCAkbW9kOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggXFNuYXBzaG90TWdyICRtb2QsIEFwcCAkYXBwICkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCAkYXBwLCAnc25hcHNob3RtZ3ItZHVtcCcgKTsKICAgICAgICAkdGhpcy0+U2V0RGVzY3JpcHRpb24oJ1VzZSBTbmFwc2hvdE1nciB0byBnZW5lcmF0ZSBhIHNpdGUgZHVtcCcpOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKCd2JywndmVyYm9zZScpLT5zZXREZXNjcmlwdGlvbignRW5hYmxlIFZlcmJvc2UgbW9kZScpKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZShudWxsLCdkZWJ1ZycpLT5zZXREZXNjcmlwdGlvbignRW5hYmxlIERlYnVnIG1vZGUnKSk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ3gnLCdleGNsdWRlJywgR2V0T3B0OjpNVUxUSVBMRV9BUkdVTUVOVCApLT5zZXREZXNjcmlwdGlvbignRXhjbHVkZSBhIGZpbGUgb3IgcGF0dGVybicpICk7CiAgICAgICAgJHRoaXMtPm1vZCA9ICRtb2Q7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhbmRsZSgpCiAgICB7CiAgICAgICAgJGx2bCA9IGZhbmN5X3N0ZGVycl9sb2dnZXI6OkxWTF9JTkZPOwogICAgICAgICR2ZXJib3NlID0gJHRoaXMtPmdldE9wdGlvbigndmVyYm9zZScpLT52YWx1ZSgpOwogICAgICAgIGlmKCAkdmVyYm9zZSApICRsdmwgPSBmYW5jeV9zdGRlcnJfbG9nZ2VyOjpMVkxfVkVSQk9TRTsKICAgICAgICAkZGVidWcgPSAkdGhpcy0+R2V0T3B0aW9uKCdkZWJ1ZycpLT52YWx1ZSgpOwogICAgICAgIGlmKCAkZGVidWcgKSAkbHZsID0gZmFuY3lfc3RkZXJyX2xvZ2dlcjo6TFZMX0RFQlVHOwogICAgICAgICRleGNsdWRlcyA9ICR0aGlzLT5nZXRPcHRpb24oJ2V4Y2x1ZGUnKS0+dmFsdWUoKTsKICAgICAgICAkbG9nZ2VyID0gbmV3IGZhbmN5X3N0ZGVycl9sb2dnZXIoJHRoaXMtPm1vZCwgJGx2bCApOwogICAgICAgICRjcmVhdG9yID0gbmV3IHNuYXBzaG90X2NyZWF0b3I7CiAgICAgICAgJGNyZWF0b3ItPm15c3FsZHVtcCA9IFRSVUU7CiAgICAgICAgJGNyZWF0b3ItPmZpbGVzID0gVFJVRTsKICAgICAgICBpZiggIWVtcHR5KCRleGNsdWRlcykgKSB7CiAgICAgICAgICAgICRjcmVhdG9yLT5leGNsdWRlcyA9IGltcGxvZGUoIlxuIiwkZXhjbHVkZXMpOwogICAgICAgIH0KICAgICAgICAkY3JlYXRvci0+c2V0X2xvZ2dlcigkbG9nZ2VyKTsKICAgICAgICAkZm4gPSAkY3JlYXRvci0+ZXhlY3V0ZSgpOwogICAgICAgIGVjaG8gJGZuLiJcbiI7CiAgICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib/trait.loggable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3I7Cgp0cmFpdCBsb2dnYWJsZQp7CiAgICBwcml2YXRlICRfbG9nZ2VyOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfbG9nZ2VyKGxvZ2dlciAkbG9nZ2VyKQogICAgewogICAgICAgICR0aGlzLT5fbG9nZ2VyID0gJGxvZ2dlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWR2YW5jZSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fbG9nZ2VyICkgJHRoaXMtPl9sb2dnZXItPmFkdmFuY2UoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVidWcoJHN0cikKICAgIHsKICAgICAgICBpZiggJHRoaXMtPl9sb2dnZXIgKSAkdGhpcy0+X2xvZ2dlci0+ZGVidWcoJHN0cik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZlcmJvc2UoJHN0cikKICAgIHsKICAgICAgICBpZiggJHRoaXMtPl9sb2dnZXIgKSAkdGhpcy0+X2xvZ2dlci0+dmVyYm9zZSgkc3RyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5mbygkc3RyKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+X2xvZ2dlciApICR0aGlzLT5fbG9nZ2VyLT5pbmZvKCRzdHIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3YXJuaW5nKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fbG9nZ2VyICkgJHRoaXMtPl9sb2dnZXItPndhcm5pbmcoJHN0cik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVycm9yKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fbG9nZ2VyICkgJHRoaXMtPl9sb2dnZXItPmVycm9yKCRzdHIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBmYXRhbCgkc3RyKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+X2xvZ2dlciApICR0aGlzLT5fbG9nZ2VyLT5mYXRhbCgkc3RyKTsKICAgIH0KCn0gLy8gZW5kIG9mIHRyYWl0CgojCiMgRU9GCiM=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoICFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykgKSBleGl0OwoKLy8gZG8gc3lzdGVtcyBjaGVja3MKdHJ5IHsKICAgIGlmKCAhY2xhc3NfZXhpc3RzKCdcWmlwQXJjaGl2ZScpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdZb3VyIGluc3RhbGxhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBQSFAgWmlwQXJjaGl2ZSBjbGFzcycpOwogICAgJGRpciA9IHN5c19nZXRfdGVtcF9kaXIoKTsKICAgIGlmKCAhJGRpciApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignWW91ciBpbnN0YWxsYXRpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsaWQgc3lzdGVtIHRlbXBvcmFyeSBkaXJlY3RvcnknKTsKICAgIGlmKCAhaXNfd3JpdGFibGUoJGRpcikgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1lvdXIgaW5zdGFsbGF0aW9uIGNhbm5vdCB3cml0ZSB0byB0aGUgc3lzdGVtIHRlbXBvcmFyeSBkaXJlY3RvcnknKTsKCiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignU25hcHNob3RNZ3InLCdTbmFwc2hvdE1ncicpOwogICAgJHRoaXMtPkNyZWF0ZUV2ZW50KCdCZWZvcmVDcmVhdGVTbmFwc2hvdCcpOwp9CgpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBQcm9ibGVtOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgZGVidWdfdG9fbG9nKF9fRklMRV9fKTsKICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0TWVzc2FnZSgpKTsKICAgIHJldHVybiAkZS0+R2V0TWVzc2FnZSgpOwp9CgojCiMgRU9GCiM=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoICFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykgKSBleGl0OwoKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ1NuYXBzaG90TWdyJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnQmVmb3JlQ3JlYXRlU25hcHNob3QnKTsKCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoICFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykgKSBleGl0OwoKCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJTbmFwc2hvdE1nciIKdmVyc2lvbiA9IDEuMQphdXRob3IgPSAiUm9sZiBUamFzc2VucyIKYXV0aG9yZW1haWwgPSAiaW5mbyBbYXRdIGNtc2NhbmJlc2ltcGxlIFtkb3RdIG9yZyIKbWluY21zdmVyc2lvbiA9IDIuMgpsYXp5bG9hZGFkbWluID0gMQpsYXp5bG9hZGZyb250ZW5kID0gMQpbZGVwZW5kc10KQ01TTVNFeHQgPSAxLjAK]]></data>
	</file>
	<file>
	  <filename>/phar/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/phar/build.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpAdW5saW5rKCdTbmFwc2hvdE1nci1SZXN0b3JlLnBocCcpOwoKJHBoYXIyID0gbmV3IFBoYXIoJ1NuYXBzaG90TWdyLVJlc3RvcmUucGhhcicsIDAsICdTbmFwc2hvdE1nci1SZXN0b3JlLnBoYXInKTsKCi8vIGFkZCBhbGwgZmlsZXMgaW4gdGhlIHByb2plY3QsIG9ubHkgaW5jbHVkZSBwaHAgZmlsZXMKJHBoYXIyLT5idWlsZEZyb21EaXJlY3RvcnkoZGlybmFtZShfX0ZJTEVfXykpOwokcGhhcjItPnNldFN0dWIoJHBoYXIyLT5jcmVhdGVEZWZhdWx0U3R1YignY2xpLnBocCcsICd3d3cucGhwJykpOwoKcmVuYW1lKCdTbmFwc2hvdE1nci1SZXN0b3JlLnBoYXInLCdTbmFwc2hvdE1nci1SZXN0b3JlLnBocCcpOwoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/phar/cli.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppbmNsdWRlX29uY2UoJ2xpYicgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3V0aWxzLnBocCcpOwppbmNsdWRlX29uY2UoJ2xpYicgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2RiX3V0aWxzLnBocCcpOwppbmNsdWRlX29uY2UoJ2xpYicgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2NsYXNzLmNvbXBhdGliaWxpdHlfdGVzdGVyLnBocCcpOwoKJHNjcmlwdCA9IGJhc2VuYW1lKCRhcmd2WzBdKTsKJGRiY29uZmlnID0gbnVsbDsgLy8gZGIgY29uZmlnIGFycmF5CiRkYmZpbGUgPSBudWxsOyAvLyBwYXRoIHRvIGltcG9ydCBmaWxlCiRzbmFwc2hvdCA9IG51bGw7IC8vIHBhdGhuYW1lIHRvIHNuYXBzaG90CiRvbGRfY29uZmlnID0gbnVsbDsgLy8gb2xkIGNvbmZpZyB2YWx1ZXMKJGFyY2ggPSBudWxsOyAgLy8gdGhlIGFyY2hpdmUgb2JqZWN0CiRkaXIgPSBnZXRjd2QoKTsKJGNvbmZpZ19maWxlID0gbnVsbDsKCiRvdXQgPSA8PDxFT1QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo9PT0gU25hcHNob3RNZ3IgUmVzdG9yZSBVdGlsaXR5ID09PQpUaGlzIHByb2dyYW0gd2lsbCBhdHRlbXB0IHRvIHJlc3RvcmUgYSBTbmFwc2hvdE1nciBmaWxlIGludG8gYSB3b3JraW5nIENNU01TIERpc3RyaWJ1dGlvbi4KVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHN0ZXBzIGluIHRoaXMgb3BlcmF0aW9uOgoxLiAgRG8gYSBiYXNpYyBjaGVjayBmb3Igc3lzdGVtIGNvbXBhdGliaWxpdHkKMi4gIEFzayBmb3IsIGFuZCB2YWxpZGF0ZSB0aGUgU25hcHNob3RNZ3IgZmlsZQozLiAgQ2hlY2sgZm9yIGFuIGVtcHR5IGRpcmVjdG9yeS4KNC4gIEdldCBhbmQgdmFsaWRhdGUgZGF0YWJhc2UgY3JlZGVudGlhbHMsIGFuZCB0aGUgZGF0YWJhc2UKNS4gIEV4dHJhY3QgU25hcHNob3RNZ3IgRmlsZXMKNi4gIFJlc3RvcmUgdGhlIGRhdGFiYXNlCjcuICBTZWN1cmUgdGhlIGluc3RhbGxhdGlvbgo4LiAgR2VuZXJhdGUgYSBuZXcgY29uZmlnLnBocAoKVGhlcmUgYXJlIHN0ZXBzIHlvdSBtYXkgbmVlZCB0byB0YWtlIGFmdGVyIHRoaXMgb3BlcmF0aW9uIGlzIGNvbXBsZXRlIHRvIGVuc3VyZSBhIHdvcmtpbmcgc3lzdGVtLApQYXJ0aWN1bGFybHkgaWYgeW91IGFyZSBtb3ZpbmcgdG8gYSBuZXcgaG9zdC4KVGhlc2UgSW5jbHVkZQoxLiAgQWRqdXN0aW5nIHlvdXIgLmh0YWNjZXNzIGZpbGUKMi4gIEFkanVzdGluZyBhbnkgaGFyZCBjb2RlZCBsaW5rcwozLiAgQWRqdXN0aW5nIG1vZHVsZSBwcmVmZXJlbmNlcyBhbmQgc2V0dGluZ3MKNC4gIFRlc3RpbmcKCk5PVEVTOgoxLiAgVGhpcyBzY3JpcHQgcmVxdWlyZXMgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBzaGVsbCBjb21tYW5kcy4KMi4gIFRoaXMgc2NyaXB0IHJlcXVpcmVzIHRoYXQgdGhlIG15c3FsIHByb2dyYW0gYmUgaW4gdGhlIGN1cnJlbnQgUEFUSC4KMy4gIFRoaXMgc2NyaXB0IHJlcXVpcmVzIHRoZSBaaXBBcmNoaXZlIHBocCBjbGFzcyAodXN1YWxseSBidWlsdCBpbikKNC4gIFRoaXMgc2NyaXB0IGRvZXMgY29tcGF0aWJpbGl0eSBjaGVja3MgdGhhdCBtYXkgYmUgbGVzcyBleHRlbnNpdmUgdGhhbiB0aG9zZSBidWlsdCBpbnRvIENNU01TLCBvciBtYXkgYmUgbW9yZSBleHRlbnNpdmUuCkVPVDsKY2xzKCk7Cm91dHB1dCgkb3V0KTsKCiRyZXMgPSBhc2tfYm9vbCgnQXJlIHlvdSByZWFkeSB0byBiZWdpbj8nKTsKaWYoICEkcmVzICkgewogICAgbmV3bGluZSgpOwogICAgb3V0cHV0KCJUaGFuayB5b3UsIGNvbWUgYWdhaW4iKTsKICAgIGV4aXQ7Cn0KCi8vIDEuICBwcm9tcHQgZm9yIHppcCBmaWxlCiRvdXQgPSA8PDxFT1QKPT0gRW50ZXIgdGhlIFNuYXBzaG90TWdyIG5hbWUgPT0KUGxlYXNlIGVudGVyIHRoZSBuYW1lIG9mIHRoZSBTbmFwc2hvdE1nciBmaWxlIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gcmVzdG9yZS4KCk5vdGU6IFRoZSBmaWxlbmFtZSBzaG91bGQgYmUgYW4gYWJzb2x1dGUgcGF0aCwgb3Igc2hvdWxkIHJlc2lkZSBpbiB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCkVPVDsKJHNuYXBzaG90ID0gbnVsbDsKY2xzKCk7CndoaWxlKCAhJHNuYXBzaG90ICkgewogICAgb3V0cHV0KCRvdXQpOwogICAgJHJlcyA9IGFza19zdHJpbmdfcmVxdWlyZWQoICJTbmFwc2hvdE1nciBGaWxlIE5hbWU6IiApOwogICAgaWYoICRyZXMgKSB7CiAgICAgICAgJGZuID0gJGRpci4nLycuJHJlczsKICAgICAgICBpZiggIWlzX2ZpbGUoJGZuKSB8fCAhaXNfcmVhZGFibGUoJGZuKSApIHsKICAgICAgICAgICAgbmV3bGluZSgpOwogICAgICAgICAgICBlcnJvcigiQ291bGQgbm90IGZpbmQgdGhlIGZpbGU6ICRyZXMiKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiggIWlzX3NuYXBzaG90bWdyKCRmbikgKSB7CiAgICAgICAgICAgIG5ld2xpbmUoKTsKICAgICAgICAgICAgZXJyb3IoIiRyZXMgaXMgbm90IGEgU25hcHNob3RNZ3IgYXJjaGl2ZSBmaWxlIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkc25hcHNob3QgPSAkcmVzOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0KCi8vIDIuICBHZXQgY29uZmlnIGFuZCBkYXRhYmFzZSBmaWxlcyBmcm9tIHRoZSBzbmFwc2hvdAokY29uZmlnX2ZpbGVzID0gYXJyYXkoJ2NvbmZpZy5waHAnLCdsaWInIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdjb25maWcucGhwJyk7CiRvbGRfY29uZmlnID0gbnVsbDsKJHRtcGZpbGUgPSAnLnRtcC5jb25maWcucGhwJzsKJGFyY2ggPSBuZXcgXFppcEFyY2hpdmU7CiRhcmNoLT5vcGVuKCRzbmFwc2hvdCk7CiRkYmZpbGUgPSBjb3B5X2FyY2hmaWxlX3RvX3RtcCgkYXJjaCwndG1wJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnX19teXNxbGR1bXAuc3FsJyk7CmZvcmVhY2goICRjb25maWdfZmlsZXMgYXMgJGZpbGUgKSB7CiAgICAkZm4gPSBjb3B5X2FyY2hmaWxlX3RvX3RtcCgkYXJjaCwkZmlsZSk7CiAgICBpZiggJGZuICkgewogICAgICAgICRjb25maWdfZmlsZSA9ICRmaWxlOwogICAgICAgIGluY2x1ZGUoJGZuKTsKICAgICAgICAkb2xkX2NvbmZpZyA9ICRjb25maWc7CiAgICAgICAgdW5zZXQoJGNvbmZpZyk7CiAgICAgICAgdW5saW5rKCRmbik7CiAgICAgICAgYnJlYWs7CiAgICB9Cn0KaWYoICEkb2xkX2NvbmZpZyB8fCAhaXNzZXQoJG9sZF9jb25maWdbJ2RiX25hbWUnXSkgKSB7CiAgICBlcnJvcigiQ291bGQgbm90IGZpbmQgY29uZmlnIGRhdGEgaW4gU25hcHNob3RNZ3IiKTsKICAgIGV4aXQoMSk7Cn0KCi8vIDMuICBEaXNwbGF5IGluZm8gZnJvbSB0aGUgc25hcHNob3QKJHNuYXBzaG90bWdyX2ZpbGUgPSAkYXJjaC0+Z2V0RnJvbU5hbWUoJ3RtcC8uc25hcHNob3RtZ3InKTsKJGluaSA9IG5ldyBcU25hcHNob3RNZ3JccGhhclxzZWN1cmVfaW5pX2ZpbGU7CiRzbmFwc2hvdG1ncl9kYXRhID0gJGluaS0+cGFyc2UoJHNuYXBzaG90bWdyX2ZpbGUsRkFMU0UpOwpjbHMoKTsKb3V0cHV0KCc9PSBTbmFwc2hvdE1nciBEZXRhaWxzID09Jyk7Cm91dHB1dCgnU2l0ZSBOYW1lOiAnLiRzbmFwc2hvdG1ncl9kYXRhWyd3ZWJzaXRlJ11bJ3NpdGVuYW1lJ10pOwpvdXRwdXQoJ1NpdGUgVVJMOiAnLiRzbmFwc2hvdG1ncl9kYXRhWyd3ZWJzaXRlJ11bJ3Jvb3RfdXJsJ10pOwpvdXRwdXQoJ0NNU01TIFZlcnNpb246ICcuJHNuYXBzaG90bWdyX2RhdGFbJ3dlYnNpdGUnXVsnY21zX3ZlcnNpb24nXSk7Cm91dHB1dCgnQ3JlYXRlZDogJy5zdHJmdGltZSgnJXggJVgnLCRzbmFwc2hvdG1ncl9kYXRhWydtYWluJ11bJ2NyZWF0ZWQnXSkpOwokcmVzID0gYXNrX2Jvb2woJ0RvIHlvdSB3YW50IHRvIGNvbnRpbnVlPycpOwppZiggISRyZXMgKSB7CiAgICBuZXdsaW5lKCk7CiAgICBvdXRwdXQoIlRoYW5rIHlvdSwgY29tZSBhZ2FpbiIpOwogICAgZXhpdDsKfQoKLy8gNC4gIENvbXBhdGliaWxpdHkgY2hlY2sKY2xzKCk7Cm91dHB1dCgnPT0gQ2hlY2sgZm9yIENvbXBhdGliaWxpdHkgPT0nKTsKJHBhcm1zID0gYXJyYXkoJ2Rpcic9PiRkaXIsJ2V4Y2x1ZGVzJz0+YXJyYXkoYmFzZW5hbWUoJHNuYXBzaG90KSwkc2NyaXB0KSk7CiR0ZXN0ZXIgPSBuZXcgXFNuYXBzaG90TWdyXHBoYXJcY29tcGF0aWJpbGl0eV90ZXN0ZXIoJHBhcm1zKTsKJHJlcyA9ICR0ZXN0ZXItPnRlc3QoKTsKaWYoICEkcmVzICkgewogICAgbmV3bGluZSgpOwogICAgZXJyb3IoIk9uZSBvciBtb3JlIGNvbXBhdGliaWxpdHkgdGVzdHMgZmFpbGVkIik7CiAgICAkZmFpbGVkID0gJHRlc3Rlci0+Z2V0X2ZhaWxlZCgpOwogICAgZm9yZWFjaCggJGZhaWxlZCBhcyAkb25lICkgewogICAgICAgIGVycm9yKCIgICAgJG9uZSA6ICIuJHRlc3Rlci0+Z2V0X2Vycm9ybXNnKCRvbmUpLEZBTFNFKTsKICAgIH0KICAgIGVycm9yKCJOb3QgYWxsIHRlc3RzIHBhc3NlZC4uLiBtdXN0IGV4aXQuIik7CiAgICBleGl0KDEpOwp9Cgokb3V0ID0gYXJyYXkoKTsKJGxpc3QgPSBhcnJheSgpOwokbGlzdFsnYSddID0gYXJyYXkoJ3Byb21wdCc9PidEYXRhYmFzZSBIb3N0Jywna2V5Jz0+J2RiX2hvc3RuYW1lJywndmFsJz0+J2xvY2FsaG9zdCcpOwokbGlzdFsnYiddID0gYXJyYXkoJ3Byb21wdCc9PidEYXRhYmFzZSBOYW1lJywna2V5Jz0+J2RiX25hbWUnLCd2YWwnPT5udWxsKTsKJGxpc3RbJ2MnXSA9IGFycmF5KCdwcm9tcHQnPT4nRGF0YWJhc2UgVXNlcicsJ2tleSc9PidkYl91c2VybmFtZScsJ3ZhbCc9Pm51bGwpOwokbGlzdFsnZCddID0gYXJyYXkoJ3Byb21wdCc9PidEYXRhYmFzZSBQYXNzd29yZCcsJ2tleSc9PidkYl9wYXNzd29yZCcsJ3ZhbCc9Pm51bGwpOwokbGlzdFsnZSddID0gYXJyYXkoJ3Byb21wdCc9PidEQk1TIChteXNxbC9teXNxbGkpJywna2V5Jz0+J2RibXMnLCd2YWwnPT4nbXlzcWxpJywnb3B0aW9ucyc9PmFycmF5KCdteXNxbGknLCdteXNxbCcpKTsKJGxpc3RbJ3onXSA9IGFycmF5KCdwcm9tcHQnPT4nRG9uZS9GaW5pc2hlZCcpOwokdmFsaWQgPSBmYWxzZTsKJGJ1aWxkX3Byb21wdCA9IGZ1bmN0aW9uKCRsaXN0KSB7CiAgICAkcHJvbXB0ID0gJz09IERhdGFiYXNlIENvbm5lY3Rpb24gSW5mb3JtYXRpb24gPT0nLiJcbiI7CiAgICBmb3JlYWNoKCAkbGlzdCBhcyAka2V5ID0+ICRyZWMgKSB7CiAgICAgICAgaWYoIGlzc2V0KCRyZWNbJ2tleSddKSApIHsKICAgICAgICAgICAgJHByb21wdCAuPSBzcHJpbnRmKCIlczogJTIwcyA9ICVzXG4iLCRrZXksJHJlY1sncHJvbXB0J10sJHJlY1sndmFsJ10pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwcm9tcHQgLj0gc3ByaW50ZigiJXM6ICUyMHNcbiIsJGtleSwkcmVjWydwcm9tcHQnXSk7CiAgICAgICAgfQogICAgfQogICAgJHByb21wdCAuPSAiXG5PcHRpb24gW2EsYixjLGQsZSBxL3F1aXQvZXhpdF06ICI7CiAgICByZXR1cm4gJHByb21wdDsKfTsKCmNscygpOwp3aGlsZSggISR2YWxpZCApIHsKICAgIHdoaWxlKCAxICkgewogICAgICAgIC8vIGRpc3BsYXkgdGhlIGxpc3QKICAgICAgICAkbGlzdGtleSA9IGFza19vcHRpb24oJGJ1aWxkX3Byb21wdCgkbGlzdCksYXJyYXlfa2V5cygkbGlzdCkpOwogICAgICAgIGlmKCAkbGlzdGtleSA9PSAneicgKSBicmVhazsKICAgICAgICBpZiggaXNzZXQoJGxpc3RbJGxpc3RrZXldWydvcHRpb25zJ10pICkgewogICAgICAgICAgICAkdmFsID0gYXNrX29wdGlvbigkbGlzdFskbGlzdGtleV1bJ3Byb21wdCddLic6JywkbGlzdFskbGlzdGtleV1bJ29wdGlvbnMnXSk7CiAgICAgICAgICAgICRsaXN0WyRsaXN0a2V5XVsndmFsJ10gPSB0cmltKCR2YWwpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHZhbCA9IGFza19zdHJpbmdfcmVxdWlyZWQoJGxpc3RbJGxpc3RrZXldWydwcm9tcHQnXS4nOicpOwogICAgICAgICAgICAkbGlzdFskbGlzdGtleV1bJ3ZhbCddID0gdHJpbSgkdmFsKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIHZhbHVlIGZvciBldmVyeXRoaW5nCiAgICAkZm5kID0gdHJ1ZTsKICAgIGZvcmVhY2goICRsaXN0IGFzICRrZXkgPT4gJHJlYyApIHsKICAgICAgICBpZiggIWlzc2V0KCRyZWNbJ2tleSddKSApIGNvbnRpbnVlOwogICAgICAgIGlmKCAhaXNzZXQoJHJlY1sndmFsJ10pIHx8ICRyZWNbJ3ZhbCddID09ICcnICkgewogICAgICAgICAgICAkZm5kID0gZmFsc2U7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIGlmKCAkZm5kICkgewogICAgICAgIC8vIGRvIGEgdGVzdCBjb25uZWN0aW9uCiAgICAgICAgJGRiY29uZmlnID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkbGlzdCBhcyAka2V5ID0+ICRyZWMgKSB7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJHJlY1sna2V5J10pICkgY29udGludWU7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJHJlY1sndmFsJ10pICkgY29udGludWU7CiAgICAgICAgICAgICRkYmNvbmZpZ1skcmVjWydrZXknXV0gPSAkcmVjWyd2YWwnXTsKICAgICAgICB9CiAgICAgICAgJHJlcyA9IFxTbmFwc2hvdE1nclxwaGFyXHRlc3RfZGJfY29ubmVjdCgkZGJjb25maWcpOwogICAgICAgIGlmKCAhJHJlcyApIHsKICAgICAgICAgICAgbmV3bGluZSgpOwogICAgICAgICAgICBlcnJvcignUHJvYmxlbSBjb25uZWN0aW5nIHRvIHRoZSBkYXRhYmFzZS4uLiBwbGVhc2UgZG91YmxlY2hlY2sgeW91ciBpbmZvcm1hdGlvbicpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIC8vIGNvbm5lY3RlZCBva2F5LCBzZWUgaWYgdGhlIGRiIGlzIGVtcHR5CiAgICAgICAgJHJlcyA9IFxTbmFwc2hvdE1nclxwaGFyXHRlc3RfZGJfZW1wdHkoJHJlcywkZGJjb25maWcpOwogICAgICAgIGlmKCAhJHJlcyApIHsKICAgICAgICAgICAgbmV3bGluZSgpOwogICAgICAgICAgICBlcnJvcignVGhlIGRhdGFiYXNlIHlvdSBzZWxlY3RlZCBhcHBlYXJzIHRvIGFscmVhZHkgY29udGFpbiB0YWJsZXMuLi4gcGxlYXNlIHBpY2sgYW5vdGhlciBkYXRhYmFzZSwgb3IgY2xlYXIgdGhpcyBvbmUuJyk7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgJHZhbGlkID0gdHJ1ZTsKICAgIH0KfQoKLy8gNS4gIGltcG9ydCBkYXRhYmFzZQpjbHMoKTsKb3V0cHV0KCc9PSBpbXBvcnRpbmcgZGF0YWJhc2UgPT0nKTsKJHJlcyA9IFxTbmFwc2hvdE1nclxwaGFyXGRiX2ltcG9ydCgkZGJjb25maWcsJGRiZmlsZSk7CmlmKCAhJHJlcyApIHsKICAgIG5ld2xpbmUoKTsKICAgIGVycm9yKCdQcm9ibGVtIGltcG9ydGluZyBkYXRhIGludG8gdGhlIGRhdGFiYXNlLi4uIHBsZWFzZSBjbGVhbnVwIGFuZCByZXRyeScpOwogICAgZXhpdCgxKTsKfQpvdXRwdXQoJ2RvbmUnKTsKCi8vIDYuICBleHRyYWN0IHppcCBmaWxlcwokb3AgPSBudWxsOwpuZXdsaW5lKCk7Cm91dHB1dCgnPT0gcmVzdG9yaW5nIGZpbGVzID09Jyk7CmZvciggJGkgPSAwOyAkaSA8ICRhcmNoLT5udW1GaWxlczsgJGkrKyApIHsKICAgICRlbnRyeSA9ICRhcmNoLT5nZXROYW1lSW5kZXgoJGkpOwogICAgJGFyY2gtPmV4dHJhY3RUbygnLicsJGVudHJ5KTsKICAgICRwID0gKGludCkgKChmbG9hdCkkaSAvIChmbG9hdCkkYXJjaC0+bnVtRmlsZXMgKiAxMDApOwogICAgaWYoICRwID4gMCAmJiAkcCAlIDUgPT0gMCAmJiAkcCAhPSAkb3AgKSB7CiAgICAgICAgJG9wID0gJHA7CiAgICAgICAgb3V0cHV0KCRwLiclLi4uICcsRkFMU0UpOwogICAgfQp9Cm91dHB1dCgnZG9uZScpOwoKLy8gNi4gIGdlbmVyYXRlIGNvbmZpZy5waHAKaWYoICRjb25maWdfZmlsZSApIHsKICAgLy8gYWxsIG9mIHRoaXMgYXNzdW1lcyAkZGlyID09IGN3ZAogICBuZXdsaW5lKCk7CiAgIG91dHB1dCgnPT0gZ2VuZXJhdGluZyBuZXcgY29uZmlnIGZpbGUgPT0nKTsKICAgb3V0cHV0KCdXQVJOSU5HOiAgQW55IGFkdmFuY2VkIHBocCBwcm9jZXNzaW5nIGluIHRoZSBvcmlnaW5hbCBmaWxlIHdpbGwgYmUgcmVtb3ZlZCwgYW5kIG1heSByZXF1aXJlIGZpeGluZycpOwogICBvdXRwdXQoJ1RoZSBvcmlnaW5hbCBjb25maWcgZmlsZSBjYW4gYmUgZm91bmQgaW4gYmFrLmNvbmZpZy5waHAgaW4gdGhlIHNpdGUgcm9vdCBkaXJlY3RvcnknKTsKICAgJGJuID0gYmFzZW5hbWUoJGNvbmZpZ19maWxlKTsKICAgJGRuID0gZGlybmFtZSgkY29uZmlnX2ZpbGUpOwogICByZW5hbWUoJGNvbmZpZ19maWxlLCIkZG4vYmFrLnskYm59Iik7CgogICBpZiggJG9sZF9jb25maWcgJiYgJGRiY29uZmlnICkgewogICAgICAkbmV3X2NvbmZpZyA9IGFycmF5X21lcmdlKCRvbGRfY29uZmlnLCRkYmNvbmZpZyk7CiAgICAgIHdyaXRlX2NvbmZpZ19waHAoJGNvbmZpZ19maWxlLCRuZXdfY29uZmlnKTsKICAgfQp9CgovLyA2LiAgc2VjdXJpdHkuLi4KbmV3bGluZSgpOwpvdXRwdXQoJz09IGltcHJvdmluZyBzZWN1cml0eSA9PT0nKTsKJGl0ZXIgPSBuZXcgXFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IoCiAgICBuZXcgXFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCRkaXIsIFxSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvcjo6U0tJUF9ET1RTKSwKICAgIFxSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yOjpTRUxGX0ZJUlNULAogICAgXFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3I6OkNBVENIX0dFVF9DSElMRCAvLyBJZ25vcmUgIlBlcm1pc3Npb24gZGVuaWVkIgogICAgKTsKJHN0ciA9ICc8IS0tIERVTU1ZIEhUTUwgRklMRSAtLT4nOwpmb3JlYWNoKCAkaXRlciBhcyAkcGF0aCA9PiAkZGlyICkgewogICAgaWYoICEkZGlyLT5pc0RpcigpICkgY29udGludWU7CiAgICBpZiggZmlsZV9leGlzdHMoJHBhdGggLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2luZGV4LnBocCcpIHx8IGZpbGVfZXhpc3RzKCRwYXRoIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdpbmRleC5odG1sJykgKSBjb250aW51ZTsKCiAgICBmaWxlX3B1dF9jb250ZW50cygkcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnaW5kZXguaHRtbCcsJHN0cik7Cn0KCi8vIDkgICBjbGVhbnVwCm5ld2xpbmUoKTsKb3V0cHV0KCc9PSBjbGVhbmluZyB1cCA9PT0nKTsKQHVubGluaygkc25hcHNob3QpOwpAdW5saW5rKCRzY3JpcHQpOwpAdW5saW5rKCd0bXAvX19teXNxbGR1bXAuc3FsJyk7CkB1bmxpbmsoJ3RtcC8uc25hcHNob3RtZ3InKTsKQG1rZGlyKCd0bXAvY2FjaGUnLDA3NzcpOwpAbWtkaXIoJ3RtcC90ZW1wbGF0ZXNfYycsMDc3Nyk7CgovLyAxMC4gIERPTkUKbmV3bGluZSgpOwpvdXRwdXQoJz09IEZpbmlzaGVkID09PScpOwokb3V0ID0gPDw8RU9UClRoZSByZXN0b3JlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZS4gIFRoZSBkYXRhYmFzZSBhbmQgYWxsIGZpbGVzIGhhdmUgYmVuIHJlc3RvcmVkLgpZb3UgbWF5IG5lZWQgdG8gcmV2aWV3IHlvdXIgY29uZmlnLnBocCBmaWxlLCBhbmQgYWRqdXN0IHlvdXIgLmh0YWNjZXNzIGZpbGUgZm9yIHRoZSBuZXcgc2l0ZSBsb2NhdGlvbi4KQWxzbywgeW91IHNob3VsZCB1bmRlcnRha2UgZXh0ZW5zaXZlIHRlc3RpbmcuCgpUaGFuayB5b3UgZm9yIHVzaW5nIFNuYXBzaG90TWdyLgpFT1Q7Cm91dHB1dCgkb3V0KTsKZXhpdDsKCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/phar/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/phar/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/phar/lib/class.compatibility_tester.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3JccGhhcjsKCmluY2x1ZGVfb25jZShfX0RJUl9fIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdjbGFzcy5zaW1wbGVfdGVzdC5waHAnKTsKCmNsYXNzIGNvbXBhdGliaWxpdHlfdGVzdGVyCnsKICAgIGNvbnN0IE1JTlBIUCA9ICc1LjQuMTEnOwogICAgY29uc3QgVEVTVF9NSU5QSFBWRVIgPSAnbWlucGhwdmVyJzsKICAgIGNvbnN0IFRFU1RfRElSV1JJVEFCTEUgPSAnZGlyd3JpdGFibGUnOwogICAgY29uc3QgVEVTVF9ESVJFTVBUWSA9ICdkaXJlbXB0eSc7CiAgICBjb25zdCBURVNUX1RNUEZJTEUgPSAnZnVuY190bXBmaWxlJzsKICAgIGNvbnN0IFRFU1RfVEVNUE5BTSA9ICdmdW5jX3RlbXBuYW0nOwogICAgY29uc3QgVEVTVF9HWk9QRU4gPSAnZnVuY19nem9wZW4nOwogICAgY29uc3QgVEVTVF9FWFRfTVVMVElCWVRFID0gJ2V4dF9tdWx0aWJ5dGUnOwogICAgY29uc3QgVEVTVF9FWFRfRklORk8gPSAnZXh0X2ZpbmZvJzsKICAgIGNvbnN0IFRFU1RfRVhUX01ZU1FMID0gJ2V4dF9teXNxbCc7CiAgICBjb25zdCBURVNUX01ENSA9ICdmdW5jX21kNSc7CiAgICBjb25zdCBURVNUX1NIQTEgPSAnZnVuY19zaGExJzsKICAgIGNvbnN0IFRFU1RfSlNPTiA9ICdmdW5jX2pzb24nOwogICAgY29uc3QgVEVTVF9PUEVOQkFTRURJUiA9ICdvcGVuYmFzZWRpcic7CiAgICBjb25zdCBURVNUX1NFU1NJT05DT09LSUVTID0gJ3Nlc3Npb24udXNlX2Nvb2tpZXMnOwogICAgY29uc3QgVEVTVF9TRVNTSU9OU0FWRSA9ICdzZXNzaW9uLnNhdmVwYXRoJzsKICAgIGNvbnN0IFRFU1RfU0FGRU1PREUgPSAnc2FmZV9tb2RlJzsKICAgIGNvbnN0IFRFU1RfRklMRVVQTE9BRFMgPSAnZmlsZV91cGxvYWRzJzsKICAgIGNvbnN0IFRFU1RfRVhUX1hNTCA9ICdleHRfeG1sJzsKICAgIGNvbnN0IFRFU1RfRklMRUdFVCA9ICdmdW5jX2ZpbGVnZXRjb250ZW50cyc7CiAgICBjb25zdCBURVNUX0ZJTEVQVVQgPSAnZnVuY19maWxlcHV0Y29udGVudHMnOwoKICAgIHByaXZhdGUgJF90ZXN0cyA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfcmVzdWx0cyA9IGFycmF5KCk7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRwYXJhbXMgPSBudWxsKQogICAgewogICAgICAgIC8vIGJ1aWxkIGxpc3Qgb2YgdGVzdHMgYmFzZWQgb24gcGFyYW1zIGluIHRoZSBjb25zdHJ1Y3RvcgogICAgICAgICRkaXIgPSBpc3NldCgkcGFyYW1zWydkaXInXSkgPyAkcGFyYW1zWydkaXInXSA6IGdldGN3ZCgpOwogICAgICAgICRleGNsdWRlcyA9IGlzc2V0KCRwYXJhbXNbJ2V4Y2x1ZGVzJ10pID8gJHBhcmFtc1snZXhjbHVkZXMnXSA6IG51bGw7CgogICAgICAgIC8vIGNoZWNrIGZvciB3cml0ZSBhY2Nlc3MKICAgICAgICAkdGhpcy0+X3Rlc3RzW10gPSBuZXcgbWludmVyc2lvbl90ZXN0KHNlbGY6OlRFU1RfTUlOUEhQVkVSLHNlbGY6Ok1JTlBIUCxwaHB2ZXJzaW9uKCkpOwogICAgICAgICR0aGlzLT5fdGVzdHNbXSA9IG5ldyBkaXJfd3JpdGFibGVfdGVzdChzZWxmOjpURVNUX0RJUldSSVRBQkxFLCRkaXIpOwogICAgICAgICR0aGlzLT5fdGVzdHNbXSA9IG5ldyBkaXJfZW1wdHlfdGVzdChzZWxmOjpURVNUX0RJUkVNUFRZLCRkaXIsJGV4Y2x1ZGVzKTsKICAgICAgICAkdGhpcy0+X3Rlc3RzW10gPSBuZXcgc2ltcGxlX3Rlc3Qoc2VsZjo6VEVTVF9UTVBGSUxFLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAkZmggPSB0bXBmaWxlKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gKCRmaCA9PT0gRkFMU0UpID8gRkFMU0UgOiBUUlVFOwogICAgICAgICAgICB9KTsKICAgICAgICAkdGhpcy0+X3Rlc3RzW10gPSBuZXcgZnVuY3Rpb25fdGVzdChzZWxmOjpURVNUX1RFTVBOQU0sJ3RlbXBuYW0nKTsKICAgICAgICAkdGhpcy0+X3Rlc3RzW10gPSBuZXcgc2ltcGxlX3Rlc3Qoc2VsZjo6VEVTVF9HWk9QRU4sZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbl9leGlzdHMoJ2d6b3BlbicpIHx8IGZ1bmN0aW9uX2V4aXN0cygnZ3pvcGVuNjQnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgZXh0ZW5zaW9uX3Rlc3Qoc2VsZjo6VEVTVF9FWFRfTVVMVElCWVRFLCdtYnN0cmluZycpOwogICAgICAgICR0aGlzLT5fdGVzdFtdID0gbmV3IGZ1bmN0aW9uX3Rlc3Qoc2VsZjo6VEVTVF9FWFRfRklORk8sJ2ZpbmZvX29wZW4nKTsKICAgICAgICAkdGhpcy0+X3Rlc3RbXSA9IG5ldyBzaW1wbGVfdGVzdChzZWxmOjpURVNUX0VYVF9NWVNRTCxmdW5jdGlvbigpewogICAgICAgICAgICAgICAgdGVzdF9leHRlbnNpb25fbG9hZGVkKCdteXNxbGknKSB8fCB0ZXN0X2V4dGVuc2lvbl9sb2FkZWQoJ215c3FsJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICR0aGlzLT5fdGVzdFtdID0gbmV3IGZ1bmN0aW9uX3Rlc3Qoc2VsZjo6VEVTVF9NRDUsJ21kNScpOwogICAgICAgICR0aGlzLT5fdGVzdFtdID0gbmV3IGZ1bmN0aW9uX3Rlc3Qoc2VsZjo6VEVTVF9TSEExLCdzaGExJyk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgZnVuY3Rpb25fdGVzdChzZWxmOjpURVNUX0pTT04sJ2pzb25fZW5jb2RlJyk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgc2ltcGxlX3Rlc3Qoc2VsZjo6VEVTVF9PUEVOQkFTRURJUixmdW5jdGlvbigpewogICAgICAgICAgICAgICAgcmV0dXJuIChpbmlfZ2V0KCdvcGVuX2Jhc2VkaXInKSA9PSAnJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICR0aGlzLT5fdGVzdFtdID0gbmV3IHNpbXBsZV90ZXN0KHNlbGY6OlRFU1RfU0VTU0lPTkNPT0tJRVMsZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgIHJldHVybiAoaW5pX2dldCgnc2Vzc2lvbi51c2VfY29va2llcycpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgaWYoIGluaV9nZXQoJ3Nlc3Npb24uc2F2ZV9oYW5kbGVyJykgPT0gJ2ZpbGVzJyApIHsKICAgICAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgc2ltcGxlX3Rlc3Qoc2VsZjo6VEVTVF9TRVNTSU9OU0FWRSxmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICRwYXRoID0gaW5pX2dldCgnc2Vzc2lvbi5zYXZlX3BhdGgnKTsKICAgICAgICAgICAgICAgICAgICBpZiggKCRwb3MgPSBzdHJwb3MoJHBhdGgsJzsnKSkgIT09IEZBTFNFICkgJHBhdGggPSBzdWJzdHIoJHBhdGgsJHBvcysxKTsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2RpcigkdG1wKSApIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzX3dyaXRhYmxlKCR0bXApICkgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAvLyB0b2RvOiB0ZXN0IG1lbW9yeSBsaW1pdAogICAgICAgICR0aGlzLT5fdGVzdFtdID0gbmV3IGZhbHNlX3Rlc3Qoc2VsZjo6VEVTVF9TQUZFTU9ERSxpbmlfZ2V0KCdzYWZlX21vZGUnKSk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgdHJ1ZV90ZXN0KHNlbGY6OlRFU1RfRklMRVVQTE9BRFMsaW5pX2dldCgnZmlsZV91cGxvYWRzJykpOwogICAgICAgICR0aGlzLT5fdGVzdFtdID0gbmV3IGV4dGVuc2lvbl90ZXN0KHNlbGY6OlRFU1RfRVhUX1hNTCwneG1sJyk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgZnVuY3Rpb25fdGVzdChzZWxmOjpURVNUX0ZJTEVHRVQsJ2ZpbGVfZ2V0X2NvbnRlbnRzJyk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgZnVuY3Rpb25fdGVzdChzZWxmOjpURVNUX0ZJTEVQVVQsJ2ZpbGVfcHV0X2NvbnRlbnRzJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9lcnJvcm1zZygkY29kZSkKICAgIHsKICAgICAgICBzd2l0Y2goICRjb2RlICkgewogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9NSU5QSFBWRVI6CiAgICAgICAgICAgIHJldHVybiAnVGhlIGNvbmZpZ3VyZWQgUEhQIHZlcnNpb24gaXMgdG9vIGxvdy4gIE1pbmltdW0gcmVxdWlyZWQgaXMgJy5zZWxmOjpNSU5QSFA7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX0RJUldSSVRBQkxFOgogICAgICAgICAgICByZXR1cm4gJ1RoZSBQSFAgcHJvY2VzcyBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gd3JpdGUgdG8gdGhpcyBkaXJlY3RvcnkuJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfRElSRU1QVFk6CiAgICAgICAgICAgIHJldHVybiAiVGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBzcGVjaWZpZWQgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGVtcHR5IGV4Y2VwdCBmb3IgU25hcHNob3RNZ3IgZmlsZXMgYW5kIHRoaXMgc2NyaXB0XG4KICAgSGludDogIENoZWNrIGZvciBoaWRkZW4gZmlsZXMuIjsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfVE1QRklMRToKICAgICAgICAgICAgcmV0dXJuICdUaGUgdG1wZmlsZSgpIG1ldGhvZCBkb2VzIG5vdCBhcHBlYXIgdG8gb3BlcmF0ZSBwcm9wZXJseSc7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX1RFTVBOQU06CiAgICAgICAgICAgIHJldHVybiAnVGhlIHRlbXBuYW0oKSBmdW5jdGlvbiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYXZhaWxhYmxlJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfR1pPUEVOOgogICAgICAgICAgICByZXR1cm4gJ1RoZSBnem9wZW4vZ3pvcGVuNjQgZnVuY3Rpb25zIGRvIG5vdCBhcHBlYXIgdG8gYmUgYXZhaWxhYmxlLic7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX0VYVF9NVUxUSUJZVEU6CiAgICAgICAgICAgIHJldHVybiAnVGhlIG11bHRpYnl0ZSBleHRlbnNpb25zIGRvIG5vdCBhcHBlYXIgdG8gYmUgYXZhaWxhYmxlLic7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX0VYVF9GSU5GTzoKICAgICAgICAgICAgcmV0dXJuICdUaGUgZmlsZWluZm8gZXh0ZW5zaW9ucyBkbyBub3QgYXBwZWFyIHRvIGJlIGF2YWlsYWJsZS4nOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9FWFRfTVlTUUw6CiAgICAgICAgICAgIHJldHVybiAnV2UgY291bGQgbm90IGZpbmQgYSBzdWl0YWJsZSBkYXRhYmFzZSBkcml2ZXIuJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfTUQ1OgogICAgICAgICAgICByZXR1cm4gJ1RoZSBtZDUgZnVuY3Rpb24gZG9lcyBub3QgYXBwZWFyIHRvIGJlIGF2YWlsYWJsZSc7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX1NIQTE6CiAgICAgICAgICAgIHJldHVybiAnVGhlIHNoYTEgZnVuY3Rpb24gZG9lcyBub3QgYXBwZWFyIHRvIGJlIGF2YWlsYWJsZSc7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX0pTT046CiAgICAgICAgICAgIHJldHVybiAnVGhlIGpzb24gZnVuY3Rpb25zIGRvIG5vdCBhcHBlYXIgdG8gYmUgYXZhaWxhYmxlJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfT1BFTkJBU0VESVI6CiAgICAgICAgICAgIHJldHVybiAnT3BlbiBiYXNlZGlyIGlzIGVuYWJsZWQuLi4gdGhpcyBpcyBwcm9ibGVtYXRpYyc7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX1NFU1NJT05DT09LSUVTOgogICAgICAgICAgICByZXR1cm4gJ1Nlc3Npb24gY29va2llcyBhcmUgbm90IGVuYWJsZWQuLi4gdGhpcyB3aWxsIGNhdXNlIHByb2JsZW1zJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfU0VTU0lPTlNBVkU6CiAgICAgICAgICAgIHJldHVybiAnVGhlIHNlc3Npb24gc2F2ZSBwYXRoIGRvZXMgbm90IGFwcGVhciB0byBiZSB3cml0YWJsZS4nOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9TQUZFTU9ERToKICAgICAgICAgICAgcmV0dXJuICdTYWZlIG1vZGUgaXMgZW5hYmxlZC4uLiB3ZSBjYW5ub3QgY29udGludWUnOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9GSUxFVVBMT0FEUzoKICAgICAgICAgICAgcmV0dXJuICdGaWxlIHVwbG9hZHMgYXJlIG5vdCBlbmFibGVkLiAgVGhpcyBpcyBwcm9ibGVtYXRpYyc7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX0VYVF9YTUw6CiAgICAgICAgICAgIHJldHVybiAnWE1MIEV4dGVuc2lvbnMgYXJlIG5vdCBlbmFibGVkLic7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX0ZJTEVHRVQ6CiAgICAgICAgICAgIHJldHVybiAnVGhlIGZpbGVfZ2V0X2NvbnRlbnRzIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUnOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9GSUxFUFVUOgogICAgICAgICAgICByZXR1cm4gJ1RoZSBmaWxlX3B1dF9jb250ZW50cyBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLic7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuICdVbmtub3duIEVycm9yOiAnLiRjb2RlOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2ZhaWxlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVzdWx0czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdCgpCiAgICB7CiAgICAgICAgJGZhaWxlZCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl90ZXN0cyBhcyAkdGVzdCApIHsKICAgICAgICAgICAgJHJlcyA9ICR0ZXN0LT5leGVjdXRlKCk7CiAgICAgICAgICAgIGlmKCAhJHJlcyApIHsKICAgICAgICAgICAgICAgICRmYWlsZWRbXSA9ICR0ZXN0LT5nZXRfbGFiZWwoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiggY291bnQoJGZhaWxlZCkgKSB7CiAgICAgICAgICAgICR0aGlzLT5fcmVzdWx0cyA9ICRmYWlsZWQ7CiAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFRSVUU7CiAgICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/phar/lib/class.secure_ini_file.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3JccGhhcjsKCmNsYXNzIHNlY3VyZV9pbmlfZmlsZQp7CiAgICBwcml2YXRlICRfZmlsZW5hbWU7CiAgICBwcml2YXRlICRfZmlyc3Rfc2VjdGlvbiA9IFRSVUU7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRmaWxlbmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnNldF9maWxlbmFtZSgkZmlsZW5hbWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZmlsZW5hbWUoJGZpbGVuYW1lKQogICAgewogICAgICAgICR0aGlzLT5fZmlsZW5hbWUgPSB0cmltKCRmaWxlbmFtZSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc29ydF9kYXRhKCRkYXRhKQogICAgewogICAgICAgICRvdXQgPSAkZGF0YTsKICAgICAgICBmb3JlYWNoKCAkb3V0IGFzICRrZXkgPT4gJiR2YWwgKSB7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmFsKSApICR2YWwgPSAkdGhpcy0+X3NvcnRfZGF0YSgkdmFsKTsKICAgICAgICB9CiAgICAgICAga3NvcnQoJG91dCk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHJvdGVjdGVkIGZpbmFsIGZ1bmN0aW9uIF9jYWxjX2NoZWNrc3VtKCRkYXRhKQogICAgewogICAgICAgICRzb3J0ZWQgPSAkdGhpcy0+X3NvcnRfZGF0YSgkZGF0YSk7CiAgICAgICAgJHNhbHQgPSAnZXJ3ZXJmZmd6ZmFzZHMgbmRmYXNkZmFzaGQzZmJqeWQqOTM0OTggZGlmYW91ZGNpKGZicmFkZmFhZGYgc2RmMGE0YTEyMyknOyAvLyBqdXN0IHNvbWUgcmFuZG9tIGNoYXJhY3RlcnMKICAgICAgICAkc2lnID0gbWQ1KCRzYWx0LnNlcmlhbGl6ZSgkc29ydGVkKSk7CiAgICAgICAgcmV0dXJuICRzaWc7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF93cml0ZV9pbmlfc2VjdGlvbigkc2VjdGlvbikKICAgIHsKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICBpZiggISR0aGlzLT5fZmlyc3Rfc2VjdGlvbiApIHsKICAgICAgICAgICAgJHRoaXMtPl9maXJzdF9zZWN0aW9uID0gRkFMU0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkb3V0IC49ICJcbiI7CiAgICAgICAgfQoKICAgICAgICAkb3V0IC49ICdbJy50cmltKCRzZWN0aW9uKS4iXVxuIjsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3dyaXRlX2luaV92YWwoJGtleSwkdmFsKQogICAgewogICAgICAgICRvdXQgPSBudWxsOwogICAgICAgIC8vIEB0b2RvIGNoZWNrIGZvciBpbnZhbGlkIGNoYXJzIGluIHRoZSBrZXkgYW5kIHRocm93IGFuIGV4Y2VwdGlvbgogICAgICAgICRua2V5ID0gdHJpbSgka2V5KTsKICAgICAgICAkbnZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgaWYoICEkbmtleSApIHJldHVybjsKICAgICAgICAkdHlwZSA9IGdldHR5cGUoJHZhbCk7CiAgICAgICAgaWYoICR0eXBlID09ICdvYmplY3QnICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignT2JqZWN0cyBjYW5ub3QgYmUgc3RvcmVkJyk7CgogICAgICAgICRmbmQgPSAwOwogICAgICAgICRiYWRjaGFycyA9IGFycmF5KCJcbiIsIlxyIiwiOyIsIiciLCciJyk7CiAgICAgICAgZm9yZWFjaCggJGJhZGNoYXJzIGFzICRjaCApIHsKICAgICAgICAgICAgaWYoIHN0cnBvcygkbnZhbCwkY2gpICE9PSBGQUxTRSApIHsKICAgICAgICAgICAgICAgICRmbmQgPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoICRmbmQgKSB7CiAgICAgICAgICAgIC8vIHRoZXJlIGFyZSBiYWQgY2hhcmFjdGVycy4gZ290dGEgZXNjYXBlIHRoZSBkb3VibGUgcXVvdGVzCiAgICAgICAgICAgICRudmFsID0gc3RyX3JlcGxhY2UoJyInLCdcIicsJG52YWwpOwogICAgICAgIH0KICAgICAgICAkbnZhbCA9ICInIi4kdHlwZS4nfDp8Jy4kbnZhbC4iJyI7CiAgICAgICAgJG91dCAuPSBzcHJpbnRmKCIlcyA9ICVzXG4iLCRrZXksJG52YWwpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfd3JpdGVfZmlsZV9oZWFkZXIoJGNoZWNrc3VtKQogICAgewogICAgICAgICRvdXQgPSAnOzw/cGhwIGRpZSgpOyAvKiBTSUc9Jy4kY2hlY2tzdW0uJyAqLyA/PicuIlxuIjsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3dyaXRlX2luaV9hcnJheSgkYXJyLCRzZWN0aW9uID0gbnVsbCkKICAgIHsKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICAkc2VjdGlvbiA9IHRyaW0oJHNlY3Rpb24pOwogICAgICAgICRpc19hc3NvYyA9IChhcnJheV9rZXlzKCRhcnIpICE9PSByYW5nZSgwLCBjb3VudCgkYXJyKSAtIDEpKTsKCiAgICAgICAgaWYoICRpc19hc3NvYyApIHsKICAgICAgICAgICAgLy8gcGFzcyBvbmUsIG5vcm1hbCB2YWx1ZXMKICAgICAgICAgICAgZm9yZWFjaCggJGFyciBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgICAgICBpZiggIWlzX2FycmF5KCR2YWwpICkgJG91dCAuPSAkdGhpcy0+X3dyaXRlX2luaV92YWwoJGtleSwkdmFsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggJG91dCApIHsKICAgICAgICAgICAgICAgIGlmKCAhJHNlY3Rpb24gKSAkc2VjdGlvbiA9ICdtYWluJzsKICAgICAgICAgICAgICAgICRvdXQgPSAkdGhpcy0+X3dyaXRlX2luaV9zZWN0aW9uKCRzZWN0aW9uKSAuICRvdXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHBhc3MgdHdvLCBuZXN0ZWQgYXJyYXlzCiAgICAgICAgICAgIGZvcmVhY2goICRhcnIgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAgICAgaWYoICFpc19hcnJheSgkdmFsKSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYoIGFycmF5X2tleXMoJHZhbCkgIT09IHJhbmdlKDAsIGNvdW50KCR2YWwpIC0gMSkgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gYXNzb2NpYXRpdmUgY2hpbGQgYXJyYXkKICAgICAgICAgICAgICAgICAgICAkdG1wID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBpZiggJHNlY3Rpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0bXAgPSAkc2VjdGlvbi4iIDogJGtleSI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gJGtleTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJG91dCAuPSAkdGhpcy0+X3dyaXRlX2luaV9hcnJheSgkdmFsLCR0bXApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbm9ybWFsIGNoaWxkIGFycmF5CiAgICAgICAgICAgICAgICAgICAgJG91dCAuPSAkdGhpcy0+X3dyaXRlX2luaV9hcnJheSgkdmFsLCRrZXkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiggISRzZWN0aW9uICkgJHNlY3Rpb24gPSAnbWFpbic7CiAgICAgICAgICAgIGZvciggJGkgPSAwLCAkbiA9IGNvdW50KCRhcnIpOyAkaSA8ICRuOyAkaSsrICkgewogICAgICAgICAgICAgICAgJG91dCAuPSAkdGhpcy0+X3dyaXRlX2luaV92YWwoJHNlY3Rpb24uJ1tdJywkYXJyWyRpXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRlKCRkYXRhKQogICAgewogICAgICAgICRja3N1bSA9ICR0aGlzLT5fY2FsY19jaGVja3N1bSgkZGF0YSk7CiAgICAgICAgJG91dCA9ICR0aGlzLT5fd3JpdGVfZmlsZV9oZWFkZXIoJGNrc3VtKTsKICAgICAgICAkb3V0IC49ICR0aGlzLT5fd3JpdGVfaW5pX2FycmF5KCRkYXRhKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJGRhdGEsJGZpbGVuYW1lID0gbnVsbCkKICAgIHsKICAgICAgICBpZiggISRmaWxlbmFtZSApICRmaWxlbmFtZSA9ICR0aGlzLT5fZmlsZW5hbWU7CiAgICAgICAgaWYoICEkZmlsZW5hbWUgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ05vIGZpbGVuYW1lIHNwZWNpZmllZCB0byBpbnN0YW5jZSBvZiAnLl9fQ0xBU1NfXyk7CiAgICAgICAgJGRpciA9IGRpcm5hbWUoJHRoaXMtPl9maWxlbmFtZSk7CiAgICAgICAgaWYoIChpc19maWxlKCRmaWxlbmFtZSkgJiYgIWlzX3dyaXRhYmxlKCR0aGlzLT5fZmlsZW5hbWUpKSB8fCAhaXNfd3JpdGFibGUoJGRpcikgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiTm8gcGVybWlzc2lvbiB0byB3cml0ZSB0byAiLiR0aGlzLT5fZmlsZW5hbWUpOwogICAgICAgIH0KCiAgICAgICAgJGZoID0gZm9wZW4oJGZpbGVuYW1lLCd3Jyk7CiAgICAgICAgZndyaXRlKCRmaCwkdGhpcy0+Z2VuZXJhdGUoKSk7CiAgICAgICAgZmNsb3NlKCRmaCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoJGRhdGEpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT53cml0ZSgkZGF0YSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9jb252ZXJ0X3ZhbHVlcygkZGF0YSkKICAgIHsKICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkZGF0YSBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmFsKSApIHsKICAgICAgICAgICAgICAgICRvdXRbJGtleV0gPSAkdGhpcy0+X2NvbnZlcnRfdmFsdWVzKCR2YWwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbGlzdCgkdHlwZSwkdmFsKSA9IGV4cGxvZGUoJ3w6fCcsJHZhbCwyKTsKICAgICAgICAgICAgICAgIHN3aXRjaCggJHR5cGUgKSB7CiAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzoKICAgICAgICAgICAgICAgICAgICAkb3V0WyRrZXldID0gKGJvb2wpICR2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdpbnRlZ2VyJzoKICAgICAgICAgICAgICAgICAgICAkb3V0WyRrZXldID0gKGludCkgJHZhbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3JlYWwnOgogICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOgogICAgICAgICAgICAgICAgY2FzZSAnZG91YmxlJzoKICAgICAgICAgICAgICAgICAgICAkb3V0WyRrZXldID0gKGZsb2F0KSAkdmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgJG91dFska2V5XSA9IChzdHJpbmcpICR2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlKCRjb250ZW50cywkdmVyaWZ5ID0gVFJVRSkKICAgIHsKICAgICAgICBpZiggJHZlcmlmeSApIGRpZSgnb29wcycpOwogICAgICAgIC8vIGdldCB0aGUgZmlyc3QgbGluZQogICAgICAgICRmaXJzdF9saW5lID0gZXhwbG9kZSgiXG4iLCRjb250ZW50cywyKVswXTsKICAgICAgICAkZmlsZV9zaWcgPSBudWxsOwogICAgICAgICRtYXRjaGVzID0gbnVsbDsKICAgICAgICBwcmVnX21hdGNoKCcvXHMrU0lHPShbMC05QS1aYS16XXszMn0pXHMrLycsJGZpcnN0X2xpbmUsJG1hdGNoZXMpOwogICAgICAgIGlmKCAkbWF0Y2hlc1sxXSApICRmaWxlX3NpZyA9ICRtYXRjaGVzWzFdOwogICAgICAgIHVuc2V0KCRtYXRjaGVzKTsKCiAgICAgICAgJHJhd19kYXRhID0gcGFyc2VfaW5pX3N0cmluZygkY29udGVudHMsVFJVRSk7CgogICAgICAgIC8vIHdlIGhhdmUgYSBmbGF0IGxpc3Qgb2Ygc2VjdGlvbnMsIGVhY2ggc2VjdGlvbiBpcyBhbiBhcnJheQogICAgICAgIC8vIHRoZSB0b3Agc2VjdGlvbiBzaG91bGQgbm90IGhhdmUgYW55IG5lc3RpbmcKICAgICAgICAkYWxsX2tleXMgPSBhcnJheV9rZXlzKCRyYXdfZGF0YSk7CiAgICAgICAgJGtleTAgPSAkYWxsX2tleXNbMF07CiAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnIDogJywka2V5MCk7CiAgICAgICAgaWYoICRwYXJ0c1swXSAhPSAka2V5MCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBmaWxlIGZvcm1hdCwgZm91bmQgbmVzdGVkIGNoaWxkIGFzIGZpcnN0IGVsZW1lbnQnKTsKCiAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHJhd19kYXRhIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnIDogJywka2V5KTsKCiAgICAgICAgICAgIGlmKCBjb3VudCgkcGFydHMpID09IDEgKSB7CiAgICAgICAgICAgICAgICAkb3V0WyRrZXldID0gJHRoaXMtPl9jb252ZXJ0X3ZhbHVlcygkdmFsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICR0bXAgPSYgJG91dDsKICAgICAgICAgICAgICAgICRpID0gbnVsbDsKICAgICAgICAgICAgICAgIGZvciggJGkgPSAxLCAkbiA9IGNvdW50KCRwYXJ0cykgLSAxOyAkaSA8ICRuOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgICRwYXJ0ID0gJHBhcnRzWyRpXTsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0bXBbJHBhcnRdKSApICR0bXBbJHBhcnRdID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkdG1wID0mICR0bXBbJHBhcnRdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRtcFskcGFydHNbJGldXSA9ICR0aGlzLT5fY29udmVydF92YWx1ZXMoJHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCBjb3VudCgkb3V0KSA9PSAxICYmIGlzc2V0KCRvdXRbJGtleTBdKSApIHsKICAgICAgICAgICAgJG91dCA9ICRvdXRbJGtleTBdOwogICAgICAgIH0KCiAgICAgICAgaWYoICR2ZXJpZnkgKSB7CiAgICAgICAgICAgICRjYWxjX3NpZyA9ICR0aGlzLT5fY2FsY19jaGVja3N1bSgkb3V0KTsKICAgICAgICAgICAgaWYoICRmaWxlX3NpZyAhPSAkY2FsY19zaWcgKSB0aHJvdyBuZXcgXFJhbmdlRXhjZXB0aW9uKCJJTkkgRmlsZSBzaWduYXR1cmUgZGlkIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBmaWxlIGNvbnRlbnRzIik7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRmaWxlbmFtZSA9IG51bGwsJHZlcmlmeSA9IFRSVUUpCiAgICB7CiAgICAgICAgaWYoICRmaWxlbmFtZSApICR0aGlzLT5zZXRfZmlsZW5hbWUoJGZpbGVuYW1lKTsKCiAgICAgICAgaWYoICFpc19maWxlKCR0aGlzLT5fZmlsZW5hbWUpIHx8ICFpc19yZWFkYWJsZSgkdGhpcy0+X2ZpbGVuYW1lKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbihzcHJpbnRmKCJGaWxlICVzIGNvdWxkIG5vdCBiZSByZWFkIiwkdGhpcy0+X2ZpbGVuYW1lKSk7CiAgICAgICAgJGNvbnRlbnRzID0gZmlsZV9nZXRfY29udGVudHMoJHRoaXMtPl9maWxlbmFtZSk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZSgkY29udGVudHMsJHZlcmlmeSk7CiAgICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/phar/lib/class.simple_test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3JccGhhcjsKCmFic3RyYWN0IGNsYXNzIHRlc3RfYmFzZQp7CiAgICBwcm90ZWN0ZWQgJF9sYWJlbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2xhYmVsKCkgeyByZXR1cm4gJHRoaXMtPl9sYWJlbDsgfQogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKTsKfSAvLyBlbmQgb2YgY2xhc3MKCmNsYXNzIGZhbHNlX3Rlc3QgZXh0ZW5kcyB0ZXN0X2Jhc2UKewogICAgcHJpdmF0ZSAkX3ZhbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9sYWJlbCA9IHRyaW0oJGxhYmVsKTsKICAgICAgICAkdGhpcy0+X3ZhbCA9IChib29sKSAkdmFsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl92YWwgPT0gRkFMU0U7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgpjbGFzcyB0cnVlX3Rlc3QgZXh0ZW5kcyB0ZXN0X2Jhc2UKewogICAgcHJpdmF0ZSAkX3ZhbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9sYWJlbCA9IHRyaW0oJGxhYmVsKTsKICAgICAgICAkdGhpcy0+X3ZhbCA9IChib29sKSAkdmFsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl92YWwgPT0gVFJVRTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKCmNsYXNzIGV4dGVuc2lvbl90ZXN0IGV4dGVuZHMgdGVzdF9iYXNlCnsKICAgIHByaXZhdGUgJF9leHQ7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRsYWJlbCwkZXh0KQogICAgewogICAgICAgICR0aGlzLT5fbGFiZWwgPSB0cmltKCRsYWJlbCk7CiAgICAgICAgJHRoaXMtPl9leHQgPSB0cmltKCRleHQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gZXh0ZW5zaW9uX2xvYWRlZCgkdGhpcy0+X2V4dCk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgpjbGFzcyBtaW52ZXJzaW9uX3Rlc3QgZXh0ZW5kcyB0ZXN0X2Jhc2UKewogICAgcHJpdmF0ZSAkX21pbnZhbDsKICAgIHByaXZhdGUgJF92YWw7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRsYWJlbCwkbWludmFsLCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9sYWJlbCA9IHRyaW0oJGxhYmVsKTsKICAgICAgICAkdGhpcy0+X21pbnZhbCA9IHRyaW0oJG1pbnZhbCk7CiAgICAgICAgJHRoaXMtPl92YWwgPSB0cmltKCR2YWwpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gKHZlcnNpb25fY29tcGFyZSgkdGhpcy0+X3ZhbCwkdGhpcy0+X21pbnZhbCkgPj0gMCk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgpjbGFzcyBmdW5jdGlvbl90ZXN0IGV4dGVuZHMgdGVzdF9iYXNlCnsKICAgIHByaXZhdGUgJF9mbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLCRmbikKICAgIHsKICAgICAgICAkdGhpcy0+X2xhYmVsID0gdHJpbSgkbGFiZWwpOwogICAgICAgICR0aGlzLT5fZm4gPSB0cmltKCRmbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbl9leGlzdHMoJHRoaXMtPl9mbik7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgpjbGFzcyBzaW1wbGVfdGVzdCBleHRlbmRzIHRlc3RfYmFzZQp7CiAgICBwcml2YXRlICRfZm47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRsYWJlbCxjYWxsYWJsZSAkZm4pCiAgICB7CiAgICAgICAgJHRoaXMtPl9sYWJlbCA9IHRyaW0oJGxhYmVsKTsKICAgICAgICAkdGhpcy0+X2ZuID0gJGZuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICAkdG1wID0gJHRoaXMtPl9mbjsKICAgICAgICByZXR1cm4gJHRtcCgpOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKY2xhc3MgZGlyX3dyaXRhYmxlX3Rlc3QgZXh0ZW5kcyB0ZXN0X2Jhc2UKewogICAgcHJpdmF0ZSAkX2RpcjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLCRkaXIpCiAgICB7CiAgICAgICAgJHRoaXMtPl9sYWJlbCA9IHRyaW0oJGxhYmVsKTsKICAgICAgICAkdGhpcy0+X2RpciA9IHRyaW0oJGRpcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKQogICAgewogICAgICAgIHJldHVybiAoaXNfZGlyKCR0aGlzLT5fZGlyKSAmJiBpc193cml0YWJsZSgkdGhpcy0+X2RpcikpOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKY2xhc3MgZGlyX2VtcHR5X3Rlc3QgZXh0ZW5kcyB0ZXN0X2Jhc2UKewogICAgcHJpdmF0ZSAkX2RpcjsKICAgIHByaXZhdGUgJF9leGNsdWRlczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLCRkaXIsJGV4Y2x1ZGVzID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2xhYmVsID0gJGxhYmVsOwogICAgICAgICR0aGlzLT5fZGlyID0gJGRpcjsKICAgICAgICAkdGhpcy0+X2V4Y2x1ZGVzID0gJGV4Y2x1ZGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICAkZmlsZXMxID0gZ2xvYigkdGhpcy0+X2Rpci4nLy4/PyonKTsKICAgICAgICAkZmlsZXMyID0gZ2xvYigkdGhpcy0+X2Rpci4nLyonKTsKICAgICAgICAkZmlsZXMgPSBhcnJheV9tZXJnZSgkZmlsZXMxLCRmaWxlczIpOwogICAgICAgIGZvcmVhY2goICRmaWxlcyBhcyAkZmlsZSApIHsKICAgICAgICAgICAgJGJuID0gc3RyX3JlcGxhY2UoJHRoaXMtPl9kaXIuJy8nLCcnLCRmaWxlKTsKICAgICAgICAgICAgb3V0cHV0KCd0ZXN0OiAnLiRibik7CiAgICAgICAgICAgIGlmKCAhY291bnQoJHRoaXMtPl9leGNsdWRlcykgfHwgIWluX2FycmF5KCRibiwkdGhpcy0+X2V4Y2x1ZGVzKSApIHJldHVybiBGQUxTRTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFRSVUU7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgojCiMgRU9GCiM=]]></data>
	</file>
	<file>
	  <filename>/phar/lib/db_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuYW1lc3BhY2UgU25hcHNob3RNZ3JccGhhcjsKCmZ1bmN0aW9uIHRlc3RfZGJjb25maWcoJGRiY29uZmlnKQp7CiAgICBpZiggIWlzX2FycmF5KCRkYmNvbmZpZykgKSByZXR1cm4gRkFMU0U7CiAgICAka2V5cyA9IGFycmF5KCdkYm1zJywnZGJfaG9zdG5hbWUnLCdkYl91c2VybmFtZScsJ2RiX3Bhc3N3b3JkJywnZGJfbmFtZScpOwogICAgJGtleXMyID0gYXJyYXlfa2V5cygkZGJjb25maWcpOwogICAgZm9yZWFjaCggJGtleXMgYXMgJGtleSApIHsKICAgICAgICBpZiggIWluX2FycmF5KCRrZXksJGtleXMyKSApIHJldHVybiBGQUxTRTsKICAgIH0KICAgIHJldHVybiBUUlVFOwp9CgpmdW5jdGlvbiB0ZXN0X2RiX2Nvbm5lY3QoJGRiY29uZmlnKQp7CiAgICBpZiggIXRlc3RfZGJjb25maWcoJGRiY29uZmlnKSApIHJldHVybiBGQUxTRTsKCiAgICAkb3V0ID0gbnVsbDsKICAgIHN3aXRjaCggJGRiY29uZmlnWydkYm1zJ10gKSB7CiAgICBjYXNlICdteXNxbCc6CiAgICAgICAgaWYoICFmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKSApIHJldHVybiBGQUxTRTsKICAgICAgICAkb3V0ID0gbXlzcWxfY29ubmVjdCgkZGJjb25maWdbJ2RiX2hvc3RuYW1lJ10sJGRiY29uZmlnWydkYl91c2VybmFtZSddLCRkYmNvbmZpZ1snZGJfcGFzc3dvcmQnXSwkZGJjb25maWdbJ2RiX25hbWUnXSk7CiAgICAgICAgaWYoICEkb3V0ICkgcmV0dXJuIEZBTFNFOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ215c3FsaSc6CiAgICAgICAgaWYoICFmdW5jdGlvbl9leGlzdHMoJ215c3FsaV9jb25uZWN0JykgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgJG91dCA9IG15c3FsaV9jb25uZWN0KCRkYmNvbmZpZ1snZGJfaG9zdG5hbWUnXSwkZGJjb25maWdbJ2RiX3VzZXJuYW1lJ10sJGRiY29uZmlnWydkYl9wYXNzd29yZCddLCRkYmNvbmZpZ1snZGJfbmFtZSddKTsKICAgICAgICBpZiggISRvdXQgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcmV0dXJuICRvdXQ7Cn0KCmZ1bmN0aW9uIHRlc3RfZGJfZW1wdHkoJGhhbmRsZSwkZGJjb25maWcpCnsKICAgIGlmKCAhdGVzdF9kYmNvbmZpZygkZGJjb25maWcpICkgcmV0dXJuIEZBTFNFOwoKICAgICRvdXQgPSBudWxsOwogICAgJHNxbCA9ICdTSE9XIFRBQkxFUyc7CiAgICBzd2l0Y2goICRkYmNvbmZpZ1snZGJtcyddICkgewogICAgY2FzZSAnbXlzcWwnOgogICAgICAgIGlmKCAoJHJlc3VsdCA9IG15c3FsaV9xdWVyeSgkaGFuZGxlLCRzcWwpKSApIHsKICAgICAgICAgICAgJG50YWJsZXMgPSBteXNxbGlfbnVtX3Jvd3MoJHJlc3VsdCk7CiAgICAgICAgICAgIGlmKCAkbnRhYmxlcyA+IDAgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgIH0KICAgICAgICByZXR1cm4gRkFMU0U7CgogICAgY2FzZSAnbXlzcWxpJzoKICAgICAgICBpZiggKCRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGhhbmRsZSwkc3FsKSkgKSB7CiAgICAgICAgICAgICRudGFibGVzID0gbXlzcWxpX251bV9yb3dzKCRyZXN1bHQpOwogICAgICAgICAgICBpZiggJG50YWJsZXMgPiAwICkgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIEZBTFNFOwoKICAgIGRlZmF1bHQ6CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQp9CgpmdW5jdGlvbiBkYl9pbXBvcnQoJGRiY29uZmlnLCRkYmZpbGUpCnsKICAgIC8vIHRoaXMgdXNlcyBzaGVsbCBjb21tYW5kcwogICAgJGNvbW1hbmQ9Im15c3FsIC0taG9zdD17JGRiY29uZmlnWydkYl9ob3N0bmFtZSddfSAtLXVzZXI9eyRkYmNvbmZpZ1snZGJfdXNlcm5hbWUnXX0gLS1wYXNzd29yZD17JGRiY29uZmlnWydkYl9wYXNzd29yZCddfSB7JGRiY29uZmlnWydkYl9uYW1lJ119IDwgeyRkYmZpbGV9IjsKICAgIGV4ZWMoJGNvbW1hbmQsJG91dHB1dD1hcnJheSgpLCR3b3JrZWQpOwogICAgaWYoICR3b3JrZWQgPT0gMCApIHJldHVybiBUUlVFOwogICAgcHJpbnRfcigkb3V0cHV0KTsKICAgIHJldHVybiBGQUxTRTsKfQoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/phar/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/phar/lib/utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppbmNsdWRlX29uY2UoX19ESVJfXyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnY2xhc3Muc2VjdXJlX2luaV9maWxlLnBocCcpOwoKZnVuY3Rpb24gZW5kc3dpdGgoICRzdHIsICRzdWIgKQp7CglyZXR1cm4gKCBzdWJzdHIoICRzdHIsIHN0cmxlbiggJHN0ciApIC0gc3RybGVuKCAkc3ViICkgKSA9PSAkc3ViICk7Cn0KCmZ1bmN0aW9uIHN0YXJ0c3dpdGgoICRzdHIsICRzdWIgKQp7CglyZXR1cm4gKCBzdWJzdHIoICRzdHIsIDAsIHN0cmxlbiggJHN1YiApICkgPT0gJHN1YiApOwp9CgpmdW5jdGlvbiBjbHMoKQp7CiAgICBwcmludCBjaHIoMjcpIC4gIlsySiIgLiBjaHIoMjcpIC4gIls7SCI7Cn0KCmZ1bmN0aW9uIG91dHB1dCgkc3RyLCRuZXdsaW5lID0gVFJVRSkKewogICAgJHN0ciA9IHRyaW0oJHN0cik7CiAgICBpZiggISRzdHIgKSByZXR1cm47CiAgICBpZiggJG5ld2xpbmUgKSB7CiAgICAgICAgaWYoICFlbmRzd2l0aCgkc3RyLCJcbiIpICkgJHN0ciAuPSAiXG4iOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYoICFlbmRzd2l0aCgkc3RyLCcgJykgKSAkc3RyIC49ICcgJzsKICAgIH0KICAgIGVjaG8gJHN0cjsKfQoKZnVuY3Rpb24gZXJyb3IoJG1zZywkcHJlZml4ID0gVFJVRSwkbmV3bGluZSA9IFRSVUUpCnsKICAgICRtc2cgPSAoc3RyaW5nKSRtc2c7CiAgICBpZiggISRtc2cgKSByZXR1cm47CgogICAgaWYoICRwcmVmaXggKSAkbXNnID0gIkVSUk9SOiAiLiRtc2c7CiAgICBpZiggJG5ld2xpbmUgJiYgIWVuZHN3aXRoKCRtc2csIlxuIikgKSAkbXNnIC49ICJcbiI7CiAgICBmd3JpdGUoU1RERVJSLCRtc2cpOwp9CgpmdW5jdGlvbiBuZXdsaW5lKCkKewogICAgZWNobyAiXG4iOwp9CgpmdW5jdGlvbiBhc2tfYm9vbCgkcHJvbXB0LCRhY2NlcHQgPSAtMSwkYXV0b3Byb21wdCA9IFRSVUUpCnsKICAgIHdoaWxlKCAxICkgewogICAgICAgIG5ld2xpbmUoKTsKICAgICAgICBpZiggJGF1dG9wcm9tcHQgKSAkcHJvbXB0IC49ICcgW1kvbl06JzsKICAgICAgICBvdXRwdXQoJHByb21wdCxGQUxTRSk7CiAgICAgICAgJGluID0gZmdldHMoU1RESU4pOwogICAgICAgICRpbiA9IHRyaW0oJGluKTsKICAgICAgICBpZiggISRpbiApIHsKICAgICAgICAgICAgaWYoICRhY2NlcHQgPT0gRkFMU0UgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIGlmKCAkYWNjZXB0ID09IFRSVUUgKSByZXR1cm4gVFJVRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmKCAkaW4gPT0gJ2V4aXQnIHx8ICRpbiA9PSAncXVpdCcgKSBleGl0OwogICAgICAgICAgICAkaW4gPSBzdHJ0b2xvd2VyKCRpbik7CiAgICAgICAgICAgIGlmKCAkaW4gPT0gJzEnIHx8ICRpbiA9PSAneScgKSByZXR1cm4gVFJVRTsKICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gYXNrX29wdGlvbigkcHJvbXB0LCRvcHRpb25zKQp7CiAgICB3aGlsZSggMSApIHsKICAgICAgICBuZXdsaW5lKCk7CiAgICAgICAgb3V0cHV0KCRwcm9tcHQsRkFMU0UpOwogICAgICAgICRpbiA9IHRyaW0oZmdldHMoU1RESU4pKTsKICAgICAgICBpZiggJGluICYmIGluX2FycmF5KCRpbixhcnJheSgncScsJ3F1aXQnLCdleGl0JykpICkgZXhpdDsKICAgICAgICBpZiggJGluICYmIGluX2FycmF5KCRpbiwkb3B0aW9ucykgKSByZXR1cm4gJGluOwogICAgfQogICAgZXJyb3IoJ1BsZWFzZSBlbnRlciBhIHZhbGlkIG9wdGlvbicpOwp9CgpmdW5jdGlvbiBhc2tfc3RyaW5nX3JlcXVpcmVkKCRwcm9tcHQsJGVycnN0ciA9IG51bGwpCnsKICAgIHdoaWxlKCAxICkgewogICAgICAgIG5ld2xpbmUoKTsKICAgICAgICBvdXRwdXQoJHByb21wdCxGQUxTRSk7CiAgICAgICAgJHN0ciA9IGZnZXRzKFNURElOKTsKICAgICAgICAkc3RyID0gdHJpbSgkc3RyKTsKICAgICAgICBpZiggISRzdHIgKSB7CiAgICAgICAgICAgIGlmKCAhJGVycm9yc3RyICkgJGVycm9yc3RyID0gJ0ludmFsaWQgUmVzcG9uc2UnOwogICAgICAgICAgICBlcnJvcigkZXJyb3JzdHIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmKCAkc3RyID09ICdxJyB8fCAkc3RyID09ICdleGl0JyB8fCAkc3RyID09ICdxdWl0JyApIGV4aXQ7CiAgICAgICAgICAgIHJldHVybiAkc3RyOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gaXNfc25hcHNob3RtZ3IoJGZpbGVuYW1lKQp7CiAgICAkZmlsZW5hbWUgPSB0cmltKCRmaWxlbmFtZSk7CiAgICBpZiggISRmaWxlbmFtZSApIHJldHVybiBGQUxTRTsKCiAgICAkbG93ZXIgPSBzdHJ0b2xvd2VyKCRmaWxlbmFtZSk7CiAgICBpZiggIWVuZHN3aXRoKCRmaWxlbmFtZSwnLnppcCcpICkgUkVUVVJOIEZBTFNFOwoKICAgICRhcmNoID0gbmV3IFxaaXBBcmNoaXZlOwogICAgaWYoICgkcmVzID0gJGFyY2gtPm9wZW4oJGZpbGVuYW1lKSkgIT09IFRSVUUgKSB7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgICRpbmlfdGV4dCA9ICRhcmNoLT5nZXRGcm9tTmFtZSgndG1wJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnLnNuYXBzaG90bWdyJyk7CiAgICBpZiggISRpbmlfdGV4dCApIHJldHVybiBGQUxTRTsKCiAgICAkZHVtcGZpbGUgPSAkYXJjaC0+Z2V0RnJvbU5hbWUoJ3RtcCcgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ19fbXlzcWxkdW1wLnNxbCcpOwogICAgaWYoICEkZHVtcGZpbGUgKSByZXR1cm4gRkFMU0U7CgogICAgdHJ5IHsKICAgICAgICAkaW5pID0gbmV3IFxTbmFwc2hvdE1nclxwaGFyXHNlY3VyZV9pbmlfZmlsZSgpOwogICAgICAgICRpbmktPnBhcnNlKCRpbmlfdGV4dCxmYWxzZSk7CiAgICB9CiAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICBkaWUoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgcmV0dXJuIFRSVUU7Cn0KCmZ1bmN0aW9uIGNvcHlfYXJjaGZpbGVfdG9fdG1wKFxaaXBBcmNoaXZlICRhcmNoLCRuYW1lKQp7CiAgICAkbmFtZSA9IHRyaW0oJG5hbWUpOwogICAgaWYoICEkbmFtZSApIHJldHVybjsKCiAgICAkZGlyID0gc3lzX2dldF90ZW1wX2RpcigpOwogICAgaWYoICEkZGlyICkgewogICAgICAgIGVycm9yKCdDb3VsZCBub3QgZ2V0IHN5c3RlbSB0ZW1wb3JhcnkgZGlyZWN0b3J5Li4uIGV4aXRpbmcnKTsKICAgICAgICBleGl0KDEpOwogICAgfQoKICAgICRmbiA9IHRlbXBuYW0oJGRpciwnY2dzJyk7IC8vIEBUT0RPID8KICAgICRkYXRhID0gJGFyY2gtPmdldEZyb21OYW1lKCRuYW1lKTsKICAgIGlmKCAkZGF0YSApIHsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkZm4sJGRhdGEpOwogICAgICAgIHJldHVybiAkZm47CiAgICB9Cn0KCmZ1bmN0aW9uIHdyaXRlX2NvbmZpZ19waHAoJGZpbGVuYW1lLCRkYXRhKQp7CiAgICAkbm93ID0gc3RyZnRpbWUoJyV4Jyk7CiAgICAkb3V0ID0gIjw/cGhwXG4vLyBHZW5lcmF0ZWQgYnkgU25hcHNob3RNZ3ItUmVzdG9yZSBvbiB7JG5vd31cbiI7CiAgICAkZm10ID0gIlwkY29uZmlnWyclcyddID0gJyVzJztcbiI7CiAgICBmb3JlYWNoKCAkZGF0YSBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgJG91dCAuPSBzcHJpbnRmKCRmbXQsJGtleSwkdmFsKTsKICAgIH0KICAgICRvdXQgLj0gIlxuIjsKICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlbmFtZSwkb3V0KTsKfQoKIwojIEVPRgoj]]></data>
	</file>
	<file>
	  <filename>/phar/SnapshotMgr-Restore.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgokd2ViID0gJ3d3dy5waHAnOwoKaWYgKGluX2FycmF5KCdwaGFyJywgc3RyZWFtX2dldF93cmFwcGVycygpKSAmJiBjbGFzc19leGlzdHMoJ1BoYXInLCAwKSkgewogICAgUGhhcjo6aW50ZXJjZXB0RmlsZUZ1bmNzKCk7CiAgICBzZXRfaW5jbHVkZV9wYXRoKCdwaGFyOi8vJyAuIF9fRklMRV9fIC4gUEFUSF9TRVBBUkFUT1IgLiBnZXRfaW5jbHVkZV9wYXRoKCkpOwogICAgUGhhcjo6d2ViUGhhcihudWxsLCAkd2ViKTsKICAgIGluY2x1ZGUgJ3BoYXI6Ly8nIC4gX19GSUxFX18gLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gRXh0cmFjdF9QaGFyOjpTVEFSVDsKICAgIHJldHVybjsKfQoKaWYgKEAoaXNzZXQoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pICYmIGlzc2V0KCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddKSAmJiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT0gJ0dFVCcgfHwgJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT0gJ1BPU1QnKSkpIHsKRXh0cmFjdF9QaGFyOjpnbyh0cnVlKTsKJG1pbWVzID0gYXJyYXkoCidwaHBzJyA9PiAyLAonYycgPT4gJ3RleHQvcGxhaW4nLAonY2MnID0+ICd0ZXh0L3BsYWluJywKJ2NwcCcgPT4gJ3RleHQvcGxhaW4nLAonYysrJyA9PiAndGV4dC9wbGFpbicsCidkdGQnID0+ICd0ZXh0L3BsYWluJywKJ2gnID0+ICd0ZXh0L3BsYWluJywKJ2xvZycgPT4gJ3RleHQvcGxhaW4nLAoncm5nJyA9PiAndGV4dC9wbGFpbicsCid0eHQnID0+ICd0ZXh0L3BsYWluJywKJ3hzZCcgPT4gJ3RleHQvcGxhaW4nLAoncGhwJyA9PiAxLAonaW5jJyA9PiAxLAonYXZpJyA9PiAndmlkZW8vYXZpJywKJ2JtcCcgPT4gJ2ltYWdlL2JtcCcsCidjc3MnID0+ICd0ZXh0L2NzcycsCidnaWYnID0+ICdpbWFnZS9naWYnLAonaHRtJyA9PiAndGV4dC9odG1sJywKJ2h0bWwnID0+ICd0ZXh0L2h0bWwnLAonaHRtbHMnID0+ICd0ZXh0L2h0bWwnLAonaWNvJyA9PiAnaW1hZ2UveC1pY28nLAonanBlJyA9PiAnaW1hZ2UvanBlZycsCidqcGcnID0+ICdpbWFnZS9qcGVnJywKJ2pwZWcnID0+ICdpbWFnZS9qcGVnJywKJ2pzJyA9PiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0JywKJ21pZGknID0+ICdhdWRpby9taWRpJywKJ21pZCcgPT4gJ2F1ZGlvL21pZGknLAonbW9kJyA9PiAnYXVkaW8vbW9kJywKJ21vdicgPT4gJ21vdmllL3F1aWNrdGltZScsCidtcDMnID0+ICdhdWRpby9tcDMnLAonbXBnJyA9PiAndmlkZW8vbXBlZycsCidtcGVnJyA9PiAndmlkZW8vbXBlZycsCidwZGYnID0+ICdhcHBsaWNhdGlvbi9wZGYnLAoncG5nJyA9PiAnaW1hZ2UvcG5nJywKJ3N3ZicgPT4gJ2FwcGxpY2F0aW9uL3Nob2Nrd2F2ZS1mbGFzaCcsCid0aWYnID0+ICdpbWFnZS90aWZmJywKJ3RpZmYnID0+ICdpbWFnZS90aWZmJywKJ3dhdicgPT4gJ2F1ZGlvL3dhdicsCid4Ym0nID0+ICdpbWFnZS94Ym0nLAoneG1sJyA9PiAndGV4dC94bWwnLAopOwoKaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIik7CmhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOwoKJGJhc2VuYW1lID0gYmFzZW5hbWUoX19GSUxFX18pOwppZiAoIXN0cnBvcygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSwgJGJhc2VuYW1lKSkgewpjaGRpcihFeHRyYWN0X1BoYXI6OiR0ZW1wKTsKaW5jbHVkZSAkd2ViOwpyZXR1cm47Cn0KJHB0ID0gc3Vic3RyKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCBzdHJwb3MoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sICRiYXNlbmFtZSkgKyBzdHJsZW4oJGJhc2VuYW1lKSk7CmlmICghJHB0IHx8ICRwdCA9PSAnLycpIHsKJHB0ID0gJHdlYjsKaGVhZGVyKCdIVFRQLzEuMSAzMDEgTW92ZWQgUGVybWFuZW50bHknKTsKaGVhZGVyKCdMb2NhdGlvbjogJyAuICRfU0VSVkVSWydSRVFVRVNUX1VSSSddIC4gJy8nIC4gJHB0KTsKZXhpdDsKfQokYSA9IHJlYWxwYXRoKEV4dHJhY3RfUGhhcjo6JHRlbXAgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHB0KTsKaWYgKCEkYSB8fCBzdHJsZW4oZGlybmFtZSgkYSkpIDwgc3RybGVuKEV4dHJhY3RfUGhhcjo6JHRlbXApKSB7CmhlYWRlcignSFRUUC8xLjAgNDA0IE5vdCBGb3VuZCcpOwplY2hvICI8aHRtbD5cbiA8aGVhZD5cbiAgPHRpdGxlPkZpbGUgTm90IEZvdW5kPHRpdGxlPlxuIDwvaGVhZD5cbiA8Ym9keT5cbiAgPGgxPjQwNCAtIEZpbGUgIiwgJHB0LCAiIE5vdCBGb3VuZDwvaDE+XG4gPC9ib2R5PlxuPC9odG1sPiI7CmV4aXQ7Cn0KJGIgPSBwYXRoaW5mbygkYSk7CmlmICghaXNzZXQoJGJbJ2V4dGVuc2lvbiddKSkgewpoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbicpOwpoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGEpKTsKcmVhZGZpbGUoJGEpOwpleGl0Owp9CmlmIChpc3NldCgkbWltZXNbJGJbJ2V4dGVuc2lvbiddXSkpIHsKaWYgKCRtaW1lc1skYlsnZXh0ZW5zaW9uJ11dID09PSAxKSB7CmluY2x1ZGUgJGE7CmV4aXQ7Cn0KaWYgKCRtaW1lc1skYlsnZXh0ZW5zaW9uJ11dID09PSAyKSB7CmhpZ2hsaWdodF9maWxlKCRhKTsKZXhpdDsKfQpoZWFkZXIoJ0NvbnRlbnQtVHlwZTogJyAuJG1pbWVzWyRiWydleHRlbnNpb24nXV0pOwpoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGEpKTsKcmVhZGZpbGUoJGEpOwpleGl0Owp9Cn0KCmNsYXNzIEV4dHJhY3RfUGhhcgp7CnN0YXRpYyAkdGVtcDsKc3RhdGljICRvcmlnZGlyOwpjb25zdCBHWiA9IDB4MTAwMDsKY29uc3QgQloyID0gMHgyMDAwOwpjb25zdCBNQVNLID0gMHgzMDAwOwpjb25zdCBTVEFSVCA9ICdjbGkucGhwJzsKY29uc3QgTEVOID0gNjY4MTsKCnN0YXRpYyBmdW5jdGlvbiBnbygkcmV0dXJuID0gZmFsc2UpCnsKJGZwID0gZm9wZW4oX19GSUxFX18sICdyYicpOwpmc2VlaygkZnAsIHNlbGY6OkxFTik7CiRMID0gdW5wYWNrKCdWJywgJGEgPSAoYmluYXJ5KWZyZWFkKCRmcCwgNCkpOwokbSA9IChiaW5hcnkpJyc7CgpkbyB7CiRyZWFkID0gODE5MjsKaWYgKCRMWzFdIC0gc3RybGVuKCRtKSA8IDgxOTIpIHsKJHJlYWQgPSAkTFsxXSAtIHN0cmxlbigkbSk7Cn0KJGxhc3QgPSAoYmluYXJ5KWZyZWFkKCRmcCwgJHJlYWQpOwokbSAuPSAkbGFzdDsKfSB3aGlsZSAoc3RybGVuKCRsYXN0KSAmJiBzdHJsZW4oJG0pIDwgJExbMV0pOwoKaWYgKHN0cmxlbigkbSkgPCAkTFsxXSkgewpkaWUoJ0VSUk9SOiBtYW5pZmVzdCBsZW5ndGggcmVhZCB3YXMgIicgLgpzdHJsZW4oJG0pIC4nIiBzaG91bGQgYmUgIicgLgokTFsxXSAuICciJyk7Cn0KCiRpbmZvID0gc2VsZjo6X3VucGFjaygkbSk7CiRmID0gJGluZm9bJ2MnXTsKCmlmICgkZiAmIHNlbGY6OkdaKSB7CmlmICghZnVuY3Rpb25fZXhpc3RzKCdnemluZmxhdGUnKSkgewpkaWUoJ0Vycm9yOiB6bGliIGV4dGVuc2lvbiBpcyBub3QgZW5hYmxlZCAtJyAuCicgZ3ppbmZsYXRlKCkgZnVuY3Rpb24gbmVlZGVkIGZvciB6bGliLWNvbXByZXNzZWQgLnBoYXJzJyk7Cn0KfQoKaWYgKCRmICYgc2VsZjo6QloyKSB7CmlmICghZnVuY3Rpb25fZXhpc3RzKCdiemRlY29tcHJlc3MnKSkgewpkaWUoJ0Vycm9yOiBiemlwMiBleHRlbnNpb24gaXMgbm90IGVuYWJsZWQgLScgLgonIGJ6ZGVjb21wcmVzcygpIGZ1bmN0aW9uIG5lZWRlZCBmb3IgYnoyLWNvbXByZXNzZWQgLnBoYXJzJyk7Cn0KfQoKJHRlbXAgPSBzZWxmOjp0bXBkaXIoKTsKCmlmICghJHRlbXAgfHwgIWlzX3dyaXRhYmxlKCR0ZW1wKSkgewokc2Vzc2lvbnBhdGggPSBzZXNzaW9uX3NhdmVfcGF0aCgpOwppZiAoc3RycG9zICgkc2Vzc2lvbnBhdGgsICI7IikgIT09IGZhbHNlKQokc2Vzc2lvbnBhdGggPSBzdWJzdHIgKCRzZXNzaW9ucGF0aCwgc3RycG9zICgkc2Vzc2lvbnBhdGgsICI7IikrMSk7CmlmICghZmlsZV9leGlzdHMoJHNlc3Npb25wYXRoKSB8fCAhaXNfZGlyKCRzZXNzaW9ucGF0aCkpIHsKZGllKCdDb3VsZCBub3QgbG9jYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gZXh0cmFjdCBwaGFyJyk7Cn0KJHRlbXAgPSAkc2Vzc2lvbnBhdGg7Cn0KCiR0ZW1wIC49ICcvcGhhcmV4dHJhY3QvJy5iYXNlbmFtZShfX0ZJTEVfXywgJy5waGFyJyk7CnNlbGY6OiR0ZW1wID0gJHRlbXA7CnNlbGY6OiRvcmlnZGlyID0gZ2V0Y3dkKCk7CkBta2RpcigkdGVtcCwgMDc3NywgdHJ1ZSk7CiR0ZW1wID0gcmVhbHBhdGgoJHRlbXApOwoKaWYgKCFmaWxlX2V4aXN0cygkdGVtcCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBtZDVfZmlsZShfX0ZJTEVfXykpKSB7CnNlbGY6Ol9yZW1vdmVUbXBGaWxlcygkdGVtcCwgZ2V0Y3dkKCkpOwpAbWtkaXIoJHRlbXAsIDA3NzcsIHRydWUpOwpAZmlsZV9wdXRfY29udGVudHMoJHRlbXAgLiAnLycgLiBtZDVfZmlsZShfX0ZJTEVfXyksICcnKTsKCmZvcmVhY2ggKCRpbmZvWydtJ10gYXMgJHBhdGggPT4gJGZpbGUpIHsKJGEgPSAhZmlsZV9leGlzdHMoZGlybmFtZSgkdGVtcCAuICcvJyAuICRwYXRoKSk7CkBta2RpcihkaXJuYW1lKCR0ZW1wIC4gJy8nIC4gJHBhdGgpLCAwNzc3LCB0cnVlKTsKY2xlYXJzdGF0Y2FjaGUoKTsKCmlmICgkcGF0aFtzdHJsZW4oJHBhdGgpIC0gMV0gPT0gJy8nKSB7CkBta2RpcigkdGVtcCAuICcvJyAuICRwYXRoLCAwNzc3KTsKfSBlbHNlIHsKZmlsZV9wdXRfY29udGVudHMoJHRlbXAgLiAnLycgLiAkcGF0aCwgc2VsZjo6ZXh0cmFjdEZpbGUoJHBhdGgsICRmaWxlLCAkZnApKTsKQGNobW9kKCR0ZW1wIC4gJy8nIC4gJHBhdGgsIDA2NjYpOwp9Cn0KfQoKY2hkaXIoJHRlbXApOwoKaWYgKCEkcmV0dXJuKSB7CmluY2x1ZGUgc2VsZjo6U1RBUlQ7Cn0KfQoKc3RhdGljIGZ1bmN0aW9uIHRtcGRpcigpCnsKaWYgKHN0cnBvcyhQSFBfT1MsICdXSU4nKSAhPT0gZmFsc2UpIHsKaWYgKCR2YXIgPSBnZXRlbnYoJ1RNUCcpID8gZ2V0ZW52KCdUTVAnKSA6IGdldGVudignVEVNUCcpKSB7CnJldHVybiAkdmFyOwp9CmlmIChpc19kaXIoJy90ZW1wJykgfHwgbWtkaXIoJy90ZW1wJykpIHsKcmV0dXJuIHJlYWxwYXRoKCcvdGVtcCcpOwp9CnJldHVybiBmYWxzZTsKfQppZiAoJHZhciA9IGdldGVudignVE1QRElSJykpIHsKcmV0dXJuICR2YXI7Cn0KcmV0dXJuIHJlYWxwYXRoKCcvdG1wJyk7Cn0KCnN0YXRpYyBmdW5jdGlvbiBfdW5wYWNrKCRtKQp7CiRpbmZvID0gdW5wYWNrKCdWJywgc3Vic3RyKCRtLCAwLCA0KSk7CiAkbCA9IHVucGFjaygnVicsIHN1YnN0cigkbSwgMTAsIDQpKTsKJG0gPSBzdWJzdHIoJG0sIDE0ICsgJGxbMV0pOwokcyA9IHVucGFjaygnVicsIHN1YnN0cigkbSwgMCwgNCkpOwokbyA9IDA7CiRzdGFydCA9IDQgKyAkc1sxXTsKJHJldFsnYyddID0gMDsKCmZvciAoJGkgPSAwOyAkaSA8ICRpbmZvWzFdOyAkaSsrKSB7CiAkbGVuID0gdW5wYWNrKCdWJywgc3Vic3RyKCRtLCAkc3RhcnQsIDQpKTsKJHN0YXJ0ICs9IDQ7CiAkc2F2ZXBhdGggPSBzdWJzdHIoJG0sICRzdGFydCwgJGxlblsxXSk7CiRzdGFydCArPSAkbGVuWzFdOwogICAkcmV0WydtJ11bJHNhdmVwYXRoXSA9IGFycmF5X3ZhbHVlcyh1bnBhY2soJ1ZhL1ZiL1ZjL1ZkL1ZlL1ZmJywgc3Vic3RyKCRtLCAkc3RhcnQsIDI0KSkpOwokcmV0WydtJ11bJHNhdmVwYXRoXVszXSA9IHNwcmludGYoJyV1JywgJHJldFsnbSddWyRzYXZlcGF0aF1bM10KJiAweGZmZmZmZmZmKTsKJHJldFsnbSddWyRzYXZlcGF0aF1bN10gPSAkbzsKJG8gKz0gJHJldFsnbSddWyRzYXZlcGF0aF1bMl07CiRzdGFydCArPSAyNCArICRyZXRbJ20nXVskc2F2ZXBhdGhdWzVdOwokcmV0WydjJ10gfD0gJHJldFsnbSddWyRzYXZlcGF0aF1bNF0gJiBzZWxmOjpNQVNLOwp9CnJldHVybiAkcmV0Owp9CgpzdGF0aWMgZnVuY3Rpb24gZXh0cmFjdEZpbGUoJHBhdGgsICRlbnRyeSwgJGZwKQp7CiRkYXRhID0gJyc7CiRjID0gJGVudHJ5WzJdOwoKd2hpbGUgKCRjKSB7CmlmICgkYyA8IDgxOTIpIHsKJGRhdGEgLj0gQGZyZWFkKCRmcCwgJGMpOwokYyA9IDA7Cn0gZWxzZSB7CiRjIC09IDgxOTI7CiRkYXRhIC49IEBmcmVhZCgkZnAsIDgxOTIpOwp9Cn0KCmlmICgkZW50cnlbNF0gJiBzZWxmOjpHWikgewokZGF0YSA9IGd6aW5mbGF0ZSgkZGF0YSk7Cn0gZWxzZWlmICgkZW50cnlbNF0gJiBzZWxmOjpCWjIpIHsKJGRhdGEgPSBiemRlY29tcHJlc3MoJGRhdGEpOwp9CgppZiAoc3RybGVuKCRkYXRhKSAhPSAkZW50cnlbMF0pIHsKZGllKCJJbnZhbGlkIGludGVybmFsIC5waGFyIGZpbGUgKHNpemUgZXJyb3IgIiAuIHN0cmxlbigkZGF0YSkgLiAiICE9ICIgLgokc3RhdFs3XSAuICIpIik7Cn0KCmlmICgkZW50cnlbM10gIT0gc3ByaW50ZigiJXUiLCBjcmMzMigoYmluYXJ5KSRkYXRhKSAmIDB4ZmZmZmZmZmYpKSB7CmRpZSgiSW52YWxpZCBpbnRlcm5hbCAucGhhciBmaWxlIChjaGVja3N1bSBlcnJvcikiKTsKfQoKcmV0dXJuICRkYXRhOwp9CgpzdGF0aWMgZnVuY3Rpb24gX3JlbW92ZVRtcEZpbGVzKCR0ZW1wLCAkb3JpZ2RpcikKewpjaGRpcigkdGVtcCk7Cgpmb3JlYWNoIChnbG9iKCcqJykgYXMgJGYpIHsKaWYgKGZpbGVfZXhpc3RzKCRmKSkgewppc19kaXIoJGYpID8gQHJtZGlyKCRmKSA6IEB1bmxpbmsoJGYpOwppZiAoZmlsZV9leGlzdHMoJGYpICYmIGlzX2RpcigkZikpIHsKc2VsZjo6X3JlbW92ZVRtcEZpbGVzKCRmLCBnZXRjd2QoKSk7Cn0KfQp9CgpAcm1kaXIoJHRlbXApOwpjbGVhcnN0YXRjYWNoZSgpOwpjaGRpcigkb3JpZ2Rpcik7Cn0KfQoKRXh0cmFjdF9QaGFyOjpnbygpOwpfX0hBTFRfQ09NUElMRVIoKTsgPz4KlQEAAAgAAAARAAAAAQAXAAAAU25hcHNob3RNZ3ItUmVzdG9yZS5waGFyAAAAAAcAAABjbGkucGhwQyQAAFcGY1hDJAAA/E4fJ7YBAAAAAAAAIgAAAGxpYi9jbGFzcy5jb21wYXRpYmlsaXR5X3Rlc3Rlci5waHAVGgAAVwZjWBUaAAD4q5UxtgEAAAAAAAAQAAAAbGliL2RiX3V0aWxzLnBocDYIAABXBmNYNggAAPQCu1W2AQAAAAAAAAoAAABsaWIvdXRpbHMucGhwCg4AAFcGY1gKDgAApmYLIbYBAAAAAAAAHQAAAGxpYi9jbGFzcy5zZWN1cmVfaW5pX2ZpbGUucGhwGR4AAFcGY1gZHgAAsQKRqLYBAAAAAAAAGQAAAGxpYi9jbGFzcy5zaW1wbGVfdGVzdC5waHBxCwAAVwZjWHELAAB7HqQstgEAAAAAAAAHAAAAd3d3LnBocPcBAABXBmNY9wEAAOb+zwW2AQAAAAAAAAkAAABidWlsZC5waHBaAQAAVwZjWFoBAAA7fvg5tgEAAAAAAAA8P3BocAoKaW5jbHVkZV9vbmNlKCdsaWIvdXRpbHMucGhwJyk7CmluY2x1ZGVfb25jZSgnbGliL2RiX3V0aWxzLnBocCcpOwppbmNsdWRlX29uY2UoJ2xpYi9jbGFzcy5jb21wYXRpYmlsaXR5X3Rlc3Rlci5waHAnKTsKCiRzY3JpcHQgPSBiYXNlbmFtZSgkYXJndlswXSk7CiRkYmNvbmZpZyA9IG51bGw7IC8vIGRiIGNvbmZpZyBhcnJheQokZGJmaWxlID0gbnVsbDsgLy8gcGF0aCB0byBpbXBvcnQgZmlsZS4KJHNuYXBzaG90ID0gbnVsbDsgLy8gcGF0aG5hbWUgdG8gc25hcHNob3QKJG9sZF9jb25maWcgPSBudWxsOyAvLyBvbGQgY29uZmlnIHZhbHVlcwokYXJjaCA9IG51bGw7ICAvLyB0aGUgYXJjaGl2ZSBvYmplY3QKJGRpciA9IGdldGN3ZCgpOwokY29uZmlnX2ZpbGUgPSBudWxsOwoKJG91dCA9IDw8PEVPVAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj09PSBTbmFwc2hvdE1nciBSZXN0b3JlIFV0aWxpdHkgPT09ClRoaXMgcHJvZ3JhbSB3aWxsIGF0dGVtcHQgdG8gcmVzdG9yZSBhIFNuYXBzaG90TWdyIGZpbGUgaW50byBhIHdvcmtpbmcgQ01TTVMgRGlzdHJpYnV0aW9uLgpUaGVyZSBhcmUgYSBudW1iZXIgb2Ygc3RlcHMgaW4gdGhpcyBvcGVyYXRpb246CjEuICBEbyBhIGJhc2ljIGNoZWNrIGZvciBzeXN0ZW0gY29tcGF0aWJpbGl0eQoyLiAgQXNrIGZvciwgYW5kIHZhbGlkYXRlIHRoZSBTbmFwc2hvdE1nciBmaWxlCjMuICBDaGVjayBmb3IgYW4gZW1wdHkgZGlyZWN0b3J5Lgo0LiAgR2V0IGFuZCB2YWxpZGF0ZSBkYXRhYmFzZSBjcmVkZW50aWFscywgYW5kIHRoZSBkYXRhYmFzZQo1LiAgRXh0cmFjdCBTbmFwc2hvdE1nciBGaWxlcwo2LiAgUmVzdG9yZSB0aGUgZGF0YWJhc2UKNy4gIFNlY3VyZSB0aGUgaW5zdGFsbGF0aW9uCjguICBHZW5lcmF0ZSBhIG5ldyBjb25maWcucGhwCgpUaGVyZSBhcmUgc3RlcHMgeW91IG1heSBuZWVkIHRvIHRha2UgYWZ0ZXIgdGhpcyBvcGVyYXRpb24gaXMgY29tcGxldGUgdG8gZW5zdXJlIGEgd29ya2luZyBzeXN0ZW0sClBhcnRpY3VsYXJseSBpZiB5b3UgYXJlIG1vdmluZyB0byBhIG5ldyBob3N0LgpUaGVzZSBJbmNsdWRlCjEuICBBZGp1c3RpbmcgeW91ciAuaHRhY2Nlc3MgZmlsZQoyLiAgQWRqdXN0aW5nIGFueSBoYXJkIGNvZGVkIGxpbmtzCjMuICBBZGp1c3RpbmcgbW9kdWxlIHByZWZlcmVuY2VzIGFuZCBzZXR0aW5ncwo0LiAgVGVzdGluZwoKTk9URVM6CjEuICBUaGlzIHNjcmlwdCByZXF1aXJlcyB0aGUgYWJpbGl0eSB0byBleGVjdXRlIHNoZWxsIGNvbW1hbmRzLgoyLiAgVGhpcyBzY3JpcHQgcmVxdWlyZXMgdGhhdCB0aGUgbXlzcWwgcHJvZ3JhbSBiZSBpbiB0aGUgY3VycmVudCBQQVRILgozLiAgVGhpcyBzY3JpcHQgcmVxdWlyZXMgdGhlIFppcEFyY2hpdmUgcGhwIGNsYXNzICh1c3VhbGx5IGJ1aWx0IGluKQo0LiAgVGhpcyBzY3JpcHQgZG9lcyBjb21wYXRpYmlsaXR5IGNoZWNrcyB0aGF0IG1heSBiZSBsZXNzIGV4dGVuc2l2ZSB0aGFuIHRob3NlIGJ1aWx0IGludG8gQ01TTVMsIG9yIG1heSBiZSBtb3JlIGV4dGVuc2l2ZS4KRU9UOwpjbHMoKTsKb3V0cHV0KCRvdXQpOwoKJHJlcyA9IGFza19ib29sKCdBcmUgeW91IHJlYWR5IHRvIGJlZ2luPycpOwppZiggISRyZXMgKSB7CiAgICBuZXdsaW5lKCk7CiAgICBvdXRwdXQoIlRoYW5rIHlvdSwgY29tZSBhZ2FpbiIpOwogICAgZXhpdDsKfQoKLy8gMS4gIHByb21wdCBmb3IgemlwIGZpbGUKJG91dCA9IDw8PEVPVAo9PSBFbnRlciB0aGUgU25hcHNob3RNZ3IgbmFtZSA9PQpQbGVhc2UgZW50ZXIgdGhlIG5hbWUgb2YgdGhlIFNuYXBzaG90TWdyIGZpbGUgdGhhdCB5b3Ugd291bGQgbGlrZSB0byByZXN0b3JlLgoKTm90ZTogVGhlIGZpbGVuYW1lIHNob3VsZCBiZSBhbiBhYnNvbHV0ZSBwYXRoLCBvciBzaG91bGQgcmVzaWRlIGluIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KRU9UOwokc25hcHNob3QgPSBudWxsOwpjbHMoKTsKd2hpbGUoICEkc25hcHNob3QgKSB7CiAgICBvdXRwdXQoJG91dCk7CiAgICAkcmVzID0gYXNrX3N0cmluZ19yZXF1aXJlZCggIlNuYXBzaG90TWdyIEZpbGUgTmFtZToiICk7CiAgICBpZiggJHJlcyApIHsKICAgICAgICAkZm4gPSAkZGlyLicvJy4kcmVzOwogICAgICAgIGlmKCAhaXNfZmlsZSgkZm4pIHx8ICFpc19yZWFkYWJsZSgkZm4pICkgewogICAgICAgICAgICBuZXdsaW5lKCk7CiAgICAgICAgICAgIGVycm9yKCJDb3VsZCBub3QgZmluZCB0aGUgZmlsZTogJHJlcyIpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCAhaXNfc25hcHNob3RtZ3IoJGZuKSApIHsKICAgICAgICAgICAgbmV3bGluZSgpOwogICAgICAgICAgICBlcnJvcigiJHJlcyBpcyBub3QgYSBTbmFwc2hvdE1nciBhcmNoaXZlIGZpbGUiKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzbmFwc2hvdCA9ICRyZXM7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KfQoKLy8gMi4gIEdldCBjb25maWcgYW5kIGRhdGFiYXNlIGZpbGVzIGZyb20gdGhlIHNuYXBzaG90CiRjb25maWdfZmlsZXMgPSBhcnJheSgnY29uZmlnLnBocCcsJ2xpYi9jb25maWcucGhwJyk7CiRvbGRfY29uZmlnID0gbnVsbDsKJHRtcGZpbGUgPSAnLnRtcC5jb25maWcucGhwJzsKJGFyY2ggPSBuZXcgXFppcEFyY2hpdmU7CiRhcmNoLT5vcGVuKCRzbmFwc2hvdCk7CiRkYmZpbGUgPSBjb3B5X2FyY2hmaWxlX3RvX3RtcCgkYXJjaCwndG1wL19fbXlzcWxkdW1wLnNxbCcpOwpmb3JlYWNoKCAkY29uZmlnX2ZpbGVzIGFzICRmaWxlICkgewogICAgJGZuID0gY29weV9hcmNoZmlsZV90b190bXAoJGFyY2gsJGZpbGUpOwogICAgaWYoICRmbiApIHsKICAgICAgICAkY29uZmlnX2ZpbGUgPSAkZmlsZTsKICAgICAgICBpbmNsdWRlKCRmbik7CiAgICAgICAgJG9sZF9jb25maWcgPSAkY29uZmlnOwogICAgICAgIHVuc2V0KCRjb25maWcpOwogICAgICAgIHVubGluaygkZm4pOwogICAgICAgIGJyZWFrOwogICAgfQp9CmlmKCAhJG9sZF9jb25maWcgfHwgIWlzc2V0KCRvbGRfY29uZmlnWydkYl9uYW1lJ10pICkgewogICAgZXJyb3IoIkNvdWxkIG5vdCBmaW5kIGNvbmZpZyBkYXRhIGluIFNuYXBzaG90TWdyIik7CiAgICBleGl0KDEpOwp9CgovLyAzLiAgRGlzcGxheSBpbmZvIGZyb20gdGhlIHNuYXBzaG90CiRzbmFwc2hvdG1ncl9maWxlID0gJGFyY2gtPmdldEZyb21OYW1lKCd0bXAvLnNuYXBzaG90bWdyJyk7CiRpbmkgPSBuZXcgXFNuYXBzaG90TWdyXHBoYXJcc2VjdXJlX2luaV9maWxlOwokc25hcHNob3RtZ3JfZGF0YSA9ICRpbmktPnBhcnNlKCRzbmFwc2hvdG1ncl9maWxlLEZBTFNFKTsKY2xzKCk7Cm91dHB1dCgnPT0gU25hcHNob3RNZ3IgRGV0YWlscyA9PScpOwpvdXRwdXQoJ1NpdGUgTmFtZTogJy4kc25hcHNob3RtZ3JfZGF0YVsnd2Vic2l0ZSddWydzaXRlbmFtZSddKTsKb3V0cHV0KCdTaXRlIFVSTDogJy4kc25hcHNob3RtZ3JfZGF0YVsnd2Vic2l0ZSddWydyb290X3VybCddKTsKb3V0cHV0KCdDTVNNUyBWZXJzaW9uOiAnLiRzbmFwc2hvdG1ncl9kYXRhWyd3ZWJzaXRlJ11bJ2Ntc192ZXJzaW9uJ10pOwpvdXRwdXQoJ0NyZWF0ZWQ6ICcuc3RyZnRpbWUoJyV4ICVYJywkc25hcHNob3RtZ3JfZGF0YVsnbWFpbiddWydjcmVhdGVkJ10pKTsKJHJlcyA9IGFza19ib29sKCdEbyB5b3Ugd2FudCB0byBjb250aW51ZT8nKTsKaWYoICEkcmVzICkgewogICAgbmV3bGluZSgpOwogICAgb3V0cHV0KCJUaGFuayB5b3UsIGNvbWUgYWdhaW4iKTsKICAgIGV4aXQ7Cn0KCi8vIDQuICBDb21wYXRpYmlsaXR5IGNoZWNrCmNscygpOwpvdXRwdXQoJz09IENoZWNrIGZvciBDb21wYXRpYmlsaXR5ID09Jyk7CiRwYXJtcyA9IGFycmF5KCdkaXInPT4kZGlyLCdleGNsdWRlcyc9PmFycmF5KGJhc2VuYW1lKCRzbmFwc2hvdCksJHNjcmlwdCkpOwokdGVzdGVyID0gbmV3IFxTbmFwc2hvdE1nclxwaGFyXGNvbXBhdGliaWxpdHlfdGVzdGVyKCRwYXJtcyk7CiRyZXMgPSAkdGVzdGVyLT50ZXN0KCk7CmlmKCAhJHJlcyApIHsKICAgIG5ld2xpbmUoKTsKICAgIGVycm9yKCJPbmUgb3IgbW9yZSBjb21wYXRpYmlsaXR5IHRlc3RzIGZhaWxlZCIpOwogICAgJGZhaWxlZCA9ICR0ZXN0ZXItPmdldF9mYWlsZWQoKTsKICAgIGZvcmVhY2goICRmYWlsZWQgYXMgJG9uZSApIHsKICAgICAgICBlcnJvcigiICAgICRvbmUgOiAiLiR0ZXN0ZXItPmdldF9lcnJvcm1zZygkb25lKSxGQUxTRSk7CiAgICB9CiAgICBlcnJvcigiTm90IGFsbCB0ZXN0cyBwYXNzc2VkLi4uIG11c3QgZXhpdC4iKTsKICAgIGV4aXQoMSk7Cn0KCiRvdXQgPSBhcnJheSgpOwokbGlzdCA9IGFycmF5KCk7CiRsaXN0WydhJ10gPSBhcnJheSgncHJvbXB0Jz0+J0RhdGFiYXNlIEhvc3QnLCdrZXknPT4nZGJfaG9zdG5hbWUnLCd2YWwnPT4nbG9jYWxob3N0Jyk7CiRsaXN0WydiJ10gPSBhcnJheSgncHJvbXB0Jz0+J0RhdGFiYXNlIE5hbWUnLCdrZXknPT4nZGJfbmFtZScsJ3ZhbCc9Pm51bGwpOwokbGlzdFsnYyddID0gYXJyYXkoJ3Byb21wdCc9PidEYXRhYmFzZSBVc2VyJywna2V5Jz0+J2RiX3VzZXJuYW1lJywndmFsJz0+bnVsbCk7CiRsaXN0WydkJ10gPSBhcnJheSgncHJvbXB0Jz0+J0RhdGFiYXNlIFBhc3N3b3JkJywna2V5Jz0+J2RiX3Bhc3N3b3JkJywndmFsJz0+bnVsbCk7CiRsaXN0WydlJ10gPSBhcnJheSgncHJvbXB0Jz0+J0RCTVMgKG15c3FsL215c3FsaSknLCdrZXknPT4nZGJtcycsJ3ZhbCc9PidteXNxbGknLCdvcHRpb25zJz0+YXJyYXkoJ215c3FsaScsJ215c3FsJykpOwokbGlzdFsneiddID0gYXJyYXkoJ3Byb21wdCc9PidEb25lL0ZpbmlzaGVkJyk7CiR2YWxpZCA9IGZhbHNlOwokYnVpbGRfcHJvbXB0ID0gZnVuY3Rpb24oJGxpc3QpIHsKICAgICRwcm9tcHQgPSAnPT0gRGF0YWJhc2UgQ29ubmVjdGlvbiBJbmZvcm1hdGlvbiA9PScuIlxuIjsKICAgIGZvcmVhY2goICRsaXN0IGFzICRrZXkgPT4gJHJlYyApIHsKICAgICAgICBpZiggaXNzZXQoJHJlY1sna2V5J10pICkgewogICAgICAgICAgICAkcHJvbXB0IC49IHNwcmludGYoIiVzOiAlMjBzID0gJXNcbiIsJGtleSwkcmVjWydwcm9tcHQnXSwkcmVjWyd2YWwnXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHByb21wdCAuPSBzcHJpbnRmKCIlczogJTIwc1xuIiwka2V5LCRyZWNbJ3Byb21wdCddKTsKICAgICAgICB9CiAgICB9CiAgICAkcHJvbXB0IC49ICJcbk9wdGlvbiBbYSxiLGMsZCxlIHEvcXVpdC9leGl0XTogIjsKICAgIHJldHVybiAkcHJvbXB0Owp9OwoKY2xzKCk7CndoaWxlKCAhJHZhbGlkICkgewogICAgd2hpbGUoIDEgKSB7CiAgICAgICAgLy8gZGlzcGxheSB0aGUgbGlzdAogICAgICAgICRsaXN0a2V5ID0gYXNrX29wdGlvbigkYnVpbGRfcHJvbXB0KCRsaXN0KSxhcnJheV9rZXlzKCRsaXN0KSk7CiAgICAgICAgaWYoICRsaXN0a2V5ID09ICd6JyApIGJyZWFrOwogICAgICAgIGlmKCBpc3NldCgkbGlzdFskbGlzdGtleV1bJ29wdGlvbnMnXSkgKSB7CiAgICAgICAgICAgICR2YWwgPSBhc2tfb3B0aW9uKCRsaXN0WyRsaXN0a2V5XVsncHJvbXB0J10uJzonLCRsaXN0WyRsaXN0a2V5XVsnb3B0aW9ucyddKTsKICAgICAgICAgICAgJGxpc3RbJGxpc3RrZXldWyd2YWwnXSA9IHRyaW0oJHZhbCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdmFsID0gYXNrX3N0cmluZ19yZXF1aXJlZCgkbGlzdFskbGlzdGtleV1bJ3Byb21wdCddLic6Jyk7CiAgICAgICAgICAgICRsaXN0WyRsaXN0a2V5XVsndmFsJ10gPSB0cmltKCR2YWwpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIGEgdmFsdWUgZm9yIGV2ZXJ5dGhpbmcKICAgICRmbmQgPSB0cnVlOwogICAgZm9yZWFjaCggJGxpc3QgYXMgJGtleSA9PiAkcmVjICkgewogICAgICAgIGlmKCAhaXNzZXQoJHJlY1sna2V5J10pICkgY29udGludWU7CiAgICAgICAgaWYoICFpc3NldCgkcmVjWyd2YWwnXSkgfHwgJHJlY1sndmFsJ10gPT0gJycgKSB7CiAgICAgICAgICAgICRmbmQgPSBmYWxzZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgaWYoICRmbmQgKSB7CiAgICAgICAgLy8gZG8gYSB0ZXN0IGNvbm5lY3Rpb24KICAgICAgICAkZGJjb25maWcgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2goICRsaXN0IGFzICRrZXkgPT4gJHJlYyApIHsKICAgICAgICAgICAgaWYoICFpc3NldCgkcmVjWydrZXknXSkgKSBjb250aW51ZTsKICAgICAgICAgICAgaWYoICFpc3NldCgkcmVjWyd2YWwnXSkgKSBjb250aW51ZTsKICAgICAgICAgICAgJGRiY29uZmlnWyRyZWNbJ2tleSddXSA9ICRyZWNbJ3ZhbCddOwogICAgICAgIH0KICAgICAgICAkcmVzID0gXFNuYXBzaG90TWdyXHBoYXJcdGVzdF9kYl9jb25uZWN0KCRkYmNvbmZpZyk7CiAgICAgICAgaWYoICEkcmVzICkgewogICAgICAgICAgICBuZXdsaW5lKCk7CiAgICAgICAgICAgIGVycm9yKCdQcm9ibGVtIGNvbm5lY3RpbmcgdG8gdGhlIGRhdGFiYXNlLi4uIHBsZWFzZSBkb3VibGVjaGVjayB5b3VyIGluZm9ybWF0aW9uJyk7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gY29ubmVjdGVkIG9rYXksIHNlZSBpZiB0aGUgZGIgaXMgZW1wdHkKICAgICAgICAkcmVzID0gXFNuYXBzaG90TWdyXHBoYXJcdGVzdF9kYl9lbXB0eSgkcmVzLCRkYmNvbmZpZyk7CiAgICAgICAgaWYoICEkcmVzICkgewogICAgICAgICAgICBuZXdsaW5lKCk7CiAgICAgICAgICAgIGVycm9yKCdUaGUgZGF0YWJhc2UgeW91IHNlbGVjdGVkIGFwcGVhcnMgdG8gYWxyZWFkeSBjb250YWluIHRhYmxlcy4uLiBwbGVhc2UgcGljayBhbm90aGVyIGRhdGFiYXNlLCBvciBjbGVhciB0aGlzIG9uZS4nKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICAkdmFsaWQgPSB0cnVlOwogICAgfQp9CgovLyA1LiAgaW1wb3J0IGRhdGFiYXNlCmNscygpOwpvdXRwdXQoJz09IGltcG9ydGluZyBkYXRhYmFzZSA9PScpOwokcmVzID0gXFNuYXBzaG90TWdyXHBoYXJcZGJfaW1wb3J0KCRkYmNvbmZpZywkZGJmaWxlKTsKaWYoICEkcmVzICkgewogICAgbmV3bGluZSgpOwogICAgZXJyb3IoJ1Byb2JsZW0gaW1wb3J0aW5nIGRhdGEgaW50byB0aGUgZGF0YWJhc2UuLi4gcGxlYXNlIGNsZWFudXAgYW5kIHJldHJ5Jyk7CiAgICBleGl0KDEpOwp9Cm91dHB1dCgnZG9uZScpOwoKLy8gNi4gIGV4dHJhY3QgemlwIGZpbGVzCiRvcCA9IG51bGw7Cm5ld2xpbmUoKTsKb3V0cHV0KCc9PSByZXN0b3JpbmcgZmlsZXMgPT0nKTsKZm9yKCAkaSA9IDA7ICRpIDwgJGFyY2gtPm51bUZpbGVzOyAkaSsrICkgewogICAgJGVudHJ5ID0gJGFyY2gtPmdldE5hbWVJbmRleCgkaSk7CiAgICAkYXJjaC0+ZXh0cmFjdFRvKCcuJywkZW50cnkpOwogICAgJHAgPSAoaW50KSAoKGZsb2F0KSRpIC8gKGZsb2F0KSRhcmNoLT5udW1GaWxlcyAqIDEwMCk7CiAgICBpZiggJHAgPiAwICYmICRwICUgNSA9PSAwICYmICRwICE9ICRvcCApIHsKICAgICAgICAkb3AgPSAkcDsKICAgICAgICBvdXRwdXQoJHAuJyUuLi4gJyxGQUxTRSk7CiAgICB9Cn0Kb3V0cHV0KCdkb25lJyk7CgovLyA2LiAgZ2VuZXJhdGUgY29uZmlnLnBocAppZiggJGNvbmZpZ19maWxlICkgewogICAvLyBhbGwgb2YgdGhpcyBhc3N1bWVzICRkaXIgPT0gY3dkCiAgIG5ld2xpbmUoKTsKICAgb3V0cHV0KCc9PSBnZW5lcmF0aW5nIG5ldyBjb25maWcgZmlsZSA9PScpOwogICBvdXRwdXQoJ1dBUk5JTkc6ICBBbnkgYWR2YW5jZWQgcGhwIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmFsIGZpbGUgd2lsbCBiZSByZW1vdmVkLCBhbmQgbWF5IHJlcXVpcmUgZml4aW5nJyk7CiAgIG91dHB1dCgnVGhlIG9yaWdpbmFsIGNvbmZpZyBmaWxlIGNhbiBiZSBmb3VuZCBpbiBiYWsuY29uZmlnLnBocCBpbiB0aGUgc2l0ZSByb290IGRpcmVjdG9yeScpOwogICAkYm4gPSBiYXNlbmFtZSgkY29uZmlnX2ZpbGUpOwogICAkZG4gPSBkaXJuYW1lKCRjb25maWdfZmlsZSk7CiAgIHJlbmFtZSgkY29uZmlnX2ZpbGUsIiRkbi9iYWsueyRibn0iKTsKCiAgIGlmKCAkb2xkX2NvbmZpZyAmJiAkZGJjb25maWcgKSB7CiAgICAgICRuZXdfY29uZmlnID0gYXJyYXlfbWVyZ2UoJG9sZF9jb25maWcsJGRiY29uZmlnKTsKICAgICAgd3JpdGVfY29uZmlnX3BocCgkY29uZmlnX2ZpbGUsJG5ld19jb25maWcpOwogICB9Cn0KCi8vIDYuICBzZWN1cml0eS4uLgpuZXdsaW5lKCk7Cm91dHB1dCgnPT0gaW1wcm92aW5nIHNlY3VyaXR5ID09PScpOwokaXRlciA9IG5ldyBcUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcigKICAgIG5ldyBcUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJGRpciwgXFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yOjpTS0lQX0RPVFMpLAogICAgXFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3I6OlNFTEZfRklSU1QsCiAgICBcUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcjo6Q0FUQ0hfR0VUX0NISUxEIC8vIElnbm9yZSAiUGVybWlzc2lvbiBkZW5pZWQiCiAgICApOwokc3RyID0gJzwhLS0gRFVNTVkgSFRNTCBGSUxFIC0tPic7CmZvcmVhY2goICRpdGVyIGFzICRwYXRoID0+ICRkaXIgKSB7CiAgICBpZiggISRkaXItPmlzRGlyKCkgKSBjb250aW51ZTsKICAgIGlmKCBmaWxlX2V4aXN0cygkcGF0aC4nL2luZGV4LnBocCcpIHx8IGZpbGVfZXhpc3RzKCRwYXRoLicvaW5kZXguaHRtbCcpICkgY29udGludWU7CgogICAgZmlsZV9wdXRfY29udGVudHMoJHBhdGguJy9pbmRleC5odG1sJywkc3RyKTsKfQoKLy8gOSAgIGNsZWFudXAKbmV3bGluZSgpOwpvdXRwdXQoJz09IGNsZWFuaW5nIHVwID09PScpOwpAdW5saW5rKCRzbmFwc2hvdCk7CkB1bmxpbmsoJHNjcmlwdCk7CkB1bmxpbmsoJ3RtcC9fX215c3FsZHVtcC5zcWwnKTsKQHVubGluaygndG1wLy5zbmFwc2hvdG1ncicpOwpAbWtkaXIoJ3RtcC9jYWNoZScsMDc3Nyk7CkBta2RpcigndG1wL3RlbXBsYXRlc19jJywwNzc3KTsKCi8vIDEwLiAgRE9ORQpuZXdsaW5lKCk7Cm91dHB1dCgnPT0gRmluaXNoZWQgPT09Jyk7CiRvdXQgPSA8PDxFT1QKVGhlIHJlc3RvcmUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLiAgVGhlIGRhdGFiYXNlIGFuZCBhbGwgZmlsZXMgaGF2ZSBiZW4gcmVzdG9yZWQuCllvdSBtYXkgbmVlZCB0byByZXZpZXcgeW91ciBjb25maWcucGhwIGZpbGUsIGFuZCBhZGp1c3QgeW91ciAuaHRhY2Nlc3MgZmlsZSBmb3IgdGhlIG5ldyBzaXRlIGxvY2F0aW9uLgpBbHNvLCB5b3Ugc2hvdWxkIHVuZGVydGFrZSBleHRlbnNpdmUgdGVzdGluZy4KClRoYW5rIHlvdSBmb3IgdXNpbmcgU25hcHNob3RNZ3IuCkVPVDsKb3V0cHV0KCRvdXQpOwpleGl0Owo8P3BocAoKbmFtZXNwYWNlIFNuYXBzaG90TWdyXHBoYXI7CgppbmNsdWRlX29uY2UoX19ESVJfXy4nL2NsYXNzLnNpbXBsZV90ZXN0LnBocCcpOwoKY2xhc3MgY29tcGF0aWJpbGl0eV90ZXN0ZXIKewogICAgY29uc3QgTUlOUEhQID0gJzUuNC4xMSc7CiAgICBjb25zdCBURVNUX01JTlBIUFZFUiA9ICdtaW5waHB2ZXInOwogICAgY29uc3QgVEVTVF9ESVJXUklUQUJMRSA9ICdkaXJ3cml0YWJsZSc7CiAgICBjb25zdCBURVNUX0RJUkVNUFRZID0gJ2RpcmVtcHR5JzsKICAgIGNvbnN0IFRFU1RfVE1QRklMRSA9ICdmdW5jX3RtcGZpbGUnOwogICAgY29uc3QgVEVTVF9URU1QTkFNID0gJ2Z1bmNfdGVtcG5hbSc7CiAgICBjb25zdCBURVNUX0daT1BFTiA9ICdmdW5jX2d6b3Blbic7CiAgICBjb25zdCBURVNUX0VYVF9NVUxUSUJZVEUgPSAnZXh0X211bHRpYnl0ZSc7CiAgICBjb25zdCBURVNUX0VYVF9GSU5GTyA9ICdleHRfZmluZm8nOwogICAgY29uc3QgVEVTVF9FWFRfTVlTUUwgPSAnZXh0X215c3FsJzsKICAgIGNvbnN0IFRFU1RfTUQ1ID0gJ2Z1bmNfbWQ1JzsKICAgIGNvbnN0IFRFU1RfU0hBMSA9ICdmdW5jX3NoYTEnOwogICAgY29uc3QgVEVTVF9KU09OID0gJ2Z1bmNfanNvbic7CiAgICBjb25zdCBURVNUX09QRU5CQVNFRElSID0gJ29wZW5iYXNlZGlyJzsKICAgIGNvbnN0IFRFU1RfU0VTU0lPTkNPT0tJRVMgPSAnc2Vzc2lvbi51c2VfY29va2llcyc7CiAgICBjb25zdCBURVNUX1NFU1NJT05TQVZFID0gJ3Nlc3Npb24uc2F2ZXBhdGgnOwogICAgY29uc3QgVEVTVF9TQUZFTU9ERSA9ICdzYWZlX21vZGUnOwogICAgY29uc3QgVEVTVF9GSUxFVVBMT0FEUyA9ICdmaWxlX3VwbG9hZHMnOwogICAgY29uc3QgVEVTVF9FWFRfWE1MID0gJ2V4dF94bWwnOwogICAgY29uc3QgVEVTVF9GSUxFR0VUID0gJ2Z1bmNfZmlsZWdldGNvbnRlbnRzJzsKICAgIGNvbnN0IFRFU1RfRklMRVBVVCA9ICdmdW5jX2ZpbGVwdXRjb250ZW50cyc7CgogICAgcHJpdmF0ZSAkX3Rlc3RzID0gYXJyYXkoKTsKICAgIHByaXZhdGUgJF9yZXN1bHRzID0gYXJyYXkoKTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHBhcmFtcyA9IG51bGwpCiAgICB7CiAgICAgICAgLy8gYnVpbGQgbGlzdCBvZiB0ZXN0cyBiYXNlZCBvbiBwYXJhbXMgaW4gdGhlIGNvbnN0cnVjb3RyCiAgICAgICAgJGRpciA9IGlzc2V0KCRwYXJhbXNbJ2RpciddKSA/ICRwYXJhbXNbJ2RpciddIDogZ2V0Y3dkKCk7CiAgICAgICAgJGV4Y2x1ZGVzID0gaXNzZXQoJHBhcmFtc1snZXhjbHVkZXMnXSkgPyAkcGFyYW1zWydleGNsdWRlcyddIDogbnVsbDsKCiAgICAgICAgLy8gY2hlY2sgZm9yIHdyaXRlIGFjY2VzcwogICAgICAgICR0aGlzLT5fdGVzdHNbXSA9IG5ldyBtaW52ZXJzaW9uX3Rlc3Qoc2VsZjo6VEVTVF9NSU5QSFBWRVIsc2VsZjo6TUlOUEhQLHBocHZlcnNpb24oKSk7CiAgICAgICAgJHRoaXMtPl90ZXN0c1tdID0gbmV3IGRpcl93cml0YWJsZV90ZXN0KHNlbGY6OlRFU1RfRElSV1JJVEFCTEUsJGRpcik7CiAgICAgICAgJHRoaXMtPl90ZXN0c1tdID0gbmV3IGRpcl9lbXB0eV90ZXN0KHNlbGY6OlRFU1RfRElSRU1QVFksJGRpciwkZXhjbHVkZXMpOwogICAgICAgICR0aGlzLT5fdGVzdHNbXSA9IG5ldyBzaW1wbGVfdGVzdChzZWxmOjpURVNUX1RNUEZJTEUsZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICRmaCA9IHRtcGZpbGUoKTsKICAgICAgICAgICAgICAgIHJldHVybiAoJGZoID09PSBGQUxTRSkgPyBGQUxTRSA6IFRSVUU7CiAgICAgICAgICAgIH0pOwogICAgICAgICR0aGlzLT5fdGVzdHNbXSA9IG5ldyBmdW5jdGlvbl90ZXN0KHNlbGY6OlRFU1RfVEVNUE5BTSwndGVtcG5hbScpOwogICAgICAgICR0aGlzLT5fdGVzdHNbXSA9IG5ldyBzaW1wbGVfdGVzdChzZWxmOjpURVNUX0daT1BFTixmdW5jdGlvbigpewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2V4aXN0cygnZ3pvcGVuJykgfHwgZnVuY3Rpb25fZXhpc3RzKCdnem9wZW42NCcpOwogICAgICAgICAgICB9KTsKICAgICAgICAkdGhpcy0+X3Rlc3RbXSA9IG5ldyBleHRlbnNpb25fdGVzdChzZWxmOjpURVNUX0VYVF9NVUxUSUJZVEUsJ21ic3RyaW5nJyk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgZnVuY3Rpb25fdGVzdChzZWxmOjpURVNUX0VYVF9GSU5GTywnZmluZm9fb3BlbicpOwogICAgICAgICR0aGlzLT5fdGVzdFtdID0gbmV3IHNpbXBsZV90ZXN0KHNlbGY6OlRFU1RfRVhUX01ZU1FMLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICB0ZXN0X2V4dGVuc2lvbl9sb2FkZWQoJ215c3FsaScpIHx8IHRlc3RfZXh0ZW5zaW9uX2xvYWRlZCgnbXlzcWwnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgZnVuY3Rpb25fdGVzdChzZWxmOjpURVNUX01ENSwnbWQ1Jyk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgZnVuY3Rpb25fdGVzdChzZWxmOjpURVNUX1NIQTEsJ3NoYTEnKTsKICAgICAgICAkdGhpcy0+X3Rlc3RbXSA9IG5ldyBmdW5jdGlvbl90ZXN0KHNlbGY6OlRFU1RfSlNPTiwnanNvbl9lbmNvZGUnKTsKICAgICAgICAkdGhpcy0+X3Rlc3RbXSA9IG5ldyBzaW1wbGVfdGVzdChzZWxmOjpURVNUX09QRU5CQVNFRElSLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICByZXR1cm4gKGluaV9nZXQoJ29wZW5fYmFzZWRpcicpID09ICcnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgc2ltcGxlX3Rlc3Qoc2VsZjo6VEVTVF9TRVNTSU9OQ09PS0lFUyxmdW5jdGlvbigpewogICAgICAgICAgICAgICAgcmV0dXJuIChpbmlfZ2V0KCdzZXNzaW9uLnVzZV9jb29raWVzJykpOwogICAgICAgICAgICB9KTsKICAgICAgICBpZiggaW5pX2dldCgnc2Vzc2lvbi5zYXZlX2hhbmRsZXInKSA9PSAnZmlsZXMnICkgewogICAgICAgICAgICAkdGhpcy0+X3Rlc3RbXSA9IG5ldyBzaW1wbGVfdGVzdChzZWxmOjpURVNUX1NFU1NJT05TQVZFLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgJHBhdGggPSBpbmlfZ2V0KCdzZXNzaW9uLnNhdmVfcGF0aCcpOwogICAgICAgICAgICAgICAgICAgIGlmKCAoJHBvcyA9IHN0cnBvcygkcGF0aCwnOycpKSAhPT0gRkFMU0UgKSAkcGF0aCA9IHN1YnN0cigkcGF0aCwkcG9zKzEpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhaXNfZGlyKCR0bXApICkgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgICAgIGlmKCAhaXNfd3JpdGFibGUoJHRtcCkgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIHRvZG86IHRlc3QgbWVtb3J5IGxpbWl0CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgZmFsc2VfdGVzdChzZWxmOjpURVNUX1NBRkVNT0RFLGluaV9nZXQoJ3NhZmVfbW9kZScpKTsKICAgICAgICAkdGhpcy0+X3Rlc3RbXSA9IG5ldyB0cnVlX3Rlc3Qoc2VsZjo6VEVTVF9GSUxFVVBMT0FEUyxpbmlfZ2V0KCdmaWxlX3VwbG9hZHMnKSk7CiAgICAgICAgJHRoaXMtPl90ZXN0W10gPSBuZXcgZXh0ZW5zaW9uX3Rlc3Qoc2VsZjo6VEVTVF9FWFRfWE1MLCd4bWwnKTsKICAgICAgICAkdGhpcy0+X3Rlc3RbXSA9IG5ldyBmdW5jdGlvbl90ZXN0KHNlbGY6OlRFU1RfRklMRUdFVCwnZmlsZV9nZXRfY29udGVudHMnKTsKICAgICAgICAkdGhpcy0+X3Rlc3RbXSA9IG5ldyBmdW5jdGlvbl90ZXN0KHNlbGY6OlRFU1RfRklMRVBVVCwnZmlsZV9wdXRfY29udGVudHMnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2Vycm9ybXNnKCRjb2RlKQogICAgewogICAgICAgIHN3aXRjaCggJGNvZGUgKSB7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX01JTlBIUFZFUjoKICAgICAgICAgICAgcmV0dXJuICdUaGUgY29uZmlndXJlZCBQSFAgdmVyc2lvbiBpcyB0b28gbG93LiAgTWluaW11bSByZXF1aXJlZCBpcyAnLnNlbGY6Ok1JTlBIUDsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfRElSV1JJVEFCTEU6CiAgICAgICAgICAgIHJldHVybiAnVGhlIFBIUCBwcm9jZXNzIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB3cml0ZSB0byB0aGlzIGRpcmVjdG9yeS4nOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9ESVJFTVBUWToKICAgICAgICAgICAgcmV0dXJuICJUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IHNwZWNpZmllZCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgZW1wdHkgZXhjZXB0IGZvciBTbmFwc2hvdE1nciBmaWxlcyBhbmQgdGhpcyBzY3JpcHRcbgogICBIaW50OiAgQ2hlY2sgZm9yIGhpZGRlbiBmaWxlcy4iOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9UTVBGSUxFOgogICAgICAgICAgICByZXR1cm4gJ1RoZSB0bXBmaWxlKCkgbWV0aG9kIGRvZXMgbm90IGFwcGVhciB0byBvcGVyYXRlIHByb3Blcmx5JzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfVEVNUE5BTToKICAgICAgICAgICAgcmV0dXJuICdUaGUgdGVtcG5hbSgpIGZ1bmN0aW9uIGRvZXMgbm90IGFwcGVhciB0byBiZSBhdmFpbGFibGUnOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9HWk9QRU46CiAgICAgICAgICAgIHJldHVybiAnVGhlIGd6b3Blbi9nem9wZW42NCBmdW5jdGlvbnMgZG8gbm90IGFwcGVhciB0byBiZSBhdmFpbGFibGUuJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfRVhUX01VTFRJQllURToKICAgICAgICAgICAgcmV0dXJuICdUaGUgbXVsdGlieXRlIGV4dGVuc2lvbnMgZG8gbm90IGFwcGVhciB0byBiZSBhdmFpbGFibGUuJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfRVhUX0ZJTkZPOgogICAgICAgICAgICByZXR1cm4gJ1RoZSBmaWxlaW5mbyBleHRlbnNpb25zIGRvIG5vdCBhcHBlYXIgdG8gYmUgYXZhaWxhYmxlLic7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX0VYVF9NWVNRTDoKICAgICAgICAgICAgcmV0dXJuICdXZSBjb3VsZCBub3QgZmluZCBhIHN1aXRhYmxlIGRhdGFiYXNlIGRyaXZlci4nOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9NRDU6CiAgICAgICAgICAgIHJldHVybiAnVGhlIG1kNSBmdW5jdGlvbiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYXZhaWxhYmxlJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfU0hBMToKICAgICAgICAgICAgcmV0dXJuICdUaGUgc2hhMSBmdW5jdGlvbiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYXZhaWxhYmxlJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfSlNPTjoKICAgICAgICAgICAgcmV0dXJuICdUaGUganNvbiBmdW5jdGlvbnMgZG8gbm90IGFwcGVhciB0byBiZSBhdmFpbGFibGUnOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9PUEVOQkFTRURJUjoKICAgICAgICAgICAgcmV0dXJuICdPcGVuIGJhc2VkaXIgaXMgZW5hYmxlZC4uLiB0aGlzIGlzIHByb2JsZW1hdGljJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfU0VTU0lPTkNPT0tJRVM6CiAgICAgICAgICAgIHJldHVybiAnU2Vzc2lvbiBjb29raWVzIGFyZSBub3QgZW5hYmxlZC4uLiB0aGlzIHdpbGwgY2F1c2UgcHJvYmxlbXMnOwogICAgICAgIGNhc2Ugc2VsZjo6VEVTVF9TRVNTSU9OU0FWRToKICAgICAgICAgICAgcmV0dXJuICdUaGUgc2Vzc2lvbiBzYXZlIHBhdGggZG9lcyBub3QgYXBwZWFyIHRvIGJlIHdyaXRhYmxlLic7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX1NBRkVNT0RFOgogICAgICAgICAgICByZXR1cm4gJ1NhZmUgbW9kZSBpcyBlbmFibGVkLi4uIHdlIGNhbm5vdCBjb250aW51ZSc7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX0ZJTEVVUExPQURTOgogICAgICAgICAgICByZXR1cm4gJ0ZpbGUgdXBsb2FkcyBhcmUgbm90IGVuYWJsZWQuICBUaGlzIGlzIHByb2JsZW1hdGljJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfRVhUX1hNTDoKICAgICAgICAgICAgcmV0dXJuICdYTUwgRXh0ZW5zaW9ucyBhcmUgbm90IGVuYWJvZWQuJzsKICAgICAgICBjYXNlIHNlbGY6OlRFU1RfRklMRUdFVDoKICAgICAgICAgICAgcmV0dXJuICdUaGUgZmlsZV9nZXRfY29udGVudHMgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSc7CiAgICAgICAgY2FzZSBzZWxmOjpURVNUX0ZJTEVQVVQ6CiAgICAgICAgICAgIHJldHVybiAnVGhlIGZpbGVfcHV0X2NvbnRlbnRzIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuJzsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gJ1Vua25vd24gRXJyb3I6ICcuJGNvZGU7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZmFpbGVkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9yZXN1bHRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0KCkKICAgIHsKICAgICAgICAkZmFpbGVkID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X3Rlc3RzIGFzICR0ZXN0ICkgewogICAgICAgICAgICAkcmVzID0gJHRlc3QtPmV4ZWN1dGUoKTsKICAgICAgICAgICAgaWYoICEkcmVzICkgewogICAgICAgICAgICAgICAgJGZhaWxlZFtdID0gJHRlc3QtPmdldF9sYWJlbCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCBjb3VudCgkZmFpbGVkKSApIHsKICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHRzID0gJGZhaWxlZDsKICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgIH0KICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKPD9waHAKCm5hbWVzcGFjZSBTbmFwc2hvdE1nclxwaGFyOwoKZnVuY3Rpb24gdGVzdF9kYmNvbmZpZygkZGJjb25maWcpCnsKICAgIGlmKCAhaXNfYXJyYXkoJGRiY29uZmlnKSApIHJldHVybiBGQUxTRTsKICAgICRrZXlzID0gYXJyYXkoJ2RibXMnLCdkYl9ob3N0bmFtZScsJ2RiX3VzZXJuYW1lJywnZGJfcGFzc3dvcmQnLCdkYl9uYW1lJyk7CiAgICAka2V5czIgPSBhcnJheV9rZXlzKCRkYmNvbmZpZyk7CiAgICBmb3JlYWNoKCAka2V5cyBhcyAka2V5ICkgewogICAgICAgIGlmKCAhaW5fYXJyYXkoJGtleSwka2V5czIpICkgcmV0dXJuIEZBTFNFOwogICAgfQogICAgcmV0dXJuIFRSVUU7Cn0KCmZ1bmN0aW9uIHRlc3RfZGJfY29ubmVjdCgkZGJjb25maWcpCnsKICAgIGlmKCAhdGVzdF9kYmNvbmZpZygkZGJjb25maWcpICkgcmV0dXJuIEZBTFNFOwoKICAgICRvdXQgPSBudWxsOwogICAgc3dpdGNoKCAkZGJjb25maWdbJ2RibXMnXSApIHsKICAgIGNhc2UgJ215c3FsJzoKICAgICAgICBpZiggIWZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpICkgcmV0dXJuIEZBTFNFOwogICAgICAgICRvdXQgPSBteXNxbF9jb25uZWN0KCRkYmNvbmZpZ1snZGJfaG9zdG5hbWUnXSwkZGJjb25maWdbJ2RiX3VzZXJuYW1lJ10sJGRiY29uZmlnWydkYl9wYXNzd29yZCddLCRkYmNvbmZpZ1snZGJfbmFtZSddKTsKICAgICAgICBpZiggISRvdXQgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnbXlzcWxpJzoKICAgICAgICBpZiggIWZ1bmN0aW9uX2V4aXN0cygnbXlzcWxpX2Nvbm5lY3QnKSApIHJldHVybiBGQUxTRTsKICAgICAgICAkb3V0ID0gbXlzcWxpX2Nvbm5lY3QoJGRiY29uZmlnWydkYl9ob3N0bmFtZSddLCRkYmNvbmZpZ1snZGJfdXNlcm5hbWUnXSwkZGJjb25maWdbJ2RiX3Bhc3N3b3JkJ10sJGRiY29uZmlnWydkYl9uYW1lJ10pOwogICAgICAgIGlmKCAhJG91dCApIHJldHVybiBGQUxTRTsKICAgICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICByZXR1cm4gJG91dDsKfQoKZnVuY3Rpb24gdGVzdF9kYl9lbXB0eSgkaGFuZGxlLCRkYmNvbmZpZykKewogICAgaWYoICF0ZXN0X2RiY29uZmlnKCRkYmNvbmZpZykgKSByZXR1cm4gRkFMU0U7CgogICAgJG91dCA9IG51bGw7CiAgICAkc3FsID0gJ1NIT1cgVEFCTEVTJzsKICAgIHN3aXRjaCggJGRiY29uZmlnWydkYm1zJ10gKSB7CiAgICBjYXNlICdteXNxbCc6CiAgICAgICAgaWYoICgkcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRoYW5kbGUsJHNxbCkpICkgewogICAgICAgICAgICAkbnRhYmxlcyA9IG15c3FsaV9udW1fcm93cygkcmVzdWx0KTsKICAgICAgICAgICAgaWYoICRudGFibGVzID4gMCApIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBGQUxTRTsKCiAgICBjYXNlICdteXNxbGknOgogICAgICAgIGlmKCAoJHJlc3VsdCA9IG15c3FsaV9xdWVyeSgkaGFuZGxlLCRzcWwpKSApIHsKICAgICAgICAgICAgJG50YWJsZXMgPSBteXNxbGlfbnVtX3Jvd3MoJHJlc3VsdCk7CiAgICAgICAgICAgIGlmKCAkbnRhYmxlcyA+IDAgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgIH0KICAgICAgICByZXR1cm4gRkFMU0U7CgogICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9Cn0KCmZ1bmN0aW9uIGRiX2ltcG9ydCgkZGJjb25maWcsJGRiZmlsZSkKewogICAgLy8gdGhpcyB1c2VzIHNoZWxsIGNvbW1hbmRzLgogICAgJGNvbW1hbmQ9Im15c3FsIC0taG9zdD17JGRiY29uZmlnWydkYl9ob3N0bmFtZSddfSAtLXVzZXI9eyRkYmNvbmZpZ1snZGJfdXNlcm5hbWUnXX0gLS1wYXNzd29yZD17JGRiY29uZmlnWydkYl9wYXNzd29yZCddfSB7JGRiY29uZmlnWydkYl9uYW1lJ119IDwgeyRkYmZpbGV9IjsKICAgIGV4ZWMoJGNvbW1hbmQsJG91dHB1dD1hcnJheSgpLCR3b3JrZWQpOwogICAgaWYoICR3b3JrZWQgPT0gMCApIHJldHVybiBUUlVFOwogICAgcHJpbnRfcigkb3V0cHV0KTsgZGllKCk7IC8vIGRlYnVnLgogICAgcmV0dXJuIEZBTFNFOwp9Cj8+PD9waHAKCmluY2x1ZGVfb25jZShfX0RJUl9fLicvY2xhc3Muc2VjdXJlX2luaV9maWxlLnBocCcpOwoKZnVuY3Rpb24gZW5kc3dpdGgoICRzdHIsICRzdWIgKQp7CglyZXR1cm4gKCBzdWJzdHIoICRzdHIsIHN0cmxlbiggJHN0ciApIC0gc3RybGVuKCAkc3ViICkgKSA9PSAkc3ViICk7Cn0KCmZ1bmN0aW9uIHN0YXJ0c3dpdGgoICRzdHIsICRzdWIgKQp7CglyZXR1cm4gKCBzdWJzdHIoICRzdHIsIDAsIHN0cmxlbiggJHN1YiApICkgPT0gJHN1YiApOwp9CgpmdW5jdGlvbiBjbHMoKQp7CiAgICBwcmludCBjaHIoMjcpIC4gIlsySiIgLiBjaHIoMjcpIC4gIls7SCI7Cn0KCmZ1bmN0aW9uIG91dHB1dCgkc3RyLCRuZXdsaW5lID0gVFJVRSkKewogICAgJHN0ciA9IHRyaW0oJHN0cik7CiAgICBpZiggISRzdHIgKSByZXR1cm47CiAgICBpZiggJG5ld2xpbmUgKSB7CiAgICAgICAgaWYoICFlbmRzd2l0aCgkc3RyLCJcbiIpICkgJHN0ciAuPSAiXG4iOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYoICFlbmRzd2l0aCgkc3RyLCcgJykgKSAkc3RyIC49ICcgJzsKICAgIH0KICAgIGVjaG8gJHN0cjsKfQoKZnVuY3Rpb24gZXJyb3IoJG1zZywkcHJlZml4ID0gVFJVRSwkbmV3bGluZSA9IFRSVUUpCnsKICAgICRtc2cgPSAoc3RyaW5nKSRtc2c7CiAgICBpZiggISRtc2cgKSByZXR1cm47CgogICAgaWYoICRwcmVmaXggKSAkbXNnID0gIkVSUk9SOiAiLiRtc2c7CiAgICBpZiggJG5ld2xpbmUgJiYgIWVuZHN3aXRoKCRtc2csIlxuIikgKSAkbXNnIC49ICJcbiI7CiAgICBmd3JpdGUoU1RERVJSLCRtc2cpOwp9CgpmdW5jdGlvbiBuZXdsaW5lKCkKewogICAgZWNobyAiXG4iOwp9CgpmdW5jdGlvbiBhc2tfYm9vbCgkcHJvbXB0LCRhY2NlcHQgPSAtMSwkYXV0b3Byb21wdCA9IFRSVUUpCnsKICAgIHdoaWxlKCAxICkgewogICAgICAgIG5ld2xpbmUoKTsKICAgICAgICBpZiggJGF1dG9wcm9tcHQgKSAkcHJvbXB0IC49ICcgW1kvbl06JzsKICAgICAgICBvdXRwdXQoJHByb21wdCxGQUxTRSk7CiAgICAgICAgJGluID0gZmdldHMoU1RESU4pOwogICAgICAgICRpbiA9IHRyaW0oJGluKTsKICAgICAgICBpZiggISRpbiApIHsKICAgICAgICAgICAgaWYoICRhY2NlcHQgPT0gRkFMU0UgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIGlmKCAkYWNjZXB0ID09IFRSVUUgKSByZXR1cm4gVFJVRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmKCAkaW4gPT0gJ2V4aXQnIHx8ICRpbiA9PSAncXVpdCcgKSBleGl0OwogICAgICAgICAgICAkaW4gPSBzdHJ0b2xvd2VyKCRpbik7CiAgICAgICAgICAgIGlmKCAkaW4gPT0gJzEnIHx8ICRpbiA9PSAneScgKSByZXR1cm4gVFJVRTsKICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gYXNrX29wdGlvbigkcHJvbXB0LCRvcHRpb25zKQp7CiAgICB3aGlsZSggMSApIHsKICAgICAgICBuZXdsaW5lKCk7CiAgICAgICAgb3V0cHV0KCRwcm9tcHQsRkFMU0UpOwogICAgICAgICRpbiA9IHRyaW0oZmdldHMoU1RESU4pKTsKICAgICAgICBpZiggJGluICYmIGluX2FycmF5KCRpbixhcnJheSgncScsJ3F1aXQnLCdleGl0JykpICkgZXhpdDsKICAgICAgICBpZiggJGluICYmIGluX2FycmF5KCRpbiwkb3B0aW9ucykgKSByZXR1cm4gJGluOwogICAgfQogICAgZXJyb3IoJ1BsZWFzZSBlbnRlciBhIHZhbGlkIG9wdGlvbicpOwp9CgpmdW5jdGlvbiBhc2tfc3RyaW5nX3JlcXVpcmVkKCRwcm9tcHQsJGVycnN0ciA9IG51bGwpCnsKICAgIHdoaWxlKCAxICkgewogICAgICAgIG5ld2xpbmUoKTsKICAgICAgICBvdXRwdXQoJHByb21wdCxGQUxTRSk7CiAgICAgICAgJHN0ciA9IGZnZXRzKFNURElOKTsKICAgICAgICAkc3RyID0gdHJpbSgkc3RyKTsKICAgICAgICBpZiggISRzdHIgKSB7CiAgICAgICAgICAgIGlmKCAhJGVycm9yc3RyICkgJGVycm9yc3RyID0gJ0ludmFsaWQgUmVzcG9uc2UnOwogICAgICAgICAgICBlcnJvcigkZXJyb3JzdHIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmKCAkc3RyID09ICdxJyB8fCAkc3RyID09ICdleGl0JyB8fCAkc3RyID09ICdxdWl0JyApIGV4aXQ7CiAgICAgICAgICAgIHJldHVybiAkc3RyOwogICAgICAgIH0KICAgIH0KfQoKLy8vLy8vLy8vLy8vLy8vLy8vLwoKZnVuY3Rpb24gaXNfc25hcHNob3RtZ3IoJGZpbGVuYW1lKQp7CiAgICAkZmlsZW5hbWUgPSB0cmltKCRmaWxlbmFtZSk7CiAgICBpZiggISRmaWxlbmFtZSApIHJldHVybiBGQUxTRTsKCiAgICAkbG93ZXIgPSBzdHJ0b2xvd2VyKCRmaWxlbmFtZSk7CiAgICBpZiggIWVuZHN3aXRoKCRmaWxlbmFtZSwnLnppcCcpICkgUkVUVVJOIEZBTFNFOwoKICAgICRhcmNoID0gbmV3IFxaaXBBcmNoaXZlOwogICAgaWYoICgkcmVzID0gJGFyY2gtPm9wZW4oJGZpbGVuYW1lKSkgIT09IFRSVUUgKSB7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgICRpbmlfdGV4dCA9ICRhcmNoLT5nZXRGcm9tTmFtZSgndG1wLy5zbmFwc2hvdG1ncicpOwogICAgaWYoICEkaW5pX3RleHQgKSByZXR1cm4gRkFMU0U7CgogICAgJGR1bXBmaWxlID0gJGFyY2gtPmdldEZyb21OYW1lKCd0bXAvX19teXNxbGR1bXAuc3FsJyk7CiAgICBpZiggISRkdW1wZmlsZSApIHJldHVybiBGQUxTRTsKCiAgICB0cnkgewogICAgICAgICRpbmkgPSBuZXcgXFNuYXBzaG90TWdyXHBoYXJcc2VjdXJlX2luaV9maWxlKCk7CiAgICAgICAgJGluaS0+cGFyc2UoJGluaV90ZXh0LGZhbHNlKTsKICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIGRpZSgkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgICByZXR1cm4gVFJVRTsKfQoKZnVuY3Rpb24gY29weV9hcmNoZmlsZV90b190bXAoXFppcEFyY2hpdmUgJGFyY2gsJG5hbWUpCnsKICAgICRuYW1lID0gdHJpbSgkbmFtZSk7CiAgICBpZiggISRuYW1lICkgcmV0dXJuOwoKICAgICRkaXIgPSBzeXNfZ2V0X3RlbXBfZGlyKCk7CiAgICBpZiggISRkaXIgKSB7CiAgICAgICAgZXJyb3IoJ0NvdWxkIG5vdCBnZXQgc3lzdGVtIHRlbXBvcmFyeSBkaXJlY3RvcnkuLi4gZXhpdGluZycpOwogICAgICAgIGV4aXQoMSk7CiAgICB9CgogICAgJGZuID0gdGVtcG5hbSgkZGlyLCdjZ3MnKTsKICAgICRkYXRhID0gJGFyY2gtPmdldEZyb21OYW1lKCRuYW1lKTsKICAgIGlmKCAkZGF0YSApIHsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkZm4sJGRhdGEpOwogICAgICAgIHJldHVybiAkZm47CiAgICB9Cn0KCmZ1bmN0aW9uIHdyaXRlX2NvbmZpZ19waHAoJGZpbGVuYW1lLCRkYXRhKQp7CiAgICAkbm93ID0gc3RyZnRpbWUoJyV4Jyk7CiAgICAkb3V0ID0gIjw/cGhwXG4vLyBHZW5lcmF0ZWQgYnkgU25hcHNob3RNZ3ItUmVzdG9yZSBvbiB7JG5vd31cbiI7CiAgICAkZm10ID0gIlwkY29uZmlnWyclcyddID0gJyVzJztcbiI7CiAgICBmb3JlYWNoKCAkZGF0YSBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgJG91dCAuPSBzcHJpbnRmKCRmbXQsJGtleSwkdmFsKTsKICAgIH0KICAgICRvdXQgLj0gIlxuIjsKICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlbmFtZSwkb3V0KTsKfTw/cGhwCgpuYW1lc3BhY2UgU25hcHNob3RNZ3JccGhhcjsKCmNsYXNzIHNlY3VyZV9pbmlfZmlsZQp7CiAgICBwcml2YXRlICRfZmlsZW5hbWU7CiAgICBwcml2YXRlICRfZmlyc3Rfc2VjdGlvbiA9IFRSVUU7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRmaWxlbmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnNldF9maWxlbmFtZSgkZmlsZW5hbWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZmlsZW5hbWUoJGZpbGVuYW1lKQogICAgewogICAgICAgICR0aGlzLT5fZmlsZW5hbWUgPSB0cmltKCRmaWxlbmFtZSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc29ydF9kYXRhKCRkYXRhKQogICAgewogICAgICAgICRvdXQgPSAkZGF0YTsKICAgICAgICBmb3JlYWNoKCAkb3V0IGFzICRrZXkgPT4gJiR2YWwgKSB7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmFsKSApICR2YWwgPSAkdGhpcy0+X3NvcnRfZGF0YSgkdmFsKTsKICAgICAgICB9CiAgICAgICAga3NvcnQoJG91dCk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHJvdGVjdGVkIGZpbmFsIGZ1bmN0aW9uIF9jYWxjX2NoZWNrc3VtKCRkYXRhKQogICAgewogICAgICAgICRzb3J0ZWQgPSAkdGhpcy0+X3NvcnRfZGF0YSgkZGF0YSk7CiAgICAgICAgJHNhbHQgPSAnZXJ3ZXJpZGZhc2RzIG5kZmFzZGZhc2hkZmFzZDkzNDk4KiggZGlmYW91ZGZhc2RmYWFkZiBzZGYwYWRmYTEyMyknOyAvLyBqdXN0IHNvbWUgcmFuZG9tIGNoYXJhY3RlcnMKICAgICAgICAkc2lnID0gbWQ1KCRzYWx0LnNlcmlhbGl6ZSgkc29ydGVkKSk7CiAgICAgICAgcmV0dXJuICRzaWc7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF93cml0ZV9pbmlfc2VjdGlvbigkc2VjdGlvbikKICAgIHsKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICBpZiggISR0aGlzLT5fZmlyc3Rfc2VjdGlvbiApIHsKICAgICAgICAgICAgJHRoaXMtPl9maXJzdF9zZWN0aW9uID0gRkFMU0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkb3V0IC49ICJcbiI7CiAgICAgICAgfQoKICAgICAgICAkb3V0IC49ICdbJy50cmltKCRzZWN0aW9uKS4iXVxuIjsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3dyaXRlX2luaV92YWwoJGtleSwkdmFsKQogICAgewogICAgICAgICRvdXQgPSBudWxsOwogICAgICAgIC8vIEB0b2RvIGNoZWNrIGZvciBpbnZhbGlkIGNoYXJzIGluIHRoZSBrZXkgYW5kIHRocm93IGFuIGV4Y2VwdGlvbgogICAgICAgICRua2V5ID0gdHJpbSgka2V5KTsKICAgICAgICAkbnZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgaWYoICEkbmtleSApIHJldHVybjsKICAgICAgICAkdHlwZSA9IGdldHR5cGUoJHZhbCk7CiAgICAgICAgaWYoICR0eXBlID09ICdvYmplY3QnICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignT2JqZWN0cyBjYW5ub3QgYmUgc3RvcmVkJyk7CgogICAgICAgICRmbmQgPSAwOwogICAgICAgICRiYWRjaGFycyA9IGFycmF5KCJcbiIsIlxyIiwiOyIsIiciLCciJyk7CiAgICAgICAgZm9yZWFjaCggJGJhZGNoYXJzIGFzICRjaCApIHsKICAgICAgICAgICAgaWYoIHN0cnBvcygkbnZhbCwkY2gpICE9PSBGQUxTRSApIHsKICAgICAgICAgICAgICAgICRmbmQgPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoICRmbmQgKSB7CiAgICAgICAgICAgIC8vIHRoZXJlIGFyZSBiYWQgY2hhcmFjdHJzLiBnb3R0YSBlc2NhcGUgdGhlIGRvdWJsZSBxdW90ZXMKICAgICAgICAgICAgJG52YWwgPSBzdHJfcmVwbGFjZSgnIicsJ1wiJywkbnZhbCk7CiAgICAgICAgfQogICAgICAgICRudmFsID0gIiciLiR0eXBlLid8OnwnLiRudmFsLiInIjsKICAgICAgICAkb3V0IC49IHNwcmludGYoIiVzID0gJXNcbiIsJGtleSwkbnZhbCk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF93cml0ZV9maWxlX2hlYWRlcigkY2hlY2tzdW0pCiAgICB7CiAgICAgICAgJG91dCA9ICc7PD9waHAgZGllKCk7IC8qIFNJRz0nLiRjaGVja3N1bS4nICovID8+Jy4iXG4iOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfd3JpdGVfaW5pX2FycmF5KCRhcnIsJHNlY3Rpb24gPSBudWxsKQogICAgewogICAgICAgICRvdXQgPSBudWxsOwogICAgICAgICRzZWN0aW9uID0gdHJpbSgkc2VjdGlvbik7CiAgICAgICAgJGlzX2Fzc29jID0gKGFycmF5X2tleXMoJGFycikgIT09IHJhbmdlKDAsIGNvdW50KCRhcnIpIC0gMSkpOwoKICAgICAgICBpZiggJGlzX2Fzc29jICkgewogICAgICAgICAgICAvLyBwYXNzIG9uZSwgbm9ybWFsIHZhbHVlcwogICAgICAgICAgICBmb3JlYWNoKCAkYXJyIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHZhbCkgKSAkb3V0IC49ICR0aGlzLT5fd3JpdGVfaW5pX3ZhbCgka2V5LCR2YWwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAkb3V0ICkgewogICAgICAgICAgICAgICAgaWYoICEkc2VjdGlvbiApICRzZWN0aW9uID0gJ21haW4nOwogICAgICAgICAgICAgICAgJG91dCA9ICR0aGlzLT5fd3JpdGVfaW5pX3NlY3Rpb24oJHNlY3Rpb24pIC4gJG91dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gcGFzcyB0d28sIG5lc3RlZCBhcnJheXMKICAgICAgICAgICAgZm9yZWFjaCggJGFyciBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgICAgICBpZiggIWlzX2FycmF5KCR2YWwpICkgY29udGludWU7CiAgICAgICAgICAgICAgICBpZiggYXJyYXlfa2V5cygkdmFsKSAhPT0gcmFuZ2UoMCwgY291bnQoJHZhbCkgLSAxKSApIHsKICAgICAgICAgICAgICAgICAgICAvLyBhc3NvY2lhdGl2ZSBjaGlsZCBhcnJheQogICAgICAgICAgICAgICAgICAgICR0bXAgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmKCAkc2VjdGlvbiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICRzZWN0aW9uLiIgOiAka2V5IjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0bXAgPSAka2V5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkb3V0IC49ICR0aGlzLT5fd3JpdGVfaW5pX2FycmF5KCR2YWwsJHRtcCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWwgY2hpbGQgYXJyYXkKICAgICAgICAgICAgICAgICAgICAkb3V0IC49ICR0aGlzLT5fd3JpdGVfaW5pX2FycmF5KCR2YWwsJGtleSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmKCAhJHNlY3Rpb24gKSAkc2VjdGlvbiA9ICdtYWluJzsKICAgICAgICAgICAgZm9yKCAkaSA9IDAsICRuID0gY291bnQoJGFycik7ICRpIDwgJG47ICRpKysgKSB7CiAgICAgICAgICAgICAgICAkb3V0IC49ICR0aGlzLT5fd3JpdGVfaW5pX3ZhbCgkc2VjdGlvbi4nW10nLCRhcnJbJGldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuZXJhdGUoJGRhdGEpCiAgICB7CiAgICAgICAgJGNrc3VtID0gJHRoaXMtPl9jYWxjX2NoZWNrc3VtKCRkYXRhKTsKICAgICAgICAkb3V0ID0gJHRoaXMtPl93cml0ZV9maWxlX2hlYWRlcigkY2tzdW0pOwogICAgICAgICRvdXQgLj0gJHRoaXMtPl93cml0ZV9pbmlfYXJyYXkoJGRhdGEpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkZGF0YSwkZmlsZW5hbWUgPSBudWxsKQogICAgewogICAgICAgIGlmKCAhJGZpbGVuYW1lICkgJGZpbGVuYW1lID0gJHRoaXMtPl9maWxlbmFtZTsKICAgICAgICBpZiggISRmaWxlbmFtZSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignTm8gZmlsZW5hbWUgc3BlY2lmaWVkIHRvIGluc3RhbmNlIG9mICcuX19DTEFTU19fKTsKICAgICAgICAkZGlyID0gZGlybmFtZSgkdGhpcy0+X2ZpbGVuYW1lKTsKICAgICAgICBpZiggKGlzX2ZpbGUoJGZpbGVuYW1lKSAmJiAhaXNfd3JpdGFibGUoJHRoaXMtPl9maWxlbmFtZSkpIHx8ICFpc193cml0YWJsZSgkZGlyKSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJObyBwZXJtaXNzaW9uIHRvIHdyaXRlIHRvICIuJHRoaXMtPl9maWxlbmFtZSk7CiAgICAgICAgfQoKICAgICAgICAkZmggPSBmb3BlbigkZmlsZW5hbWUsJ3cnKTsKICAgICAgICBmd3JpdGUoJGZoLCR0aGlzLT5nZW5lcmF0ZSgpKTsKICAgICAgICBmY2xvc2UoJGZoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgkZGF0YSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPndyaXRlKCRkYXRhKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2NvbnZlcnRfdmFsdWVzKCRkYXRhKQogICAgewogICAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2goICRkYXRhIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR2YWwpICkgewogICAgICAgICAgICAgICAgJG91dFska2V5XSA9ICR0aGlzLT5fY29udmVydF92YWx1ZXMoJHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBsaXN0KCR0eXBlLCR2YWwpID0gZXhwbG9kZSgnfDp8JywkdmFsLDIpOwogICAgICAgICAgICAgICAgc3dpdGNoKCAkdHlwZSApIHsKICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOgogICAgICAgICAgICAgICAgICAgICRvdXRbJGtleV0gPSAoYm9vbCkgJHZhbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2ludGVnZXInOgogICAgICAgICAgICAgICAgICAgICRvdXRbJGtleV0gPSAoaW50KSAkdmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAncmVhbCc6CiAgICAgICAgICAgICAgICBjYXNlICdmbG9hdCc6CiAgICAgICAgICAgICAgICBjYXNlICdkb3VibGUnOgogICAgICAgICAgICAgICAgICAgICRvdXRbJGtleV0gPSAoZmxvYXQpICR2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkb3V0WyRrZXldID0gKHN0cmluZykgJHZhbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2UoJGNvbnRlbnRzLCR2ZXJpZnkgPSBUUlVFKQogICAgewogICAgICAgIGlmKCAkdmVyaWZ5ICkgZGllKCdvb3BzJyk7CiAgICAgICAgLy8gZ2V0IHRoZSBmaXJzdCBsaW5lCiAgICAgICAgJGZpcnN0X2xpbmUgPSBleHBsb2RlKCJcbiIsJGNvbnRlbnRzLDIpWzBdOwogICAgICAgICRmaWxlX3NpZyA9IG51bGw7CiAgICAgICAgJG1hdGNoZXMgPSBudWxsOwogICAgICAgIHByZWdfbWF0Y2goJy9ccytTSUc9KFswLTlBLVphLXpdezMyfSlccysvJywkZmlyc3RfbGluZSwkbWF0Y2hlcyk7CiAgICAgICAgaWYoICRtYXRjaGVzWzFdICkgJGZpbGVfc2lnID0gJG1hdGNoZXNbMV07CiAgICAgICAgdW5zZXQoJG1hdGNoZXMpOwoKICAgICAgICAkcmF3X2RhdGEgPSBwYXJzZV9pbmlfc3RyaW5nKCRjb250ZW50cyxUUlVFKTsKCiAgICAgICAgLy8gd2UgaGF2ZSBhIGZsYXQgbGlzdCBvZiBzZWN0aW9ucywgZWFjaCBzZWN0aW9uIGlzIGFuIGFycmF5CiAgICAgICAgLy8gdGhlIHRvcCBzZWN0aW9uIHNob3VsZCBub3QgaGF2ZSBhbnkgbmVzdGluZwogICAgICAgICRhbGxfa2V5cyA9IGFycmF5X2tleXMoJHJhd19kYXRhKTsKICAgICAgICAka2V5MCA9ICRhbGxfa2V5c1swXTsKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcgOiAnLCRrZXkwKTsKICAgICAgICBpZiggJHBhcnRzWzBdICE9ICRrZXkwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIGZpbGUgZm9ybWF0LCBmb3VuZCBuZXN0ZWQgY2hpbGQgYXMgZmlyc3QgZWxlbWVudCcpOwoKICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkcmF3X2RhdGEgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcgOiAnLCRrZXkpOwogICAgICAgICAgICAvL2lmKCAkcGFydHNbMF0gIT0gJGtleTAgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgZmlsZSBmb3JtYXQnKTsKCiAgICAgICAgICAgIGlmKCBjb3VudCgkcGFydHMpID09IDEgKSB7CiAgICAgICAgICAgICAgICAkb3V0WyRrZXldID0gJHRoaXMtPl9jb252ZXJ0X3ZhbHVlcygkdmFsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICR0bXAgPSYgJG91dDsKICAgICAgICAgICAgICAgICRpID0gbnVsbDsKICAgICAgICAgICAgICAgIGZvciggJGkgPSAxLCAkbiA9IGNvdW50KCRwYXJ0cykgLSAxOyAkaSA8ICRuOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgICRwYXJ0ID0gJHBhcnRzWyRpXTsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0bXBbJHBhcnRdKSApICR0bXBbJHBhcnRdID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkdG1wID0mICR0bXBbJHBhcnRdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRtcFskcGFydHNbJGldXSA9ICR0aGlzLT5fY29udmVydF92YWx1ZXMoJHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCBjb3VudCgkb3V0KSA9PSAxICYmIGlzc2V0KCRvdXRbJGtleTBdKSApIHsKICAgICAgICAgICAgJG91dCA9ICRvdXRbJGtleTBdOwogICAgICAgIH0KCiAgICAgICAgaWYoICR2ZXJpZnkgKSB7CiAgICAgICAgICAgICRjYWxjX3NpZyA9ICR0aGlzLT5fY2FsY19jaGVja3N1bSgkb3V0KTsKICAgICAgICAgICAgaWYoICRmaWxlX3NpZyAhPSAkY2FsY19zaWcgKSB0aHJvdyBuZXcgXFJhbmdlRXhjZXB0aW9uKCJJTkkgRmlsZSBzaWduYXR1cmUgZGlkIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBmaWxlIGNvbnRlbnRzIik7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRmaWxlbmFtZSA9IG51bGwsJHZlcmlmeSA9IFRSVUUpCiAgICB7CiAgICAgICAgaWYoICRmaWxlbmFtZSApICR0aGlzLT5zZXRfZmlsZW5hbWUoJGZpbGVuYW1lKTsKCiAgICAgICAgaWYoICFpc19maWxlKCR0aGlzLT5fZmlsZW5hbWUpIHx8ICFpc19yZWFkYWJsZSgkdGhpcy0+X2ZpbGVuYW1lKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbihzcHJpbnRmKCJGaWxlICVzIGNvdWxkIG5vdCBiZSByZWFkIiwkdGhpcy0+X2ZpbGVuYW1lKSk7CiAgICAgICAgJGNvbnRlbnRzID0gZmlsZV9nZXRfY29udGVudHMoJHRoaXMtPl9maWxlbmFtZSk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZSgkY29udGVudHMsJHZlcmlmeSk7CiAgICB9Cn0KPD9waHAKCm5hbWVzcGFjZSBTbmFwc2hvdE1nclxwaGFyOwoKYWJzdHJhY3QgY2xhc3MgdGVzdF9iYXNlCnsKICAgIHByb3RlY3RlZCAkX2xhYmVsOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbGFiZWwoKSB7IHJldHVybiAkdGhpcy0+X2xhYmVsOyB9CiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSgpOwp9CgpjbGFzcyBmYWxzZV90ZXN0IGV4dGVuZHMgdGVzdF9iYXNlCnsKICAgIHByaXZhdGUgJF92YWw7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRsYWJlbCwkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fbGFiZWwgPSB0cmltKCRsYWJlbCk7CiAgICAgICAgJHRoaXMtPl92YWwgPSAoYm9vbCkgJHZhbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fdmFsID09IEZBTFNFOwogICAgfQp9CgpjbGFzcyB0cnVlX3Rlc3QgZXh0ZW5kcyB0ZXN0X2Jhc2UKewogICAgcHJpdmF0ZSAkX3ZhbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9sYWJlbCA9IHRyaW0oJGxhYmVsKTsKICAgICAgICAkdGhpcy0+X3ZhbCA9IChib29sKSAkdmFsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl92YWwgPT0gVFJVRTsKICAgIH0KfQoKY2xhc3MgZXh0ZW5zaW9uX3Rlc3QgZXh0ZW5kcyB0ZXN0X2Jhc2UKewogICAgcHJpdmF0ZSAkX2V4dDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLCRleHQpCiAgICB7CiAgICAgICAgJHRoaXMtPl9sYWJlbCA9IHRyaW0oJGxhYmVsKTsKICAgICAgICAkdGhpcy0+X2V4dCA9IHRyaW0oJGV4dCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKQogICAgewogICAgICAgIHJldHVybiBleHRlbnNpb25fbG9hZGVkKCR0aGlzLT5fZXh0KTsKICAgIH0KfQoKY2xhc3MgbWludmVyc2lvbl90ZXN0IGV4dGVuZHMgdGVzdF9iYXNlCnsKICAgIHByaXZhdGUgJF9taW52YWw7CiAgICBwcml2YXRlICRfdmFsOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbGFiZWwsJG1pbnZhbCwkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fbGFiZWwgPSB0cmltKCRsYWJlbCk7CiAgICAgICAgJHRoaXMtPl9taW52YWwgPSB0cmltKCRtaW52YWwpOwogICAgICAgICR0aGlzLT5fdmFsID0gdHJpbSgkdmFsKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICh2ZXJzaW9uX2NvbXBhcmUoJHRoaXMtPl92YWwsJHRoaXMtPl9taW52YWwpID49IDApOwogICAgfQp9CgpjbGFzcyBmdW5jdGlvbl90ZXN0IGV4dGVuZHMgdGVzdF9iYXNlCnsKICAgIHByaXZhdGUgJF9mbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLCRmbikKICAgIHsKICAgICAgICAkdGhpcy0+X2xhYmVsID0gdHJpbSgkbGFiZWwpOwogICAgICAgICR0aGlzLT5fZm4gPSB0cmltKCRmbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbl9leGlzdHMoJHRoaXMtPl9mbik7CiAgICB9Cn0KCmNsYXNzIHNpbXBsZV90ZXN0IGV4dGVuZHMgdGVzdF9iYXNlCnsKICAgIHByaXZhdGUgJF9mbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLGNhbGxhYmxlICRmbikKICAgIHsKICAgICAgICAkdGhpcy0+X2xhYmVsID0gdHJpbSgkbGFiZWwpOwogICAgICAgICR0aGlzLT5fZm4gPSAkZm47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKQogICAgewogICAgICAgICR0bXAgPSAkdGhpcy0+X2ZuOwogICAgICAgIHJldHVybiAkdG1wKCk7CiAgICB9Cn0KCmNsYXNzIGRpcl93cml0YWJsZV90ZXN0IGV4dGVuZHMgdGVzdF9iYXNlCnsKICAgIHByaXZhdGUgJF9kaXI7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRsYWJlbCwkZGlyKQogICAgewogICAgICAgICR0aGlzLT5fbGFiZWwgPSB0cmltKCRsYWJlbCk7CiAgICAgICAgJHRoaXMtPl9kaXIgPSB0cmltKCRkaXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gKGlzX2RpcigkdGhpcy0+X2RpcikgJiYgaXNfd3JpdGFibGUoJHRoaXMtPl9kaXIpKTsKICAgIH0KfQoKY2xhc3MgZGlyX2VtcHR5X3Rlc3QgZXh0ZW5kcyB0ZXN0X2Jhc2UKewogICAgcHJpdmF0ZSAkX2RpcjsKICAgIHByaXZhdGUgJF9leGNsdWRlczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGxhYmVsLCRkaXIsJGV4Y2x1ZGVzID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2xhYmVsID0gJGxhYmVsOwogICAgICAgICR0aGlzLT5fZGlyID0gJGRpcjsKICAgICAgICAkdGhpcy0+X2V4Y2x1ZGVzID0gJGV4Y2x1ZGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICAkZmlsZXMxID0gZ2xvYigkdGhpcy0+X2Rpci4nLy4/PyonKTsKICAgICAgICAkZmlsZXMyID0gZ2xvYigkdGhpcy0+X2Rpci4nLyonKTsKICAgICAgICAkZmlsZXMgPSBhcnJheV9tZXJnZSgkZmlsZXMxLCRmaWxlczIpOwogICAgICAgIGZvcmVhY2goICRmaWxlcyBhcyAkZmlsZSApIHsKICAgICAgICAgICAgJGJuID0gc3RyX3JlcGxhY2UoJHRoaXMtPl9kaXIuJy8nLCcnLCRmaWxlKTsKICAgICAgICAgICAgb3V0cHV0KCd0ZXN0OiAnLiRibik7CiAgICAgICAgICAgIGlmKCAhY291bnQoJHRoaXMtPl9leGNsdWRlcykgfHwgIWluX2FycmF5KCRibiwkdGhpcy0+X2V4Y2x1ZGVzKSApIHJldHVybiBGQUxTRTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFRSVUU7CiAgICB9Cn08P3BocAo/Pgo8aHRtbD4KICA8aGVhZD4KICAgIDx0aXRsZT5TbmFwc2hvdE1nciAtIFdlYiBJbnRlcmZhY2UgVW5zdXBwb3J0ZWQ8L3RpdGxlPgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxoMT5TbmFwc2hvdE1nciAtIFdlYiBJbnRlcmZhY2UgVW5zdXBwb3J0ZWQhPC9oMT4KICAgIDxoMyBzdHlsZT0iY29sb3I6IHJlZDsiPlNvcnJ5ITwvaDM+CiAgICA8cCBzdHlsZT0iY29sb3I6IHJlZDsiPlRoZSBTbmFwc2hvdE1nciByZXN0b3JlIHNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IGEgd2ViIGludGVyZmFjZSBhdCB0aGlzIHRpbWUuPC9wPgoKICAgIDxwPllvdSBtYXkgYmUgYWJsZSB0byBzcG9uc29yIGl0IHRob3VnaC4uLiBwbGVhc2UgY29udGFjdCBtZSB0byBzZWUgYWJvdXQgc3BvbnNvcmluZyBhIHdlYiBiYXNlZCByZXN0b3JlIHBhY2thZ2UuPC9wPgogIDxib2R5Pgo8L2h0bWw+Cjw/cGhwCkB1bmxpbmsoJ1NuYXBzaG90TWdyLVJlc3RvcmUucGhwJyk7CiRwaGFyMiA9IG5ldyBQaGFyKCdTbmFwc2hvdE1nci1SZXN0b3JlLnBoYXInLCAwLCAnU25hcHNob3RNZ3ItUmVzdG9yZS5waGFyJyk7Ci8vIGFkZCBhbGwgZmlsZXMgaW4gdGhlIHByb2plY3QsIG9ubHkgaW5jbHVkZSBwaHAgZmlsZXMKJHBoYXIyLT5idWlsZEZyb21EaXJlY3RvcnkoZGlybmFtZShfX0ZJTEVfXykpOwokcGhhcjItPnNldFN0dWIoJHBoYXIyLT5jcmVhdGVEZWZhdWx0U3R1YignY2xpLnBocCcsICd3d3cucGhwJykpOwpyZW5hbWUoJ1NuYXBzaG90TWdyLVJlc3RvcmUucGhhcicsJ1NuYXBzaG90TWdyLVJlc3RvcmUucGhwJyk7CnesCWLysgsH6QXfvIklKEAy1BgMAgAAAEdCTUI=]]></data>
	</file>
	<file>
	  <filename>/phar/www.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKPz4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+U25hcHNob3RNZ3IgLSBXZWIgSW50ZXJmYWNlIFVuc3VwcG9ydGVkPC90aXRsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8aDE+U25hcHNob3RNZ3IgLSBXZWIgSW50ZXJmYWNlIFVuc3VwcG9ydGVkITwvaDE+CiAgICA8aDMgc3R5bGU9ImNvbG9yOiByZWQ7Ij5Tb3JyeSE8L2gzPgogICAgPHAgc3R5bGU9ImNvbG9yOiByZWQ7Ij5UaGUgU25hcHNob3RNZ3IgcmVzdG9yZSBzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBhIHdlYiBpbnRlcmZhY2UgYXQgdGhpcyB0aW1lLjwvcD4KCiAgICA8cD5Zb3UgbWF5IGJlIGFibGUgdG8gc3BvbnNvciBpdCB0aG91Z2guLi4gcGxlYXNlIGNvbnRhY3QgbWUgdG8gc2VlIGFib3V0IHNwb25zb3JpbmcgYSB3ZWIgYmFzZWQgcmVzdG9yZSBwYWNrYWdlLjwvcD4KICA8Ym9keT4KPC9odG1sPg==]]></data>
	</file>
	<file>
	  <filename>/SnapshotMgr.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNuYXBzaG90TWdyCiMgQXV0aG9yOiBSb2xmIFRqYXNzZW5zIChjbXNjYW5iZXNpbXBsZS5vcmcpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIE1hZGUgU2ltcGxlIC0gUG93ZXIgZm9yIHRoZSBwcm9mZXNzaW9uYWwsIFNpbXBsaWNpdHkgZm9yIHRoZSBlbmQgdXNlci4KIyAoYykgMjAwNCAtIDIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIChjKSAyMDExIC0gMjAxOCBieSBUaGUgQ01TIE1hZGUgU2ltcGxlIERldmVsb3BtZW50IFRlYW0KIyAoYykgMjAxOCBhbmQgYmV5b25kIGJ5IFRoZSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zbmFwc2hvdG1ncgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIGZyb20gQ0dTbmFwc2hvdCBtb2R1bGUgYnkgUm9iZXJ0IENhbXBiZWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpmaW5hbCBjbGFzcyBTbmFwc2hvdE1nciBleHRlbmRzIENNU01TRXh0CnsKICAgIHByaXZhdGUgJF9zbmFwc2hvdGRpcjsKCiAgICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKSB7IHJldHVybiAkdGhpcy0+bGFuZygnZnJpZW5kbHluYW1lJyk7IH0KICAgIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IHJldHVybiAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb24nKTsgfQogICAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkgeyByZXR1cm4gJ3NpdGVhZG1pbic7IH0KICAgIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsgcmV0dXJuICdSb2xmIFRqYXNzZW5zJzsgfQogICAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7IHJldHVybiAnaW5mbyBbYXRdIGNtc2NhbmJlc2ltcGxlIFtkb3RdIG9yZyc7IH0KICAgIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsgcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NoYW5nZWxvZy50cGwnKTsgfQogICAgZnVuY3Rpb24gR2V0SGVscCgpIHsgcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2hlbHAudHBsJyk7IH0KICAgIGZ1bmN0aW9uIEdldFZlcnNpb24oKSB7IHJldHVybiAnMS4xJzsgfQogICAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7IHJldHVybiAnMi4yJzsgfQogICAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgeyByZXR1cm4gWyAnQ01TTVNFeHQnID0+ICcxLjAnIF07IH0KICAgIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyByZXR1cm4gVFJVRTsgfQogICAgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9CiAgICBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkgeyByZXR1cm4gVFJVRTsgfQogICAgZnVuY3Rpb24gTGF6eUxvYWRBZG1pbigpIHsgcmV0dXJuIFRSVUU7IH0KICAgIGZ1bmN0aW9uIElzQWRtaW5Pbmx5KCkgeyByZXR1cm4gVFJVRTsgfQogICAgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbiggJGV2ZW50bmFtZSApIHsgcmV0dXJuICR0aGlzLT5sYW5nKCdldmVudGRlc2MtJyAuICRldmVudG5hbWUpOyB9CiAgICBmdW5jdGlvbiBHZXRFdmVudEhlbHAoICRldmVudG5hbWUgKSB7IHJldHVybiAkdGhpcy0+bGFuZygnZXZlbnRoZWxwLScgLiAkZXZlbnRuYW1lKTsgfQoKCiAgICBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQogICAgewogICAgICAgICRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgJHRoaXMtPl9zbmFwc2hvdGRpciA9ICRjb25maWdbJ3Jvb3RfcGF0aCddIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICd1cGxvYWRzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnLl9zbmFwc2hvdG1ncic7CiAgICB9CgogICAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkgeyByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU25hcHNob3RNZ3InKTsgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplRnJvbnRlbmQoKQogICAgewogICAgICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc25hcHNob3QnLENMRUFOX1NUUklORyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEhhc0NhcGFiaWxpdHkoJGNhcGFiaWxpdHksICRwYXJhbXMgPSBhcnJheSgpKQogICAgewogICAgICAgIGlmKCAkY2FwYWJpbGl0eSA9PSAnY2xpY29tbWFuZHMnICkgcmV0dXJuIFRSVUU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jbGlfY29tbWFuZHMoICRhcHAgKQogICAgewogICAgICAgIGlmKCAhJGFwcCBpbnN0YW5jZW9mIFxDTVNNU1xDTElcQXBwICkgcmV0dXJuOwoKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICAkb3V0W10gPSBuZXcgXFNuYXBzaG90TWdyXENvbW1hbmRzXER1bXAoICR0aGlzLCAkYXBwICk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLy8gcmV0dXJuIHNuYXBzaG90IG5hbWUKICAgIHB1YmxpYyBmdW5jdGlvbiBDcmVhdGVTbmFwc2hvdCgpCiAgICB7CiAgICAgICAgJHNpdGVuYW1lID0gXGNtc19zaXRlcHJlZnM6OmdldCgnc2l0ZW5hbWUnLCdDTVNNUyBTaXRlJyk7CiAgICAgICAgJHNpdGVuYW1lID0gc3RydG9sb3dlcigkc2l0ZW5hbWUpOwogICAgICAgICRzaXRlbmFtZSA9IHN0cl9yZXBsYWNlKCRzaXRlbmFtZSwnICcsJy0nKTsKICAgICAgICAkc25hcHNob3RfbmFtZSA9ICdTbmFwc2hvdE1nci0nIC4gc3RyZnRpbWUoJyVZLSVtLSVkLSVILiVNJykgLiAnLScgLiRzaXRlbmFtZTsKCiAgICAgICAgLy8gc2V0IHRpbWVsaW1pdAogICAgICAgIC8vIHNldCBzaXRlZG93bgogICAgICAgICRzaXRlZG93bl9maWxlID0gVE1QX0NBQ0hFX0xPQ0FUSU9OIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdzaXRlZG93bi5odG1sJzsKICAgICAgICB0b3VjaCgkc2l0ZWRvd25fZmlsZSk7CgogICAgICAgIC8vIGNyZWF0ZSB0aGUgdG1wIG91dHB1dCBkaXJlY3RvcnkKICAgICAgICAkdG1wZGlyID0gVE1QX0NBQ0hFX0xPQ0FUSU9OIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICR0aGlzLT5HZXROYW1lKCk7CiAgICAgICAgQG1rZGlyKCR0bXBkaXIpOwoKICAgICAgICAvLyBkbyB0aGUgbXlzcWwgZHVtcCBpbnRvIHRtcC9jYWNoZQogICAgICAgICRkdW1wZmlsZSA9ICR0bXBkaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2R1bXAuc3FsJzsKICAgICAgICAkY29uZmlnID0gXENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPkdldENvbmZpZygpOwogICAgICAgICRkdW1wX29iaiA9IG5ldyBcU25hcHNob3RNZ3Jcc3BfbXlzcWxkdW1wOwogICAgICAgICRkdW1wX29iai0+aG9zdCA9ICRjb25maWdbJ2RiX2hvc3RuYW1lJ107CiAgICAgICAgJGR1bXBfb2JqLT51c2VyID0gJGNvbmZpZ1snZGJfdXNlcm5hbWUnXTsKICAgICAgICAkZHVtcF9vYmotPnBhc3N3b3JkID0gJGNvbmZpZ1snZGJfcGFzc3dvcmQnXTsKICAgICAgICAkZHVtcF9vYmotPmRiID0gJGNvbmZpZ1snZGJfbmFtZSddOwogICAgICAgICRkdW1wX29iai0+cHJlZml4ID0gJGNvbmZpZ1snZGJfcHJlZml4J107CiAgICAgICAgJGR1bXBfb2JqLT5zZXRfbmFtZXMgPSAkY29uZmlnWydzZXRfbmFtZXMnXTsKICAgICAgICAkb3V0ID0gJGR1bXBfb2JqLT5kdW1wKCk7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGR1bXBmaWxlLCRvdXQpOwoKICAgICAgICAvLyBnZW5lcmF0ZSB0aGUgaW50ZXJuYWwgdGFyCiAgICAgICAgLy8gLSBleGNsdWRlIHRtcCBmaWxlcyAoYnV0IGNyZWF0ZSB0aGUgZGlyZWN0b3JpZXMpCiAgICAgICAgLy8gLSBleHBsaWNpdGx5IGFkZCB0aGUgbXlzcWwgZHVtcAogICAgICAgICRmaWxlcyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAobmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IobmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yICgkY29uZmlnWydyb290X3BhdGgnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcjo6Q0hJTERfRklSU1QpIGFzICRpdCkgewogICAgICAgICAgICAkYWJzb2x1dGUgPSAkaXQtPmdldFBhdGhOYW1lKCk7CiAgICAgICAgICAgIGlmKCAkaXQtPklzRGlyKCkgKSBjb250aW51ZTsKICAgICAgICAgICAgJGFkZCA9IHRydWU7CiAgICAgICAgICAgIGlmKCBzdGFydHN3aXRoKCRhYnNvbHV0ZSxUTVBfQ0FDSEVfTE9DQVRJT04pIHx8IHN0YXJ0c3dpdGgoJGFic29sdXRlLFRNUF9URU1QTEFURVNfQ19MT0NBVElPTikgKSB7CiAgICAgICAgICAgICAgICAkYWRkID0gZmFsc2U7CiAgICAgICAgICAgICAgICBpZiggc3RhcnRzd2l0aCggJGFic29sdXRlLCAkdG1wZGlyKSApIHsKICAgICAgICAgICAgICAgICAgICAkYWRkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBlbHNlIGNoZWNrIGlmIGZpbGUgaXMgZXhjbHVkZWQKICAgICAgICAgICAgaWYoICRhZGQgKSAkZmlsZXNbXSA9ICRhYnNvbHV0ZTsKICAgICAgICB9CgogICAgICAgIC8vIC0gYWRkIHRoZSBleHRyYWN0IHNjcmlwdCBhbmQgcmVhZG1lCiAgICAgICAgLy8gLSBhcmNoaXZlIGFnYWluIGludG8gZmluYWwgZGlyZWN0b3J5CiAgICAgICAgLy8gLSBkZWxldGUgdGhlIHRtcCBkdW1wCiAgICAgICAgcmVjdXJzaXZlX3JtZGlyKCR0bXBkaXIpOwoKICAgICAgICAvLyByZW1vdmUgc2l0ZWRvd24KICAgICAgICBAdW5saW5rKCRzaXRlZG93bl9maWxlKTsKCiAgICAgICAgLy8gcmV0dXJuIHRoZSBmaWxlbmFtZQoKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTGlzdFNuYXBzaG90cygpCiAgICB7CgogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBEb3dubG9hZFNuYXBzaG90KCRuYW1lKQogICAgewoKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlU25hcHNob3QoJG5hbWUpCiAgICB7CgogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgoJPHA+PGI+VmVyc2lvbiAxLjE8L2I+ICgxNy0xMC0yMDIxKQoJPHVsPgogICAJCTxsaT5NaW5vciBpbXByb3ZlbWVudHMuPC9saT4KICAgCTwvdWw+CiAgIAk8L3A+Cgk8cD48Yj5WZXJzaW9uIDEuMC4xPC9iPiAoMDktMDMtMjAyMSkKCTx1bD4KICAgCQk8bGk+TWlub3IgaW1wcm92ZW1lbnQgdG8gYXJjaGl2ZSBmaWxlIG5hbWUuPC9saT4KICAgCTwvdWw+CiAgIAk8L3A+Cgk8cD48Yj5WZXJzaW9uIDEuMDwvYj4gKDAzLTAzLTIwMjEpCgk8dWw+CgkJPGxpPkluaXRpYWwgUmVsZWFzZS48L2xpPgoJPC91bD4KCTwvcD4KPC91bD4=]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Zvcm1fc3RhcnR9CgogIDxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19jcmVhdGVfc25hcHNob3QnKX08L2Rpdj4KCiAgPGRpdiBjbGFzcz0id2FybmluZyI+eyRtb2QtPkxhbmcoJ3dhcm5fY3JlYXRlX3NuYXBzaG90Jyl9PC9kaXY+CiAgICA8ZmllbGRzZXQ+CiAgICAgIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2xlZ2VuZF93aGF0Jyl9PC9sZWdlbmQ+CiAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZF8yIHRleHQtcmlnaHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfd2hhdCcpfTo8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJncmlkXzEwIj4KICAgICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1wcmVmX3doYXQiPntodG1sX29wdGlvbnMgb3B0aW9ucz0kd2hhdGxpc3Qgc2VsZWN0ZWQ9JHByZWZfd2hhdH08L3NlbGVjdD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgICAgICA8ZGl2IGNsYXNzPSJncmlkXzIgdGV4dC1yaWdodCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9leGNsdWRlcycpfTo8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJncmlkXzEwIj4KICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJ7JGFjdGlvbmlkfXByZWZfZXhjbHVkZXMiIGNvbHM9IjUwIiByb3dzPSI1Ij4KICAgICAgICAgICAgeyRwcmVmX2V4Y2x1ZGVzfQogICAgICAgICAgPC90ZXh0YXJlYT4KICAgICAgICAgIDxiciAvPgogICAgICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fZXhjbHVkZXMnKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2ZpZWxkc2V0PgoKICAgIDxmaWVsZHNldD4KICAgICAgPGxlZ2VuZD57JG1vZC0+TGFuZygnbGVnZW5kX3NuYXBzaG90X2Rpc3Bvc2l0aW9uJyl9OjwvbGVnZW5kPgogICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgICAgIDxkaXYgY2xhc3M9ImdyaWRfMiB0ZXh0LXJpZ2h0Ij48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InskYWN0aW9uaWR9ZGlzcG9zZSIgdmFsdWU9ImRvd25sb2FkIiB7aWYgJHByZWZfZGlzcG9zZT09J2Rvd25sb2FkJ31jaGVja2Vkey9pZn0vPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImdyaWRfMTAiPnskbW9kLT5MYW5nKCdkaXNwb3NlX2Rvd25sb2FkJyl9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZF8yIHRleHQtcmlnaHQiPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieyRhY3Rpb25pZH1kaXNwb3NlIiB2YWx1ZT0iZW1haWwxIiB7aWYgJHByZWZfZGlzcG9zZT09J2VtYWlsMSd9Y2hlY2tlZHsvaWZ9Lz48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJncmlkXzEwIj4KICAgICAgICAgIHskbW9kLT5MYW5nKCdkaXNwb3NlX2VtYWlsJyl9CiAgICAgICAgICA8YnIgLz4KICAgICAgICAgIHskbW9kLT5MYW5nKCdhZGRyZXNzJyl9OiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1lbWFpbDEiIHZhbHVlPSJ7JGFkbWluX2VtYWlsfSIvPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9maWVsZHNldD4KCiAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgICA8ZGl2IGNsYXNzPSJncmlkXzIgdGV4dC1yaWdodCI+Jm5ic3A7PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImdyaWRfMTAiPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c25hcHNob3Rub3ciIHZhbHVlPSJ7JG1vZC0+TGFuZygnc25hcHNob3Rub3cnKX0iLz4KICAgICAgICB7aWYgaXNzZXQoJHJlc3RvcmVfdXJsKX0KICAgICAgICAgIDxhIGhyZWY9InskcmVzdG9yZV91cmx9Ij57JG1vZC0+TGFuZygnZ2V0X3Jlc3RvcmVfc2NyaXB0Jyl9PC9hPgogICAgICAgIHsvaWZ9CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIAp7Zm9ybV9lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/dispose_email1.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[SGVsbG86PGJyLz4KPGJyLz4KWW91ciBTbmFwc2hvdCBoYXMgYmVlbiBnZW5lcmF0ZWQgYW5kIGlzIHRlbXBvcmFyaWx5IHN0b3JlZCBvbiB0aGUgQ01TTVMgc2VydmVyLiAgWW91IGNhbiBkb3dubG9hZCBpdCBieSBjbGlja2luZyA8YSBocmVmPSJ7JHNuYXBzaG90X3VybH0iPmhlcmU8L2E+Ljxici8+Cjxici8+CklmIHlvdSBjYW5ubm90IGNsaWNrIG9uIHRoZSBsaW5rIGFib3ZlLCBwbGVhc2UgbmF2aWdhdGUgaW4geW91ciBicm93c2VyIHRvOiB7JHNuYXBzaG90X3VybH0gPGJyLz4KPGJyLz4KUGxlYXNlIHJldHJpZXZlIHRoaXMgZmlsZSBzb29uLiBJdCB3aWxsIGJlIGRlbGV0ZWQgd2hlbmV2ZXIgdGhlIENNU01TIHN5c3RlbSBjYWNoZSBpcyBjbGVhcmVkLiB7aWYgJGF1dG9fY2xlYXJfY2FjaGVfYWdlfW9yIGZvciBvbmx5IHskYXV0b19jbGVhcl9jYWNoZV9hZ2V9IGRheXMsIHdoaWNoZXZlciBpcyBzb29uZXIuey9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3RhYl9oZWFkZXIgbmFtZT0nc3VwcG9ydCcgbGFiZWw9J1N1cHBvcnQnfQp7dGFiX2hlYWRlciBuYW1lPSdnZW5lcmFsJyBsYWJlbD0nR2VuZXJhbCd9Cnt0YWJfaGVhZGVyIG5hbWU9J2hvd3RvdXNlJyBsYWJlbD0nSG93IFRvIFVzZSd9Cnt0YWJfaGVhZGVyIG5hbWU9J2NvcHlyaWdodCcgbGFiZWw9J0NvcHlyaWdodCBhbmQgTGljZW5zZSd9CgoKe3RhYl9zdGFydCBuYW1lPSdzdXBwb3J0J30KICA8aDM+VGhpcyBtb2R1bGUgaXMgYnJvdWdodCB0byB5b3UgYnk6PC9oMz4KICA8cD48YSBocmVmPSJodHRwczovL2Ntc2NhbmJlc2ltcGxlLm9yZy9idXktcm9sZi1hLWN1cC1vZi1jb2ZmZWUiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPgogICAgPGltZyBzcmM9Ii4uL21vZHVsZXMvU25hcHNob3RNZ3IvaW1hZ2VzL2Ntcy1jYW4tYmUtc2ltcGxlLW9yZy5wbmciIGFsdD0iIiB3aWR0aD0iNTAwIiAvPgogIDwvYT48L3A+CiAgPGJyIC8+CiAgPHA+PGI+VGlwcywgdHJpY2tzIGFuZCB0dXRvcmlhbHMgdG8gbWFrZSBpdCBldmVuIGVhc2llciB0byB3b3JrIHdpdGggQ01TIE1hZGUgU2ltcGxlJnRyYWRlOy48L2I+PC9wPgogIDxiciAvPgogIDxwPllvdSBjYW4gZmluZCBtZSBhdDo8L3A+CiAgPHVsPgogICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vY21zY2FuYmVzaW1wbGUub3JnIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5jbXNjYW5iZXNpbXBsZS5vcmc8L2E+ICZyYXF1bzs8L2xpPgogICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vY21zY2FuYmVzaW1wbGUiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPnR3aXR0ZXIuY29tPC9hPiAmcmFxdW87PC9saT4KICA8L3VsPgogICAgCiAgPGgzPlN1cHBvcnQgbWUgZm9yIHN1cHBvcnRpbmcgeW91ITwvaDM+CiAgPHA+RG8geW91IGxpa2UgdGhpcyBtb2R1bGUgYW5kIHRoZSBoZWxwIHlvdSBnZXQgYXQgQ01TIENhbiBCZSBTaW1wbGU/PHA+CiAgPHA+WW91IGNhbiBkb25hdGUgc29tZSBtb25leSB0byBidXkgbWUgYSB2aXJ0dWFsIGN1cCBvZiBjb2ZmZWUgYXMgYSBzbWFsbCB0b2tlbiBvZiBhcHByZWNpYXRpb24uPHA+CiAgPHA+PGI+PGEgaHJlZj0iaHR0cHM6Ly9jbXNjYW5iZXNpbXBsZS5vcmcvYnV5LXJvbGYtYS1jdXAtb2YtY29mZmVlIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5ET05BVEUgTk9XPC9hPiAmcmFxdW87PC9iPjwvcD4KICAKICA8aDM+U3VwcG9ydDwvaDM+CiAgPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgY29udGFpbiBhbnkgY29tbWVyY2lhbCBzdXBwb3J0LiBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgYXNrIGZvciBoZWxwIGluIHRoZTo8L3A+CiAgPHVsPgogICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcvIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5DTVMgTWFkZSBTaW1wbGUgZm9ydW1zPC9hPjs8L2xpPgogICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL3N1cHBvcnQvZG9jdW1lbnRhdGlvbi9jaGF0LyIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+U2xhY2sgY2hhdDwvYT47PC9saT4KICAgIDxsaT5vciB3cml0ZSBhbiBlbWFpbCB0byB0aGUgYXV0aG9yLjwvbGk+CiAgPC91bD4KCgp7dGFiX3N0YXJ0IG5hbWU9J2dlbmVyYWwnfQogIDxoMz5UaGFua3MgZm9yIHVzaW5nIFNuYXBzaG90TWdyLjwvaDM+CgogIDxwPlRoaXMgaXMgYSB1dGlsaXR5IG1vZHVsZSB0byBhbGxvdyBhdXRob3JpemVkIHBlcnNvbmVsbCB0byBnZW5lcmF0ZSBzbmFwc2hvdHMgb2YgYWxsIG9mIHRoZSBmaWxlcyBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGRhdGFiYXNlIG9mIGEgQ01TTVMgaW5zdGFsbGF0aW9uIGFuZCBkb3dubG9hZCBpdCB0byB5b3VyIGxvY2FsIGNvbXB1dGVyLiAgVGhpcyBpcyB1c2VmdWwgd2hlbiB1bmRlcnRha2luZyBzaXRlIHVwZ3JhZGVzLCBvciB3aGVuIG1vdmluZyBhIHNpdGUgdG8gYSBuZXcgaG9zdC48L3A+CiAgPGJyIC8+CiAgPHA+VGhlIHNuYXBzaG90cyBnZW5lcmF0ZWQgYXJlIHN0b3JlZCBpbiBzdGFuZGFyZCAuemlwIGZpbGVzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJlc3RvcmUgdGhlIHNpdGUgYXQgYW55IHRpbWUsIGVpdGhlciBtYW51YWxseSBvciB3aXRoIGFuIGludGVyYWN0aXZlIENMSSBiYXNlZCBwaHAgc2NyaXB0LjwvcD4KICA8YnIgLz4KICA8cD48Yj5Ob3RlOjwvYj4gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS48L3A+CgoKe3RhYl9zdGFydCBuYW1lPSdob3d0b3VzZSd9CiAgPGgzPkhvdyBkbyBJIHVzZSBpdDwvaDM+CiAgPHA+QWZ0ZXIgaW5zdGFsbGluZyB0aGUgbW9kdWxlLCB2aXNpdCB0aGUgU2l0ZSBBZG1pbiA+PiBTbmFwc2hvdE1nciBtZW51IGl0ZW0gYW5kIGNsaWNrICdDcmVhdGUgU25hcHNob3QgTm93Jy4gIFRoaXMgd2lsbCBnZW5lcmF0ZSB0aGUgc25hcHNob3QgZmlsZSBhbmQgc2VuZCBpdCB0byB5b3VyIGxvY2FsIGJyb3dzZXIuPC9wPgoKICA8aDM+Q2F1dGlvbjwvaDM+CiAgPHA+U25hcHNob3QgZmlsZXMgYXJlIHR5cGljYWx5IGxhcmdlLCBhbmQgY2FuIGNvbnN1bWUgYSBzaWduaWZpY2FudCBhbW91bnQgb2Ygc2VydmVyIHJlc291cmNlcyBpbiBnZW5lcmF0aW5nIHRoZW0sIGFuZCBkb3dubG9hZGluZyB0aGVtLiAgVGhpcyB1dGlsaXR5IG1heSBub3Qgd29yayB3ZWxsIGZvciBzaXRlcyB0aGF0IGNvbnN1bWUgbXVsdGktZ2lnYWJ5dGVzIG9mIGRpc2sgc3BhY2UsIG9yIG9uIGEgc2VydmVyIHdpdGggbGltaXRlZCByZXNvdXJjZXMuICAgVXNlIGF0IHlvdXIgb3duIHJpc2suPC9wPgogIDxwPlNuYXBzaG90IGZpbGVzIGFyZSBnZW5lcmF0ZWQgYW5kIHN0b3JlZCBvbiB0aGUgc2VydmVyIHVudGlsIHN1Y2ggdGltZSBhcyB0aGV5IGVpdGhlciBleHBpcmUgKGEgc2V0dGluZyBpbiBDTVNNUykgb3IgdGhlIHNlcnZlciBjYWNoZSBpcyBjbGVhcmVkLiAgVGhlc2UgY2FuIHRha2UgdXAgYSBzaWduaWZpY2FudCBhbW91bnQgb2Ygc3BhY2UsIHNvIHVzZSBjYXV0aW9uIHdoZW4gZ2VuZXJhdGluZyB0aGVtLjwvcD4KICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBkYXRhYmFzZSBiYWNrdXAgd2lsbCBub3QgZXhwb3J0IGFkdmFuY2VkIGNvbnN0cnVjdHMgc3VjaCBhcyBzdG9yZWQgcHJvY2VkdXJlcywgdmlld3MsIG9yIHRyaWdnZXJzLiAgQnV0IGl0IHNob3VsZCB3b3JrIGZvciBtb3N0IENNU01TIHdlYnNpdGVzLjwvcD4KCiAgPGgzPlJlc3RvcmluZzwvaDM+CiAgPHA+VGhlIFNuYXBzaG90TWdyIG1vZHVsZSBwcm92aWRlcyBhbiBpbnRlcmFjdGl2ZSBDTEkgYmFzZWQgcGhwIHNjcmlwdCAoYWN0dWFsbHkgYSBiaW5hcnkgLnBoYXIgZmlsZSkgdG8gYWlkZSBpbiByZXN0b3JpbmcgdGhlIHNuYXBzaG90LiAgVGhpcyBmaWxlIGlzIGxvY2F0ZWQgaW4gdG1wL3Jlc3RvcmUucGhwIGluIHRoZSBpbmNsdWRlZCBzbmFwc2hvdCwgIGFuZCBjYW4gYWxzbyBiZSBkb3dubG9hZGVkIHNlcGFyYXRlbHkgZnJvbSB3aXRoaW4gdGhlIFNuYXBzaG90TWdyIGFkbWluIHBhbmVsLjwvcD4KICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBpbnRlcmFjdGl2ZSByZXN0b3JlIHNjcmlwdCBjdXJyZW50bHkgb25seSBvcGVyYXRlcyBpZiB5b3UgYmFja2VkIHVwIGJvdGggdGhlIGZpbGVzIGFuZCB0aGUgZGF0YWJhc2UuPC9wPgogIDxwPlRvIGRvIGFuIGludGVyYWN0aXZlIHJlc3RvcmUgeW91IHdpbGwgbmVlZCBzaGVsbCBhY2NjZXNzIChpbiBhIGxpbnV4IGVudmlyb25tZW50KSB0byB0aGUgZGVzdGluYXRpb24gc2VydmVyLjwvcD4KICA8cD5JbnN0cnVjdGlvbnM6PC9wPgogIDxvbD4KICAgIDxsaT5VcGxvYWQgdGhlIHNuYXBzaG90IC56aXAgZmlsZSBpbiBpdHMgZW50aXJldHkgKGRvIG5vdCBleHBhbmQgaXQpIHRvIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXIuICBVc2luZyBTU0ggaXMgdGhlIGJlc3QgbWV0aG9kLjwvbGk+CiAgICA8bGk+VXBsb2FkIHRoZSByZXN0b3JlIHNjcmlwdCAodXN1YWxseSBuYW1lZCAiU25hcHNob3RNZ3ItUmVzdG9yZS5waHAiKSBmaWxlIChJTiBCSU5BUlkgTU9ERSkgdG8gdGhlIGRlc3RpbmF0aW9uIGZvbGRlci48L2xpPgogICAgPGxpPlVzaW5nIFNTSCBvciBhbm90aGVyIG1lY2hhbmlzbSBjb25uZWN0IHRvIHlvdXIgc2VydmVycyBzaGVsbCBjb25zb2xlLjwvbGk+CiAgICA8bGk+TmF2aWdhdGUgdG8geW91ciBkZXN0aW5hdGlvbiBmb2xkZXIgKHRoZSBzYW1lIGZvbGRlciB5b3UgdXNlZCBpbiB0aGUgZmlyc3QgdHdvIHN0ZXBzKS48L2xpPgogICAgPGxpPkV4ZWN1dGU6ICBwaHAgU25hcHNob3RNZ3ItUmVzdG9yZS5waHAKICAgICAgIDxwPlRoaXMgd2lsbCBicmluZyB1cCBhbiBpbnRlcmFjdGl2ZSwgY29uc29sZSBkcml2ZW4gdXRpbGl0eSB0aGF0IHdpbGwgYWxsb3cgeW91IHRvIGVudGVyIHRoZSBuYW1lIG9mIHRoZSBzbmFwc2hvdCBmaWxlLCBhbmQgZW50ZXIgZGF0YWJhc2UgY3JlZGVudGlhbCBpbmZvcm1hdGlvbi48L3A+CiAgICAgICA8cD5UaGUgc2NyaXB0IHdpbGwgdGhlbiB2ZXJpZnkgdGhlIGRhdGFic2UgY3JlZGVudGlhbHMsIGFuZCB0aGF0IHRoZSBkYXRhYmFzZSBpcyBlbXB0eS48L3A+CiAgICAgICA8cD5Gb2xsb3dpbmcgdGhpcyB0aGUgZGF0YWJhc2UgZHVtcCB3aWxsIGJlIGltcG9ydGVkIHRvIHRoZSBuZXcgZGF0YWJhc2UsIGFuZCB0aGUgemlwIGZpbGUgZXhwYW5kZWQuPC9wPgogICAgICAgPHA+VGhpcyBzY3JpcHQgd2lsbCB0aGVuIGdlbmVyYXRlIGEgbmV3IGNvbmZpZy5waHAsIGdlbmVyYXRlIHRoZSBzcGVjaWFsIENNU01TIHRlbXBvcmFyeSBkaXJlY3RvcmllcywgYW5kIHBlcmZvcm0gY2xlYW51cC48L3A+CiAgICAgICA8cD5UaGUgdXRpbGl0eSB3aWxsIGF1dG9tYXRpY2FsbHkgZGVsZXRlIGl0c2VsZiwgYW5kIHJlbW92ZSB0aGUgemlwIGZpbGUgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRlaW9uLjwvcD4KICAgIDwvbGk+CiAgPC9vbD4KCiAgPGgzPkFmdGVyIFJlc3RvcmF0aW9uPC9oMz4KICA8cD5BZnRlciByZXN0b3JhdGlvbiwgcGFydGljdWxhcmx5IGlmIHlvdSBhcmUgcmVzdG9yaW5nIHRvIGEgZGlmZmVyZW50IGhvc3QgdGhlbiB5b3UgbWF5IG5lZWQgdG8gbWFrZSBhZGp1c3RtZW50cyB0byBzb21lIGZpbGVzLiAgSW5jbHVkaW5nOjwvcD4KICA8dWw+CiAgICA8bGk+QWRqdXN0aW5nIHRoZSAuaHRhY2Nlc3MgZmlsZSBmb3IgdGhlIHJld3JpdGVfYmFzZSBhbmQgYW55IG90aGVyIHJlZGlyZWN0IHJ1bGVzLjwvbGk+CiAgICA8bGk+QWRqdXN0aW5nIHBhdGhzIGluIHRoZSBjb25maWcucGhwIGZpbGUuPC9saT4KICAgIDxsaT5BZGp1c3RpbmcgcGVybWlzc2lvbnMKICAgICAgIDxwPkRlcGVuZGluZyB1cG9uIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgZW52aXJvbm1lbnQsIGFuZCB0aGUgYWNjb3VudHMgdGhhdCB5b3UgYXJlIHVzaW5nIHRvIGNvbm5lY3QgdmlhIHNoZWxsLCBhbmQgZm9yIHRoZSB3ZWIgc2VydmVyLCB5b3UgbWF5IG5lZWQgdG8gYWRqdXN0IHBlcm1pc3Npb25zIG9mIHNvbWUgZmlsZXMgb3IgZGlyZWN0b3JpZXMgZm9yIENNU01TIHRvIHdvcmsgcHJvcGVybHkuPC9wPgogICAgICAgPHA+SW5mb3JtYXRpb24gYWJvdXQgcHJvcGVyIHBlcm1pc3Npb25zIGZvciBDTVNNUyBpcyB3ZWxsIGRvY3VtZW50ZWQgb24gdGhlIENNU01TIGRvY3VtZW50YXRpb24gc2l0ZSBhdCA8YSBocmVmPSJodHRwOi8vZG9jcy5jbXNtYWRlc2ltcGxlLm9yZyI+ZG9jcy5jbXNtYWRlc2ltcGxlLm9yZzwvYT4KICAgIDwvbGk+CiAgPC91bD4KCiAgPGgzPlNwZWNpYWwgRmlsZXM8L2gzPgogIDxwPklmIHBlcmZvcm1pbmcgYSBtYW51YWwgcmVzdG9yYXRpb24sIHRoZXJlIGFyZSBzb21lIHNwZWNpYWwgZmlsZXMgaW4gdGhlIGFyY2hpdmUgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIGRlbGV0ZSBhZnRlciBtYW51YWxseSBleHBhbmRpbmcgdGhlIC56aXAgZmlsZTo8L3A+CiAgPHVsPgogICAgPGxpPnRtcC9fX215c3FsZHVtcC5zcWwgLSBUaGlzIGlzIHRoZSBkdW1wIG9mIHRoZSBkYXRhYmFzZSwgaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhpcyBmaWxlIGJlIGRlbGV0ZWQgb24gbGl2ZSBzaXRlcy48L2xpPgogICAgPGxpPnRtcC8uc25hcHNob3RtZ3IgLSBUaGlzIGlzIGEgbWFnaWMgZmlsZSB1c2VkIGJ5IHRoZSBpbnRlcmFjdGl2ZSByZXN0b3JhdGlvbiBzY3JpcHQuIEl0IHNob3VsZCBiZSBkZWxldGVkIG9uIGxpdmUgc2l0ZXMuPC9saT4KICA8L3VsPgoKICA8aDM+UmVxdWlyZW1lbnRzPC9oMz4KICA8cD5UaGlzIG1vZHVsZSBoYXMgdGhlc2Ugc3BlY2lhbCByZXF1aXJlbWVudHM6PC9wPgogIDx1bD4KICAgIDxsaT5WYWxpZCwgYW5kIHdyaXRhYmxlIHN5c3RlbSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgogICAgICAgPHA+VGhlIHBocCBmdW5jdGlvbiBzeXNfZ2V0X3RlbXBfZGlyKCkgbXVzdCByZXR1cm4gYSB2YWxpZCwgd3JpdGFibGUgZGlyZWN0b3J5LjwvcD4KICAgIDwvbGk+CiAgICA8bGk+U3VwcG9ydCBmb3IgdGhlIFBIUCBaaXBBcmNoaXZlIGNsYXNzLjwvbGk+CiAgICA8bGk+VGhlIGFiaWxpdHkgdG8gYWRqdXN0IHRoZSBwaHAgc2NyaXB0IHRpbWUgbGltaXQuCiAgICAgIDxwPnRoZSBzZXRfdGltZV9saW1pdCg5OTk5KSBtZXRob2QgbXVzdCB3b3JrIHByb3Blcmx5LjwvcD4KICAgIDwvbGk+CiAgPC91bD4KCgp7dGFiX3N0YXJ0IG5hbWU9J2NvcHlyaWdodCd9CiAgPGJyIC8+CiAgPHA+VGhpcyBtb2R1bGUgaXMgYSBmb3JrIG9mIHRoZSBDR1NuYXBzaG90IG1vZHVsZS48YnIgLz4KICAgIENvcHlyaWdodCAmY29weTsgMjAxNSAtIDIwMjEsIFJvYmVydCBDYW1wYmVsbC48L3A+CgogIDxoMz5TbmFwc2hvdE1ncjwvaDM+CiAgPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDIxIGFuZCBiZXlvbmQsIFJvbGYgVGphc3NlbnMgW2luZm8gYXQgY21zY2FuYmVzaW1wbGUgZG90IG9yZ10uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KICA8YnIgLz4KICA8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGI+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5HTlUgUHVibGljIExpY2Vuc2UgdjM8L2E+PC9iPi48L3A+CiAgPHA+PGI+SG93ZXZlcjwvYj4sIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlJnRyYWRlOy48YnIgLz4KICBZb3UgbWF5IG9ubHkgdXNlIHRoaXMgc29mdHdhcmUgd2hlbiB0aGVyZSBpcyBhIGNsZWFyIGFuZCBvYnZpb3VzIGluZGljYXRpb24gaW4gdGhlIGFkbWluIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCA8Yj5DTVMgTWFkZSBTaW1wbGUmdHJhZGU7PC9iPi48L3A+Cgp7dGFiX2VuZH0KCjxzY3JpcHQ+CiAgICAkKCJpbWciKS5lcnJvcihmdW5jdGlvbigpIHsgCiAgICAkKHRoaXMpLmF0dHIoJ3NyYycsICcuLi9hc3NldHMvbW9kdWxlcy9TbmFwc2hvdE1nci9pbWFnZXMvY21zLWNhbi1iZS1zaW1wbGUtb3JnLnBuZycpOwogIH0gKTsKPC9zY3JpcHQ+]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/templates/readme.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PT09IFNOQVBTSE9UTUdSIFJFQURNRSA9PT0KClRoaXMgemlwIGZpbGUgd2FzIGNyZWF0ZWQgdXNpbmcgeyRtb2R1bGVfbmFtZX0geyRtb2R1bGVfdmVyc2lvbn0gb24geyRzbWFydHkubm93fGRhdGVfZm9ybWF0OiclZC0lbS0lWSAlSDolTSd9ClRoZSB6aXAgZmlsZSBjb250YWlucyBhIHNuYXBzaG90IG9mIHRoZSBkYXRhYmFzZSwgYW5kIGEgc25hcHNob3Qgb2YgYWxsIHJlbGV2YW50IGZpbGVzIChleGNsdWRpbmcgdGVtcG9yYXJ5IGZpbGVzIGFuZCBkaXJlY3Rvcmllcykgb2YgeW91ciBDTVNNUyB3ZWJzaXRlLgoKVGhpcyB6aXAgZmlsZSBpcyB1c2VmdWwgZm9yIGNyZWF0aW5nIGEgc25hcHNob3Qgb2YgYSBzaXRlIGJlZm9yZSB1cGdyYWRpbmcsIG9yIHRvIG1ha2UgbW92aW5nIGEgd2Vic2l0ZSBlYXNpZXIuCgoKSW50ZXJhY3RpdmUgUmVzdG9yZSBJbnN0cnVjdGlvbnMKLS0tLS0KSWYgeW91IGhhdmUgc2hlbGwgYWNjZXNzIGludG8geW91ciB3ZWIgYWNjb3VudCAocmVjb21tZW5kZWQpIHRoZW46CjEuICBVcGxvYWQgdGhpcyB6aXAgZmlsZSBpbiBpdHMgZW50aXJldHkgdG8gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBvbiB5b3VyIHdlYiBzZXJ2ZXIuCjIuICBDb25uZWN0IHZpYSBzaGVsbCAoc3NoIG9yIG90aGVyKSB0byB5b3VyIHdlYiBhY2NvdW50IGFuZCBuYXZpZ2F0ZSB0byB5b3VyIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4KMy4gIEV4ZWN1dGU6IHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKICAgIHBocCB0bXAvcmVzdG9yZS5waHAKCiAgICBZb3Ugd2lsbCBiZSBpbnRlcmFjdGl2ZWx5IGd1aWRlZCB0aHJvdWdoIHRoZSByZXN0b3JlIHByb2Nlc3MuIGFuZCBwcm9tcHRlZCBmb3IgdGhlIG5hbWUgb2YgdGhlIFNuYXBzaG90TWdyIGZpbGUsIGFuZCBkYXRhYmFzZSBpbmZvcm1hdGlvbi4KICAgIE5vdGU6ICBPbmx5IHNuYXBzaG90cyBnZW5lcmF0ZWQgYnkgU25hcHNob3RNZ3IgY2FuIGJlIHVzZWQgYnkgdGhpcyBzY3JpcHQuCgoKTWFudWFsIFJlc3RvcmUgSW5zdHJ1Y3Rpb25zCi0tLS0tCjEuICBVcGxvYWQgdGhpcyB6aXAgZmlsZSBpbiBpdHMgZW50aXJldHkgdG8gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBvbiB5b3VyIHdlYiBzZXJ2ZXIuCjIuICBVc2luZyB5b3VyIHdlYiBhY2NvdW50cyBmaWxlIG1hbmFnZW1lbnQgc3lzdGVtIGV4cGFuZCB0aGlzIHppcCBmaWxlCjMuICBJbXBvcnQgdGhlIHRtcC9fX215c3FsZHVtcC5zcWwgZmlsZSBpbnRvIHlvdXIgZGVzdGluYXRpb24gZGF0YWJhc2UgdXNpbmcgcGhwbXlhZG1pbiBvciBhbm90aGVyIHNpbWlsYXIgdG9vbAo0LiAgQWRqdXN0IHRoZSBjb25maWcucGhwIGZpbGUgdG8gY29udGFpbiB0aGUgZGF0YWJhc2UgY3JlZGVudGlhbHMKNS4gIFRlc3QgdGhlIG5ldyB3ZWJzaXRlCjYgICBEZWxldGUgdGhlIG9yaWdpbmFsIHppcCBmaWxlIG9uY2UgY29tcGxldGUuCjcuICBEZWxldGUgdGhlIHRtcC8uc25hcHNob3RtZ3IgYW5kIHRtcC9fX215c3FsZHVtcC5zcWwgZmlsZXMKCgpFcnJvcnMgeW91IG1heSBuZWVkIHRvIGNvcnJlY3QKLS0tLS0KMS4gIFBlcm1pc3Npb25zCiAgICBEZXBlbmRpbmcgdXBvbiB5b3VyIHNlcnZlciBjb25maWd1cmF0aW9uLCB5b3UgbWF5IG5lZWQgdG8gYWRqdXN0IHBlcm1pc3Npb25zIG9uIHZhcmlvdXMgZGlyZWN0b3JpZXMgdG8gYWxsb3cgeW91IHRvIHdvcmsgd2l0aCBmaWxlIGFuZCBtb2R1bGVzIHZpYSBGVFAgb3IgdmlhIHRoZSBDTVNNUyB3ZWIgaW50ZXJmYWNlLgoKMi4gIFBhdGhzIGluIHRoZSBjb25maWcucGhwCiAgICBNb3N0IG5ldyBpbnN0YWxscyBvZiBDTVNNUyBkbyBub3QgY29udGFpbiBwYXRocyBpbiB0aGUgY29uZmlnLnBocCwgIHRoZXJlZm9yZSB0aGlzIHNjcmlwdCBkb2VzIG5vdCBhdHRlbXB0IHRvIHJlcGFpciBhbnkgcGF0aHMgaW4gdGhlIGNvbmZpZy5waHAuCiAgICBJZiB5b3UgZG8gaGF2ZSBwYXRocyBhbmQvb3IgVVJMJ3MgaW4gdmFyaW91cyB2YXJpYWJsZXMgaW4gdGhlIGNvbmZpZy5waHAgeW91IG1heSBuZWVkIHRvIGFkanVzdCB0aGVtLgoKMy4gIC5odGFjY2VzcyBmaWxlcwogICAgSWYgeW91IGFyZSB1c2luZyBtb2RfcmV3cml0ZSwgb3IgaGF2ZSBvdGhlciBVUkwgcmV3cml0aW5nIHJ1bGVzIGluIHlvdXIgLmh0YWNjZXNzIHlvdSBtYXkgbmVlZCB0byBtYWtlIGFkanVzdG1lbnRzIGluIHRoaXMgZmlsZS4KCjQuICBwYXRocyBhbmQgcHJlZmVyZW5jZXMgaW4gYWRkLW9ucwogICAgU29tZSBtb2R1bGVzIG1heSBzdG9yZSBzZXJ2ZXIgcGF0aHMgaW4gcHJlZmVyZW5jZXMgb3Igb3RoZXIgbG9jYXRpb25zLiBZb3UgbWF5IG5lZWQgdG8gcmV2aWV3IHRoZXNlIHBhdGhzIGFzIHBhcnQgb2YgeW91ciB0ZXN0aW5nIHByb2Nlc3MuCgoKU2VjdXJpdHkgY29uY2VybnMKLS0tLS0KMS4gIFBsZWFzZSBlbnN1cmUgdGhhdCB5b3UgZGVsZXRlIHRoZSBTbmFwc2hvdE1nciBmaWxlIGZyb20geW91ciBzZXJ2ZXIgb25jZSB0aGUgbmV3IHNpdGUgaXMgd29ya2luZyB3ZWxsLgoyLiAgUGxlYXNlIGVuc3VyZSB0aGF0IHlvdSBkZWxldGUgdGhlIHRtcC9fX215c3FsZHVtcC5zcWwgZmlsZSBmcm9tIHlvdXIgc2VydmVyIG9uY2UgdGhlIG5ldyBzaXRlIGlzIHdvcmtpbmcgd2VsbC4=]]></data>
	</file>
</module>
