<?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>SisowGateway</name>
	<version>0.5.6</version>
  <mincmsversion>1.11.1</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgSXMgVGhpczwvaDM+CjxwPlBheW1lbnR5IG1vZHVsZSBmb3IgU2lzb3cgUGF5bWVudCBHYXRld2F5PGJyLz4KPGI+T25kZXJzdGV1biBkZXplIHBsdWdpbiB6b25kZXIgZ2VsZCB1aXQgdGUgZ2V2ZW4uPC9iPiBMYWF0IHV3IGtsYW50IGFhbm1lbGRlbiB2b29yIGVlbiBTaXNvdyBhY2NvdW50IHZpYSA8Yj48YSBocmVmPSJodHRwczovL3d3dy5zaXNvdy5ubC9TaXNvdy9pRGVhbC9BYW5tZWxkZW4uYXNweD9yPTE0MDYwNSIgdGFyZ2V0PSJfQkxBTksiPmRlemUgVVJMPC9hPjwvYj4uPGJyIC8+ClV3IGtsYW50ZW4genVsbGVuIGhpZXIgbmlldHMgdmFuIG9wbWVya2VuOyB6ZSB6dWxsZW4gZGV6ZWxmZGUgdGFyaWV2ZW4gZW4gdm9vcndhYXJkZW4ga3Jpamdlbi4gPC9wPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+RmlsbCBpbiB5b3VyIFNpc293IE1lcmNoYW50SUQgYW5kIE1lcmNoYW50S2V5IGFuZCBjaG9vc2Ugd2hldGhlciB5b3Ugd2FudCB0aGUgdGVzdCBtb2RlIG9yIG5vdC4gU2F2ZSBhbmQgc2VsZWN0IFNpc293R2F0ZXdheSBhcyB5b3VyIFBheW1lbnQgdGhpbmdnaWUgaW4gQ2FsZ3V5cyBFY29tbWVyY2UgQmFzZTwvcD4KPHA+SGViIHZlcnNjaGlsbGVuZGUgY2xhc3NlcyB0b2VnZXZvZWdkIGFhbiBoZXQgZm9ybXVsaWVyLCB6b2RhdCB1IGhldCBmb3JtdWxpZXIga3VudCBvcG1ha2VuIG5hYXIgd2VucyBtYnYgY3NzLiBEZSB2b2xnZW5kZSBjbGFzc2VzIHppam4gZ2VkZWZpbmVlcmQ6PGJyIC8+CjxiciAvPgpoZXQgZ2VoZWxlIGZvcm11bGllcjogc2lzb3dmb3JtPGJyIC8+CjxiciAvPgphbGxlIGJldGFhbCBtb2dlbGlqa2hlZGVuOjxiciAvPgpzaXNvd0Jhbms8YnIgLz4KPGJyIC8+CnBlciBiZXRhYWxtb2dlbGlqa2hlaWQ6PGJyIC8+CnNpc293RGlyZWN0ZWJhbmtpbmc8YnIgLz4Kc2lzb3dNaXN0ZXJDYXNoPGJyIC8+CnNpc293V2ViU2hvcEdpZnRDYXJkPGJyIC8+CnNpc293UG9kaXVtPGJyIC8+CnNpc293UGF5cGFsPGJyIC8+CnNpc293aURlYWw8YnIgLz4Kc2lzb3dpRGVhbGJhbmtlbiAoZGV6ZSBiZXZhdCBkZSBsaWpzdCBtZXQgYmFua2VuKTxiciAvPgo8YnIgLz4KdmVyemVuZGJ1dHRvbjo8YnIgLz4Kc2lzb3dTdWJtaXQ8YnIgLz4KPGJyIC8+CiA8L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+TW9kdWxlIGlzIGFzLWlzLiBHZWVuIGdhcmFudGllcy4gSHVscCBpcyBtb2dlbGlqaywgb2ZmZXJ0ZSB2b29yYWYuIE5lZW0gY29udGFjdCBvcCBtZXQgPGEgaHJlZj0ibWFpbHRvOiBpbmZvQGphbnRpbm8ubmwiPlJlaW50IEphbnRpbm88L2E+IG9mIHByb2JlZXIgaGV0IG9wICd0IGZvcnVtLjwvcD4KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCDCqSAyMDEyLCBSZWludCB2YW4gZGVyIExhYW4gLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC4KVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuClRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EgT3IgcmVhZCBpdCBvbmxpbmUKPC9wPjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuMTcuMzwvbGk+PGxpPkNHUGF5bWVudEdhdGV3YXlCYXNlID0mZ3Q7IDEuMC4zPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBSZWludCB2YW4gZGVyIExhYW4gJmx0O2pAbnRpbm8ubmwmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMC41LjY8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+CiAgPGxpPlZlcnNpb24gMC41LjYgLSAzMCBNYXJjaCAyMDE1IC0gSmFudGlubwogICA8dWw+CiAgICAgPGxpPlRlc3RlZCB3aXRoIENNU01TIDIuMDwvbGk+CgkgPGxpPkFkZGVkIEFmdGVycGF5IGZ1bmN0aW9uPC9saT4KCSA8bGk+QWRkZWQgU2lzb3cgY2FsbGJhY2sgZnVuY3Rpb248L2xpPgogICA8L3VsPgogPC9saT4KICA8bGk+VmVyc2lvbiAwLjUuNSAtIDI1IE5vdmVtYmVyIDIwMTQgLSBKYW50aW5vCiAgIDx1bD4KICAgICA8bGk+Zmlyc3QgaW1wbGVtZW50YXRpb24gLSBLbGFybmEgb3B0aW9uIChiZXRhbGluZyBhY2h0ZXJhZiAvIGFjY2VwdGdpcm8pIC0gbm90IHdvcmtpbmchPC9saT4KCSA8bGk+QWRkZWQgImxhYmVsIGZvciIgYXR0cmlidXRlcyBmb3IgYmV0ZXIgc2VsZWN0aW5nIHBheW1lbnQgZm9ybTwvbGk+CiAgIDwvdWw+CiA8L2xpPgogIDxsaT5WZXJzaW9uIDAuNS4yIC0gMjMgU2VwdGVtYmVyIDIwMTQgLSBKYW50aW5vCiAgIDx1bD4KICAgICA8bGk+QWRkZWQgQ3JlZGl0Y2FyZCBvcHRpb25zPC9saT4KICAgPC91bD4KIDwvbGk+CiAgPGxpPlZlcnNpb24gMC41LjEgLSAxOSBPY3RvYmVyIDIwMTIgLSBKYW50aW5vCiAgIDx1bD4KICAgICA8bGk+QnVnZml4LCBub3cgZGlzcGxheXMgaW52b2ljZSBudW1iZXIgYW5kIHNob3BuYW1lKGFzIGVudGVyZWQgYXQgZWNvbW1lcmNlYmFzZSkgYXMgdHJhbnNhY3Rpb24gZGVzY3JpcHRpb248L2xpPgogICA8L3VsPgogPC9saT4KIDxsaT5WZXJzaW9uIDAuNS4wIC0gMTAgT2N0b2JlciAyMDEyIC0gSmFudGlubwogICA8dWw+CiAgICAgPGxpPkFsbCBjdXJyZW50IHBheW1lbnQgbWV0aG9kcyBvZiBTaXNvdyBpbXBsZW1lbnRlZDo8YnIgLz4KCQlpRGVhbCA8YnIgLz4KCQlESVJFQ1RlYmFua2luZzxiciAvPgoJCU1pc3RlckNhc2g8YnIgLz4KCQlXZWJTaG9wIEdpZnRDYXJkPGJyIC8+CgkJUG9kaXVtIENhZGVhdWthYXJ0PGJyIC8+CgkJUGF5cGFsIG9mIGNyZWRpdGNhcmQKCTwvbGk+Cgk8bGk+T3B0aW9uIGZvciBqcXVlcnlzY3JpcHQgdG8gaGlkZSBiYW5rbGlzdCB1bnRpbGwgaWRlYWwgaXMgY2hvc2VuIGFzIHBheW1lbnQgbWV0aG9kLjwvbGk+CiAgIDwvdWw+CiA8L2xpPgogPGxpPlZlcnNpb24gMC40LjAgLSA1IE9jdG9iZXIgMjAxMiAtIEphbnRpbm8KICAgPHVsPgogICAgIDxsaT5Jbml0aWFsIHZlcnNpb24uIENvbXBhdGlibGUgd2l0aCBDTVNNUyAxLjExLjE8L2xpPgogICA8L3VsPgogPC9saT4KICAKPC91bD4KPGJyIC8+]]></about>
	<description><![CDATA[Part of the E-Commerce collection, this module provides iDeal, Paypal and Giftcards payments for Sisow Payment Gateways]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.17.3</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGPaymentGatewayBase</requiredname>
	  <requiredversion>1.0.3</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_save_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEZsYXRSYXRlU2hpcHBpbmcgLSBBIHNpbXBsZSBzaGlwcGluZyBtb2R1bGUgZm9yIENhcnQKIyBWZXJzaW9uOiAxLjAsIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAaG90bWFpbC5jb20+CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKQogIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJ2Vycm9yX3Blcm1pc3Npb25kZW5pZWQnKTsKICAgIHJldHVybjsKICB9CgokdGhpcy0+U2V0Q3VycmVudFRhYignc2V0dGluZ3MnKTsKCmlmKCAhaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogIH0KCiAgJE1lcmNoYW50SUQgPSAkX1BPU1RbJGlkLiJpbnB1dF9NZXJjaGFudElEIl07CiAgJE1lcmNoYW50S2V5ID0gJF9QT1NUWyRpZC4iaW5wdXRfTWVyY2hhbnRLZXkiXTsKICAkdGVzdG1vZGUgPSAkX1BPU1RbJGlkLiJpbnB1dF90ZXN0bW9kZSJdOwogICRzb2ZvcnQgPSAkX1BPU1RbJGlkLiJpbnB1dF9zb2ZvcnQiXTsKICAkbWlzdGVyY2FzaCA9ICRfUE9TVFskaWQuImlucHV0X21pc3RlcmNhc2giXTsKICAkd2Vic2hvcCA9ICRfUE9TVFskaWQuImlucHV0X3dlYnNob3AiXTsKICAkcG9kaXVtID0gJF9QT1NUWyRpZC4iaW5wdXRfcG9kaXVtIl07CiAgJHBheXBhbGVjID0gJF9QT1NUWyRpZC4iaW5wdXRfcGF5cGFsZWMiXTsKICAkY3JlZGl0Y2FyZHMgPSAkX1BPU1RbJGlkLiJpbnB1dF9jcmVkaXRjYXJkcyJdOwogICRrbGFybmEgPSAkX1BPU1RbJGlkLiJpbnB1dF9rbGFybmEiXTsKICAkYWZ0ZXJwYXkgPSAkX1BPU1RbJGlkLiJpbnB1dF9hZnRlcnBheSJdOwogICRhZnRlcnBheU1lcmNoYW50SUQgPSAkX1BPU1RbJGlkLiJpbnB1dF9NZXJjaGFudElEYWZ0ZXJwYXkiXTsKICAkYWZ0ZXJwYXlQb3J0Zm9saW9pZCA9ICRfUE9TVFskaWQuImlucHV0X3BvcnRmb2xpb2lkIl07CiAgJGFmdGVycGF5UGFzc3dvcmQgPSAkX1BPU1RbJGlkLiJpbnB1dF9wYXNzd29yZCJdOwogICRqcXVlcnkgPSAkX1BPU1RbJGlkLiJpbnB1dF9qcXVlcnkiXTsKLy8gCi8vIFNhdmUgdGhlIGRhdGEKLy8KLy9nZXQgdW5pcXVla2V5IGJlZm9yZSByZXNldHRpbmcKCiRxdWVyeSA9ICdTRUxFQ1QgY2FsbGJhY2trZXkgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Npc293Z2F0ZXdheSI7CiRkYnIgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSApOwoJd2hpbGUoICRkYnIgJiYgKCRyb3cgPSAkZGJyLT5GZXRjaFJvdygpICkgKQoJICB7CgkgICAgJGtleSA9ICAkcm93WydjYWxsYmFja2tleSddOwoJICB9CgkKICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Npc293Z2F0ZXdheSc7CiAgICAkZGItPkV4ZWN1dGUoICRxdWVyeSApOwoKICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Npc293Z2F0ZXdheQogICAgICAgICAgICAgICAgKE1lcmNoYW50SUQsIE1lcmNoYW50S2V5LCB0ZXN0bW9kZSwgc29mb3J0LCBtaXN0ZXJjYXNoLCB3ZWJzaG9wLCBwb2RpdW0sIHBheXBhbGVjLCBqcXVlcnksIGNyZWRpdGNhcmRzLCBrbGFybmEsIGFmdGVycGF5LCBhZnRlcnBheU1lcmNoYW50SUQsIGFmdGVycGF5UG9ydGZvbGlvaWQsIGFmdGVycGF5UGFzc3dvcmQsIGNhbGxiYWNra2V5KSBWQUxVRVMKIAkJCQkoIicuJE1lcmNoYW50SUQuJyIsIicuJE1lcmNoYW50S2V5LiciLCInLiR0ZXN0bW9kZS4nIiwiJy4kc29mb3J0LiciLCInLiRtaXN0ZXJjYXNoLiciLCInLiR3ZWJzaG9wLiciLCInLiRwb2RpdW0uJyIsIicuJHBheXBhbGVjLiciLCInLiRqcXVlcnkuJyIsIicuJGNyZWRpdGNhcmRzLiciLCInLiRrbGFybmEuJyIsIicuJGFmdGVycGF5LiciLCInLiRhZnRlcnBheU1lcmNoYW50SUQuJyIsIicuJGFmdGVycGF5UG9ydGZvbGlvaWQuJyIsIicuJGFmdGVycGF5UGFzc3dvcmQuJyIsIicuJGtleS4nIiknOwoJCgkkZGItPkV4ZWN1dGUoICRxdWVyeSApOwoKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNpc293R2F0ZXdheSAoYykgMjAxMiBieSBSZWludCBKYW50aW5vCiMgICAgICAgICAoaW5mb0BqYW50aW5vLm5sKQojCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBTaXNvdyAoaWRlYWwsIHBheXBhbCwgZ2lmdGNhcmRzKSBQYXltZW50cyBnYXRld2F5LgojCiMgTm90ZTogVGhpcyBtb2R1bGUgaXMgYmFzZWQgb24gdGhlIFBheXBhbEdhdGV3YXkgYnkgUm9iZXJ0IENhbXBiZWxsLgojIEFuZCBJZGVhbEdhdGV3YXkgTGl0ZSAoYykgMjAxMCBieSBNYXJjIHZhbiBkZSBHZWlqbiAobWFyY0B2ZGdlaWpuLmNvbSkKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNpc293R2F0ZXdheSAoYykgMjAxMiBieSBSZWludCBKYW50aW5vDQojICAgICAgICAgKGluZm9AamFudGluby5ubCkNCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2Vzcw0KIyAgU2lzb3cgKGlkZWFsLCBwYXlwYWwsIGdpZnRjYXJkcykgUGF5bWVudHMgZ2F0ZXdheS4NCiMNCiMgTm90ZTogVGhpcyBtb2R1bGUgaXMgYmFzZWQgb24gdGhlIFBheXBhbEdhdGV3YXkgYnkgUm9iZXJ0IENhbXBiZWxsLg0KIyBBbmQgSWRlYWxHYXRld2F5IExpdGUgKGMpIDIwMTAgYnkgTWFyYyB2YW4gZGUgR2Vpam4gKG1hcmNAdmRnZWlqbi5jb20pDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiANCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiNFTkRfTElDRU5TRQ0KaWYoICFpc3NldCgkZ0NtcykgKSBleGl0Ow0KDQpyZXF1aXJlKGRpcm5hbWUoX19GSUxFX18pIC4gJy9zaXNvdy5jbHM1LnBocCcpOw0KDQovLyBkbyBmdW5jdGlvbmFsaXR5IHRlc3RzDQppZiggIWZ1bmN0aW9uX2V4aXN0cygnbWNyeXB0X21vZHVsZV9vcGVuJykgKQ0KICB7DQogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnZXJyb3Jfbm9fbWNyeXB0JykpOw0KICAgIHJldHVybjsNCiAgfQ0KLy8gRU9GDQoNCmVjaG8gJHRoaXMtPkRpc3BsYXlFcnJvcnMoKTsNCg0KZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7DQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApDQogIHsNCiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NldHRpbmdzJywkdGhpcy0+TGFuZygnc2V0dGluZ3MnKSk7DQogIH0NCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsNCg0KZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7DQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApDQogIHsNCiAgICBlY2hvICR0aGlzLT5TdGFydFRhYignc2V0dGluZ3MnKTsNCiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fc2V0dGluZ3NfdGFiLnBocCcpOw0KICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOw0KICB9DQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/action.redirect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNpc293R2F0ZXdheSAoYykgMjAxMiBieSBSZWludCBKYW50aW5vCiMgICAgICAgICAoaW5mb0BqYW50aW5vLm5sKQojCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBTaXNvdyAoaWRlYWwsIHBheXBhbCwgZ2lmdGNhcmRzKSBQYXltZW50cyBnYXRld2F5LgojCiMgTm90ZTogVGhpcyBtb2R1bGUgaXMgYmFzZWQgb24gdGhlIFBheXBhbEdhdGV3YXkgYnkgUm9iZXJ0IENhbXBiZWxsLgojIEFuZCBJZGVhbEdhdGV3YXkgTGl0ZSAoYykgMjAxMCBieSBNYXJjIHZhbiBkZSBHZWlqbiAobWFyY0B2ZGdlaWpuLmNvbSkKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmKCAhaXNzZXQoJHBhcmFtc1snbXljdXN0b20nXSkgKQp7CgkkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfY3VzdG9tX3ZlcmlmaWVyJykpOwoJJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfY3VzdG9tX3ZlcmlmaWVyJykpOwp9CmVsc2UgaWYoICFpc3NldCgkcGFyYW1zWydvcmRlcl9pZCddKSApCnsKCSR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaXBuX2ludmFsaWRfb3JkZXJpZCcpKTsKCSR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCR0aGlzLT5MYW5nKCdlcnJvcl9pcG5faW52YWxpZF9vcmRlcmlkJykpOwp9CmVsc2UKewoKCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2lzb3dnYXRld2F5JzsKCSRkYnIgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSApOwoJd2hpbGUoICRkYnIgJiYgKCRyb3cgPSAkZGJyLT5GZXRjaFJvdygpICkgKQoJICB7CgkgICAgJE1lcmNoYW5kSUQgPSAgJHJvd1snTWVyY2hhbnRJRCddOwoJICAgICRNZXJjaGFudEtleSA9ICRyb3dbJ01lcmNoYW50S2V5J107CgkgICAgJGFmdGVycGF5TWVyY2hhbnRJRCA9ICAkcm93WydhZnRlcnBheU1lcmNoYW50SUQnXTsKCSAgICAkYWZ0ZXJwYXlQb3J0Zm9saW9pZCA9ICRyb3dbJ2FmdGVycGF5UG9ydGZvbGlvaWQnXTsKCSAgICAkYWZ0ZXJwYXlQYXNzd29yZCA9ICRyb3dbJ2FmdGVycGF5UGFzc3dvcmQnXTsKCQkkdGVzdG1vZGUgPSAkcm93Wyd0ZXN0bW9kZSddOwoJICB9CgoJaWYoICEgJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKSApIHsKCQlwcmludCAiVW5hYmxlIHRvIHJlc3RvcmUgc3RhdGUiOwoJCWV4aXQoKTsKCX0KCglpZiggISR0aGlzLT5DaGVja0luZm8oKSApCgl7CgkJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXN0b3JpbmdfdHJhbnNhY3Rpb25fc3RhdGUnKSk7Cgl9CgllbHNlCgl7CgkJJGNvbmZpZyA9JiAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgkJIAoJCSRzRW50cmFuY2VDb2RlID0gc2hhMSgkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXSAuICdfJyAuIGRhdGUoJ1ltZEhpcycpKTsKCgkJJGtleSA9ICR0aGlzLT5TYXZlU3RhdGUodHJ1ZSk7CgkJJHJldHVybl91cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygnY250bnQwMScsJ3N0YXR1cycsJHBhcmFtc1sncmV0dXJuaWQnXSwnJywKCQlhcnJheSgnb3JkZXJfaWQnPT4kcGFyYW1zWydvcmRlcl9pZCddLAoJCQkJCSAgICAgICAnbXljdXN0b20nPT4ka2V5KSwKCQkJCQkgJycsdHJ1ZSk7CgkJCgkJJHJldHVybl91cmwgPSBzdHJfcmVwbGFjZSggIiZhbXA7IiwiJiIsICRyZXR1cm5fdXJsKTsKCQkvL2ZldGNoIHVuaXF1ZSBrZXkgZm9yIGVuY29kaW5nL2RlY29kaW5nCgkJJHF1ZXJ5ID0gJ1NFTEVDVCBjYWxsYmFja2tleSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2lzb3dnYXRld2F5IjsKCQkkZGJyID0gJGRiLT5FeGVjdXRlKCAkcXVlcnkgKTsKCQkJd2hpbGUoICRkYnIgJiYgKCRyb3cgPSAkZGJyLT5GZXRjaFJvdygpICkgKQoJCQkgIHsKCQkJICAgICRrZXkgPSAgJHJvd1snY2FsbGJhY2trZXknXTsKCQkJICB9CgkJJHN0YXR1c2tleSA9ICR0aGlzLT5fZGF0YVsnb3JkZXInXVsnZmV1X3VzZXJfaWQnXTsKCQkkc3RhdHVza2V5ID0gYmFzZTY0X2VuY29kZShtY3J5cHRfZW5jcnlwdChNQ1JZUFRfUklKTkRBRUxfMjU2LCBtZDUoJGtleSksICRzdGF0dXNrZXksIE1DUllQVF9NT0RFX0NCQywgbWQ1KG1kNSgka2V5KSkpKTsKCQkkc3RhdHVza2V5ID0gcmF3dXJsZW5jb2RlKCRzdGF0dXNrZXkpOwoJCQoJCSRjYWxsYmFja191cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygnY250bnQwMScsJ3N0YXR1cycsJHBhcmFtc1sncmV0dXJuaWQnXSwnJywKCQlhcnJheSgnb3JkZXJfaWQnPT4kcGFyYW1zWydvcmRlcl9pZCddLAoJCQkJCSAgICAgICAnc3RhdHVza2V5Jz0+JHN0YXR1c2tleSwKCQkJCQkJCSdvcmRlcmFtb3VudCc9PiRmT3JkZXJBbW91bnQpLAoJCQkJCSAnJyx0cnVlKTsKCQkkY2FsbGJhY2tfdXJsID0gc3RyX3JlcGxhY2UoICImYW1wOyIsIiYiLCAkY2FsbGJhY2tfdXJsKTsKCgkJJHNDdXJyZW50VXJsID0gc3RydG9sb3dlcihzdWJzdHIoJF9TRVJWRVJbJ1NFUlZFUl9QUk9UT0NPTCddLCAwLCBzdHJwb3MoJF9TRVJWRVJbJ1NFUlZFUl9QUk9UT0NPTCddLCAnLycpKSAuICc6Ly8nIC4gJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10gLiAnLycpIC4gc3Vic3RyKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddLCAxKTsKCQkKCQkKCQkkc09yZGVySWQgPSAkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXTsKCQkkc09yZGVyRGVzY3JpcHRpb24gPSAkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXSAuICcgdGJ2LiAnLiAkdGhpcy0+R2V0U2hvcE5hbWUoKTsgLy8gVXB0byAzMiBjaGFyYWN0ZXJzCgkJJGZPcmRlckFtb3VudCA9IHN0cl9yZXBsYWNlKCcsJywgJy4nLCAkdGhpcy0+X2RhdGFbJ29yZGVyJ11bJ3RvdGFsJ10pOyAKCgkJCWVjaG8gJHNPcmRlckRlc2NyaXB0aW9uIC4gJyAmZXVybzsnIC4kZk9yZGVyQW1vdW50OwoKCQkKCglyZXF1aXJlKGRpcm5hbWUoX19GSUxFX18pIC4gJy9zaXNvdy5jbHM1LnBocCcpOyAvL3Npc293CgkKCSRzaXNvdyA9IG5ldyBTaXNvdygkTWVyY2hhbmRJRCwgJE1lcmNoYW50S2V5KTsKCgoJCWlmIChpc3NldCgkX1BPU1RbImlzc3VlcmlkIl0pKSB7CgkJCSRzaXNvdy0+cHVyY2hhc2VJZCA9ICRfUE9TVFsicHVyY2hhc2VpZCJdOwoJCQkkc2lzb3ctPmRlc2NyaXB0aW9uID0gJF9QT1NUWyJkZXNjcmlwdGlvbiJdOwoJCQkkc2lzb3ctPmFtb3VudCA9ICRfUE9TVFsiYW1vdW50Il07CgkJCSRzaXNvdy0+cGF5bWVudCA9ICRfUE9TVFsicGF5bWVudCJdOwoJCQkkc2lzb3ctPmlzc3VlcklkID0gJF9QT1NUWyJpc3N1ZXJpZCJdOwoJCQkkc2lzb3ctPnJldHVyblVybCA9ICRyZXR1cm5fdXJsOwoJCQkkc2lzb3ctPmNhbGxiYWNrVXJsID0gJGNhbGxiYWNrX3VybDsKCQkJJHNpc293LT5ub3RpZnlVcmwgPSAkY2FsbGJhY2tfdXJsOwoJCQlpZiAoKCRleCA9ICRzaXNvdy0+VHJhbnNhY3Rpb25SZXF1ZXN0KCkpIDwgMCkgewoJCQkJZWNobyAnZXJyb3I6ICcuJHNpc293LT5lcnJvck1lc3NhZ2U7CgkJCX0KCQkJaGVhZGVyKCJMb2NhdGlvbjogIiAuICRzaXNvdy0+aXNzdWVyVXJsKTsKCQkJCgkJfQoJCWVsc2UgewoJCQkvLyBHZWVuIHNpc293IGJldGFsaW5nLCBhZnRlcnBheSBkdXMKCQkJcmVxdWlyZShkaXJuYW1lKF9fRklMRV9fKSAuICcvY2xhc3MtYWZ0ZXJwYXkucGhwJyk7IC8vYWZ0ZXJwYXkKCQkJJEFmdGVycGF5ID0gbmV3IEFmdGVycGF5KCk7CgoJCQkvLyBTZXQgdXAgdGhlIGJpbGwgdG8gYWRkcmVzcwoJCQkkYXBvcmRlclsnYmlsbHRvYWRkcmVzcyddWydjaXR5J10gPSAkdGhpcy0+X2RhdGFbJ29yZGVyJ11bJ2JpbGxpbmdfY2l0eSddOwoJCQkkYXBvcmRlclsnYmlsbHRvYWRkcmVzcyddWydob3VzZW51bWJlciddID0gJHRoaXMtPl9kYXRhWydvcmRlciddWydiaWxsaW5nX2FkZHJlc3MyJ107CgkJCSRhcG9yZGVyWydiaWxsdG9hZGRyZXNzJ11bJ2lzb2NvdW50cnljb2RlJ10gPSAkdGhpcy0+X2RhdGFbJ29yZGVyJ11bJ2JpbGxpbmdfY291bnRyeSddOwoJCQkkYXBvcmRlclsnYmlsbHRvYWRkcmVzcyddWydwb3N0YWxjb2RlJ10gPSAkdGhpcy0+X2RhdGFbJ29yZGVyJ11bJ2JpbGxpbmdfcG9zdGFsJ107CgkJCSRhcG9yZGVyWydiaWxsdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydkb2InXSA9ICRfUE9TVFsiZG9iIl0gLidUMDA6MDA6MDAnOwoJCQkkYXBvcmRlclsnYmlsbHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsnZW1haWwnXSA9ICR0aGlzLT5fZGF0YVsnb3JkZXInXVsnYmlsbGluZ19lbWFpbCddOwoJCQkkYXBvcmRlclsnYmlsbHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsnZ2VuZGVyJ10gPSAkX1BPU1RbImdlbmRlciJdOwoJCQkkYXBvcmRlclsnYmlsbHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsnaW5pdGlhbHMnXSA9ICR0aGlzLT5fZGF0YVsnb3JkZXInXVsnYmlsbGluZ19maXJzdF9uYW1lJ11bMF07CgkJCSRhcG9yZGVyWydiaWxsdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydpc29sYW5ndWFnZSddID0gJHRoaXMtPl9kYXRhWydvcmRlciddWydiaWxsaW5nX2NvdW50cnknXTsKCQkJJGFwb3JkZXJbJ2JpbGx0b2FkZHJlc3MnXVsncmVmZXJlbmNlcGVyc29uJ11bJ2xhc3RuYW1lJ10gPSAkdGhpcy0+X2RhdGFbJ29yZGVyJ11bJ2JpbGxpbmdfbGFzdF9uYW1lJ107CgkJCSRhcG9yZGVyWydiaWxsdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydwaG9uZW51bWJlciddID0gcHJlZ19yZXBsYWNlKCIvW14wLTldLyIsIiIsJHRoaXMtPl9kYXRhWydvcmRlciddWydiaWxsaW5nX3Bob25lJ10pOwoJCQkkYXBvcmRlclsnYmlsbHRvYWRkcmVzcyddWydzdHJlZXRuYW1lJ10gPSAgJHRoaXMtPl9kYXRhWydvcmRlciddWydiaWxsaW5nX2FkZHJlc3MxJ107CgoJCQkvLyBTZXQgdXAgdGhlIHNoaXAgdG8gYWRkcmVzcwoJCQkkYXBvcmRlclsnc2hpcHRvYWRkcmVzcyddWydjaXR5J10gPSAkdGhpcy0+X2RhdGFbJ29yZGVyJ11bJ3NoaXBwaW5nJ11bMF1bJ3NoaXBwaW5nX2NpdHknXTsKCQkJJGFwb3JkZXJbJ3NoaXB0b2FkZHJlc3MnXVsnaG91c2VudW1iZXInXSA9ICR0aGlzLT5fZGF0YVsnb3JkZXInXVsnc2hpcHBpbmcnXVswXVsnc2hpcHBpbmdfYWRkcmVzczInXTsKCQkJJGFwb3JkZXJbJ3NoaXB0b2FkZHJlc3MnXVsnaXNvY291bnRyeWNvZGUnXSA9ICR0aGlzLT5fZGF0YVsnb3JkZXInXVsnc2hpcHBpbmcnXVswXVsnc2hpcHBpbmdfY291bnRyeSddOwoJCQkkYXBvcmRlclsnc2hpcHRvYWRkcmVzcyddWydwb3N0YWxjb2RlJ10gPSAgJHRoaXMtPl9kYXRhWydvcmRlciddWydzaGlwcGluZyddWzBdWydzaGlwcGluZ19wb3N0YWwnXTsKCQkJJGFwb3JkZXJbJ3NoaXB0b2FkZHJlc3MnXVsncmVmZXJlbmNlcGVyc29uJ11bJ2RvYiddID0gJF9QT1NUWyJkb2IiXSAuJ1QwMDowMDowMCc7CgkJCSRhcG9yZGVyWydzaGlwdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydlbWFpbCddID0gICR0aGlzLT5fZGF0YVsnb3JkZXInXVsnc2hpcHBpbmcnXVswXVsnc2hpcHBpbmdfZW1haWwnXTsKCQkJJGFwb3JkZXJbJ3NoaXB0b2FkZHJlc3MnXVsncmVmZXJlbmNlcGVyc29uJ11bJ2dlbmRlciddID0gJF9QT1NUWyJnZW5kZXIiXTsKCQkJJGFwb3JkZXJbJ3NoaXB0b2FkZHJlc3MnXVsncmVmZXJlbmNlcGVyc29uJ11bJ2luaXRpYWxzJ10gPSAgJHRoaXMtPl9kYXRhWydvcmRlciddWydzaGlwcGluZyddWzBdWydzaGlwcGluZ19maXJzdF9uYW1lJ11bMF07CgkJCSRhcG9yZGVyWydzaGlwdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydpc29sYW5ndWFnZSddID0gICR0aGlzLT5fZGF0YVsnb3JkZXInXVsnc2hpcHBpbmcnXVswXVsnc2hpcHBpbmdfY291bnRyeSddOwoJCQkkYXBvcmRlclsnc2hpcHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsnbGFzdG5hbWUnXSA9ICAkdGhpcy0+X2RhdGFbJ29yZGVyJ11bJ3NoaXBwaW5nJ11bMF1bJ3NoaXBwaW5nX2xhc3RfbmFtZSddOwoJCQkkYXBvcmRlclsnc2hpcHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsncGhvbmVudW1iZXInXSA9ICBwcmVnX3JlcGxhY2UoIi9bXjAtOV0vIiwiIiwkdGhpcy0+X2RhdGFbJ29yZGVyJ11bJ3NoaXBwaW5nJ11bMF1bJ3NoaXBwaW5nX3Bob25lJ10pOwoJCQkkYXBvcmRlclsnc2hpcHRvYWRkcmVzcyddWydzdHJlZXRuYW1lJ10gPSAgICR0aGlzLT5fZGF0YVsnb3JkZXInXVsnc2hpcHBpbmcnXVswXVsnc2hpcHBpbmdfYWRkcmVzczEnXTsKCgkJCS8vIFNldCB1cCB0aGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgoJCQkkYXBvcmRlclsnb3JkZXJudW1iZXInXSA9ICRzT3JkZXJJZDsKCQkJJGFwb3JkZXJbJ2JhbmthY2NvdW50bnVtYmVyJ10gPSAkX1BPU1RbImJhbmtuciJdOwoJCQkkYXBvcmRlclsnY3VycmVuY3knXSA9ICdFVVInOwoJCQkkYXBvcmRlclsnaXBhZGRyZXNzJ10gPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsKCQkJCQkJCgkJCS8vZ2V0IGl0ZW1zIGZvciBhZnRlcnBheQoJCQkkaSA9IDA7CgkJCSRhbGxpdGVtcyA9ICR0aGlzLT5fZGF0YVsnaXRlbXMnXTsKCQkJZm9yZWFjaCAoJGFsbGl0ZW1zIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkJCQkkaSsrOwoJCQkJJHNrdSA9ICR2YWx1ZVsnbnVtYmVyJ107CgkJCQkkbmFtZSA9ICR2YWx1ZVsnbmFtZSddOwoJCQkJJHF0eSA9ICR2YWx1ZVsncXVhbnRpdHknXTsKCQkJCSRwcmljZSA9ICR2YWx1ZVsnYW1vdW50J10gKiAxMDA7IC8vIGluIGNlbnRzCgkJCQkkdGF4X2NhdGVnb3J5ID0gMTsgLy8gMSA9IGhpZ2gsIDIgPSBsb3csIDMsIHplcm8sIDQgbm8gdGF4CgkJCQkkQWZ0ZXJwYXktPmNyZWF0ZV9vcmRlcl9saW5lKCAkc2t1LCAkbmFtZSwgJHF0eSwgJHByaWNlLCAkdGF4X2NhdGVnb3J5ICk7CgoJCQl9OwoJCQl1bnNldCgkdmFsdWUpOyAvLyBicmVhayB0aGUgcmVmZXJlbmNlIHdpdGggdGhlIGxhc3QgZWxlbWVudAoJCQkKCQkJCgkJCQoJCQkKCQkJCgkJCS8vIENyZWF0ZSB0aGUgb3JkZXIgb2JqZWN0IGZvciBCMkMgb3IgQjJCCgkJCSRBZnRlcnBheS0+c2V0X29yZGVyKCAkYXBvcmRlciwgJ0IyQycgKTsKCQkJJG1vZHVzID0gJ2xpdmUnOwoJCQkvLyBTZXQgdXAgdGhlIEFmdGVyUGF5IGNyZWRlbnRpYWxzIGFuZCBzZW50IHRoZSBvcmRlcgoJCQkkYXV0aG9yaXNhdGlvblsnbWVyY2hhbnRpZCddID0gJGFmdGVycGF5TWVyY2hhbnRJRDsKCQkJJGF1dGhvcmlzYXRpb25bJ3BvcnRmb2xpb2lkJ10gPSAkYWZ0ZXJwYXlQb3J0Zm9saW9pZDsKCQkJJGF1dGhvcmlzYXRpb25bJ3Bhc3N3b3JkJ10gPSAkYWZ0ZXJwYXlQYXNzd29yZDsKCgkJCWlmICgkdGVzdG1vZGUpewoJCQkJZWNobyAiVGVzdG1vZHVzIEFmdGVyUGF5PGJyPiI7CgkJCQlwcmludF9yKCRhdXRob3Jpc2F0aW9uKTsKCQkJCQoJCQkJcmVxdWlyZShkaXJuYW1lKF9fRklMRV9fKSAuICcvZEJ1Zy5waHAnKTsJLy9kZWJ1ZyBhZnRlcnBheQoKCQkJCSRtb2R1cyA9ICd0ZXN0JzsKCQkJCSRBZnRlcnBheS0+dmFsaWRhdGVfYW5kX2NoZWNrX29yZGVyKCAkYXV0aG9yaXNhdGlvbiwgJG1vZHVzICk7CgkJCQkKCQkJCWlmICgkQWZ0ZXJwYXktPm9yZGVyX3Jlc3VsdC0+cmV0dXJuLT5yZXN1bHRJZCA9PSAwKXsKCQkJCQkvL3N1Y2NlcwoJCQkJCSR0cmFuc2lkID0gJEFmdGVycGF5LT5vcmRlcl9yZXN1bHQtPnJldHVybi0+dHJhbnNhY3Rpb25JZDsKCQkJCQllY2hvICJMb2NhdGlvbjogIiAuICRyZXR1cm5fdXJsIC4gIiZzdGF0dXM9U3VjY2VzcyZhZnRlcj10cnVlJnRyeGlkPSIgLiAkdHJhbnNpZDsKCQkJCX0gZWxzZSB7CgkJCQkJLy9nZXQgZXJyb3IKCQkJCQkkZXJyb3Jtc2cgPSB1cmxlbmNvZGUoJEFmdGVycGF5LT5vcmRlcl9yZXN1bHQtPnJldHVybi0+ZmFpbHVyZXMtPnN1Z2dlc3RlZHZhbHVlKTsKCQkJCQllY2hvICJMb2NhdGlvbjogIiAuICRyZXR1cm5fdXJsIC4gIiZzdGF0dXM9PUZhaWx1cmUmYWZ0ZXI9dHJ1ZSZtc2c9IiAuICRlcnJvcm1zZzsKCQkJCQkKCQkJCQkKCQkJCX0KCQkJCW5ldyBkQnVnKCRBZnRlcnBheSk7CgkJCX0gZWxzZSB7CgkJCQkkQWZ0ZXJwYXktPnZhbGlkYXRlX2FuZF9jaGVja19vcmRlciggJGF1dGhvcmlzYXRpb24sICRtb2R1cyApOwoJCQkJaWYgKCRBZnRlcnBheS0+b3JkZXJfcmVzdWx0LT5yZXR1cm4tPnJlc3VsdElkID09IDApewoJCQkJCS8vc3VjY2VzCgkJCQkJJHRyYW5zaWQgPSAkQWZ0ZXJwYXktPm9yZGVyX3Jlc3VsdC0+cmV0dXJuLT50cmFuc2FjdGlvbklkOwoJCQkJCWhlYWRlcigiTG9jYXRpb246ICIgLiAkcmV0dXJuX3VybCAuICImc3RhdHVzPVN1Y2Nlc3MmYWZ0ZXI9dHJ1ZSZ0cnhpZD0iIC4gJHRyYW5zaWQpOwoJCQkJfSBlbHNlIHsKCQkJCQkvL2dldCBlcnJvcgoJCQkJCSRlcnJvcm1zZyA9IHVybGVuY29kZSgkQWZ0ZXJwYXktPm9yZGVyX3Jlc3VsdC0+cmV0dXJuLT5mYWlsdXJlcy0+c3VnZ2VzdGVkdmFsdWUpOwoJCQkJCWhlYWRlcigiTG9jYXRpb246ICIgLiAkcmV0dXJuX3VybCAuICImc3RhdHVzPT1GYWlsdXJlJmFmdGVyPXRydWUmbXNnPSIgLiAkZXJyb3Jtc2cpOwoJCQkJCQoJCQkJfQoKCQkJfQoJCQkKCQkJCgkJCQoJCQkKCQl9Cgl9Cn0KPz4K]]></data>
	</file>
	<file>
	  <filename>/action.status.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNpc293R2F0ZXdheSAoYykgMjAxMiBieSBSZWludCBKYW50aW5vCiMgICAgICAgICAoaW5mb0BqYW50aW5vLm5sKQojCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBTaXNvdyAoaWRlYWwsIHBheXBhbCwgZ2lmdGNhcmRzKSBQYXltZW50cyBnYXRld2F5LgojCiMgTm90ZTogVGhpcyBtb2R1bGUgaXMgYmFzZWQgb24gdGhlIFBheXBhbEdhdGV3YXkgYnkgUm9iZXJ0IENhbXBiZWxsLgojIEFuZCBJZGVhbEdhdGV3YXkgTGl0ZSAoYykgMjAxMCBieSBNYXJjIHZhbiBkZSBHZWlqbiAobWFyY0B2ZGdlaWpuLmNvbSkKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggaXNzZXQoJHBhcmFtc1snc3RhdHVza2V5J10pKXsKCSR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdDYWxsYmFjayBhYW5nZXJvZXBlbicpOwoJaWYoICFpc3NldCgkcGFyYW1zWydvcmRlcl9pZCddKSl7IGV4aXQoJ2Vycm9yIG9yZGVyIGlkJyk7fTsKCSRzdGF0dXMgPSByYXd1cmxkZWNvZGUoJHBhcmFtc1snc3RhdHVza2V5J10pOwoJLy9mZXRjaCB1bmlxdWUga2V5IGZvciBlbmNvZGluZy9kZWNvZGluZwoJJHF1ZXJ5ID0gJ1NFTEVDVCBjYWxsYmFja2tleSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2lzb3dnYXRld2F5IjsKCSRkYnIgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSApOwoJCXdoaWxlKCAkZGJyICYmICgkcm93ID0gJGRici0+RmV0Y2hSb3coKSApICkKCQkgIHsKCQkgICAgJGtleSA9ICAkcm93WydjYWxsYmFja2tleSddOwoJCSAgfQoJCgoJJHN0YXR1c2tleSA9IHJ0cmltKG1jcnlwdF9kZWNyeXB0KE1DUllQVF9SSUpOREFFTF8yNTYsIG1kNSgka2V5KSwgYmFzZTY0X2RlY29kZSgkc3RhdHVzKSwgTUNSWVBUX01PREVfQ0JDLCBtZDUobWQ1KCRrZXkpKSksICJcMCIpOwoJCgkkY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKCXJlcXVpcmUoZGlybmFtZShfX0ZJTEVfXykgLiAnL3Npc293LmNsczUucGhwJyk7CgkKCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2lzb3dnYXRld2F5JzsKCSRkYnIgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSApOwoJCXdoaWxlKCAkZGJyICYmICgkcm93ID0gJGRici0+RmV0Y2hSb3coKSApICkKCQkgIHsKCQkgICAgJE1lcmNoYW5kSUQgPSAgJHJvd1snTWVyY2hhbnRJRCddOwoJCSAgICAkTWVyY2hhbnRLZXkgPSAkcm93WydNZXJjaGFudEtleSddOwoJCQkkdGVzdG1vZGUgPSAkcm93Wyd0ZXN0bW9kZSddOwoJCSAgfQoJJHNpc293ID0gbmV3IFNpc293KCRNZXJjaGFuZElELCAkTWVyY2hhbnRLZXkpOwoJJHNpc293LT5TdGF0dXNSZXF1ZXN0KCRfR0VUWyJ0cnhpZCJdKTsKCSR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCd0cng6ICcuJF9HRVRbInRyeGlkIl0uJ29yZGVyaWQ6ICcuJHBhcmFtc1snb3JkZXJfaWQnXSkgOwoJIGlmICgkc2lzb3ctPnN0YXR1cyA9PSBTaXNvdzo6c3RhdHVzU3VjY2VzcykgewoJCSR0cmFuc2FjdGlvbmlkID0gJF9HRVRbInRyeGlkIl07CgkJJHRvdGFhbGJlZHJhZyA9IHN0cl9yZXBsYWNlKCcsJywgJy4nLCAkc2lzb3ctPmFtb3VudCk7CgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX29yZGVycyBTRVQgc3RhdHVzID0gJ3BhaWQnIFdIRVJFIGlkID0gJyIuJHBhcmFtc1snb3JkZXJfaWQnXS4iJyBBTkQgZmV1X3VzZXJfaWQgPSAnIi4kc3RhdHVza2V5LiInIjsKCQkkZGJyID0gJGRiLT5FeGVjdXRlKCAkcXVlcnkgKTsKCQkkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwncXVlcnk6ICcuJHF1ZXJ5KSA7CgkJJG5vdyA9IHRpbWUoKTsJCgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfb3JkZXJzX3BheW1lbnRzIChgaWRgLCBgb3JkZXJfaWRgLCBgYW1vdW50YCwgYHBheW1lbnRfZGF0ZWAsIGBzdGF0dXNgLCBgbWV0aG9kYCwgYGdhdGV3YXlgLCBgY2NfbnVtYmVyYCwgYGNjX2V4cGlyeWAsIGBjY192ZXJpZnljb2RlYCwgYGNvbmZpcm1hdGlvbl9udW1gLCBgdHhuX2lkYCwgYG5vdGVzYCwgYGFzc29jZGF0YWApIFZBTFVFUyAoTlVMTCwgJyIuJHBhcmFtc1snb3JkZXJfaWQnXS4iJywgJyIgLiAkdG90YWFsYmVkcmFnIC4iJywgJyIuJG5vdy4iJywgJ3BheW1lbnRfYXBwcm92ZWQnLCAnb25saW5lJywgJ1Npc293R2F0ZXdheScsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsICciLiRfR0VUWyd0cnhpZCddLiInLCBOVUxMLCBOVUxMKSI7CgkJJGRiciA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5ICk7CgkJJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ3F1ZXJ5OiAnLiRxdWVyeSkgOwoJCQoJIH0KCQoKfTsKaWYoICFpc3NldCgkcGFyYW1zWydteWN1c3RvbSddKSApCnsKCSR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19jdXN0b21fdmVyaWZpZXInKSk7CgkkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19jdXN0b21fdmVyaWZpZXInKSk7Cn0KZWxzZSBpZiggIWlzc2V0KCRwYXJhbXNbJ29yZGVyX2lkJ10pICkKewoJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9pcG5faW52YWxpZF9vcmRlcmlkJykpOwoJJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl9pbnZhbGlkX29yZGVyaWQnKSk7Cn0KCmVsc2UKewoJaWYoICEgJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKSApIHsKCQlwcmludCAiVW5hYmxlIHRvIHJlc3RvcmUgc3RhdGUiOwoJCWV4aXQoKTsKCX0KCglpZiggISR0aGlzLT5DaGVja0luZm8oKSApCgl7CgkJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXN0b3JpbmdfdHJhbnNhY3Rpb25fc3RhdGUnKSk7Cgl9CgllbHNlCgl7CgkJJGNvbmZpZyA9JiAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgkJcmVxdWlyZShkaXJuYW1lKF9fRklMRV9fKSAuICcvc2lzb3cuY2xzNS5waHAnKTsKCQkKCQkkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Npc293Z2F0ZXdheSc7CgkJJGRiciA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5ICk7CgkJd2hpbGUoICRkYnIgJiYgKCRyb3cgPSAkZGJyLT5GZXRjaFJvdygpICkgKQoJCSAgewoJCSAgICAkTWVyY2hhbmRJRCA9ICAkcm93WydNZXJjaGFudElEJ107CgkJICAgICRNZXJjaGFudEtleSA9ICRyb3dbJ01lcmNoYW50S2V5J107CgkJCSR0ZXN0bW9kZSA9ICRyb3dbJ3Rlc3Rtb2RlJ107CgkJICB9CgkJCgkJJHNpc293ID0gbmV3IFNpc293KCRNZXJjaGFuZElELCAkTWVyY2hhbnRLZXkpOwoJCQoJCWlmIChpc3NldCgkX0dFVFsic3RhdHVzIl0pKSB7CgkJCSRzU3RhdHVzID0gc3RydG91cHBlcigkX0dFVFsic3RhdHVzIl0pOwoJCQkKCQl9CgoJCWlmIChpc3NldCgkX0dFVFsidHJ4aWQiXSkpIHsKCQkJaWYgKGlzc2V0KCRfR0VUWyJhZnRlciJdKSkgewoJCQkJJHRyYW5zYWN0aW9uaWQgPSAkX0dFVFsidHJ4aWQiXTsKCQkJfSBlbHNlIHsKCQkJCSRzaXNvdy0+U3RhdHVzUmVxdWVzdCgkX0dFVFsidHJ4aWQiXSk7CgkJCQkgaWYgKCRzaXNvdy0+c3RhdHVzID09IFNpc293OjpzdGF0dXNTdWNjZXNzKSB7CgkJCQkJJHRyYW5zYWN0aW9uaWQgPSAkX0dFVFsidHJ4aWQiXTsKCQkJCQkkdG90YWFsYmVkcmFnID0gJHNpc293LT5hbW91bnQ7CgkJCQkgfQoJCQl9CgkJCQoJCX0KCQkJJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpzdGF0dXMnLCAnIHN0YXR1cyAnIC4gJHNTdGF0dXMgKTsKCQkJc3dpdGNoKCAkc1N0YXR1cyApIHsKCQkJCWNhc2UgIlNVQ0NFU1MiOgoJCQkJCSR0aGlzLT5TZXRTdGF0dXMoUEFZTUVOVF9TVEFUVVNfQVBQUk9WRUQpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiRVhQSVJFRCI7CgkJCQljYXNlICJDQU5DRUxMRUQiOgoJCQkJCWVjaG8gJ0JldGFsaW5nIGlzIGdlYW5udWxlZXJkLCBwcm9iZWVydCB1IGhldCBub2cgZWVucy4gS2xpayA8YSBocmVmPSIvYWZyZWtlbmVuIj5oaWVyPC9hPiBvbSB0ZXJ1ZyB0ZSBnYWFuIG5hYXIgaGV0IGFmcmVrZW5zY2hlcm0uJzsKCQkJCQlicmVhazsKCQkJCWNhc2UgIkZBSUxVUkUiOgoJCQkJCSR0aGlzLT5TZXRTdGF0dXMoUEFZTUVOVF9TVEFUVVNfQ0FOQ0VMTEVEKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIk9QRU4iOgoJCQkJCSR0aGlzLT5TZXRTdGF0dXMoUEFZTUVOVF9TVEFUVVNfUEVORElORyk7CgkJCQkJYnJlYWs7CgkJCX0KCQl9CgkJCgkJJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJHRoaXMtPkxhbmcoJ21zZ190cmFuc2FjdGlvbl9zdWNjZXNzJywkX1JFUVVFU1RbJ3RyeGlkJ10pKTsKCgkJJHRoaXMtPlNldFRyYW5zYWN0aW9uSWQoJHRyYW5zYWN0aW9uaWQpOwoJCSR0aGlzLT5TZXRUcmFuc2FjdGlvbkFtb3VudCgkdG90YWFsYmVkcmFnKTsKCQkka2V5ID0gJHBhcmFtc1snbXljdXN0b20nXTsKCQkkY29tcGxldGVfdXJsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJ2NudG50MDEnLCdnYXRld2F5X2NvbXBsZXRlJywkcGFyYW1zWydyZXR1cm5pZCddLCcnLAoJCWFycmF5KCdvcmRlcl9pZCc9PiRwYXJhbXNbJ29yZGVyX2lkJ10sCgkJCQkJICAgICAgICdteWN1c3RvbSc9PiRrZXkpLAoJCQkJCSAnJyx0cnVlKTsKCQkkcmV0dXJuX3VybCA9IHN0cl9yZXBsYWNlKCAiJmFtcDsiLCImIiwgJHJldHVybl91cmwpOwoJCWlmIChpc3NldCgkX0dFVFsibXNnIl0pKSB7CgkJCSRjb21wbGV0ZV91cmwgLj0gIiZtc2c9IiAuICRfR0VUWyJtc2ciXTsKCQl9CgkJJGNvbXBsZXRlX3VybCA9IHN0cl9yZXBsYWNlKCAibWFjdD1TaXNvd0dhdGV3YXksIiwgIm1hY3Q9T3JkZXJzLCIsICRjb21wbGV0ZV91cmwpOwoJCQoJCSR0aGlzLT5TZXREZXN0aW5hdGlvbigkY29tcGxldGVfdXJsKTsKCQkKCQkJaWYgKCRzU3RhdHVzID09ICdTVUNDRVNTJyl7CgkJCQkkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsJCQkKCQkJfTsKCQkKCgkJcmV0dXJuOwoJCn0KLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogIDxsaT5WZXJzaW9uIDAuNS42IC0gMzAgTWFyY2ggMjAxNSAtIEphbnRpbm8KICAgPHVsPgogICAgIDxsaT5UZXN0ZWQgd2l0aCBDTVNNUyAyLjA8L2xpPgoJIDxsaT5BZGRlZCBBZnRlcnBheSBmdW5jdGlvbjwvbGk+CgkgPGxpPkFkZGVkIFNpc293IGNhbGxiYWNrIGZ1bmN0aW9uPC9saT4KICAgPC91bD4KIDwvbGk+CiAgPGxpPlZlcnNpb24gMC41LjUgLSAyNSBOb3ZlbWJlciAyMDE0IC0gSmFudGlubwogICA8dWw+CiAgICAgPGxpPmZpcnN0IGltcGxlbWVudGF0aW9uIC0gS2xhcm5hIG9wdGlvbiAoYmV0YWxpbmcgYWNodGVyYWYgLyBhY2NlcHRnaXJvKSAtIG5vdCB3b3JraW5nITwvbGk+CgkgPGxpPkFkZGVkICJsYWJlbCBmb3IiIGF0dHJpYnV0ZXMgZm9yIGJldGVyIHNlbGVjdGluZyBwYXltZW50IGZvcm08L2xpPgogICA8L3VsPgogPC9saT4KICA8bGk+VmVyc2lvbiAwLjUuMiAtIDIzIFNlcHRlbWJlciAyMDE0IC0gSmFudGlubwogICA8dWw+CiAgICAgPGxpPkFkZGVkIENyZWRpdGNhcmQgb3B0aW9uczwvbGk+CiAgIDwvdWw+CiA8L2xpPgogIDxsaT5WZXJzaW9uIDAuNS4xIC0gMTkgT2N0b2JlciAyMDEyIC0gSmFudGlubwogICA8dWw+CiAgICAgPGxpPkJ1Z2ZpeCwgbm93IGRpc3BsYXlzIGludm9pY2UgbnVtYmVyIGFuZCBzaG9wbmFtZShhcyBlbnRlcmVkIGF0IGVjb21tZXJjZWJhc2UpIGFzIHRyYW5zYWN0aW9uIGRlc2NyaXB0aW9uPC9saT4KICAgPC91bD4KIDwvbGk+CiA8bGk+VmVyc2lvbiAwLjUuMCAtIDEwIE9jdG9iZXIgMjAxMiAtIEphbnRpbm8KICAgPHVsPgogICAgIDxsaT5BbGwgY3VycmVudCBwYXltZW50IG1ldGhvZHMgb2YgU2lzb3cgaW1wbGVtZW50ZWQ6PGJyIC8+CgkJaURlYWwgPGJyIC8+CgkJRElSRUNUZWJhbmtpbmc8YnIgLz4KCQlNaXN0ZXJDYXNoPGJyIC8+CgkJV2ViU2hvcCBHaWZ0Q2FyZDxiciAvPgoJCVBvZGl1bSBDYWRlYXVrYWFydDxiciAvPgoJCVBheXBhbCBvZiBjcmVkaXRjYXJkCgk8L2xpPgoJPGxpPk9wdGlvbiBmb3IganF1ZXJ5c2NyaXB0IHRvIGhpZGUgYmFua2xpc3QgdW50aWxsIGlkZWFsIGlzIGNob3NlbiBhcyBwYXltZW50IG1ldGhvZC48L2xpPgogICA8L3VsPgogPC9saT4KIDxsaT5WZXJzaW9uIDAuNC4wIC0gNSBPY3RvYmVyIDIwMTIgLSBKYW50aW5vCiAgIDx1bD4KICAgICA8bGk+SW5pdGlhbCB2ZXJzaW9uLiBDb21wYXRpYmxlIHdpdGggQ01TTVMgMS4xMS4xPC9saT4KICAgPC91bD4KIDwvbGk+CiAgCjwvdWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/class-afterpay.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFmdGVyUGF5IENsYXNzCiAqIFZlcnNpb246IDEuMC4yCiAqLwoKY2xhc3MgQWZ0ZXJwYXkgCnsKICAgIHZhciAkYXV0aG9yaXphdGlvbjsKICAgIHZhciAkbW9kdXM7CiAgICB2YXIgJG9yZGVyOwoJdmFyICRvcmRlcl9saW5lcyA9IGFycmF5KCk7CiAgICB2YXIgJG9yZGVyX3R5cGU7CiAgICB2YXIgJG9yZGVyX3R5cGVfbmFtZTsKICAgIHZhciAkb3JkZXJfdHlwZV9mdW5jdGlvbjsKICAgIHZhciAkb3JkZXJfcmVxdWVzdDsKICAgIHZhciAkb3JkZXJfcmVzdWx0OwogICAgdmFyICRzb2FwX2NsaWVudDsKCXZhciAkdG90YWxfb3JkZXJfYW1vdW50ID0gMDsKICAgIHZhciAkd3NkbDsKCQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewoJCSR0aGlzLT5vcmRlciA9IG5ldyBzdGRDbGFzcygpOwoJCSR0aGlzLT5vcmRlci0+c2hvcHBlciA9IG5ldyBzdGRDbGFzcygpOwoJfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X29yZGVyKCAkb3JkZXIsICRvcmRlcl90eXBlICkgewoJCSR0aGlzLT5zZXRfb3JkZXJfdHlwZSggJG9yZGVyX3R5cGUgKTsKICAgICAgICAKICAgICAgICBpZiggJHRoaXMtPm9yZGVyX3R5cGUgPT0gJ0IyQycgKSB7CiAgICAgICAgICAgICRiaWxsdG9fYWRkcmVzcyA9ICdiMmNiaWxsdG9BZGRyZXNzJzsKICAgICAgICAgICAgJHNoaXB0b19hZGRyZXNzID0gJ2IyY3NoaXB0b0FkZHJlc3MnOwogICAgICAgIH0gZWxzZWlmICggJHRoaXMtPm9yZGVyX3R5cGUgPT0gJ0IyQicgKSB7CiAgICAgICAgICAgICRiaWxsdG9fYWRkcmVzcyA9ICdiMmJiaWxsdG9BZGRyZXNzJzsKICAgICAgICAgICAgJHNoaXB0b19hZGRyZXNzID0gJ2IyYnNoaXB0b0FkZHJlc3MnOwogICAgICAgIH0KICAgICAgICAKCQkkdGhpcy0+b3JkZXItPiRiaWxsdG9fYWRkcmVzcyA9IG5ldyBzdGRDbGFzcygpOwoJCSR0aGlzLT5vcmRlci0+JGJpbGx0b19hZGRyZXNzLT5yZWZlcmVuY2VQZXJzb24gPSBuZXcgc3RkQ2xhc3MoKTsKCQkkdGhpcy0+b3JkZXItPiRzaGlwdG9fYWRkcmVzcyA9IG5ldyBzdGRDbGFzcygpOwoJCSR0aGlzLT5vcmRlci0+JHNoaXB0b19hZGRyZXNzLT5yZWZlcmVuY2VQZXJzb24gPSBuZXcgc3RkQ2xhc3MoKTsKCQkKICAgICAgICAkdGhpcy0+b3JkZXItPiRiaWxsdG9fYWRkcmVzcy0+Y2l0eSA9ICRvcmRlclsnYmlsbHRvYWRkcmVzcyddWydjaXR5J107CiAgICAgICAgJHRoaXMtPm9yZGVyLT4kYmlsbHRvX2FkZHJlc3MtPmhvdXNlbnVtYmVyID0gJG9yZGVyWydiaWxsdG9hZGRyZXNzJ11bJ2hvdXNlbnVtYmVyJ107CiAgICAgICAgJHRoaXMtPm9yZGVyLT4kYmlsbHRvX2FkZHJlc3MtPmlzb0NvdW50cnlDb2RlID0gJG9yZGVyWydiaWxsdG9hZGRyZXNzJ11bJ2lzb2NvdW50cnljb2RlJ107CiAgICAgICAgJHRoaXMtPm9yZGVyLT4kYmlsbHRvX2FkZHJlc3MtPnBvc3RhbGNvZGUgPSAkb3JkZXJbJ2JpbGx0b2FkZHJlc3MnXVsncG9zdGFsY29kZSddOwogICAgICAgICR0aGlzLT5vcmRlci0+JGJpbGx0b19hZGRyZXNzLT5yZWZlcmVuY2VQZXJzb24tPmRhdGVvZmJpcnRoID0gJG9yZGVyWydiaWxsdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydkb2InXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRiaWxsdG9fYWRkcmVzcy0+cmVmZXJlbmNlUGVyc29uLT5lbWFpbGFkZHJlc3MgPSAkb3JkZXJbJ2JpbGx0b2FkZHJlc3MnXVsncmVmZXJlbmNlcGVyc29uJ11bJ2VtYWlsJ107CiAgICAgICAgJHRoaXMtPm9yZGVyLT4kYmlsbHRvX2FkZHJlc3MtPnJlZmVyZW5jZVBlcnNvbi0+Z2VuZGVyID0gJG9yZGVyWydiaWxsdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydnZW5kZXInXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRiaWxsdG9fYWRkcmVzcy0+cmVmZXJlbmNlUGVyc29uLT5pbml0aWFscyA9ICRvcmRlclsnYmlsbHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsnaW5pdGlhbHMnXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRiaWxsdG9fYWRkcmVzcy0+cmVmZXJlbmNlUGVyc29uLT5pc29MYW5ndWFnZSA9ICRvcmRlclsnYmlsbHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsnaXNvbGFuZ3VhZ2UnXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRiaWxsdG9fYWRkcmVzcy0+cmVmZXJlbmNlUGVyc29uLT5sYXN0bmFtZSA9ICRvcmRlclsnYmlsbHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsnbGFzdG5hbWUnXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRiaWxsdG9fYWRkcmVzcy0+cmVmZXJlbmNlUGVyc29uLT5waG9uZW51bWJlcjEgPSAkb3JkZXJbJ2JpbGx0b2FkZHJlc3MnXVsncmVmZXJlbmNlcGVyc29uJ11bJ3Bob25lbnVtYmVyJ107CiAgICAgICAgJHRoaXMtPm9yZGVyLT4kYmlsbHRvX2FkZHJlc3MtPnN0cmVldG5hbWUgPSAkb3JkZXJbJ2JpbGx0b2FkZHJlc3MnXVsnc3RyZWV0bmFtZSddOwogICAgICAgIAogICAgICAgICR0aGlzLT5vcmRlci0+JHNoaXB0b19hZGRyZXNzLT5jaXR5ID0gJG9yZGVyWydzaGlwdG9hZGRyZXNzJ11bJ2NpdHknXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRzaGlwdG9fYWRkcmVzcy0+aG91c2VudW1iZXIgPSAkb3JkZXJbJ3NoaXB0b2FkZHJlc3MnXVsnaG91c2VudW1iZXInXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRzaGlwdG9fYWRkcmVzcy0+aXNvQ291bnRyeUNvZGUgPSAkb3JkZXJbJ3NoaXB0b2FkZHJlc3MnXVsnaXNvY291bnRyeWNvZGUnXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRzaGlwdG9fYWRkcmVzcy0+cG9zdGFsY29kZSA9ICRvcmRlclsnc2hpcHRvYWRkcmVzcyddWydwb3N0YWxjb2RlJ107CiAgICAgICAgJHRoaXMtPm9yZGVyLT4kc2hpcHRvX2FkZHJlc3MtPnJlZmVyZW5jZVBlcnNvbi0+ZGF0ZW9mYmlydGggPSAkb3JkZXJbJ3NoaXB0b2FkZHJlc3MnXVsncmVmZXJlbmNlcGVyc29uJ11bJ2RvYiddOwogICAgICAgICR0aGlzLT5vcmRlci0+JHNoaXB0b19hZGRyZXNzLT5yZWZlcmVuY2VQZXJzb24tPmVtYWlsYWRkcmVzcyA9ICRvcmRlclsnc2hpcHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsnZW1haWwnXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRzaGlwdG9fYWRkcmVzcy0+cmVmZXJlbmNlUGVyc29uLT5nZW5kZXIgPSAkb3JkZXJbJ3NoaXB0b2FkZHJlc3MnXVsncmVmZXJlbmNlcGVyc29uJ11bJ2dlbmRlciddOwogICAgICAgICR0aGlzLT5vcmRlci0+JHNoaXB0b19hZGRyZXNzLT5yZWZlcmVuY2VQZXJzb24tPmluaXRpYWxzID0gJG9yZGVyWydzaGlwdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydpbml0aWFscyddOwogICAgICAgICR0aGlzLT5vcmRlci0+JHNoaXB0b19hZGRyZXNzLT5yZWZlcmVuY2VQZXJzb24tPmlzb0xhbmd1YWdlID0gJG9yZGVyWydzaGlwdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydpc29sYW5ndWFnZSddOwogICAgICAgICR0aGlzLT5vcmRlci0+JHNoaXB0b19hZGRyZXNzLT5yZWZlcmVuY2VQZXJzb24tPmxhc3RuYW1lID0gJG9yZGVyWydzaGlwdG9hZGRyZXNzJ11bJ3JlZmVyZW5jZXBlcnNvbiddWydsYXN0bmFtZSddOwogICAgICAgICR0aGlzLT5vcmRlci0+JHNoaXB0b19hZGRyZXNzLT5yZWZlcmVuY2VQZXJzb24tPnBob25lbnVtYmVyMSA9ICRvcmRlclsnc2hpcHRvYWRkcmVzcyddWydyZWZlcmVuY2VwZXJzb24nXVsncGhvbmVudW1iZXInXTsKICAgICAgICAkdGhpcy0+b3JkZXItPiRzaGlwdG9fYWRkcmVzcy0+c3RyZWV0bmFtZSA9ICRvcmRlclsnc2hpcHRvYWRkcmVzcyddWydzdHJlZXRuYW1lJ107CgogICAgICAgICR0aGlzLT5vcmRlci0+b3JkZXJudW1iZXIgPSAkb3JkZXJbJ29yZGVybnVtYmVyJ107CiAgICAgICAgJHRoaXMtPm9yZGVyLT5iYW5rYWNjb3VudE51bWJlciA9ICRvcmRlclsnYmFua2FjY291bnRudW1iZXInXTsKICAgICAgICAkdGhpcy0+b3JkZXItPmN1cnJlbmN5ID0gJG9yZGVyWydjdXJyZW5jeSddOwogICAgICAgICR0aGlzLT5vcmRlci0+aXBBZGRyZXNzID0gJG9yZGVyWydpcGFkZHJlc3MnXTsKICAgICAgICAkdGhpcy0+b3JkZXItPnNob3BwZXItPnByb2ZpbGVjcmVhdGVkID0gJzIwMTMtMDEtMDFUMDA6MDA6MDAnOwogICAgICAgICR0aGlzLT5vcmRlci0+cGFyZW50VHJhbnNhY3Rpb25yZWZlcmVuY2UgPSBmYWxzZTsgICAgCiAgICAgICAgJHRoaXMtPm9yZGVyLT5vcmRlcmxpbmVzID0gJHRoaXMtPm9yZGVyX2xpbmVzOwoJCSR0aGlzLT5vcmRlci0+dG90YWxPcmRlckFtb3VudCA9ICAkdGhpcy0+dG90YWxfb3JkZXJfYW1vdW50OwoJCQoJCWlmKCAkdGhpcy0+b3JkZXJfdHlwZSA9PSAnQjJCJyApIHsKCQkKCQkJJHRoaXMtPm9yZGVyLT5jb21wYW55LT5jb2NudW1iZXIgPSAkb3JkZXJbJ2NvbXBhbnknXVsnY29jbnVtYmVyJ107CgkJCSR0aGlzLT5vcmRlci0+Y29tcGFueS0+Y29tcGFueW5hbWUgPSAkb3JkZXJbJ2NvbXBhbnknXVsnY29tcGFueW5hbWUnXTsKCQkJJHRoaXMtPm9yZGVyLT5jb21wYW55LT5lc3RhYmxpc2htZW50bnVtYmVyID0gJG9yZGVyWydjb21wYW55J11bJ2VzdGFibGlzaG1lbnRudW1iZXInXTsKCQkJJHRoaXMtPm9yZGVyLT5jb21wYW55LT52YXRudW1iZXIgPSAkb3JkZXJbJ2NvbXBhbnknXVsndmF0bnVtYmVyJ107CgkJCSR0aGlzLT5vcmRlci0+Y29tcGFueS0+ZGVwYXJ0bWVudCA9ICRvcmRlclsnY29tcGFueSddWydkZXBhcnRtZW50J107CgkJCSR0aGlzLT5vcmRlci0+Y29zdGNlbnRlciA9ICRvcmRlclsnY29zdGNlbnRlciddOwoKCQl9CiAgICB9CiAgICAKCXB1YmxpYyBmdW5jdGlvbiBjcmVhdGVfb3JkZXJfbGluZSggJGlkLCAkZGVzY3JpcHRpb24sICRxdWFudGl0eSwgJHVuaXRfcHJpY2UsICR2YXRfY2F0ZWdvcnkgKSB7CgkJJG9yZGVyX2xpbmUgPSBuZXcgc3RkQ2xhc3MoKTsKCQkkb3JkZXJfbGluZS0+YXJ0aWNsZUlkID0gJGlkOwoJCSRvcmRlcl9saW5lLT5hcnRpY2xlRGVzY3JpcHRpb24gPSAkZGVzY3JpcHRpb247CgkJJG9yZGVyX2xpbmUtPnF1YW50aXR5ID0gJHF1YW50aXR5OwoJCSRvcmRlcl9saW5lLT51bml0cHJpY2UgPSAkdW5pdF9wcmljZTsKCQkkb3JkZXJfbGluZS0+dmF0Y2F0ZWdvcnkgPSAkdmF0X2NhdGVnb3J5OwoJCQoJCSR0aGlzLT50b3RhbF9vcmRlcl9hbW91bnQgPSAkdGhpcy0+dG90YWxfb3JkZXJfYW1vdW50ICsgKCAkcXVhbnRpdHkgKiAkdW5pdF9wcmljZSApOwoJCQoJCSR0aGlzLT5vcmRlcl9saW5lc1tdID0gJG9yZGVyX2xpbmU7Cgl9CgkKCQogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX2FuZF9jaGVja19vcmRlciggJGF1dGhvcml6YXRpb24sICRtb2R1cyApIHsKICAgICAgICAkdGhpcy0+c2V0X21vZHVzKCAkbW9kdXMgKTsKICAgICAgICAkdGhpcy0+c2V0X3NvYXBfY2xpZW50KCk7CiAgICAgICAgJHRoaXMtPnNldF9hdXRob3JpemF0aW9uKCAkYXV0aG9yaXphdGlvbiApOwogICAgICAgIAogICAgICAgICR0aGlzLT5vcmRlcl9yZXN1bHQgPSAkdGhpcy0+c29hcF9jbGllbnQtPl9fc29hcENhbGwoCiAgICAJICAgICR0aGlzLT5vcmRlcl90eXBlX25hbWUsIAoJCQlhcnJheSgKICAgICAgICAgICAgCSR0aGlzLT5vcmRlcl90eXBlX25hbWUgPT4gYXJyYXkoICAKCQkJICAgIAknYXV0aG9yaXphdGlvbicgPT4gJHRoaXMtPmF1dGhvcml6YXRpb24sIAoJCQkgICAgCSR0aGlzLT5vcmRlcl90eXBlX2Z1bmN0aW9uID0+ICR0aGlzLT5vcmRlcgogICAgICAgICAgICAgICAgKQoJCSAgICApCgkgICAgKTsKICAgIH0KICAgIAogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRfb3JkZXJfdHlwZSggJG9yZGVyX3R5cGUgKSB7CiAgICAgICAgc3dpdGNoICggJG9yZGVyX3R5cGUgKSB7CiAgICAgICAgICAgIGNhc2UgJ0IyQyc6CiAgICAgICAgICAgICAgICAkdGhpcy0+b3JkZXJfdHlwZSA9ICdCMkMnOwogICAgICAgICAgICAgICAgJHRoaXMtPm9yZGVyX3R5cGVfbmFtZSA9ICd2YWxpZGF0ZUFuZENoZWNrQjJDT3JkZXInOwogICAgICAgICAgICAgICAgJHRoaXMtPm9yZGVyX3R5cGVfZnVuY3Rpb24gPSAnYjJjb3JkZXInOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ0IyQic6CiAgICAgICAgICAgICAgICAkdGhpcy0+b3JkZXJfdHlwZSA9ICdCMkInOwogICAgICAgICAgICAgICAgJHRoaXMtPm9yZGVyX3R5cGVfbmFtZSA9ICd2YWxpZGF0ZUFuZENoZWNrQjJCT3JkZXInOwogICAgICAgICAgICAgICAgJHRoaXMtPm9yZGVyX3R5cGVfZnVuY3Rpb24gPSAnYjJib3JkZXInOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0X21vZHVzKCAkbW9kdXMgKSB7CiAgICAgICAgc3dpdGNoICggJG1vZHVzICkgewogICAgICAgICAgICBjYXNlICd0ZXN0JzoKICAgICAgICAgICAgICAgICR0aGlzLT5tb2R1cyA9ICd0ZXN0JzsKICAgICAgICAgICAgICAgICR0aGlzLT53c2RsID0gJ2h0dHBzOi8vdGVzdC5hY2NlcHRnaXJvZGllbnN0Lm5sL3NvYXBzZXJ2aWNlcy9ybS9BZnRlclBheWNoZWNrP3dzZGwnOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2xpdmUnOgogICAgICAgICAgICAgICAgJHRoaXMtPm1vZHVzID0gJ2xpdmUnOwogICAgICAgICAgICAgICAgJHRoaXMtPndzZGwgPSAnaHR0cHM6Ly93d3cuYWNjZXB0Z2lyb2RpZW5zdC5ubC9zb2Fwc2VydmljZXMvcm0vQWZ0ZXJQYXljaGVjaz93c2RsJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldF9zb2FwX2NsaWVudCgpIHsKICAgICAgICAkdGhpcy0+c29hcF9jbGllbnQgPSBuZXcgU29hcENsaWVudCgKICAgICAgICAgICAgJHRoaXMtPndzZGwsCgkJCWFycmF5KAoJCQkJJ3RyYWNlJyA9PiAwLAoJCSAgICAJJ2NhY2hlX3dzZGwnID0+IFdTRExfQ0FDSEVfTk9ORQoJCQkpCgkJKTsJCiAgICB9CiAgICAKICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0X2F1dGhvcml6YXRpb24gKCAkYXV0aG9yaXphdGlvbiApIHsKICAgICAgICAkdGhpcy0+YXV0aG9yaXphdGlvbi0+bWVyY2hhbnRJZCA9ICRhdXRob3JpemF0aW9uWydtZXJjaGFudGlkJ107CiAgICAgICAgJHRoaXMtPmF1dGhvcml6YXRpb24tPnBvcnRmb2xpb0lkID0gJGF1dGhvcml6YXRpb25bJ3BvcnRmb2xpb2lkJ107CiAgICAgICAgJHRoaXMtPmF1dGhvcml6YXRpb24tPnBhc3N3b3JkID0gJGF1dGhvcml6YXRpb25bJ3Bhc3N3b3JkJ107CiAgICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/dBug.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQogKiBMQVNUIFVQREFURQ0KICogPT09PT09PT09PT09DQogKiBNYXJjaCAyMiwgMjAwNw0KICoNCiAqDQogKiBBVVRIT1INCiAqID09PT09PT09PT09PT0NCiAqIEt3YWt1IE90Y2hlcmUgDQogKiBvc3BpbnRvQGhvdG1haWwuY29tDQogKiANCiAqIFRoYW5rcyB0byBBbmRyZXcgSGV3aXR0IChydWRlYndveUBob3RtYWlsLmNvbSkgZm9yIHRoZSBpZGVhIGFuZCBzdWdnZXN0aW9uDQogKiANCiAqIEFsbCB0aGUgY3JlZGl0IGdvZXMgdG8gQ29sZEZ1c2lvbidzIGJyaWxsaWFudCBjZmR1bXAgdGFnDQogKiBIb3BlIHRoZSBuZXh0IHZlcnNpb24gb2YgUEhQIGNhbiBpbXBsZW1lbnQgdGhpcyBvciBoYXZlIHNvbWV0aGluZyBzaW1pbGFyDQogKiBJIGxvdmUgUEhQLCBidXQgdmFyX2R1bXAgQkxPV1MhISENCiAqDQogKiBGT1IgRE9DVU1FTlRBVElPTiBBTkQgTU9SRSBFWEFNUExFUzogVklTSVQgaHR0cDovL2RidWcub3NwaW50by5jb20NCiAqDQogKg0KICogUFVSUE9TRQ0KICogPT09PT09PT09PT09PQ0KICogRHVtcHMvRGlzcGxheXMgdGhlIGNvbnRlbnRzIG9mIGEgdmFyaWFibGUgaW4gYSBjb2xvcmVkIHRhYnVsYXIgZm9ybWF0DQogKiBCYXNlZCBvbiB0aGUgaWRlYSwgamF2YXNjcmlwdCBhbmQgY3NzIGNvZGUgb2YgTWFjcm9tZWRpYSdzIENvbGRGdXNpb24gY2ZkdW1wIHRhZw0KICogQSBtdWNoIGJldHRlciBwcmVzZW50YXRpb24gb2YgYSB2YXJpYWJsZSdzIGNvbnRlbnRzIHRoYW4gUEhQJ3MgdmFyX2R1bXAgYW5kIHByaW50X3IgZnVuY3Rpb25zDQogKg0KICoNCiAqIFVTQUdFDQogKiA9PT09PT09PT09PT09DQogKiBuZXcgZEJ1ZyAoIHZhcmlhYmxlIFssZm9yY2VUeXBlXSApOw0KICogZXhhbXBsZToNCiAqIG5ldyBkQnVnICggJG15VmFyaWFibGUgKTsNCiAqDQogKiANCiAqIGlmIHRoZSBvcHRpb25hbCAiZm9yY2VUeXBlIiBzdHJpbmcgaXMgZ2l2ZW4sIHRoZSB2YXJpYWJsZSBzdXBwbGllZCB0byB0aGUgDQogKiBmdW5jdGlvbiBpcyBmb3JjZWQgdG8gaGF2ZSB0aGF0IGZvcmNlVHlwZSB0eXBlLiANCiAqIGV4YW1wbGU6IG5ldyBkQnVnKCAkbXlWYXJpYWJsZSAsICJhcnJheSIgKTsNCiAqIHdpbGwgZm9yY2UgJG15VmFyaWFibGUgdG8gYmUgdHJlYXRlZCBhbmQgZHVtcGVkIGFzIGFuIGFycmF5IHR5cGUsIA0KICogZXZlbiB0aG91Z2ggaXQgbWlnaHQgb3JpZ2luYWxseSBoYXZlIGJlZW4gYSBzdHJpbmcgdHlwZSwgZXRjLg0KICoNCiAqIE5PVEUhDQogKiA9PT09PT09PT09PT09PQ0KICogZm9yY2VUeXBlIGlzIFJFUVVJUkVEIGZvciBkdW1waW5nIGFuIHhtbCBzdHJpbmcgb3IgeG1sIGZpbGUNCiAqIG5ldyBkQnVnICggJHN0clhtbCwgInhtbCIgKTsNCiAqIA0KXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KY2xhc3MgZEJ1ZyB7DQoJDQoJdmFyICR4bWxEZXB0aD1hcnJheSgpOw0KCXZhciAkeG1sQ0RhdGE7DQoJdmFyICR4bWxTRGF0YTsNCgl2YXIgJHhtbEREYXRhOw0KCXZhciAkeG1sQ291bnQ9MDsNCgl2YXIgJHhtbEF0dHJpYjsNCgl2YXIgJHhtbE5hbWU7DQoJdmFyICRhcnJUeXBlPWFycmF5KCJhcnJheSIsIm9iamVjdCIsInJlc291cmNlIiwiYm9vbGVhbiIsIk5VTEwiKTsNCgl2YXIgJGJJbml0aWFsaXplZCA9IGZhbHNlOw0KCXZhciAkYkNvbGxhcHNlZCA9IGZhbHNlOw0KCXZhciAkYXJySGlzdG9yeSA9IGFycmF5KCk7DQoJDQoJLy9jb25zdHJ1Y3Rvcg0KCWZ1bmN0aW9uIGRCdWcoJHZhciwkZm9yY2VUeXBlPSIiLCRiQ29sbGFwc2VkPWZhbHNlKSB7DQoJCS8vaW5jbHVkZSBqcyBhbmQgY3NzIHNjcmlwdHMNCgkJaWYoIWRlZmluZWQoJ0JEQlVHSU5JVCcpKSB7DQoJCQlkZWZpbmUoIkJEQlVHSU5JVCIsIFRSVUUpOw0KCQkJJHRoaXMtPmluaXRKU2FuZENTUygpOw0KCQl9DQoJCSRhcnJBY2NlcHQ9YXJyYXkoImFycmF5Iiwib2JqZWN0IiwieG1sIik7IC8vYXJyYXkgb2YgdmFyaWFibGUgdHlwZXMgdGhhdCBjYW4gYmUgImZvcmNlZCINCgkJJHRoaXMtPmJDb2xsYXBzZWQgPSAkYkNvbGxhcHNlZDsNCgkJaWYoaW5fYXJyYXkoJGZvcmNlVHlwZSwkYXJyQWNjZXB0KSkNCgkJCSR0aGlzLT57InZhcklzIi51Y2ZpcnN0KCRmb3JjZVR5cGUpfSgkdmFyKTsNCgkJZWxzZQ0KCQkJJHRoaXMtPmNoZWNrVHlwZSgkdmFyKTsNCgl9DQoNCgkvL2dldCB2YXJpYWJsZSBuYW1lDQoJZnVuY3Rpb24gZ2V0VmFyaWFibGVOYW1lKCkgew0KCQkkYXJyQmFja3RyYWNlID0gZGVidWdfYmFja3RyYWNlKCk7DQoNCgkJLy9wb3NzaWJsZSAnaW5jbHVkZWQnIGZ1bmN0aW9ucw0KCQkkYXJySW5jbHVkZSA9IGFycmF5KCJpbmNsdWRlIiwiaW5jbHVkZV9vbmNlIiwicmVxdWlyZSIsInJlcXVpcmVfb25jZSIpOw0KCQkNCgkJLy9jaGVjayBmb3IgYW55IGluY2x1ZGVkL3JlcXVpcmVkIGZpbGVzLiBpZiBmb3VuZCwgZ2V0IGFycmF5IG9mIHRoZSBsYXN0IGluY2x1ZGVkIGZpbGUgKHRoZXkgY29udGFpbiB0aGUgcmlnaHQgbGluZSBudW1iZXJzKQ0KCQlmb3IoJGk9Y291bnQoJGFyckJhY2t0cmFjZSktMTsgJGk+PTA7ICRpLS0pIHsNCgkJCSRhcnJDdXJyZW50ID0gJGFyckJhY2t0cmFjZVskaV07DQoJCQlpZihhcnJheV9rZXlfZXhpc3RzKCJmdW5jdGlvbiIsICRhcnJDdXJyZW50KSAmJiANCgkJCQkoaW5fYXJyYXkoJGFyckN1cnJlbnRbImZ1bmN0aW9uIl0sICRhcnJJbmNsdWRlKSB8fCAoMCAhPSBzdHJjYXNlY21wKCRhcnJDdXJyZW50WyJmdW5jdGlvbiJdLCAiZGJ1ZyIpKSkpDQoJCQkJY29udGludWU7DQoNCgkJCSRhcnJGaWxlID0gJGFyckN1cnJlbnQ7DQoJCQkNCgkJCWJyZWFrOw0KCQl9DQoJCQ0KCQlpZihpc3NldCgkYXJyRmlsZSkpIHsNCgkJCSRhcnJMaW5lcyA9IGZpbGUoJGFyckZpbGVbImZpbGUiXSk7DQoJCQkkY29kZSA9ICRhcnJMaW5lc1soJGFyckZpbGVbImxpbmUiXS0xKV07DQoJDQoJCQkvL2ZpbmQgY2FsbCB0byBkQnVnIGNsYXNzDQoJCQlwcmVnX21hdGNoKCcvXGJuZXcgZEJ1Z1xzKlwoXHMqKC4rKVxzKlwpOy9pJywgJGNvZGUsICRhcnJNYXRjaGVzKTsNCgkJCQ0KCQkJcmV0dXJuICRhcnJNYXRjaGVzWzFdOw0KCQl9DQoJCXJldHVybiAiIjsNCgl9DQoJDQoJLy9jcmVhdGUgdGhlIG1haW4gdGFibGUgaGVhZGVyDQoJZnVuY3Rpb24gbWFrZVRhYmxlSGVhZGVyKCR0eXBlLCRoZWFkZXIsJGNvbHNwYW49Mikgew0KCQlpZighJHRoaXMtPmJJbml0aWFsaXplZCkgew0KCQkJJGhlYWRlciA9ICR0aGlzLT5nZXRWYXJpYWJsZU5hbWUoKSAuICIgKCIgLiAkaGVhZGVyIC4gIikiOw0KCQkJJHRoaXMtPmJJbml0aWFsaXplZCA9IHRydWU7DQoJCX0NCgkJJHN0cl9pID0gKCR0aGlzLT5iQ29sbGFwc2VkKSA/ICJzdHlsZT1cImZvbnQtc3R5bGU6aXRhbGljXCIgIiA6ICIiOyANCgkJDQoJCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0yIGNlbGxwYWRkaW5nPTMgY2xhc3M9XCJkQnVnXyIuJHR5cGUuIlwiPg0KCQkJCTx0cj4NCgkJCQkJPHRkICIuJHN0cl9pLiJjbGFzcz1cImRCdWdfIi4kdHlwZS4iSGVhZGVyXCIgY29sc3Bhbj0iLiRjb2xzcGFuLiIgb25DbGljaz0nZEJ1Z190b2dnbGVUYWJsZSh0aGlzKSc+Ii4kaGVhZGVyLiI8L3RkPg0KCQkJCTwvdHI+IjsNCgl9DQoJDQoJLy9jcmVhdGUgdGhlIHRhYmxlIHJvdyBoZWFkZXINCglmdW5jdGlvbiBtYWtlVERIZWFkZXIoJHR5cGUsJGhlYWRlcikgew0KCQkkc3RyX2QgPSAoJHRoaXMtPmJDb2xsYXBzZWQpID8gIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIiA6ICIiOw0KCQllY2hvICI8dHIiLiRzdHJfZC4iPg0KCQkJCTx0ZCB2YWxpZ249XCJ0b3BcIiBvbkNsaWNrPSdkQnVnX3RvZ2dsZVJvdyh0aGlzKScgY2xhc3M9XCJkQnVnXyIuJHR5cGUuIktleVwiPiIuJGhlYWRlci4iPC90ZD4NCgkJCQk8dGQ+IjsNCgl9DQoJDQoJLy9jbG9zZSB0YWJsZSByb3cNCglmdW5jdGlvbiBjbG9zZVREUm93KCkgew0KCQlyZXR1cm4gIjwvdGQ+PC90cj5cbiI7DQoJfQ0KCQ0KCS8vZXJyb3INCglmdW5jdGlvbiAgZXJyb3IoJHR5cGUpIHsNCgkJJGVycm9yPSJFcnJvcjogVmFyaWFibGUgY2Fubm90IGJlIGEiOw0KCQkvLyB0aGlzIGp1c3QgY2hlY2tzIGlmIHRoZSB0eXBlIHN0YXJ0cyB3aXRoIGEgdm93ZWwgb3IgIngiIGFuZCBkaXNwbGF5cyBlaXRoZXIgImEiIG9yICJhbiINCgkJaWYoaW5fYXJyYXkoc3Vic3RyKCR0eXBlLDAsMSksYXJyYXkoImEiLCJlIiwiaSIsIm8iLCJ1IiwieCIpKSkNCgkJCSRlcnJvci49Im4iOw0KCQlyZXR1cm4gKCRlcnJvci4iICIuJHR5cGUuIiB0eXBlIik7DQoJfQ0KDQoJLy9jaGVjayB2YXJpYWJsZSB0eXBlDQoJZnVuY3Rpb24gY2hlY2tUeXBlKCR2YXIpIHsNCgkJc3dpdGNoKGdldHR5cGUoJHZhcikpIHsNCgkJCWNhc2UgInJlc291cmNlIjoNCgkJCQkkdGhpcy0+dmFySXNSZXNvdXJjZSgkdmFyKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgIm9iamVjdCI6DQoJCQkJJHRoaXMtPnZhcklzT2JqZWN0KCR2YXIpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiYXJyYXkiOg0KCQkJCSR0aGlzLT52YXJJc0FycmF5KCR2YXIpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiTlVMTCI6DQoJCQkJJHRoaXMtPnZhcklzTlVMTCgpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiYm9vbGVhbiI6DQoJCQkJJHRoaXMtPnZhcklzQm9vbGVhbigkdmFyKTsNCgkJCQlicmVhazsNCgkJCWRlZmF1bHQ6DQoJCQkJJHZhcj0oJHZhcj09IiIpID8gIltlbXB0eSBzdHJpbmddIiA6ICR2YXI7DQoJCQkJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTA+PHRyPlxuPHRkPiIuJHZhci4iPC90ZD5cbjwvdHI+XG48L3RhYmxlPlxuIjsNCgkJCQlicmVhazsNCgkJfQ0KCX0NCgkNCgkvL2lmIHZhcmlhYmxlIGlzIGEgTlVMTCB0eXBlDQoJZnVuY3Rpb24gdmFySXNOVUxMKCkgew0KCQllY2hvICJOVUxMIjsNCgl9DQoJDQoJLy9pZiB2YXJpYWJsZSBpcyBhIGJvb2xlYW4gdHlwZQ0KCWZ1bmN0aW9uIHZhcklzQm9vbGVhbigkdmFyKSB7DQoJCSR2YXI9KCR2YXI9PTEpID8gIlRSVUUiIDogIkZBTFNFIjsNCgkJZWNobyAkdmFyOw0KCX0NCgkJCQ0KCS8vaWYgdmFyaWFibGUgaXMgYW4gYXJyYXkgdHlwZQ0KCWZ1bmN0aW9uIHZhcklzQXJyYXkoJHZhcikgew0KCQkkdmFyX3NlciA9IHNlcmlhbGl6ZSgkdmFyKTsNCgkJYXJyYXlfcHVzaCgkdGhpcy0+YXJySGlzdG9yeSwgJHZhcl9zZXIpOw0KCQkNCgkJJHRoaXMtPm1ha2VUYWJsZUhlYWRlcigiYXJyYXkiLCJhcnJheSIpOw0KCQlpZihpc19hcnJheSgkdmFyKSkgew0KCQkJZm9yZWFjaCgkdmFyIGFzICRrZXk9PiR2YWx1ZSkgew0KCQkJCSR0aGlzLT5tYWtlVERIZWFkZXIoImFycmF5Iiwka2V5KTsNCgkJCQkNCgkJCQkvL2NoZWNrIGZvciByZWN1cnNpb24NCgkJCQlpZihpc19hcnJheSgkdmFsdWUpKSB7DQoJCQkJCSR2YXJfc2VyID0gc2VyaWFsaXplKCR2YWx1ZSk7DQoJCQkJCWlmKGluX2FycmF5KCR2YXJfc2VyLCAkdGhpcy0+YXJySGlzdG9yeSwgVFJVRSkpDQoJCQkJCQkkdmFsdWUgPSAiKlJFQ1VSU0lPTioiOw0KCQkJCX0NCgkJCQkNCgkJCQlpZihpbl9hcnJheShnZXR0eXBlKCR2YWx1ZSksJHRoaXMtPmFyclR5cGUpKQ0KCQkJCQkkdGhpcy0+Y2hlY2tUeXBlKCR2YWx1ZSk7DQoJCQkJZWxzZSB7DQoJCQkJCSR2YWx1ZT0odHJpbSgkdmFsdWUpPT0iIikgPyAiW2VtcHR5IHN0cmluZ10iIDogJHZhbHVlOw0KCQkJCQllY2hvICR2YWx1ZTsNCgkJCQl9DQoJCQkJZWNobyAkdGhpcy0+Y2xvc2VURFJvdygpOw0KCQkJfQ0KCQl9DQoJCWVsc2UgZWNobyAiPHRyPjx0ZD4iLiR0aGlzLT5lcnJvcigiYXJyYXkiKS4kdGhpcy0+Y2xvc2VURFJvdygpOw0KCQlhcnJheV9wb3AoJHRoaXMtPmFyckhpc3RvcnkpOw0KCQllY2hvICI8L3RhYmxlPiI7DQoJfQ0KCQ0KCS8vaWYgdmFyaWFibGUgaXMgYW4gb2JqZWN0IHR5cGUNCglmdW5jdGlvbiB2YXJJc09iamVjdCgkdmFyKSB7DQoJCSR2YXJfc2VyID0gc2VyaWFsaXplKCR2YXIpOw0KCQlhcnJheV9wdXNoKCR0aGlzLT5hcnJIaXN0b3J5LCAkdmFyX3Nlcik7DQoJCSR0aGlzLT5tYWtlVGFibGVIZWFkZXIoIm9iamVjdCIsIm9iamVjdCIpOw0KCQkNCgkJaWYoaXNfb2JqZWN0KCR2YXIpKSB7DQoJCQkkYXJyT2JqVmFycz1nZXRfb2JqZWN0X3ZhcnMoJHZhcik7DQoJCQlmb3JlYWNoKCRhcnJPYmpWYXJzIGFzICRrZXk9PiR2YWx1ZSkgew0KDQoJCQkJJHZhbHVlPSghaXNfb2JqZWN0KCR2YWx1ZSkgJiYgIWlzX2FycmF5KCR2YWx1ZSkgJiYgdHJpbSgkdmFsdWUpPT0iIikgPyAiW2VtcHR5IHN0cmluZ10iIDogJHZhbHVlOw0KCQkJCSR0aGlzLT5tYWtlVERIZWFkZXIoIm9iamVjdCIsJGtleSk7DQoJCQkJDQoJCQkJLy9jaGVjayBmb3IgcmVjdXJzaW9uDQoJCQkJaWYoaXNfb2JqZWN0KCR2YWx1ZSl8fGlzX2FycmF5KCR2YWx1ZSkpIHsNCgkJCQkJJHZhcl9zZXIgPSBzZXJpYWxpemUoJHZhbHVlKTsNCgkJCQkJaWYoaW5fYXJyYXkoJHZhcl9zZXIsICR0aGlzLT5hcnJIaXN0b3J5LCBUUlVFKSkgew0KCQkJCQkJJHZhbHVlID0gKGlzX29iamVjdCgkdmFsdWUpKSA/ICIqUkVDVVJTSU9OKiAtPiAkIi5nZXRfY2xhc3MoJHZhbHVlKSA6ICIqUkVDVVJTSU9OKiI7DQoNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZihpbl9hcnJheShnZXR0eXBlKCR2YWx1ZSksJHRoaXMtPmFyclR5cGUpKQ0KCQkJCQkkdGhpcy0+Y2hlY2tUeXBlKCR2YWx1ZSk7DQoJCQkJZWxzZSBlY2hvICR2YWx1ZTsNCgkJCQllY2hvICR0aGlzLT5jbG9zZVREUm93KCk7DQoJCQl9DQoJCQkkYXJyT2JqTWV0aG9kcz1nZXRfY2xhc3NfbWV0aG9kcyhnZXRfY2xhc3MoJHZhcikpOw0KCQkJZm9yZWFjaCgkYXJyT2JqTWV0aG9kcyBhcyAka2V5PT4kdmFsdWUpIHsNCgkJCQkkdGhpcy0+bWFrZVRESGVhZGVyKCJvYmplY3QiLCR2YWx1ZSk7DQoJCQkJZWNobyAiW2Z1bmN0aW9uXSIuJHRoaXMtPmNsb3NlVERSb3coKTsNCgkJCX0NCgkJfQ0KCQllbHNlIGVjaG8gIjx0cj48dGQ+Ii4kdGhpcy0+ZXJyb3IoIm9iamVjdCIpLiR0aGlzLT5jbG9zZVREUm93KCk7DQoJCWFycmF5X3BvcCgkdGhpcy0+YXJySGlzdG9yeSk7DQoJCWVjaG8gIjwvdGFibGU+IjsNCgl9DQoNCgkvL2lmIHZhcmlhYmxlIGlzIGEgcmVzb3VyY2UgdHlwZQ0KCWZ1bmN0aW9uIHZhcklzUmVzb3VyY2UoJHZhcikgew0KCQkkdGhpcy0+bWFrZVRhYmxlSGVhZGVyKCJyZXNvdXJjZUMiLCJyZXNvdXJjZSIsMSk7DQoJCWVjaG8gIjx0cj5cbjx0ZD5cbiI7DQoJCXN3aXRjaChnZXRfcmVzb3VyY2VfdHlwZSgkdmFyKSkgew0KCQkJY2FzZSAiZmJzcWwgcmVzdWx0IjoNCgkJCWNhc2UgIm1zc3FsIHJlc3VsdCI6DQoJCQljYXNlICJtc3FsIHF1ZXJ5IjoNCgkJCWNhc2UgInBnc3FsIHJlc3VsdCI6DQoJCQljYXNlICJzeWJhc2UtZGIgcmVzdWx0IjoNCgkJCWNhc2UgInN5YmFzZS1jdCByZXN1bHQiOg0KCQkJY2FzZSAibXlzcWwgcmVzdWx0IjoNCgkJCQkkZGI9Y3VycmVudChleHBsb2RlKCIgIixnZXRfcmVzb3VyY2VfdHlwZSgkdmFyKSkpOw0KCQkJCSR0aGlzLT52YXJJc0RCUmVzb3VyY2UoJHZhciwkZGIpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiZ2QiOg0KCQkJCSR0aGlzLT52YXJJc0dEUmVzb3VyY2UoJHZhcik7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJ4bWwiOg0KCQkJCSR0aGlzLT52YXJJc1htbFJlc291cmNlKCR2YXIpOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoNCgkJCQllY2hvIGdldF9yZXNvdXJjZV90eXBlKCR2YXIpLiR0aGlzLT5jbG9zZVREUm93KCk7DQoJCQkJYnJlYWs7DQoJCX0NCgkJZWNobyAkdGhpcy0+Y2xvc2VURFJvdygpLiI8L3RhYmxlPlxuIjsNCgl9DQoNCgkvL2lmIHZhcmlhYmxlIGlzIGEgZGF0YWJhc2UgcmVzb3VyY2UgdHlwZQ0KCWZ1bmN0aW9uIHZhcklzREJSZXNvdXJjZSgkdmFyLCRkYj0ibXlzcWwiKSB7DQoJCWlmKCRkYiA9PSAicGdzcWwiKQ0KCQkJJGRiID0gInBnIjsNCgkJaWYoJGRiID09ICJzeWJhc2UtZGIiIHx8ICRkYiA9PSAic3liYXNlLWN0IikNCgkJCSRkYiA9ICJzeWJhc2UiOw0KCQkkYXJyRmllbGRzID0gYXJyYXkoIm5hbWUiLCJ0eXBlIiwiZmxhZ3MiKTsJDQoJCSRudW1yb3dzPWNhbGxfdXNlcl9mdW5jKCRkYi4iX251bV9yb3dzIiwkdmFyKTsNCgkJJG51bWZpZWxkcz1jYWxsX3VzZXJfZnVuYygkZGIuIl9udW1fZmllbGRzIiwkdmFyKTsNCgkJJHRoaXMtPm1ha2VUYWJsZUhlYWRlcigicmVzb3VyY2UiLCRkYi4iIHJlc3VsdCIsJG51bWZpZWxkcysxKTsNCgkJZWNobyAiPHRyPjx0ZCBjbGFzcz1cImRCdWdfcmVzb3VyY2VLZXlcIj4mbmJzcDs8L3RkPiI7DQoJCWZvcigkaT0wOyRpPCRudW1maWVsZHM7JGkrKykgew0KCQkJJGZpZWxkX2hlYWRlciA9ICIiOw0KCQkJZm9yKCRqPTA7ICRqPGNvdW50KCRhcnJGaWVsZHMpOyAkaisrKSB7DQoJCQkJJGRiX2Z1bmMgPSAkZGIuIl9maWVsZF8iLiRhcnJGaWVsZHNbJGpdOw0KCQkJCWlmKGZ1bmN0aW9uX2V4aXN0cygkZGJfZnVuYykpIHsNCgkJCQkJJGZoZWFkZXIgPSBjYWxsX3VzZXJfZnVuYygkZGJfZnVuYywgJHZhciwgJGkpLiAiICI7DQoJCQkJCWlmKCRqPT0wKQ0KCQkJCQkJJGZpZWxkX25hbWUgPSAkZmhlYWRlcjsNCgkJCQkJZWxzZQ0KCQkJCQkJJGZpZWxkX2hlYWRlciAuPSAkZmhlYWRlcjsNCgkJCQl9DQoJCQl9DQoJCQkkZmllbGRbJGldPWNhbGxfdXNlcl9mdW5jKCRkYi4iX2ZldGNoX2ZpZWxkIiwkdmFyLCRpKTsNCgkJCWVjaG8gIjx0ZCBjbGFzcz1cImRCdWdfcmVzb3VyY2VLZXlcIiB0aXRsZT1cIiIuJGZpZWxkX2hlYWRlci4iXCI+Ii4kZmllbGRfbmFtZS4iPC90ZD4iOw0KCQl9DQoJCWVjaG8gIjwvdHI+IjsNCgkJZm9yKCRpPTA7JGk8JG51bXJvd3M7JGkrKykgew0KCQkJJHJvdz1jYWxsX3VzZXJfZnVuYygkZGIuIl9mZXRjaF9hcnJheSIsJHZhcixjb25zdGFudChzdHJ0b3VwcGVyKCRkYikuIl9BU1NPQyIpKTsNCgkJCWVjaG8gIjx0cj5cbiI7DQoJCQllY2hvICI8dGQgY2xhc3M9XCJkQnVnX3Jlc291cmNlS2V5XCI+Ii4oJGkrMSkuIjwvdGQ+IjsgDQoJCQlmb3IoJGs9MDskazwkbnVtZmllbGRzOyRrKyspIHsNCgkJCQkkdGVtcEZpZWxkPSRmaWVsZFska10tPm5hbWU7DQoJCQkJJGZpZWxkcm93PSRyb3dbKCRmaWVsZFska10tPm5hbWUpXTsNCgkJCQkkZmllbGRyb3c9KCRmaWVsZHJvdz09IiIpID8gIltlbXB0eSBzdHJpbmddIiA6ICRmaWVsZHJvdzsNCgkJCQllY2hvICI8dGQ+Ii4kZmllbGRyb3cuIjwvdGQ+XG4iOw0KCQkJfQ0KCQkJZWNobyAiPC90cj5cbiI7DQoJCX0NCgkJZWNobyAiPC90YWJsZT4iOw0KCQlpZigkbnVtcm93cz4wKQ0KCQkJY2FsbF91c2VyX2Z1bmMoJGRiLiJfZGF0YV9zZWVrIiwkdmFyLDApOw0KCX0NCgkNCgkvL2lmIHZhcmlhYmxlIGlzIGFuIGltYWdlL2dkIHJlc291cmNlIHR5cGUNCglmdW5jdGlvbiB2YXJJc0dEUmVzb3VyY2UoJHZhcikgew0KCQkkdGhpcy0+bWFrZVRhYmxlSGVhZGVyKCJyZXNvdXJjZSIsImdkIiwyKTsNCgkJJHRoaXMtPm1ha2VUREhlYWRlcigicmVzb3VyY2UiLCJXaWR0aCIpOw0KCQllY2hvIGltYWdlc3goJHZhcikuJHRoaXMtPmNsb3NlVERSb3coKTsNCgkJJHRoaXMtPm1ha2VUREhlYWRlcigicmVzb3VyY2UiLCJIZWlnaHQiKTsNCgkJZWNobyBpbWFnZXN5KCR2YXIpLiR0aGlzLT5jbG9zZVREUm93KCk7DQoJCSR0aGlzLT5tYWtlVERIZWFkZXIoInJlc291cmNlIiwiQ29sb3JzIik7DQoJCWVjaG8gaW1hZ2Vjb2xvcnN0b3RhbCgkdmFyKS4kdGhpcy0+Y2xvc2VURFJvdygpOw0KCQllY2hvICI8L3RhYmxlPiI7DQoJfQ0KCQ0KCS8vaWYgdmFyaWFibGUgaXMgYW4geG1sIHR5cGUNCglmdW5jdGlvbiB2YXJJc1htbCgkdmFyKSB7DQoJCSR0aGlzLT52YXJJc1htbFJlc291cmNlKCR2YXIpOw0KCX0NCgkNCgkvL2lmIHZhcmlhYmxlIGlzIGFuIHhtbCByZXNvdXJjZSB0eXBlDQoJZnVuY3Rpb24gdmFySXNYbWxSZXNvdXJjZSgkdmFyKSB7DQoJCSR4bWxfcGFyc2VyPXhtbF9wYXJzZXJfY3JlYXRlKCk7DQoJCXhtbF9wYXJzZXJfc2V0X29wdGlvbigkeG1sX3BhcnNlcixYTUxfT1BUSU9OX0NBU0VfRk9MRElORywwKTsgDQoJCXhtbF9zZXRfZWxlbWVudF9oYW5kbGVyKCR4bWxfcGFyc2VyLGFycmF5KCYkdGhpcywieG1sU3RhcnRFbGVtZW50IiksYXJyYXkoJiR0aGlzLCJ4bWxFbmRFbGVtZW50IikpOyANCgkJeG1sX3NldF9jaGFyYWN0ZXJfZGF0YV9oYW5kbGVyKCR4bWxfcGFyc2VyLGFycmF5KCYkdGhpcywieG1sQ2hhcmFjdGVyRGF0YSIpKTsNCgkJeG1sX3NldF9kZWZhdWx0X2hhbmRsZXIoJHhtbF9wYXJzZXIsYXJyYXkoJiR0aGlzLCJ4bWxEZWZhdWx0SGFuZGxlciIpKTsgDQoJCQ0KCQkkdGhpcy0+bWFrZVRhYmxlSGVhZGVyKCJ4bWwiLCJ4bWwgZG9jdW1lbnQiLDIpOw0KCQkkdGhpcy0+bWFrZVRESGVhZGVyKCJ4bWwiLCJ4bWxSb290Iik7DQoJCQ0KCQkvL2F0dGVtcHQgdG8gb3BlbiB4bWwgZmlsZQ0KCQkkYkZpbGU9KCEoJGZwPUBmb3BlbigkdmFyLCJyIikpKSA/IGZhbHNlIDogdHJ1ZTsNCgkJDQoJCS8vcmVhZCB4bWwgZmlsZQ0KCQlpZigkYkZpbGUpIHsNCgkJCXdoaWxlKCRkYXRhPXN0cl9yZXBsYWNlKCJcbiIsIiIsZnJlYWQoJGZwLDQwOTYpKSkNCgkJCQkkdGhpcy0+eG1sUGFyc2UoJHhtbF9wYXJzZXIsJGRhdGEsZmVvZigkZnApKTsNCgkJfQ0KCQkvL2lmIHhtbCBpcyBub3QgYSBmaWxlLCBhdHRlbXB0IHRvIHJlYWQgaXQgYXMgYSBzdHJpbmcNCgkJZWxzZSB7DQoJCQlpZighaXNfc3RyaW5nKCR2YXIpKSB7DQoJCQkJZWNobyAkdGhpcy0+ZXJyb3IoInhtbCIpLiR0aGlzLT5jbG9zZVREUm93KCkuIjwvdGFibGU+XG4iOw0KCQkJCXJldHVybjsNCgkJCX0NCgkJCSRkYXRhPSR2YXI7DQoJCQkkdGhpcy0+eG1sUGFyc2UoJHhtbF9wYXJzZXIsJGRhdGEsMSk7DQoJCX0NCgkJDQoJCWVjaG8gJHRoaXMtPmNsb3NlVERSb3coKS4iPC90YWJsZT5cbiI7DQoJCQ0KCX0NCgkNCgkvL3BhcnNlIHhtbA0KCWZ1bmN0aW9uIHhtbFBhcnNlKCR4bWxfcGFyc2VyLCRkYXRhLCRiRmluYWwpIHsNCgkJaWYgKCF4bWxfcGFyc2UoJHhtbF9wYXJzZXIsJGRhdGEsJGJGaW5hbCkpIHsgDQoJCQkJICAgZGllKHNwcmludGYoIlhNTCBlcnJvcjogJXMgYXQgbGluZSAlZFxuIiwgDQoJCQkJCQkJICAgeG1sX2Vycm9yX3N0cmluZyh4bWxfZ2V0X2Vycm9yX2NvZGUoJHhtbF9wYXJzZXIpKSwgDQoJCQkJCQkJICAgeG1sX2dldF9jdXJyZW50X2xpbmVfbnVtYmVyKCR4bWxfcGFyc2VyKSkpOw0KCQl9DQoJfQ0KCQ0KCS8veG1sOiBpbml0aXRpYXRlZCB3aGVuIGEgc3RhcnQgdGFnIGlzIGVuY291bnRlcmVkDQoJZnVuY3Rpb24geG1sU3RhcnRFbGVtZW50KCRwYXJzZXIsJG5hbWUsJGF0dHJpYnMpIHsNCgkJJHRoaXMtPnhtbEF0dHJpYlskdGhpcy0+eG1sQ291bnRdPSRhdHRyaWJzOw0KCQkkdGhpcy0+eG1sTmFtZVskdGhpcy0+eG1sQ291bnRdPSRuYW1lOw0KCQkkdGhpcy0+eG1sU0RhdGFbJHRoaXMtPnhtbENvdW50XT0nJHRoaXMtPm1ha2VUYWJsZUhlYWRlcigieG1sIiwieG1sIGVsZW1lbnQiLDIpOyc7DQoJCSR0aGlzLT54bWxTRGF0YVskdGhpcy0+eG1sQ291bnRdLj0nJHRoaXMtPm1ha2VUREhlYWRlcigieG1sIiwieG1sTmFtZSIpOyc7DQoJCSR0aGlzLT54bWxTRGF0YVskdGhpcy0+eG1sQ291bnRdLj0nZWNobyAiPHN0cm9uZz4nLiR0aGlzLT54bWxOYW1lWyR0aGlzLT54bWxDb3VudF0uJzwvc3Ryb25nPiIuJHRoaXMtPmNsb3NlVERSb3coKTsnOw0KCQkkdGhpcy0+eG1sU0RhdGFbJHRoaXMtPnhtbENvdW50XS49JyR0aGlzLT5tYWtlVERIZWFkZXIoInhtbCIsInhtbEF0dHJpYnV0ZXMiKTsnOw0KCQlpZihjb3VudCgkYXR0cmlicyk+MCkNCgkJCSR0aGlzLT54bWxTRGF0YVskdGhpcy0+eG1sQ291bnRdLj0nJHRoaXMtPnZhcklzQXJyYXkoJHRoaXMtPnhtbEF0dHJpYlsnLiR0aGlzLT54bWxDb3VudC4nXSk7JzsNCgkJZWxzZQ0KCQkJJHRoaXMtPnhtbFNEYXRhWyR0aGlzLT54bWxDb3VudF0uPSdlY2hvICImbmJzcDsiOyc7DQoJCSR0aGlzLT54bWxTRGF0YVskdGhpcy0+eG1sQ291bnRdLj0nZWNobyAkdGhpcy0+Y2xvc2VURFJvdygpOyc7DQoJCSR0aGlzLT54bWxDb3VudCsrOw0KCX0gDQoJDQoJLy94bWw6IGluaXRpYXRlZCB3aGVuIGFuIGVuZCB0YWcgaXMgZW5jb3VudGVyZWQNCglmdW5jdGlvbiB4bWxFbmRFbGVtZW50KCRwYXJzZXIsJG5hbWUpIHsNCgkJZm9yKCRpPTA7JGk8JHRoaXMtPnhtbENvdW50OyRpKyspIHsNCgkJCWV2YWwoJHRoaXMtPnhtbFNEYXRhWyRpXSk7DQoJCQkkdGhpcy0+bWFrZVRESGVhZGVyKCJ4bWwiLCJ4bWxUZXh0Iik7DQoJCQllY2hvICghZW1wdHkoJHRoaXMtPnhtbENEYXRhWyRpXSkpID8gJHRoaXMtPnhtbENEYXRhWyRpXSA6ICImbmJzcDsiOw0KCQkJZWNobyAkdGhpcy0+Y2xvc2VURFJvdygpOw0KCQkJJHRoaXMtPm1ha2VUREhlYWRlcigieG1sIiwieG1sQ29tbWVudCIpOw0KCQkJZWNobyAoIWVtcHR5KCR0aGlzLT54bWxERGF0YVskaV0pKSA/ICR0aGlzLT54bWxERGF0YVskaV0gOiAiJm5ic3A7IjsNCgkJCWVjaG8gJHRoaXMtPmNsb3NlVERSb3coKTsNCgkJCSR0aGlzLT5tYWtlVERIZWFkZXIoInhtbCIsInhtbENoaWxkcmVuIik7DQoJCQl1bnNldCgkdGhpcy0+eG1sQ0RhdGFbJGldLCR0aGlzLT54bWxERGF0YVskaV0pOw0KCQl9DQoJCWVjaG8gJHRoaXMtPmNsb3NlVERSb3coKTsNCgkJZWNobyAiPC90YWJsZT4iOw0KCQkkdGhpcy0+eG1sQ291bnQ9MDsNCgl9IA0KCQ0KCS8veG1sOiBpbml0aWF0ZWQgd2hlbiB0ZXh0IGJldHdlZW4gdGFncyBpcyBlbmNvdW50ZXJlZA0KCWZ1bmN0aW9uIHhtbENoYXJhY3RlckRhdGEoJHBhcnNlciwkZGF0YSkgew0KCQkkY291bnQ9JHRoaXMtPnhtbENvdW50LTE7DQoJCWlmKCFlbXB0eSgkdGhpcy0+eG1sQ0RhdGFbJGNvdW50XSkpDQoJCQkkdGhpcy0+eG1sQ0RhdGFbJGNvdW50XS49JGRhdGE7DQoJCWVsc2UNCgkJCSR0aGlzLT54bWxDRGF0YVskY291bnRdPSRkYXRhOw0KCX0gDQoJDQoJLy94bWw6IGluaXRpYXRlZCB3aGVuIGEgY29tbWVudCBvciBvdGhlciBtaXNjZWxsYW5lb3VzIHRleHRzIGlzIGVuY291bnRlcmVkDQoJZnVuY3Rpb24geG1sRGVmYXVsdEhhbmRsZXIoJHBhcnNlciwkZGF0YSkgew0KCQkvL3N0cmlwICc8IS0tJyBhbmQgJy0tPicgb2ZmIGNvbW1lbnRzDQoJCSRkYXRhPXN0cl9yZXBsYWNlKGFycmF5KCImbHQ7IS0tIiwiLS0mZ3Q7IiksIiIsaHRtbHNwZWNpYWxjaGFycygkZGF0YSkpOw0KCQkkY291bnQ9JHRoaXMtPnhtbENvdW50LTE7DQoJCWlmKCFlbXB0eSgkdGhpcy0+eG1sRERhdGFbJGNvdW50XSkpDQoJCQkkdGhpcy0+eG1sRERhdGFbJGNvdW50XS49JGRhdGE7DQoJCWVsc2UNCgkJCSR0aGlzLT54bWxERGF0YVskY291bnRdPSRkYXRhOw0KCX0NCg0KCWZ1bmN0aW9uIGluaXRKU2FuZENTUygpIHsNCgkJZWNobyA8PDxTQ1JJUFRTDQoJCQk8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0Ij4NCgkJCS8qIGNvZGUgbW9kaWZpZWQgZnJvbSBDb2xkRnVzaW9uJ3MgY2ZkdW1wIGNvZGUgKi8NCgkJCQlmdW5jdGlvbiBkQnVnX3RvZ2dsZVJvdyhzb3VyY2UpIHsNCgkJCQkJdmFyIHRhcmdldCA9IChkb2N1bWVudC5hbGwpID8gc291cmNlLnBhcmVudEVsZW1lbnQuY2VsbHNbMV0gOiBzb3VyY2UucGFyZW50Tm9kZS5sYXN0Q2hpbGQ7DQoJCQkJCWRCdWdfdG9nZ2xlVGFyZ2V0KHRhcmdldCxkQnVnX3RvZ2dsZVNvdXJjZShzb3VyY2UpKTsNCgkJCQl9DQoJCQkJDQoJCQkJZnVuY3Rpb24gZEJ1Z190b2dnbGVTb3VyY2Uoc291cmNlKSB7DQoJCQkJCWlmIChzb3VyY2Uuc3R5bGUuZm9udFN0eWxlPT0naXRhbGljJykgew0KCQkJCQkJc291cmNlLnN0eWxlLmZvbnRTdHlsZT0nbm9ybWFsJzsNCgkJCQkJCXNvdXJjZS50aXRsZT0nY2xpY2sgdG8gY29sbGFwc2UnOw0KCQkJCQkJcmV0dXJuICdvcGVuJzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCXNvdXJjZS5zdHlsZS5mb250U3R5bGU9J2l0YWxpYyc7DQoJCQkJCQlzb3VyY2UudGl0bGU9J2NsaWNrIHRvIGV4cGFuZCc7DQoJCQkJCQlyZXR1cm4gJ2Nsb3NlZCc7DQoJCQkJCX0NCgkJCQl9DQoJCQkNCgkJCQlmdW5jdGlvbiBkQnVnX3RvZ2dsZVRhcmdldCh0YXJnZXQsc3dpdGNoVG9TdGF0ZSkgew0KCQkJCQl0YXJnZXQuc3R5bGUuZGlzcGxheSA9IChzd2l0Y2hUb1N0YXRlPT0nb3BlbicpID8gJycgOiAnbm9uZSc7DQoJCQkJfQ0KCQkJDQoJCQkJZnVuY3Rpb24gZEJ1Z190b2dnbGVUYWJsZShzb3VyY2UpIHsNCgkJCQkJdmFyIHN3aXRjaFRvU3RhdGU9ZEJ1Z190b2dnbGVTb3VyY2Uoc291cmNlKTsNCgkJCQkJaWYoZG9jdW1lbnQuYWxsKSB7DQoJCQkJCQl2YXIgdGFibGU9c291cmNlLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDsNCgkJCQkJCWZvcih2YXIgaT0xO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKSB7DQoJCQkJCQkJdGFyZ2V0PXRhYmxlLnJvd3NbaV07DQoJCQkJCQkJZEJ1Z190b2dnbGVUYXJnZXQodGFyZ2V0LHN3aXRjaFRvU3RhdGUpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWVsc2Ugew0KCQkJCQkJdmFyIHRhYmxlPXNvdXJjZS5wYXJlbnROb2RlLnBhcmVudE5vZGU7DQoJCQkJCQlmb3IgKHZhciBpPTE7aTx0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aDtpKyspIHsNCgkJCQkJCQl0YXJnZXQ9dGFibGUuY2hpbGROb2Rlc1tpXTsNCgkJCQkJCQlpZih0YXJnZXQuc3R5bGUpIHsNCgkJCQkJCQkJZEJ1Z190b2dnbGVUYXJnZXQodGFyZ2V0LHN3aXRjaFRvU3RhdGUpOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCTwvc2NyaXB0Pg0KCQkJDQoJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCQkJCXRhYmxlLmRCdWdfYXJyYXksdGFibGUuZEJ1Z19vYmplY3QsdGFibGUuZEJ1Z19yZXNvdXJjZSx0YWJsZS5kQnVnX3Jlc291cmNlQyx0YWJsZS5kQnVnX3htbCB7DQoJCQkJCWZvbnQtZmFtaWx5OlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGNvbG9yOiMwMDAwMDA7IGZvbnQtc2l6ZToxMnB4Ow0KCQkJCX0NCgkJCQkNCgkJCQkuZEJ1Z19hcnJheUhlYWRlciwNCgkJCQkuZEJ1Z19vYmplY3RIZWFkZXIsDQoJCQkJLmRCdWdfcmVzb3VyY2VIZWFkZXIsDQoJCQkJLmRCdWdfcmVzb3VyY2VDSGVhZGVyLA0KCQkJCS5kQnVnX3htbEhlYWRlciANCgkJCQkJeyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojRkZGRkZGOyBjdXJzb3I6cG9pbnRlcjsgfQ0KCQkJCQ0KCQkJCS5kQnVnX2FycmF5S2V5LA0KCQkJCS5kQnVnX29iamVjdEtleSwNCgkJCQkuZEJ1Z194bWxLZXkgDQoJCQkJCXsgY3Vyc29yOnBvaW50ZXI7IH0NCgkJCQkJDQoJCQkJLyogYXJyYXkgKi8NCgkJCQl0YWJsZS5kQnVnX2FycmF5IHsgYmFja2dyb3VuZC1jb2xvcjojMDA2NjAwOyB9DQoJCQkJdGFibGUuZEJ1Z19hcnJheSB0ZCB7IGJhY2tncm91bmQtY29sb3I6I0ZGRkZGRjsgfQ0KCQkJCXRhYmxlLmRCdWdfYXJyYXkgdGQuZEJ1Z19hcnJheUhlYWRlciB7IGJhY2tncm91bmQtY29sb3I6IzAwOTkwMDsgfQ0KCQkJCXRhYmxlLmRCdWdfYXJyYXkgdGQuZEJ1Z19hcnJheUtleSB7IGJhY2tncm91bmQtY29sb3I6I0NDRkZDQzsgfQ0KCQkJCQ0KCQkJCS8qIG9iamVjdCAqLw0KCQkJCXRhYmxlLmRCdWdfb2JqZWN0IHsgYmFja2dyb3VuZC1jb2xvcjojMDAwMENDOyB9DQoJCQkJdGFibGUuZEJ1Z19vYmplY3QgdGQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7IH0NCgkJCQl0YWJsZS5kQnVnX29iamVjdCB0ZC5kQnVnX29iamVjdEhlYWRlciB7IGJhY2tncm91bmQtY29sb3I6IzQ0NDRDQzsgfQ0KCQkJCXRhYmxlLmRCdWdfb2JqZWN0IHRkLmRCdWdfb2JqZWN0S2V5IHsgYmFja2dyb3VuZC1jb2xvcjojQ0NEREZGOyB9DQoJCQkJDQoJCQkJLyogcmVzb3VyY2UgKi8NCgkJCQl0YWJsZS5kQnVnX3Jlc291cmNlQyB7IGJhY2tncm91bmQtY29sb3I6Izg4NDQ4ODsgfQ0KCQkJCXRhYmxlLmRCdWdfcmVzb3VyY2VDIHRkIHsgYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGOyB9DQoJCQkJdGFibGUuZEJ1Z19yZXNvdXJjZUMgdGQuZEJ1Z19yZXNvdXJjZUNIZWFkZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNBQTY2QUE7IH0NCgkJCQl0YWJsZS5kQnVnX3Jlc291cmNlQyB0ZC5kQnVnX3Jlc291cmNlQ0tleSB7IGJhY2tncm91bmQtY29sb3I6I0ZGRERGRjsgfQ0KCQkJCQ0KCQkJCS8qIHJlc291cmNlICovDQoJCQkJdGFibGUuZEJ1Z19yZXNvdXJjZSB7IGJhY2tncm91bmQtY29sb3I6Izg4NDQ4ODsgfQ0KCQkJCXRhYmxlLmRCdWdfcmVzb3VyY2UgdGQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7IH0NCgkJCQl0YWJsZS5kQnVnX3Jlc291cmNlIHRkLmRCdWdfcmVzb3VyY2VIZWFkZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNBQTY2QUE7IH0NCgkJCQl0YWJsZS5kQnVnX3Jlc291cmNlIHRkLmRCdWdfcmVzb3VyY2VLZXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkRERkY7IH0NCgkJCQkNCgkJCQkvKiB4bWwgKi8NCgkJCQl0YWJsZS5kQnVnX3htbCB7IGJhY2tncm91bmQtY29sb3I6Izg4ODg4ODsgfQ0KCQkJCXRhYmxlLmRCdWdfeG1sIHRkIHsgYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGOyB9DQoJCQkJdGFibGUuZEJ1Z194bWwgdGQuZEJ1Z194bWxIZWFkZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNBQUFBQUE7IH0NCgkJCQl0YWJsZS5kQnVnX3htbCB0ZC5kQnVnX3htbEtleSB7IGJhY2tncm91bmQtY29sb3I6I0RERERERDsgfQ0KCQkJPC9zdHlsZT4NClNDUklQVFM7DQoJfQ0KDQp9DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAp0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCnRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQpzb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNvIHRvCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91CndhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CmZyZWUgcHJvZ3JhbXMsIGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgp5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKa25vdyB0aGVpciByaWdodHMuCgogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKZ2l2aW5nIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KCiAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCnRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwpjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KYXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KCiAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgptb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgc29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVyZXIKY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0aWMKcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUgYXJlYSBvZiBwcm9kdWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCmhhdmUgZGVzaWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQpwcm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxseSBpbiBvdGhlciBkb21haW5zLCB3ZQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCgogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuClN0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBvZgpzb2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4gdGhvc2UgdGhhdCBkbywgd2Ugd2lzaCB0bwphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKcGF0ZW50cyBjYW5ub3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCgogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuCgogICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCgogIDAuIERlZmluaXRpb25zLgoKICAiVGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKd29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KCiAgIlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCkxpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCgogIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KCiAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKb24gdGhlIFByb2dyYW0uCgogIFRvICJwcm9wYWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgoKICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQpmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikKdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQp3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQptZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgoKICAxLiBTb3VyY2UgQ29kZS4KCiAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQpmb3JtIG9mIGEgd29yay4KCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KCiAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgpDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCmltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCiJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCihpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCnByb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgoKICBUaGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCnRoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bwpjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKU3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJlZQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCmluY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQpsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWlyZSwKc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgoKICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuCgogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdApzYW1lIHdvcmsuCgogIDIuIEJhc2ljIFBlcm1pc3Npb25zLgoKICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZApjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCnBlcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwpjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgpyaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KCiAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCm1ha2VzIGl0IHVubmVjZXNzYXJ5LgoKICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgoKICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCjExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBvcgpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCm1lYXN1cmVzLgoKICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCgogIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCgogIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlvdQpyZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQpub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCnJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCmFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCgogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCgogIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCgogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgogICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bwogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KCiAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcwogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCiAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwogICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCiAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CiAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgoKICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgoKICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCm1hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwKaW4gb25lIG9mIHRoZXNlIHdheXM6CgogICAgYSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgoKICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAogICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCiAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAogICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubwogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCiAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgoKICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLgoKICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCiAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCiAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhlIHBsYWNlIHRvCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQogICAgdGhhdCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgoKICAgIGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQKICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCiAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCiAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4KCiAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCmZyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KCiAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLApwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKYW5kIGV4ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCgogIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCnBhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQpVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9yIGZvciBhCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCkNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCmJ5IHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAptb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCmJlZW4gaW5zdGFsbGVkIGluIFJPTSkuCgogIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCgogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAppbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5CmRvY3VtZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgp1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4KCiAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgpBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCmJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRlbnQKdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQp1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5CnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KCiAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQphZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCnRoYXQgbWF0ZXJpYWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgoKICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQogICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKCiAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCgogICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCiAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCiAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgoKICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgpyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCgogIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwp3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgoKICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQpmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwp0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCgogIDguIFRlcm1pbmF0aW9uLgoKICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCgogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCmxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQpwcm92aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKaG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CmNvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMgYWZ0ZXIKeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KCiAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCgogIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgpydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCnRvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCm5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwpub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KCiAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoKICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CnJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4Kb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKd29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCmxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZApnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKdGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KCiAgMTEuIFBhdGVudHMuCgogIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCgogIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCmhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZApieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCmNvbnNlcXVlbmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCnB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdodCB0byBncmFudApwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKdGhpcyBMaWNlbnNlLgoKICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQpwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCgogIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKdG8gY29weSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAp0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCmF2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudApsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMgeW91IGhhdmUKYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCmNvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKaW4gYSBjb3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0CmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCgogIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCgogIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgp0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcwpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAp3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcwppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50CnRvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCnRoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawpjb252ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdApjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCm9yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKYW55IGltcGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgoKICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KCiAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCmNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKdG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5CnRoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCgogIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCnBlcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQpjb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLApidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCnNlY3Rpb24gMTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKY29tYmluYXRpb24gYXMgc3VjaC4KCiAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgp0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBhdXRob3JpemVzIHlvdQp0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KCiAgTGF0ZXIgbGljZW5zZSB2ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQKcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBpbXBvc2VkIG9uIGFueQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCmxhdGVyIHZlcnNpb24uCgogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgoKICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWQpPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTQpJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCgogIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQpHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUKVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRApQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1TKSwKRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgpTVUNIIERBTUFHRVMuCgogIDE3LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCgogIElmIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAphYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJtcywKcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCmFuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwgbGlhYmlsaXR5IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUKUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCgogIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0CnRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgoKICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCm1pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwKaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUKPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQptYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKdGhlIGxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAo8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+Lgo=]]></data>
	</file>
	<file>
	  <filename>/doc/Installation.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/function.admin_settings_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNpc293R2F0ZXdheSAoYykgMjAxMiBieSBSZWludCBKYW50aW5vCiMgICAgICAgICAoaW5mb0BqYW50aW5vLm5sKQojCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBTaXNvdyAoaWRlYWwsIHBheXBhbCwgZ2lmdGNhcmRzKSBQYXltZW50cyBnYXRld2F5LgojCiMgTm90ZTogVGhpcyBtb2R1bGUgaXMgYmFzZWQgb24gdGhlIFBheXBhbEdhdGV3YXkgYnkgUm9iZXJ0IENhbXBiZWxsLgojIEFuZCBJZGVhbEdhdGV3YXkgTGl0ZSAoYykgMjAxMCBieSBNYXJjIHZhbiBkZSBHZWlqbiAobWFyY0B2ZGdlaWpuLmNvbSkKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApCiAgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygnZXJyb3JfcGVybWlzc2lvbmRlbmllZCcpOwogICAgcmV0dXJuOwogIH0KCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdzZXR0aW5ncycpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJJHRoaXMtPkNHQ3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5fc2F2ZV9zZXR0aW5ncycsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXQnLCR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwoKCiRzbWFydHktPmFzc2lnbignaW5wdXRfTWVyY2hhbnRJRCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X01lcmNoYW50SUQnLCdVdyBNZXJjaGFudElEJywxMiwgMTIpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9NZXJjaGFudEtleScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X01lcmNoYW50S2V5JywnVXcgTWVyY2hhbnRLZXknLDYwLDYwKSk7CgkJCiRzbWFydHktPmFzc2lnbignaW5wdXRfTWVyY2hhbnRJRGFmdGVycGF5JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfTWVyY2hhbnRJRGFmdGVycGF5JywnVXcgQWZ0ZXJQYXkgTWVyY2hhbnRJRCcsNjAsIDYwKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfcG9ydGZvbGlvaWQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9wb3J0Zm9saW9pZCcsJ1V3IEFmdGVyUGF5IHBvcnRmb2xpb2lkJyw2MCw2MCkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3Bhc3N3b3JkJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfcGFzc3dvcmQnLCdVdyBBZnRlclBheSBwYXNzd29yZCcsNjAsNjApKTsJCQoJCQoJCQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3Rlc3Rtb2RlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X3Rlc3Rtb2RlJywndHJ1ZScpKTsKCiRzbWFydHktPmFzc2lnbignaW5wdXRfc29mb3J0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X3NvZm9ydCcsJ3RydWUnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfbWlzdGVyY2FzaCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdpbnB1dF9taXN0ZXJjYXNoJywndHJ1ZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF93ZWJzaG9wJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X3dlYnNob3AnLCd0cnVlJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BvZGl1bScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdpbnB1dF9wb2RpdW0nLCd0cnVlJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BheXBhbGVjJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X3BheXBhbGVjJywndHJ1ZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jcmVkaXRjYXJkcycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdpbnB1dF9jcmVkaXRjYXJkcycsJ3RydWUnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfa2xhcm5hJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X2tsYXJuYScsJ3RydWUnKSk7CQkKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hZnRlcnBheScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdpbnB1dF9hZnRlcnBheScsJ3RydWUnKSk7CQkKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9qcXVlcnknLAoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnaW5wdXRfanF1ZXJ5JywndHJ1ZScpKTsKLy8gR2V0IHRoZSBleGlzdGluZyBkYXRhIG91dCBvZiB0aGUgZGF0YWJhc2UKJGVudHJpZXMgPSBhcnJheSgpOwokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Npc293Z2F0ZXdheSc7CiRkYnIgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSApOwp3aGlsZSggJGRiciAmJiAoJHJvdyA9ICRkYnItPkZldGNoUm93KCkgKSApCiAgewogICAgJG9iaiA9IGNnZV9hcnJheTo6dG9fb2JqZWN0KCRyb3cpOwoJCiAgICAkb2JqLT5pbnB1dF9NZXJjaGFudElEID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X01lcmNoYW50SUQnLCRyb3dbJ01lcmNoYW50SUQnXSwxMiwxMik7CiAgICAkb2JqLT5pbnB1dF9NZXJjaGFudEtleSA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9NZXJjaGFudEtleScsJHJvd1snTWVyY2hhbnRLZXknXSw2MCw2MCk7CgoJJG9iai0+aW5wdXRfdGVzdG1vZGUgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X3Rlc3Rtb2RlJywgJ3RydWUnLCAkcm93Wyd0ZXN0bW9kZSddKTsKCgkkb2JqLT5pbnB1dF9zb2ZvcnQgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X3NvZm9ydCcsICd0cnVlJywgJHJvd1snc29mb3J0J10pOwoJJG9iai0+aW5wdXRfbWlzdGVyY2FzaCA9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnaW5wdXRfbWlzdGVyY2FzaCcsICd0cnVlJywgJHJvd1snbWlzdGVyY2FzaCddKTsKCSRvYmotPmlucHV0X3dlYnNob3AgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X3dlYnNob3AnLCAndHJ1ZScsICRyb3dbJ3dlYnNob3AnXSk7Cgkkb2JqLT5pbnB1dF9wb2RpdW0gPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X3BvZGl1bScsICd0cnVlJywgJHJvd1sncG9kaXVtJ10pOwoJJG9iai0+aW5wdXRfcGF5cGFsZWMgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X3BheXBhbGVjJywgJ3RydWUnLCAkcm93WydwYXlwYWxlYyddKTsKCSRvYmotPmlucHV0X2NyZWRpdGNhcmRzID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdpbnB1dF9jcmVkaXRjYXJkcycsICd0cnVlJywgJHJvd1snY3JlZGl0Y2FyZHMnXSk7Cgkkb2JqLT5pbnB1dF9rbGFybmEgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X2tsYXJuYScsICd0cnVlJywgJHJvd1sna2xhcm5hJ10pOwoJJG9iai0+aW5wdXRfYWZ0ZXJwYXkgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2lucHV0X2FmdGVycGF5JywgJ3RydWUnLCAkcm93WydhZnRlcnBheSddKTsKCQoJJG9iai0+aW5wdXRfanF1ZXJ5ID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdpbnB1dF9qcXVlcnknLCAndHJ1ZScsICRyb3dbJ2pxdWVyeSddKTsKCQoJCgkkb2JqLT5pbnB1dF9NZXJjaGFudElEYWZ0ZXJwYXkgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfTWVyY2hhbnRJRGFmdGVycGF5JywgJHJvd1snYWZ0ZXJwYXlNZXJjaGFudElEJ10sMTIsNjApOwoJJG9iai0+aW5wdXRfcG9ydGZvbGlvaWQgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfcG9ydGZvbGlvaWQnLCAkcm93WydhZnRlcnBheVBvcnRmb2xpb2lkJ10sNjAsNjApOwoJJG9iai0+aW5wdXRfcGFzc3dvcmQgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfcGFzc3dvcmQnLCAkcm93WydhZnRlcnBheVBhc3N3b3JkJ10sNjAsNjApOwoJCgkKCiAgICAkZW50cnkgPSAkb2JqOwogIH0KJHNtYXJ0eS0+YXNzaWduKCdlbnRyeScsJGVudHJ5KTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fc2V0dGluZ3NfdGFiLnRwbCcpOwovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhMAAxAOZsAP6IEs4ZOv+6f7eOv/2ePiCFxdlLZS6VzP+7f+xMbr/f8S+VzP/Ws516s7/f8thLZLePwP75+v/kzv/lzrePvy+Vzf/VssDg8v/n0uhGauhHapp2sCCFxgB1vv3+/+Rfef6fQMuw0L/g8pt2sOxLbv/7/P6ePvX6/f/lz516su+Tpf7n0iCSzoG/4N3I4edGathLZf/Tq/6sXvvh50Gj0iCTy/3x9P/x5P/+/C+Wzf38/f2iUfjz+P+3cv7+/5Van/fBzfKwvuv1+v/w4++TppRanv6jUedGafPr9P/TqtHo9dLn8pVanuvf7Pv9/vb7/f38/v7+/vfz+P/38bJ/u8yw0KufyfLr9P/9/P/7+Pj7/UGi0etLboG/4f/Dj80YOmQshWQrhWMrhf2HEQB0vs0YOf2IEf6IEWQshs4YOgB0vf///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGwALAAAAAAwADEAAAf/gGyCg4SFg1FUP0xFaxJGOxg4hpOUlYRIViloYGhhYGsTZmZjZwQEPVmWqoY6IRucYWKcnWsMZ2MAZgBnpSArq6shDWDEaMZgYcagZrdnuWOipRjAk1cNYp3JnWjYtBZnzADQo6OlBNSEwp3I27PdoOO8zLe7oiA36NedYrHJ3dmfLJAiBU4ctGZmCMQAVoUbsjCxxEjc1q8RuHnMmOGKdsbEQksNuPHDJouTLIjr1nwTFU0UwYu3TEyp5GLEJmM4ZyWbpQzFqGekxPECR2oUAUmGoITEifLYPzATa9ETtcsZr6DzOk7asAkWMaib/OHkZlGevHIDxbWcRqjJNZT//7btM7az1kGqzTa+jHaOENeHEE0eE2kSG7yz4HgZxIgxySApDiXyZJeT0yyVZ3EV1XXwarO+bDRZjjUWKjZ/2tDAa+ks11WNBQ3iY/NXm21Pnuii9CR18etdY8a5DCeDDY9kO28fEysxqoTMwYdqDF7u1hgQbFxwy0aatKzmN0nabR0UAPByGW9pxGIT50iTgk3PgtooV7R61ltqxLuivb+TcW1yGklhSKWLegTFgwtRQ52BgVxj8bPddqlBVSAKniWWWHSdBVeUDMZIuI8n/4h4DH0MZGTfOLjgl0s9GlEAAQQUDADBAAPUeCOON9bIY41rDCEAAkMKUCQCRBppJP+RTA7pxRpQRinllFRWaeWVUSaggZYkZJBABiQc0WUCL2j5JZlcbLmGEgsscEAFblZwwAFtzrlADgvImQOcc6bhp59lAApoGV/4+UWghKZRxhoOqOHoo5CqQYakkT5agAGBCoqooYoGYGgZZQSwqAKTTgopGaY6SkYHj5q6hQGKCvonoYEW6mkah/q5hgKsqlppqqiWimoLD3SqaKKxzgoqrp3uKmmqlfoKrRpCAJEps3/+WegXhW6ahrOUButrq9JO6kEJgnLb7abrBnoro9OOG66qphYgCKagLntsstdyq+sFlD4bsLQBT1qDIERcm+mht+YLaqGKMipvpKhGq8b7E4JEgCm/smKbK65riDDwox1UTC6lHBDyAagB+Psws/52G3Gj4QI7MqRLEBJBsQ+3/MWtxzoc6K4mC7uqyZHaW4gK2GYLs8JDX2A0sOJCWsAJkxQba8O1xtptAERbPLC4NFBigwEfM5spojKvAfC0cJvKgiUzaC2rpz9z+i2prZZKrqkceKBKEJh+/PKfon7rANKnkluAD8DUrWzaabwrcsEWFyA4NTtnC/G2f4ZM8bQFzI3OIB/AoK2mokpc9KkctHB6ISUYgG+siS5K880FHDz7JBF8gHa+oQMsbwE0bP57JTaooHroCjxbAAddYL387CVEIIgWTlzPRiAAOw==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyBBCgojIEIKCiMgQwokbGFuZ1snY2hhbmdlbG9nJ10gPSA8PDxFT1QKPHVsPgogIDxsaT5WZXJzaW9uIDAuNS4xIC0gMTkgT2N0b2JlciAyMDEyIC0gSmFudGlubwogICA8dWw+CiAgICAgPGxpPkJ1Z2ZpeCwgbm93IGRpc3BsYXlzIGludm9pY2UgbnVtYmVyIGFuZCBzaG9wbmFtZShhcyBlbnRlcmVkIGF0IGVjb21tZXJjZWJhc2UpIGFzIHRyYW5zYWN0aW9uIGRlc2NyaXB0aW9uPC9saT4KICAgPC91bD4KIDwvbGk+CiA8bGk+VmVyc2lvbiAwLjUuMCAtIDEwIE9jdG9iZXIgMjAxMiAtIEphbnRpbm8KICAgPHVsPgogICAgIDxsaT5BbGwgY3VycmVudCBwYXltZW50IG1ldGhvZHMgb2YgU2lzb3cgaW1wbGVtZW50ZWQ6PGJyIC8+CgkJaURlYWwgPGJyIC8+CgkJRElSRUNUZWJhbmtpbmc8YnIgLz4KCQlNaXN0ZXJDYXNoPGJyIC8+CgkJV2ViU2hvcCBHaWZ0Q2FyZDxiciAvPgoJCVBvZGl1bSBDYWRlYXVrYWFydDxiciAvPgoJCVBheXBhbCBvZiBjcmVkaXRjYXJkCgk8L2xpPgoJPGxpPk9wdGlvbiBmb3IganF1ZXJ5c2NyaXB0IHRvIGhpZGUgYmFua2xpc3QgdW50aWxsIGlkZWFsIGlzIGNob3NlbiBhcyBwYXltZW50IG1ldGhvZC48L2xpPgogICA8L3VsPgogPC9saT4KIDxsaT5WZXJzaW9uIDAuNC4wIC0gNSBPY3RvYmVyIDIwMTIgLSBKYW50aW5vCiAgIDx1bD4KICAgICA8bGk+SW5pdGlhbCB2ZXJzaW9uLiBDb21wYXRpYmxlIHdpdGggQ01TTVMgMS4xMS4xPC9saT4KICAgPC91bD4KIDwvbGk+CiAgCjwvdWw+CkVPVDsKJGxhbmdbJ2NoZWNrb3V0X2J1dHRvbl9tZXNzYWdlJ10gPSAnICBTdGFydCBiZXZlaWxpZ2RlIGJldGFsaW5nICAnOwokbGFuZ1snY2hlY2tvdXRfbWVzc2FnZSddID0gJ0JldGFsZW4gdmlhIGlEZWFsLCBQYXlwYWwgb2YgQ3JlZGl0Y2FyZCAnOwojIEQKCiMgRQokbGFuZ1snZXJyb3JfaW52YWxpZHBhcmFtZXRlciddID0gJ0ludmFsaWQgUGFyYW1ldGVyOiAlcyc7CiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uZGVuaWVkJ10gPSAnUGVybWlzc2lvbiBEZW5pZWQnOwokbGFuZ1snZXJyb3JfcHJpY2VvcmRlciddID0gJ1RoZXJlIGlzIGFuIGVycm9yIGluIHRoZSBvcmRlcmluZyBvZiB5b3VyIHNoaXBwaW5nIHByaWNlcy4gUHJpY2VzIG11c3QgYWx3YXlzIGluY3JlYXNlLiAgVGhlIGVycmFudCB2YWx1ZSBpczogJXMnOwokbGFuZ1snZXJyb3Jfd2VpZ2h0b3JkZXInXSA9ICdUaGVyZSBpcyBhbiBlcnJvciBpbiB0aGUgb3JkZXJpbmcgb2YgeW91ciBzaGlwcGluZyBwcmljZXMuIFdlaWdodHMgbXVzdCBhbHdheXMgaW5jcmVhc2UuICBUaGUgZXJyYW50IHZhbHVlIGlzOiAlcyc7CgojIEYKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1Npc293R2F0ZXdheSc7CgojIEcKCiMgSAokbGFuZ1snaGVscCddID0gPDw8RU9UCjxoMz5XaGF0IElzIFRoaXM8L2gzPgo8cD5QYXltZW50eSBtb2R1bGUgZm9yIFNpc293IFBheW1lbnQgR2F0ZXdheTxici8+CjxiPk9uZGVyc3RldW4gZGV6ZSBwbHVnaW4gem9uZGVyIGdlbGQgdWl0IHRlIGdldmVuLjwvYj4gTGFhdCB1dyBrbGFudCBhYW5tZWxkZW4gdm9vciBlZW4gU2lzb3cgYWNjb3VudCB2aWEgPGI+PGEgaHJlZj0iaHR0cHM6Ly93d3cuc2lzb3cubmwvU2lzb3cvaURlYWwvQWFubWVsZGVuLmFzcHg/cj0xNDA2MDUiIHRhcmdldD0iX0JMQU5LIj5kZXplIFVSTDwvYT48L2I+LjxiciAvPgpVdyBrbGFudGVuIHp1bGxlbiBoaWVyIG5pZXRzIHZhbiBvcG1lcmtlbjsgemUgenVsbGVuIGRlemVsZmRlIHRhcmlldmVuIGVuIHZvb3J3YWFyZGVuIGtyaWpnZW4uIDwvcD4KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+CjxwPkZpbGwgaW4geW91ciBTaXNvdyBNZXJjaGFudElEIGFuZCBNZXJjaGFudEtleSBhbmQgY2hvb3NlIHdoZXRoZXIgeW91IHdhbnQgdGhlIHRlc3QgbW9kZSBvciBub3QuIFNhdmUgYW5kIHNlbGVjdCBTaXNvd0dhdGV3YXkgYXMgeW91ciBQYXltZW50IHRoaW5nZ2llIGluIENhbGd1eXMgRWNvbW1lcmNlIEJhc2U8L3A+CjxwPkhlYiB2ZXJzY2hpbGxlbmRlIGNsYXNzZXMgdG9lZ2V2b2VnZCBhYW4gaGV0IGZvcm11bGllciwgem9kYXQgdSBoZXQgZm9ybXVsaWVyIGt1bnQgb3BtYWtlbiBuYWFyIHdlbnMgbWJ2IGNzcy4gRGUgdm9sZ2VuZGUgY2xhc3NlcyB6aWpuIGdlZGVmaW5lZXJkOjxiciAvPgo8YnIgLz4KaGV0IGdlaGVsZSBmb3JtdWxpZXI6IHNpc293Zm9ybTxiciAvPgo8YnIgLz4KYWxsZSBiZXRhYWwgbW9nZWxpamtoZWRlbjo8YnIgLz4Kc2lzb3dCYW5rPGJyIC8+CjxiciAvPgpwZXIgYmV0YWFsbW9nZWxpamtoZWlkOjxiciAvPgpzaXNvd0RpcmVjdGViYW5raW5nPGJyIC8+CnNpc293TWlzdGVyQ2FzaDxiciAvPgpzaXNvd1dlYlNob3BHaWZ0Q2FyZDxiciAvPgpzaXNvd1BvZGl1bTxiciAvPgpzaXNvd1BheXBhbDxiciAvPgpzaXNvd2lEZWFsPGJyIC8+CnNpc293aURlYWxiYW5rZW4gKGRlemUgYmV2YXQgZGUgbGlqc3QgbWV0IGJhbmtlbik8YnIgLz4KPGJyIC8+CnZlcnplbmRidXR0b246PGJyIC8+CnNpc293U3VibWl0PGJyIC8+CjxiciAvPgogPC9wPgo8aDM+U3VwcG9ydDwvaDM+CjxwPk1vZHVsZSBpcyBhcy1pcy4gR2VlbiBnYXJhbnRpZXMuIEh1bHAgaXMgbW9nZWxpamssIG9mZmVydGUgdm9vcmFmLiBOZWVtIGNvbnRhY3Qgb3AgbWV0IDxhIGhyZWY9Im1haWx0bzogaW5mb0BqYW50aW5vLm5sIj5SZWludCBKYW50aW5vPC9hPiBvZiBwcm9iZWVyIGhldCBvcCAndCBmb3J1bS48L3A+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgwqkgMjAxMiwgUmVpbnQgdmFuIGRlciBMYWFuIC4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuClRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZSBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgpUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBIE9yIHJlYWQgaXQgb25saW5lCjwvcD4KRU9UOwoKIyBJCgojIEoKCiMgSwoKIyBMCiRsYW5nWydsYWJlbCddID0gJ0xhYmVsJzsKCiMgTQokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdQYXJ0IG9mIHRoZSBFLUNvbW1lcmNlIGNvbGxlY3Rpb24sIHRoaXMgbW9kdWxlIHByb3ZpZGVzIGlEZWFsLCBQYXlwYWwgYW5kIEdpZnRjYXJkcyBwYXltZW50cyBmb3IgU2lzb3cgUGF5bWVudCBHYXRld2F5cyc7CgojIE4KCiMgTwoKIyBQCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1RoZSBTaXNvd0dhdGV3YXkgTW9kdWxlIGhhcyBzdWNjZXNzZnVsbHkgYmVlbiBpbnN0YWxsZWQsIHBsZWFzZSBlbnN1cmUgaXQgaXMgY29uZmlndXJlZCBjb3JyZWN0bHknOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1RoZSBTaXNvd0dhdGV3YXkgbW9kdWxlIGFuZCBhbGwgYXNzb2NpYXRlZCBkYXRhIGhhcyBiZWVuIHJlbW92ZWQnOwoKIyBRCgojIFIKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdBcmUgeW91IHN1cmUgeW91IHJlYWxseSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIG1vZHVsZS4gIERvaW5nIHNvIGNvdWxkIHJlbmRlciB5b3VyIEUtQ29tbWVyY2Ugc2l0ZSBpbm9wZXJhYmxlLiAgUHJvY2VlZCB3aXRoIGNhdXRpb24uJzsKCiMgUwokbGFuZ1snc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwoKIyBUCgojIFUKCiMgVgoKIyBXCgojIFgKCiMgWQoKIyBaCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNpc293R2F0ZXdheSAoYykgMjAxMiBieSBSZWludCBKYW50aW5vCiMgICAgICAgICAoaW5mb0BqYW50aW5vLm5sKQojCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBTaXNvdyAoaWRlYWwsIHBheXBhbCwgZ2lmdGNhcmRzKSBQYXltZW50cyBnYXRld2F5LgojCiMgTm90ZTogVGhpcyBtb2R1bGUgaXMgYmFzZWQgb24gdGhlIFBheXBhbEdhdGV3YXkgYnkgUm9iZXJ0IENhbXBiZWxsLgojIEFuZCBJZGVhbEdhdGV3YXkgTGl0ZSAoYykgMjAxMCBieSBNYXJjIHZhbiBkZSBHZWlqbiAobWFyY0B2ZGdlaWpuLmNvbSkKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRkYiA9Y21zbXMoKS0+R2V0RGIoKTsKJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKCiRmbGRzID0gImlkIEkgS0VZIEFVVE8sCiAgICAgICAgIE1lcmNoYW50SUQgQygyMCksCiAgICAgICAgIE1lcmNoYW50S2V5IEMoODApLAogICAgICAgICBhZnRlcnBheU1lcmNoYW50SUQgQyg4MCksCiAgICAgICAgIGFmdGVycGF5UG9ydGZvbGlvaWQgQyg4MCksCiAgICAgICAgIGFmdGVycGF5UGFzc3dvcmQgQyg4MCksCiAgICAgICAgIHRlc3Rtb2RlIEMoNSksCgkJIHNvZm9ydCBDKDUpLAoJCSBtaXN0ZXJjYXNoIEMoNSksCgkJIHdlYnNob3AgQyg1KSwKCQkgcG9kaXVtIEMoNSksCiAJCSBwYXlwYWxlYyBDKDUpLAogCQkganF1ZXJ5IEMoNSksCiAJCSBjcmVkaXRjYXJkcyBDKDUpLAogCQkga2xhcm5hIEMoNSksCgkJIGFmdGVycGF5IEMoNSksCgkJIGNhbGxiYWNra2V5IEMoMTUpOwoJCSI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zaXNvd2dhdGV3YXknLAoJCQkJICAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gR2VuZXJhdGUgcmFuZG9tIHVuaXF1ZSBrZXkgdXNlZCBmb3IgY2FsbGJhY2sgdmVyaWZpY2F0aW9uCgoKCiAgICAkY2hhcnMgPSAiYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5ejAyMzQ1Njc4OSI7IAogICAgc3JhbmQoKGRvdWJsZSltaWNyb3RpbWUoKSoxMDAwMDAwKTsgCiAgICAkaSA9IDA7IAogICAgJHJhbmRvbWtleSA9ICcnIDsgCgogICAgd2hpbGUgKCRpIDw9IDEyKSB7IAogICAgICAgICRudW0gPSByYW5kKCkgJSAzMzsgCiAgICAgICAgJHRtcCA9IHN1YnN0cigkY2hhcnMsICRudW0sIDEpOyAKICAgICAgICAkcmFuZG9ta2V5ID0gJHJhbmRvbWtleSAuICR0bXA7IAogICAgICAgICRpKys7IAogICAgfSAKCgoKJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2lzb3dnYXRld2F5ICBTRVQgY2FsbGJhY2trZXkgPSBcJycgLiRyYW5kb21rZXkgLiAnXCcnOwokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CmlmICghJHJlc3VsdCkgewoJcmV0dXJuICR0aGlzLT5MYW5nKCdpbnN0YWxsX2RhdGFiYXNlX2Vycm9yJyk7Cn0KCgokZm4gPSBkaXJuYW1lKF9fRklMRV9fKS4nL3RlbXBsYXRlcy9vcmlnX2Zvcm1fdGVtcGxhdGUudHBsJzsKJGRhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKJHRoaXMtPlNldFRlbXBsYXRlKCdmb3JtX3RlbXBsYXRlJywkZGF0YSk7CgovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNpc293R2F0ZXdheSAoYykgMjAxMiBieSBSZWludCBKYW50aW5vCiMgICAgICAgICAoaW5mb0BqYW50aW5vLm5sKQojCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBTaXNvdyAoaWRlYWwsIHBheXBhbCwgZ2lmdGNhcmRzKSBQYXltZW50cyBnYXRld2F5LgojCiMgTm90ZTogVGhpcyBtb2R1bGUgaXMgYmFzZWQgb24gdGhlIFBheXBhbEdhdGV3YXkgYnkgUm9iZXJ0IENhbXBiZWxsLgojIEFuZCBJZGVhbEdhdGV3YXkgTGl0ZSAoYykgMjAxMCBieSBNYXJjIHZhbiBkZSBHZWlqbiAobWFyY0B2ZGdlaWpuLmNvbSkKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2lzb3dnYXRld2F5IiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgokdGhpcy0+RGVsZXRlVGVtcGxhdGUoKTsKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNpc293R2F0ZXdheSAoYykgMjAxMiBieSBSZWludCBKYW50aW5vCiMgICAgICAgICAoaW5mb0BqYW50aW5vLm5sKQojCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBTaXNvdyAoaWRlYWwsIHBheXBhbCwgZ2lmdGNhcmRzKSBQYXltZW50cyBnYXRld2F5LgojCiMgTm90ZTogVGhpcyBtb2R1bGUgaXMgYmFzZWQgb24gdGhlIFBheXBhbEdhdGV3YXkgYnkgUm9iZXJ0IENhbXBiZWxsLgojIEFuZCBJZGVhbEdhdGV3YXkgTGl0ZSAoYykgMjAxMCBieSBNYXJjIHZhbiBkZSBHZWlqbiAobWFyY0B2ZGdlaWpuLmNvbSkKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRkYiA9Y21zbXMoKS0+R2V0RGIoKTsKCgokZGF0YT0gJGRiLT5xdWVyeSgnQUxURVIgVEFCTEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zaXNvd2dhdGV3YXkgQUREIGNyZWRpdGNhcmRzIFZBUkNIQVIoNSknKTsKJGRhdGE9ICRkYi0+cXVlcnkoJ0FMVEVSIFRBQkxFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2lzb3dnYXRld2F5IEFERCBrbGFybmEgVkFSQ0hBUig1KScpOwokZGF0YT0gJGRiLT5xdWVyeSgnQUxURVIgVEFCTEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zaXNvd2dhdGV3YXkgQUREIGFmdGVycGF5IFZBUkNIQVIoNSknKTsKCiRkYXRhPSAkZGItPnF1ZXJ5KCdBTFRFUiBUQUJMRSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Npc293Z2F0ZXdheSBBREQgYWZ0ZXJwYXlNZXJjaGFudElEIFZBUkNIQVIoODApJyk7CiRkYXRhPSAkZGItPnF1ZXJ5KCdBTFRFUiBUQUJMRSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Npc293Z2F0ZXdheSBBREQgYWZ0ZXJwYXlQb3J0Zm9saW9pZCBWQVJDSEFSKDgwKScpOwokZGF0YT0gJGRiLT5xdWVyeSgnQUxURVIgVEFCTEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zaXNvd2dhdGV3YXkgQUREIGFmdGVycGF5UGFzc3dvcmQgVkFSQ0hBUig4MCknKTsKJGRhdGE9ICRkYi0+cXVlcnkoJ0FMVEVSIFRBQkxFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2lzb3dnYXRld2F5IEFERCBjYWxsYmFja2tleSBWQVJDSEFSKDE1KScpOwovLyBHZW5lcmF0ZSByYW5kb20gdW5pcXVlIGtleSB1c2VkIGZvciBjYWxsYmFjayB2ZXJpZmljYXRpb24KCiAgICAkY2hhcnMgPSAiYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5ejAyMzQ1Njc4OSI7IAogICAgc3JhbmQoKGRvdWJsZSltaWNyb3RpbWUoKSoxMDAwMDAwKTsgCiAgICAkaSA9IDA7IAogICAgJHJhbmRvbWtleSA9ICcnIDsgCgogICAgd2hpbGUgKCRpIDw9IDEyKSB7IAogICAgICAgICRudW0gPSByYW5kKCkgJSAzMzsgCiAgICAgICAgJHRtcCA9IHN1YnN0cigkY2hhcnMsICRudW0sIDEpOyAKICAgICAgICAkcmFuZG9ta2V5ID0gJHJhbmRvbWtleSAuICR0bXA7IAogICAgICAgICRpKys7IAogICAgfSAKCgoKJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2lzb3dnYXRld2F5ICBTRVQgY2FsbGJhY2trZXkgPSBcJycgLiRyYW5kb21rZXkgLiAnXCcnOwokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CmlmICghJHJlc3VsdCkgewoJcmV0dXJuICR0aGlzLT5MYW5nKCdpbnN0YWxsX2RhdGFiYXNlX2Vycm9yJyk7Cn0KCi8vIEVPRgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9IFNpc293R2F0ZXdheQp2ZXJzaW9uID0gMC41LjYKZGVzY3JpcHRpb24gPSAKYXV0aG9yID0gUmVpbnQgdmFuIGRlciBMYWFuCmF1dGhvcmVtYWlsID0gakBudGluby5ubAptaW5jbXN2ZXJzaW9uID0gMS4xMS4xCjExW2RlcGVuZHNdCkNHRXh0ZW5zaW9ucyA9IDEuMTcuMwpDR1BheW1lbnRHYXRld2F5QmFzZSA9IDEuMC4zCg==]]></data>
	</file>
	<file>
	  <filename>/sisow.cls5.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmNsYXNzIFNpc293DQp7DQoJcHJvdGVjdGVkIHN0YXRpYyAkaXNzdWVyczsNCglwcm90ZWN0ZWQgc3RhdGljICRsYXN0Y2hlY2s7DQoNCglwcml2YXRlICRyZXNwb25zZTsNCg0KCS8vIE1lcmNoYW50IGRhdGENCglwcml2YXRlICRtZXJjaGFudElkOw0KCXByaXZhdGUgJG1lcmNoYW50S2V5Ow0KDQoJLy8gVHJhbnNhY3Rpb24gZGF0YQ0KCXB1YmxpYyAkcGF5bWVudDsJLy8gZW1wdHk9aURFQUw7IHNvZm9ydD1ESVJFQ1RlYmFua2luZzsgbWlzdGVyY2FzaD1NaXN0ZXJDYXNoOyAuLi4NCglwdWJsaWMgJGlzc3VlcklkOwkvLyBtYW5kYXRvcnk7IHNpc293IGJhbmsgY29kZQ0KCXB1YmxpYyAkcHVyY2hhc2VJZDsJLy8gbWFuZGF0b3J5OyBtYXggMTYgYWxwaGFudW1lcmljDQoJcHVibGljICRlbnRyYW5jZUNvZGU7CS8vIG1heCA0MCBzdHJpY3QgYWxwaGFudW1lcmljIChsZXR0ZXJzIGFuZCBudW1iZXJzIG9ubHkpDQoJcHVibGljICRkZXNjcmlwdGlvbjsJLy8gbWFuZGF0b3J5OyBtYXggMzIgYWxwaGFudW1lcmljDQoJcHVibGljICRhbW91bnQ7CQkvLyBtYW5kYXRvcnk7IG1pbiAwLjQ1DQoJcHVibGljICRub3RpZnlVcmw7DQoJcHVibGljICRyZXR1cm5Vcmw7CS8vIG1hbmRhdG9yeQ0KCXB1YmxpYyAkY2FuY2VsVXJsOw0KCXB1YmxpYyAkY2FsbGJhY2tVcmw7DQoNCgkvLyBTdGF0dXMgZGF0YQ0KCXB1YmxpYyAkc3RhdHVzOw0KCXB1YmxpYyAkdGltZVN0YW1wOw0KCXB1YmxpYyAkY29uc3VtZXJBY2NvdW50Ow0KCXB1YmxpYyAkY29uc3VtZXJOYW1lOw0KCXB1YmxpYyAkY29uc3VtZXJDaXR5Ow0KDQoJLy8gUmVzdWx0L2NoZWNrIGRhdGENCglwdWJsaWMgJHRyeElkOw0KCXB1YmxpYyAkaXNzdWVyVXJsOw0KDQoJLy8gRXJyb3IgZGF0YQ0KCXB1YmxpYyAkZXJyb3JDb2RlOw0KCXB1YmxpYyAkZXJyb3JNZXNzYWdlOw0KDQoJLy8gU3RhdHVzDQoJY29uc3Qgc3RhdHVzU3VjY2VzcyA9ICJTdWNjZXNzIjsNCgljb25zdCBzdGF0dXNDYW5jZWxsZWQgPSAiQ2FuY2VsbGVkIjsNCgljb25zdCBzdGF0dXNFeHBpcmVkID0gIkV4cGlyZWQiOw0KCWNvbnN0IHN0YXR1c0ZhaWx1cmUgPSAiRmFpbHVyZSI7DQoJY29uc3Qgc3RhdHVzT3BlbiA9ICJPcGVuIjsNCg0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbWVyY2hhbnRpZCwgJG1lcmNoYW50a2V5KSB7DQoJCSR0aGlzLT5tZXJjaGFudElkID0gJG1lcmNoYW50aWQ7DQoJCSR0aGlzLT5tZXJjaGFudEtleSA9ICRtZXJjaGFudGtleTsNCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIGVycm9yKCkgew0KCQkkdGhpcy0+ZXJyb3JDb2RlID0gJHRoaXMtPnBhcnNlKCJlcnJvcmNvZGUiKTsNCgkJJHRoaXMtPmVycm9yTWVzc2FnZSA9IHVybGRlY29kZSgkdGhpcy0+cGFyc2UoImVycm9ybWVzc2FnZSIpKTsNCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlKCRzZWFyY2gsICR4bWwgPSBmYWxzZSkgew0KCQlpZiAoJHhtbCA9PT0gZmFsc2UpIHsNCgkJCSR4bWwgPSAkdGhpcy0+cmVzcG9uc2U7DQoJCX0NCgkJaWYgKCgkc3RhcnQgPSBzdHJwb3MoJHhtbCwgIjwiIC4gJHNlYXJjaCAuICI+IikpID09PSBmYWxzZSkgew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCSRzdGFydCArPSBzdHJsZW4oJHNlYXJjaCkgKyAyOw0KCQlpZiAoKCRlbmQgPSBzdHJwb3MoJHhtbCwgIjwvIiAuICRzZWFyY2ggLiAiPiIsICRzdGFydCkpID09PSBmYWxzZSkgew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCXJldHVybiBzdWJzdHIoJHhtbCwgJHN0YXJ0LCAkZW5kIC0gJHN0YXJ0KTsNCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIHNlbmQoJG1ldGhvZCwgYXJyYXkgJGtleXZhbHVlID0gTlVMTCwgJHJldHVybiA9IDEpIHsNCgkJJHVybCA9ICJodHRwczovL3d3dy5zaXNvdy5ubC9TaXNvdy9pRGVhbC9SZXN0SGFuZGxlci5hc2h4LyIgLiAkbWV0aG9kOw0KCQkkb3B0aW9ucyA9IGFycmF5KA0KCQkJQ1VSTE9QVF9QT1NUID0+IDEsDQoJCQlDVVJMT1BUX0hFQURFUiA9PiAwLA0KCQkJQ1VSTE9QVF9VUkwgPT4gJHVybCwNCgkJCUNVUkxPUFRfRlJFU0hfQ09OTkVDVCA9PiAxLA0KCQkJQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiAkcmV0dXJuLA0KCQkJQ1VSTE9QVF9GT1JCSURfUkVVU0UgPT4gMSwNCgkJCUNVUkxPUFRfVElNRU9VVCA9PiA5MCwNCgkJCUNVUkxPUFRfU1NMX1ZFUklGWVBFRVIgPT4gMCwNCgkJCUNVUkxPUFRfUE9TVEZJRUxEUyA9PiAka2V5dmFsdWUgPT0gTlVMTCA/ICIiIDogaHR0cF9idWlsZF9xdWVyeSgka2V5dmFsdWUsICcnLCAnJicpKTsNCgkJJGNoID0gY3VybF9pbml0KCk7DQoJCWN1cmxfc2V0b3B0X2FycmF5KCRjaCwgJG9wdGlvbnMpOw0KCQkkdGhpcy0+cmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGNoKTsNCgkJY3VybF9jbG9zZSgkY2gpOyANCgkJaWYgKCEkdGhpcy0+cmVzcG9uc2UpIHsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIGdldERpcmVjdG9yeSgpIHsNCgkJJGRpZmYgPSAyNCAqIDYwICo2MDsNCgkJaWYgKHNlbGY6OiRsYXN0Y2hlY2spDQoJCQkkZGlmZiA9IHRpbWUoKSAtIHNlbGY6OiRsYXN0Y2hlY2s7DQoJCWlmICgkZGlmZiA8IDI0ICo2MCAqNjApDQoJCQlyZXR1cm4gMDsNCgkJaWYgKCEkdGhpcy0+c2VuZCgiRGlyZWN0b3J5UmVxdWVzdCIpKQ0KCQkJcmV0dXJuIC0xOw0KCQkkc2VhcmNoID0gJHRoaXMtPnBhcnNlKCJkaXJlY3RvcnkiKTsNCgkJaWYgKCEkc2VhcmNoKSB7DQoJCQkkdGhpcy0+ZXJyb3IoKTsNCgkJCXJldHVybiAtMjsNCgkJfQ0KCQlzZWxmOjokaXNzdWVycyA9IGFycmF5KCk7DQoJCSRpc3MgPSBleHBsb2RlKCI8aXNzdWVyPiIsIHN0cl9yZXBsYWNlKCI8L2lzc3Vlcj4iLCAiIiwgJHNlYXJjaCkpOw0KCQlmb3JlYWNoICgkaXNzIGFzICRrID0+ICR2KSB7DQoJCQkkaXNzdWVyaWQgPSAkdGhpcy0+cGFyc2UoImlzc3VlcmlkIiwgJHYpOw0KCQkJJGlzc3Vlcm5hbWUgPSAkdGhpcy0+cGFyc2UoImlzc3Vlcm5hbWUiLCAkdik7DQoJCQlpZiAoJGlzc3VlcmlkICYmICRpc3N1ZXJuYW1lKSB7DQoJCQkJc2VsZjo6JGlzc3VlcnNbJGlzc3VlcmlkXSA9ICRpc3N1ZXJuYW1lOw0KCQkJfQ0KCQl9DQoJCXNlbGY6OiRsYXN0Y2hlY2sgPSB0aW1lKCk7DQoJCXJldHVybiAwOw0KCX0NCg0KCS8vIERpcmVjdG9yeVJlcXVlc3QNCglwdWJsaWMgZnVuY3Rpb24gRGlyZWN0b3J5UmVxdWVzdCgmJG91dHB1dCwgJHNlbGVjdCA9IGZhbHNlLCAkdGVzdCA9IGZhbHNlKSB7DQoJCWlmICgkdGVzdCA9PT0gdHJ1ZSkgew0KCQkJLy8ga2FuIG9vayB2aWEgZGUgZ2F0ZXdheSBhYW5nZXZyYWFnZCB3b3JkZW4sIG1hYXIgaXMgYWx0aWpkIGhldHplbGZkZQ0KCQkJaWYgKCRzZWxlY3QgPT09IHRydWUpIHsNCgkJCQkkb3V0cHV0ID0gIjxzZWxlY3QgaWQ9XCJzaXNvd2JhbmtcIiBuYW1lPVwiaXNzdWVyaWRcIj4iOw0KCQkJCSRvdXRwdXQgLj0gIjxvcHRpb24gdmFsdWU9XCI5OVwiPlNpc293IEJhbmsgKHRlc3QpPC9vcHRpb24+IjsNCgkJCQkkb3V0cHV0IC49ICI8L3NlbGVjdD4iOw0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJJG91dHB1dCA9IGFycmF5KCI5OSIgPT4gIlNpc293IEJhbmsgKHRlc3QpIik7DQoJCQl9DQoJCQlyZXR1cm4gMDsNCgkJfQ0KCQkkb3V0cHV0ID0gZmFsc2U7DQoJCSRleCA9ICR0aGlzLT5nZXREaXJlY3RvcnkoKTsNCgkJaWYgKCRleCA8IDApIHsNCgkJCXJldHVybiAkZXg7DQoJCX0NCgkJaWYgKCRzZWxlY3QgPT09IHRydWUpIHsNCgkJCSRvdXRwdXQgPSAiPHNlbGVjdCBpZD1cInNpc293YmFua1wiIG5hbWU9XCJpc3N1ZXJpZFwiPiI7DQoJCX0NCgkJZWxzZSB7DQoJCQkkb3V0cHV0ID0gYXJyYXkoKTsNCgkJfQ0KCQlmb3JlYWNoIChzZWxmOjokaXNzdWVycyBhcyAkayA9PiAkdikgew0KCQkJaWYgKCRzZWxlY3QgPT09IHRydWUpIHsNCgkJCQkkb3V0cHV0IC49ICI8b3B0aW9uIHZhbHVlPVwiIiAuICRrIC4gIlwiPiIgLiAkdiAuICI8L29wdGlvbj4iOw0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJJG91dHB1dFska10gPSAkdjsNCgkJCX0NCgkJfQ0KCQlpZiAoJHNlbGVjdCA9PT0gdHJ1ZSkgew0KCQkJJG91dHB1dCAuPSAiPC9zZWxlY3Q+IjsNCgkJfQ0KCQlyZXR1cm4gMDsNCgl9DQoNCgkvLyBUcmFuc2FjdGlvblJlcXVlc3QNCglwdWJsaWMgZnVuY3Rpb24gVHJhbnNhY3Rpb25SZXF1ZXN0KCRrZXl2YWx1ZSA9IE5VTEwpIHsNCgkJJHRoaXMtPnRyeElkID0gJHRoaXMtPmlzc3VlclVybCA9ICIiOw0KCQlpZiAoISR0aGlzLT5tZXJjaGFudElkKQ0KCQkJcmV0dXJuIC0xOw0KCQlpZiAoISR0aGlzLT5tZXJjaGFudEtleSkNCgkJCXJldHVybiAtMjsNCgkJaWYgKCEkdGhpcy0+cHVyY2hhc2VJZCkgew0KCQkJJHRoaXMtPmVycm9yTWVzc2FnZSA9ICdObyBwdXJjaGFzZSBJRCc7DQoJCQlyZXR1cm4gLTM7DQoJCX0NCgkJaWYgKCR0aGlzLT5hbW91bnQgPCAwLjQ1KSB7DQoJCQkkdGhpcy0+ZXJyb3JNZXNzYWdlID0gJ0Ftb3VudCA8IDAuNDUnOw0KCQkJcmV0dXJuIC00Ow0KCQl9DQoJCWlmICghJHRoaXMtPmRlc2NyaXB0aW9uKSB7DQoJCQkkdGhpcy0+ZXJyb3JNZXNzYWdlID0gJ05vIGRlc2NyaXB0aW9uJzsNCgkJCXJldHVybiAtNTsNCgkJfQ0KCQlpZiAoISR0aGlzLT5yZXR1cm5VcmwpIHsNCgkJCSR0aGlzLT5lcnJvck1lc3NhZ2UgPSAnTm8gcmV0dXJuIFVSTCc7DQoJCQlyZXR1cm4gLTY7DQoJCX0NCgkJaWYgKCEkdGhpcy0+aXNzdWVySWQgJiYgISR0aGlzLT5wYXltZW50KSB7DQoJCQkkdGhpcy0+ZXJyb3JNZXNzYWdlID0gJ05vIGlzc3VlciBvciBwYXltZW50JzsNCgkJCXJldHVybiAtNzsNCgkJfQ0KCQlpZiAoISR0aGlzLT5lbnRyYW5jZUNvZGUpDQoJCQkkdGhpcy0+ZW50cmFuY2VDb2RlID0gJHRoaXMtPnB1cmNoYXNlSWQ7DQoJCSRwYXJzID0gYXJyYXkoKTsNCgkJJHBhcnNbIm1lcmNoYW50aWQiXSA9ICR0aGlzLT5tZXJjaGFudElkOw0KCQkkcGFyc1sicGF5bWVudCJdID0gJHRoaXMtPnBheW1lbnQ7DQoJCSRwYXJzWyJpc3N1ZXJpZCJdID0gJHRoaXMtPmlzc3VlcklkOw0KCQkkcGFyc1sicHVyY2hhc2VpZCJdID0gJHRoaXMtPnB1cmNoYXNlSWQ7IA0KCQkkcGFyc1siYW1vdW50Il0gPSByb3VuZCgkdGhpcy0+YW1vdW50ICogMTAwKTsNCgkJJHBhcnNbImRlc2NyaXB0aW9uIl0gPSAkdGhpcy0+ZGVzY3JpcHRpb247DQoJCSRwYXJzWyJlbnRyYW5jZWNvZGUiXSA9ICR0aGlzLT5lbnRyYW5jZUNvZGU7DQoJCSRwYXJzWyJyZXR1cm51cmwiXSA9ICR0aGlzLT5yZXR1cm5Vcmw7DQoJCSRwYXJzWyJjYW5jZWx1cmwiXSA9ICR0aGlzLT5jYW5jZWxVcmw7DQoJCSRwYXJzWyJjYWxsYmFja3VybCJdID0gJHRoaXMtPmNhbGxiYWNrVXJsOw0KCQkkcGFyc1sibm90aWZ5dXJsIl0gPSAkdGhpcy0+bm90aWZ5VXJsOw0KCQkkcGFyc1sic2hhMSJdID0gc2hhMSgkdGhpcy0+cHVyY2hhc2VJZCAuICR0aGlzLT5lbnRyYW5jZUNvZGUgLiByb3VuZCgkdGhpcy0+YW1vdW50ICogMTAwKSAuICR0aGlzLT5tZXJjaGFudElkIC4gJHRoaXMtPm1lcmNoYW50S2V5KTsNCgkJaWYgKCRrZXl2YWx1ZSkgew0KCQkJZm9yZWFjaCAoJGtleXZhbHVlIGFzICRrID0+ICR2KSB7DQoJCQkJaWYgKCRrICE9ICdhbW91bnQnKSB7DQoJCQkJCSRwYXJzWyRrXSA9ICR2Ow0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZiAoISR0aGlzLT5zZW5kKCJUcmFuc2FjdGlvblJlcXVlc3QiLCAkcGFycykpDQoJCQlyZXR1cm4gLTg7DQoJCSR0aGlzLT50cnhJZCA9ICR0aGlzLT5wYXJzZSgidHJ4aWQiKTsNCgkJJHRoaXMtPmlzc3VlclVybCA9IHVybGRlY29kZSgkdGhpcy0+cGFyc2UoImlzc3VlcnVybCIpKTsNCgkJaWYgKCEkdGhpcy0+aXNzdWVyVXJsKSB7DQoJCQkkdGhpcy0+ZXJyb3IoKTsNCgkJCXJldHVybiAtOTsNCgkJfQ0KCQlyZXR1cm4gMDsNCgl9DQoNCgkvLyBTdGF0dXNSZXF1ZXN0DQoJcHVibGljIGZ1bmN0aW9uIFN0YXR1c1JlcXVlc3QoJHRyeGlkID0gZmFsc2UpIHsNCgkJaWYgKCR0cnhpZCA9PT0gZmFsc2UpDQoJCQkkdHJ4aWQgPSAkdGhpcy0+dHJ4SWQ7DQoJCWlmICghJHRoaXMtPm1lcmNoYW50SWQpDQoJCQlyZXR1cm4gLTE7DQoJCWlmICghJHRoaXMtPm1lcmNoYW50S2V5KQ0KCQkJcmV0dXJuIC0yOw0KCQlpZiAoISR0cnhpZCkgew0KCQkJJHRoaXMtPmVycm9yTWVzc2FnZSA9ICdObyB0cmFuc2FjdGlvbiBJRCc7DQoJCQlyZXR1cm4gLTM7DQoJCX0NCgkJJHRoaXMtPnRyeElkID0gJHRyeGlkOw0KCQkkcGFycyA9IGFycmF5KCk7DQoJCSRwYXJzWyJtZXJjaGFudGlkIl0gPSAkdGhpcy0+bWVyY2hhbnRJZDsNCgkJJHBhcnNbInRyeGlkIl0gPSAkdGhpcy0+dHJ4SWQ7DQoJCSRwYXJzWyJzaGExIl0gPSBzaGExKCR0aGlzLT50cnhJZCAuICR0aGlzLT5tZXJjaGFudElkIC4gJHRoaXMtPm1lcmNoYW50S2V5KTsNCgkJaWYgKCEkdGhpcy0+c2VuZCgiU3RhdHVzUmVxdWVzdCIsICRwYXJzKSkNCgkJCXJldHVybiAtNDsNCgkJJHRoaXMtPnN0YXR1cyA9ICR0aGlzLT5wYXJzZSgic3RhdHVzIik7DQoJCWlmICghJHRoaXMtPnN0YXR1cykgew0KCQkJJHRoaXMtPmVycm9yKCk7DQoJCQlyZXR1cm4gLTU7DQoJCX0NCgkJJHRoaXMtPnRpbWVTdGFtcCA9ICR0aGlzLT5wYXJzZSgidGltZXN0YW1wIik7DQoJCSR0aGlzLT5hbW91bnQgPSAkdGhpcy0+cGFyc2UoImFtb3VudCIpIC8gMTAwLjA7DQoJCSR0aGlzLT5jb25zdW1lckFjY291bnQgPSAkdGhpcy0+cGFyc2UoImNvbnN1bWVyYWNjb3VudCIpOw0KCQkkdGhpcy0+Y29uc3VtZXJOYW1lID0gJHRoaXMtPnBhcnNlKCJjb25zdW1lcm5hbWUiKTsNCgkJJHRoaXMtPmNvbnN1bWVyQ2l0eSA9ICR0aGlzLT5wYXJzZSgiY29uc3VtZXJjaXR5Iik7DQoJCSR0aGlzLT5wdXJjaGFzZUlkID0gJHRoaXMtPnBhcnNlKCJwdXJjaGFzZWlkIik7DQoJCSR0aGlzLT5kZXNjcmlwdGlvbiA9ICR0aGlzLT5wYXJzZSgiZGVzY3JpcHRpb24iKTsNCgkJJHRoaXMtPmVudHJhbmNlQ29kZSA9ICR0aGlzLT5wYXJzZSgiZW50cmFuY2Vjb2RlIik7DQoJCXJldHVybiAwOw0KCX0NCn0NCg0KLyokdCA9IG5ldyBTaXNvdygiMjUzNzI3ODgxMyIsICJmMWJjYWMwNGVmNDYxZTdhODQ3NTdlNjM5NGJhMjA1YjFmNjM5MzZlIik7DQokc2VsZWN0ID0gIiI7DQokdC0+RGlyZWN0b3J5UmVxdWVzdCgkc2VsZWN0KTsgLy8gJHNlbGVjdCB3b3JkdCBnZXZ1bGQgbWV0IGFycmF5KCIwMSIgPT4gIkFCTiBBbXJvIEJhbmsiLCAiMDIiID0+ICJBU04gQmFuayIsIC4uLikNCiR0LT5EaXJlY3RvcnlSZXF1ZXN0KCRzZWxlY3QsIHRydWUpOyAvLyAkc2VsZWN0IHdvcmR0IGdldnVsZCBtZXQgZWVuIGRyb3Bkb3duICI8c2VsZWN0IC4uLj48b3B0aW9uLi4uPi4uLjwvc2VsZWN0PiINCiR0LT5pc3N1ZXJJZCA9ICIxMCI7DQokdC0+cHVyY2hhc2VJZCA9ICIyMDExMDMyOTAwMSI7DQokdC0+ZGVzY3JpcHRpb24gPSAiQmVzdGVsbGluZyAyMDExMDMyOTAwMSI7DQokdC0+YW1vdW50ID0gMy40NDsNCiR0LT5ub3RpZnlVcmwgPSAiaHR0cDovLy4uLiI7CQkvLyBWZXJ3ZXJraW5ncyBVUkw7IG5pZXQgdmVycGxpY2h0LCBrYW4gb29rIHZpYSByZXR1cm5VUkwNCiR0LT5yZXR1cm5VcmwgPSAiaHR0cDovLy4uLiI7CQkvLyBTdWNjZXNzIFVSTA0KJHQtPmNhbmNlbFVybCA9ICJodHRwOi8vLi4uIjsJCS8vIE5pZXQgU3VjY2VzcyBVUkw7IG5pZXQgYWFud2V6aWcsIGRhbiB3b3JkdCByZXR1cm5VUkwgaGllcnZvb3IgZ2VicnVpa3QNCiR0LT5UcmFuc2FjdGlvblJlcXVlc3QoKTsNCiR0LT5TdGF0dXNSZXF1ZXN0KCk7DQokdC0+U3RhdHVzUmVxdWVzdCgiMDA1MDAwMDcxNTQ2NjE1NCIpOw0KaWYgKCR0LT5zdGF0dXMgPT0gU2lzb3c6OnN0YXR1c1N1Y2Nlc3MpDQp7DQoJZWNobyAiR2VsdWt0IjsNCn0qLw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/SisowGateway.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KI0JFR0lOX0xJQ0VOU0UNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogU2lzb3dHYXRld2F5IChjKSAyMDEyIGJ5IFJlaW50IEphbnRpbm8NCiMgICAgICAgICAoaW5mb0BqYW50aW5vLm5sKQ0KIw0KIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzDQojICBTaXNvdyAoaWRlYWwsIHBheXBhbCwgZ2lmdGNhcmRzKSBQYXltZW50cyBnYXRld2F5Lg0KIw0KIyBOb3RlOiBUaGlzIG1vZHVsZSBpcyBiYXNlZCBvbiB0aGUgUGF5cGFsR2F0ZXdheSBieSBSb2JlcnQgQ2FtcGJlbGwuDQojIEFuZCBJZGVhbEdhdGV3YXkgTGl0ZSAoYykgMjAxMCBieSBNYXJjIHZhbiBkZSBHZWlqbiAobWFyY0B2ZGdlaWpuLmNvbSkNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIA0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiRjZ3BheW1lbnRnYXRld2F5YmFzZSA9IGNtc19qb2luX3BhdGgoJGdDbXMtPmNvbmZpZ1sncm9vdF9wYXRoJ10sJ21vZHVsZXMnLA0KCSdDR1BheW1lbnRHYXRld2F5QmFzZScsJ0NHUGF5bWVudEdhdGV3YXlCYXNlLm1vZHVsZS5waHAnKTsNCmlmKCAhaXNfcmVhZGFibGUoICRjZ3BheW1lbnRnYXRld2F5YmFzZSApICkNCnsNCgllY2hvICc8aDE+PGZvbnQgY29sb3I9InJlZCI+RVJST1I6IFRoZSBDR1BheW1lbnRHYXRld2F5QmFzZSBtb2R1bGUgY291bGQgbm90IGJlIGZvdW5kLiAgUGxlYXNlIGluc3RhbGwgaXQ8L2ZvbnQ+PC9oMT4nOw0KCXJldHVybjsNCn0NCmlmKCAhY2xhc3NfZXhpc3RzKCdDR1BheW1lbnRHYXRld2F5QmFzZScpICkNCnsNCiAgcmVxdWlyZV9vbmNlKCRjZ3BheW1lbnRnYXRld2F5YmFzZSk7DQp9DQoNCmNsYXNzIFNpc293R2F0ZXdheSBleHRlbmRzIENHUGF5bWVudEdhdGV3YXlCYXNlDQp7DQogIHZhciAkX2RhdGE7DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIENvbnN0cnVjdG9yKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIFNpc293R2F0ZXdheSgpDQogIHsNCiAgICBwYXJlbnQ6OkNNU01vZHVsZSgpOw0KICAgICR0aGlzLT5fZGF0YSA9IGFycmF5KCk7DQogIH0NCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0TmFtZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXROYW1lKCkNCiAgew0KICAgIHJldHVybiAnU2lzb3dHYXRld2F5JzsNCiAgfQ0KICANCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEZyaWVuZGx5TmFtZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldFZlcnNpb24oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpDQogIHsNCiAgICByZXR1cm4gJzAuNS42JzsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEhlbHAoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0SGVscCgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEF1dGhvcigpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBdXRob3IoKQ0KICB7DQogICAgcmV0dXJuICdSZWludCB2YW4gZGVyIExhYW4nOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0QXV0aG9yRW1haWwoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQ0KICB7DQogICAgcmV0dXJuICdqQG50aW5vLm5sJzsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldENoYW5nZUxvZygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQ0KICB7DQogICAgcmV0dXJuIEBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKF9fRklMRV9fKS4nL2NoYW5nZWxvZy5pbmMnKTsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBJc1BsdWdpbk1vZHVsZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpDQogIHsNCiAgICByZXR1cm4gdHJ1ZTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEhhc0FkbWluKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEhhc0FkbWluKCkNCiAgew0KICAgIHJldHVybiB0cnVlOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0QWRtaW5TZWN0aW9uKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpDQogIHsNCiAgICBnbG9iYWwgJENNU19WRVJTSU9OOw0KICAgIGlmKCB2ZXJzaW9uX2NvbXBhcmUoJENNU19WRVJTSU9OLCcxLjgnLCc8JykgKSByZXR1cm4gJ2V4dGVuc2lvbnMnOw0KICAgIHJldHVybiAnZWNvbW1lcmNlJzsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEFkbWluRGVzY3JpcHRpb24oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBWaXNpYmxlVG9BZG1pblVzZXIoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgfHwNCiAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJyk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXREZXBlbmRlbmNpZXMoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkNCiAgew0KICAgIHJldHVybiBhcnJheSgnQ0dFeHRlbnNpb25zJz0+JzEuMTcuMycsDQoJCSAnQ0dQYXltZW50R2F0ZXdheUJhc2UnPT4nMS4wLjMnKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIE1pbmltdW1DTVNWZXJzaW9uKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkNCiAgew0KICAgIHJldHVybiAiMS4xMS4xIjsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldFBhcmFtZXRlcnMoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpDQogIHsNCiAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsNCiAgICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7DQoNCiAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL1tJaV1kZWFsXC9pcG5cLyg/UDxyZXR1cm5pZD5bMC05XSspJC8nLA0KCQkJIGFycmF5KCdhY3Rpb24nPT4naXBuJykpOw0KDQogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Byb2Nlc3MnLCBDTEVBTl9TVFJJTkcpOwkJDQogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ29yZGVyX2lkJywgQ0xFQU5fSU5UKTsNCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbXljdXN0b20nLCBDTEVBTl9TVFJJTkcpOw0KCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzdGF0dXNrZXknLCBDTEVBTl9TVFJJTkcpOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgSW5zdGFsbFBvc3RNZXNzYWdlKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBVbmluc3RhbGxQb3N0TWVzc2FnZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsNCiAgfQ0KDQogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogIC8vIEJlZ2luIG1ldGhvZHMgcmVxdWlyZWQgZm9yIHBheW1lbnQgZ2F0ZXdheXMNCiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBSZXF1aXJlc0NyZWRpdENhcmRJbmZvKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIFJlcXVpcmVzQ3JlZGl0Q2FyZEluZm8oKQ0KICB7DQogICAgcmV0dXJuIGZhbHNlOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgUmVxdWlyZXNTU0woKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gUmVxdWlyZXNTU0woKQ0KICB7DQogICAgcmV0dXJuIGZhbHNlOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgUmVxdWlyZXNTaGlwcGluZ0luZm8oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gUmVxdWlyZXNTaGlwcGluZ0luZm8oKQ0KICB7DQogICAgcmV0dXJuIGZhbHNlOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgUmVxdWlyZXNCaWxsaW5nSW5mbygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBSZXF1aXJlc0JpbGxpbmdJbmZvKCkNCiAgew0KICAgIHJldHVybiBmYWxzZTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgU2F2ZVN0YXRlKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIFNhdmVTdGF0ZSgkZW5jcnlwdCA9IGZhbHNlKQ0KICB7DQogICAgaWYoICRlbmNyeXB0ICkNCiAgICAgIHsNCgkka2V5ID0gc3RyX3NodWZmbGUobWQ1KHNlc3Npb25faWQoKS50aW1lKCkpKTsNCgkkcmF3ID0gc2VyaWFsaXplKCR0aGlzLT5fZGF0YSk7DQoJJGVuYyA9ICR0aGlzLT5lbmNyeXB0KCRrZXksJHJhdyk7DQoJJF9TRVNTSU9OWydzaXNvd2d3J10gPSBiYXNlNjRfZW5jb2RlKCRlbmMpOw0KCXJldHVybiAka2V5Ow0KICAgICAgfQ0KICAgIGVsc2UNCiAgICAgIHsNCgkkcmF3ID0gc2VyaWFsaXplKCR0aGlzLT5fZGF0YSk7DQoJJF9TRVNTSU9OWydzaXNvd2d3J10gPSBiYXNlNjRfZW5jb2RlKCRyYXcpOw0KCXJldHVybiAnJzsNCiAgICAgIH0NCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFJlc3RvcmVTdGF0ZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBSZXN0b3JlU3RhdGUoJGtleSA9ICcnKQ0KICB7DQogIAlpZiggIWlzc2V0KCRfU0VTU0lPTlsnc2lzb3dndyddKSApIHJldHVybiBGQUxTRTsNCiAgICBpZiggZW1wdHkoJGtleSkgKQ0KICAgICAgew0KCSRyYXcgPSBiYXNlNjRfZGVjb2RlKCRfU0VTU0lPTlsnc2lzb3dndyddKTsNCiAgICAgIH0NCiAgICBlbHNlDQogICAgICB7DQoJJGVuYyA9IGJhc2U2NF9kZWNvZGUoJF9TRVNTSU9OWydzaXNvd2d3J10pOw0KCSRyYXcgPSAkdGhpcy0+ZGVjcnlwdCgka2V5LCRlbmMpOw0KCWlmKCAkcmF3ID09PSBGQUxTRSApIHJldHVybiBGQUxTRTsNCiAgICAgIH0NCiAgICAkdGhpcy0+X2RhdGEgPSB1bnNlcmlhbGl6ZSgkcmF3KTsNCiAgICB1bnNldCgkX1NFU1NJT05bJ3Npc293Z3cnXSk7DQogICAgcmV0dXJuIFRSVUU7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBTZXRDcmVkaXRDYXJkSW5mbygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBTZXRDcmVkaXRDYXJkSW5mbygkY2N0eXBlLCRjY251bWJlciwkY2NleHAsJGNjdmNvZGUpDQogIHsNCiAgICByZXR1cm4gVFJVRTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldEN1cnJlbmN5Q29kZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBTZXRDdXJyZW5jeUNvZGUoJGNvZGUgPSAnRVVSJykNCiAgew0KICAgICR0aGlzLT5fZGF0YVsnY3VycmVuY3ljb2RlJ10gPSBzdHJ0b3VwcGVyKCRjb2RlKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldFdlaWdodFVuaXRzKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIFNldFdlaWdodFVuaXRzKCR1bml0cyA9ICdsYnMnKQ0KICB7DQogICAgJHRoaXMtPl9kYXRhWyd3ZWlnaHR1bml0cyddID0gJHVuaXRzOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0RGVzdGluYXRpb24oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gU2V0RGVzdGluYXRpb24oJHVybCkNCiAgew0KICAgICR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXSA9ICR1cmw7DQogIH0NCiAgICANCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgQWRkSXRlbSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBBZGRJdGVtKCRuYW1lLCRudW1iZXIsJHF1YW50aXR5LCR3ZWlnaHQsJGFtb3VudCwkdGF4ID0gJycpDQogIHsNCiAgICAkbmFtZSA9IHN0cmlwX3RhZ3MoJG5hbWUpOw0KICAgICRuYW1lID0gcHJlZ19yZXBsYWNlKCcvXCYuKlw7LycsJycsJG5hbWUpOw0KICAgICRuYW1lID0gdHJpbSgkbmFtZSk7DQogICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ2l0ZW1zJ10pICkNCiAgICAgIHsNCgkkdGhpcy0+X2RhdGFbJ2l0ZW1zJ10gPSBhcnJheSgpOw0KICAgICAgfQ0KDQogICAgaWYoICFpc3NldCgkdGhpcy0+X2l0ZW1zWyRuYW1lXSkgKQ0KICAgICAgew0KCSR0aGlzLT5fZGF0YVsnaXRlbXMnXVskbmFtZV0gPSBhcnJheSgnbmFtZSc9PiRuYW1lLA0KCQkJCSAgICAgJ251bWJlcic9PiRudW1iZXIsDQoJCQkJICAgICAncXVhbnRpdHknPT4kcXVhbnRpdHksDQoJCQkJICAgICAnd2VpZ2h0Jz0+JHdlaWdodCwNCgkJCQkgICAgICdhbW91bnQnPT4kYW1vdW50KTsNCglpZighZW1wdHkoJHRheCkpDQoJICB7DQoJICAgICR0aGlzLT5fZGF0YVsnaXRlbXMnXVskbmFtZV1bJ3RheCddID0gJHRheDsNCgkgIH0gZWxzZXsNCgkJJHRoaXMtPl9kYXRhWydpdGVtcyddWyRuYW1lXVsndGF4J10gPSAwOw0KCSAgfQ0KICAgICAgfQ0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0T3JkZXJEZXNjcmlwdGlvbigpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBTZXRPcmRlckRlc2NyaXB0aW9uKCR0eHQpDQogIHsNCiAgICAkdGhpcy0+X2RhdGFbJ2Rlc2NyaXB0aW9uJ10gPSBzdWJzdHIoJHR4dCwwLDI1NSk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBTZXRPcmRlclRheEFtb3VudCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBTZXRPcmRlclRheEFtb3VudCgkdGF4KQ0KICB7DQogICAgJHRoaXMtPl9kYXRhWydvcmRlcnRheCddID0gJHRheDsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBTZXRUcmFuc2FjdGlvbkFtb3VudCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0VHJhbnNhY3Rpb25BbW91bnQoJHRpZCkNCiAgew0KICAgICR0aGlzLT5fZGF0YVsnYW1vdW50J10gPSAkdGlkOw0KICB9DQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRUcmFuc2FjdGlvbkFtb3VudCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VHJhbnNhY3Rpb25BbW91bnQoJHRpZCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJ2Ftb3VudCddOw0KICB9DQoNCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBTZXRQYXltZW50SUQoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gU2V0UGF5bWVudElEKCRwYXltZW50aWQpDQogIHsNCiAgCSR0aGlzLT5fZGF0YVsncGF5bWVudGlkJ10gPSAkcGF5bWVudGlkOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldFBheW1lbnRJRCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICANCiAgZnVuY3Rpb24gR2V0UGF5bWVudElEKCkNCiAgew0KICAJcmV0dXJuICR0aGlzLT5fZGF0YVsncGF5bWVudGlkJ107DQogIH0NCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0T3JkZXJTaGlwcGluZygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBTZXRPcmRlclNoaXBwaW5nKCRzaGlwcGluZykNCiAgew0KICAgICR0aGlzLT5fZGF0YVsnb3JkZXJzaGlwcGluZyddID0gJHNoaXBwaW5nOw0KICB9DQoNCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBTZXRJbnZvaWNlKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIFNldEludm9pY2UoJGludm9pY2UpDQogIHsNCiAgICAkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXSA9IHN1YnN0cigkaW52b2ljZSwtMjApOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0T3JkZXJJRCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBTZXRPcmRlcklEKCRvcmRlcmlkKQ0KICB7DQogICAgJHRoaXMtPl9kYXRhWydvcmRlcmlkJ10gPSAkb3JkZXJpZDsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldE9yZGVyKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIFNldE9yZGVyKCRvcmRlcikNCiAgew0KICAgICR0aGlzLT5fZGF0YVsnb3JkZXInXSA9ICRvcmRlcjsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldFN0YXR1cygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBTZXRTdGF0dXMoJHN0YXR1cykNCiAgew0KICAgIHN3aXRjaCgkc3RhdHVzKQ0KICAgICAgew0KICAgICAgY2FzZSBQQVlNRU5UX1NUQVRVU19BUFBST1ZFRDoNCiAgICAgIGNhc2UgUEFZTUVOVF9TVEFUVVNfREVDTElORUQ6DQogICAgICBjYXNlIFBBWU1FTlRfU1RBVFVTX0VSUk9SOg0KICAgICAgY2FzZSBQQVlNRU5UX1NUQVRVU19DQU5DRUxMRUQ6DQogICAgICBjYXNlIFBBWU1FTlRfU1RBVFVTX09USEVSOg0KICAgICAgY2FzZSBQQVlNRU5UX1NUQVRVU19QRU5ESU5HOg0KCSR0aGlzLT5fZGF0YVsnc3RhdHVzJ10gPSAkc3RhdHVzOw0KCWJyZWFrOw0KICAgICAgfQ0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0VHJhbnNhY3Rpb25JZCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBTZXRUcmFuc2FjdGlvbklkKCR0aWQpDQogIHsNCiAgICAkdGhpcy0+X2RhdGFbJ3RyYW5zYWN0aW9uX2lkJ10gPSAkdGlkOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0RXJyb3IoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gU2V0RXJyb3IoJG1lc3NhZ2UpDQogIHsNCiAgICAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddID0gUEFZTUVOVF9TVEFUVVNfRVJST1I7DQogICAgJHRoaXMtPl9kYXRhWydlcnJvcl9tZXNzYWdlJ10gPSAkbWVzc2FnZTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldENhbmNlbGxlZCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBTZXRDYW5jZWxsZWQoJG1lc3NhZ2UgPSAnJykNCiAgew0KICAgICR0aGlzLT5fZGF0YVsnc3RhdHVzJ10gPSBQQVlNRU5UX1NUQVRVU19DQU5DRUxMRUQ7DQogICAgaWYoICRtZXNzYWdlICkNCiAgICAgIHsNCgkkdGhpcy0+X2RhdGFbJ2Vycm9yX21lc3NhZ2UnXSA9ICRtZXNzYWdlOw0KICAgICAgfQ0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgUmVzZXQoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gUmVzZXQoKQ0KICB7DQogICAgJHRoaXMtPl9kYXRhID0gYXJyYXkoKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldERlY2xpbmVkKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIFNldERlY2xpbmVkKCRtZXNzYWdlKQ0KICB7DQogICAgJHRoaXMtPl9kYXRhWydzdGF0dXMnXSA9IFBBWU1FTlRfU1RBVFVTX0RFQ0xJTkVEOw0KICAgICR0aGlzLT5fZGF0YVsnZXJyb3JfbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3BheW1lbnRfZGVjbGluZWQnKTsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRUcmFuc2FjdGlvblN0YXR1cygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRUcmFuc2FjdGlvblN0YXR1cygpDQogIHsNCiAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydzdGF0dXMnXSkgKQ0KICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVsnc3RhdHVzJ107DQogICAgcmV0dXJuIEZBTFNFOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0VHJhbnNhY3Rpb25JZCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRUcmFuc2FjdGlvbklkKCkNCiAgew0KICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ3RyYW5zYWN0aW9uX2lkJ10pICkNCiAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJ3RyYW5zYWN0aW9uX2lkJ107DQogICAgcmV0dXJuIEZBTFNFOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0TWVzc2FnZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRNZXNzYWdlKCkNCiAgew0KICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2Vycm9yX21lc3NhZ2UnXSkgKQ0KICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVsnZXJyb3JfbWVzc2FnZSddOw0KICAgIHJldHVybiBGQUxTRTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFRyYW5zYWN0aW9uKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEZpbmlzaFRyYW5zYWN0aW9uKCRhbW91bnQpDQogIHsNCiAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXSkgKSByZXR1cm4gRkFMU0U7DQoJDQogICAgJGtleSA9ICR0aGlzLT5TYXZlU3RhdGUodHJ1ZSk7DQogICAgJHVybCA9ICR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXTsNCiAgICAkdXJsID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR1cmwpOw0KICAgICR1cmwgLj0gIiZjbnRudDAxZGF0YWtleT0ka2V5IjsNCiAgICByZWRpcmVjdCgkdXJsKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIENoZWNrSW5mbygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBDaGVja0luZm8oKQ0KICB7DQogICAgcmV0dXJuIHRydWU7IC8vIGRlYnVnDQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRTaG9wTmFtZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRTaG9wTmFtZSgpDQogIHsNCiAgICAkZWNvbW0gPSBjZ2VfdXRpbHM6OmdldF9tb2R1bGUoJ0NHRWNvbW1lcmNlQmFzZScpOw0KCSR0bXAgPSAkZWNvbW0tPkdldFByZWZlcmVuY2UoJ215aW5mb19hZGRyZXNzJyk7DQoJJG15X2FkZHJlc3MgPSAnJzsNCglpZiggJHRtcCApDQoJICB7DQoJICAgICRteV9hZGRyZXNzID0gdW5zZXJpYWxpemUoJHRtcCk7DQoJICB9DQoJDQoJcmV0dXJuICRteV9hZGRyZXNzLT5nZXRfY29tcGFueSgpOw0KDQoJLy8kc21hcnR5LT5hc3NpZ24oJ215X2FkZHJlc3MnLCRteV9hZGRyZXNzKTsNCiAgfQ0KDQoNCg0KDQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0Rm9ybSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRGb3JtKCRyZXR1cm5pZCkNCiAgew0KICAgIGlmKCAhJHRoaXMtPkNoZWNrSW5mbygpICkgcmV0dXJuIEZBTFNFOw0KDQoNCg0KDQoJJGNvdW50ID0gMTsNCgkkYW1vdW50ID0gMDsNCglmb3JlYWNoKCAkdGhpcy0+X2RhdGFbJ2l0ZW1zJ10gYXMgJG5hbWUgPT4gJGRhdGEgKQ0KCSAgew0KCSAgICAkYW1vdW50ICs9ICRkYXRhWydhbW91bnQnXSAqICRkYXRhWydxdWFudGl0eSddOw0KCSAgfQ0KCSRwYXJtc1snYW1vdW50XycuJGNvdW50XSA9IG51bWJlcl9mb3JtYXQoJGFtb3VudCwyLCcuJywnJyk7DQoJJG5hbWUgPSB0cmltKCR0aGlzLT5fZGF0YVsnZGVzY3JpcHRpb24nXSk7DQoJaWYoICEkbmFtZSApDQoJICB7DQoJICAgICRuYW1lID0gJHRoaXMtPkxhbmcoJ29ubGluZV9wdXJjaGFzZScpOw0KCSAgfQ0KCSRwYXJtc1snaXRlbV9uYW1lXycuJGNvdW50XSA9ICRuYW1lOw0KCSRwYXJtc1sncXVhbnRpdHlfJy4kY291bnRdID0gMTsNCgkkcGFybXNbJ2l0ZW1fbnVtYmVyXycuJGNvdW50XSA9IDE7DQogICAgDQogICAgLy8gaGFjayBmb3Igc2hpcHBpbmcNCiAgICBpZiggIWVtcHR5KCR0aGlzLT5fZGF0YVsnb3JkZXJzaGlwcGluZyddKSAmJiAkdGhpcy0+X2RhdGFbJ29yZGVyc2hpcHBpbmcnXSA+IDAgKQ0KICAgICAgew0KCSRwYXJtc1snYW1vdW50XycuJGNvdW50XSA9IG51bWJlcl9mb3JtYXQoJHRoaXMtPl9kYXRhWydvcmRlcnNoaXBwaW5nJ10sJy4nLCcnKTsNCgkkcGFybXNbJ2l0ZW1fbmFtZV8nLiRjb3VudF0gPSAnU2hpcHBpbmcnOyAvLyB0b2RvICh0cmFuc2xhdGUpDQogICAgICB9DQoNCiAgICAvLyB0YXhlcw0KICAgIGlmKCAhZW1wdHkoJHRoaXMtPl9kYXRhWydvcmRlcnRheCddKSApDQogICAgICB7DQoJJHBhcm1zWyd0YXhfY2FydCddID0gbnVtYmVyX2Zvcm1hdCgkdGhpcy0+X2RhdGFbJ29yZGVydGF4J10sJy4nLCcnKTsNCiAgICAgIH0NCg0KDQogICAgLy8gUmVxdWVzdCB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgYmFua3MNCg0KCS8vIFNldCBkZWZhdWx0IHRpbWV6b25lIGZvciBEQVRFL1RJTUUgZnVuY3Rpb25zDQoJaWYoZnVuY3Rpb25fZXhpc3RzKCdkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0JykpDQoJew0KCQlkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0KCdFdXJvcGUvQW1zdGVyZGFtJyk7DQoJfQ0KDQogICAgcmVxdWlyZShkaXJuYW1lKF9fRklMRV9fKSAuICcvc2lzb3cuY2xzNS5waHAnKTsNCgkkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2lzb3dnYXRld2F5JzsNCgkkZGJyID0gJGRiLT5FeGVjdXRlKCAkcXVlcnkgKTsNCgl3aGlsZSggJGRiciAmJiAoJHJvdyA9ICRkYnItPkZldGNoUm93KCkgKSApDQoJICB7DQoJICAgICRNZXJjaGFuZElEID0gICRyb3dbJ01lcmNoYW50SUQnXTsNCgkgICAgJE1lcmNoYW50S2V5ID0gJHJvd1snTWVyY2hhbnRLZXknXTsNCgkJJHRlc3Rtb2RlID0gJHJvd1sndGVzdG1vZGUnXTsNCgkJJHNzb2ZvcnQgPSAkcm93Wydzb2ZvcnQnXTsNCgkJJHNtaXN0ZXJjYXNoID0gJHJvd1snbWlzdGVyY2FzaCddOw0KCQkkc3dlYnNob3AgPSAkcm93Wyd3ZWJzaG9wJ107DQoJCSRzcG9kaXVtID0gJHJvd1sncG9kaXVtJ107DQoJCSRzcGF5cGFsZWMgPSAkcm93WydwYXlwYWxlYyddOw0KCQkkc2NyZWRpdGNhcmRzID0gJHJvd1snY3JlZGl0Y2FyZHMnXTsNCgkJJHNrbGFybmEgPSAkcm93WydrbGFybmEnXTsNCgkJJHNhZnRlcnBheSA9ICRyb3dbJ2FmdGVycGF5J107DQoJCSRzanF1ZXJ5ID0gJHJvd1snanF1ZXJ5J107DQoJICB9DQoNCgkkc2lzb3cgPSBuZXcgU2lzb3coJE1lcmNoYW5kSUQsICRNZXJjaGFudEtleSk7DQoNCiAgICAka2V5ID0gJHRoaXMtPlNhdmVTdGF0ZSh0cnVlKTsNCg0KICAgICR1cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygnY250bnQwMScsJ3JlZGlyZWN0JywkcmV0dXJuaWQsJycsDQoJCQkJCSBhcnJheSgnb3JkZXJfaWQnPT4kdGhpcy0+X2RhdGFbJ29yZGVyaWQnXSwNCgkJCQkJICAgICAgICdteWN1c3RvbSc9PiRrZXkpLA0KCQkJCQkgJycsdHJ1ZSk7DQogICAgDQoJJHNPcmRlcklkID0gJHRoaXMtPl9kYXRhWydpbnZvaWNlJ107DQoJJGZPcmRlckFtb3VudCA9IHN0cl9yZXBsYWNlKCcsJywgJy4nLCAkdGhpcy0+X2RhdGFbJ29yZGVyJ11bJ3RvdGFsJ10pOyANCgkkc09yZGVyRGVzY3JpcHRpb24gPSAkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXSAuICcgdGJ2LiAnLiR0aGlzLT5HZXRTaG9wTmFtZSgpOzsgLy8gVXB0byAzMiBjaGFyYWN0ZXJzDQoNCiAgICANCiAgICBpZiAoJHRlc3Rtb2RlKXsNCgkJJHNpc293LT5EaXJlY3RvcnlSZXF1ZXN0KCRzZWxlY3QsIHRydWUsIHRydWUpOyAvL2xpanN0LCBodG1sY29kZXMsIHRlc3Rtb2R1cw0KCQkkc3BheW1lbnRzID0gJzxkaXYgY2xhc3M9InNpc293QmFuayBzaXNvd2lEZWFsIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InBheW1lbnQiIHZhbHVlPSIiPiBpREVBTDxkaXYgY2xhc3M9InNpc293aURlYWxiYW5rZW4iPicuJHNlbGVjdC4nPC9kaXY+PC9kaXY+JzsNCgkJDQoNCgkJaWYoJHNhZnRlcnBheSkgew0KCQkJJGFmdGVycGF5Zm9ybSA9ICc8aW5wdXQgIHR5cGU9InJhZGlvIiBpZD0ibWFjaHRpZ2luZyIgdmFsdWU9ImFmdGVyIiAvPjxsYWJlbCBmb3I9Im1hY2h0aWdpbmciPiBBZnRlclBheSDigJMgPGVtPlZlaWxpZyBhY2h0ZXJhZiBiZXRhbGVuPC9lbT48L2xhYmVsPjxiciAvPic7CQkJDQoNCgkJCSRhZnRlcnBheWZvcm0gLj0gJzxmb3JtIG5hbWU9ImFmdGVycGF5X2Zvcm0iIG1ldGhvZD0icG9zdCIgeGFjdGlvbj0iJy4kdXJsLiciIGFjdGlvbj0iJy4kdXJsLiciIGlkPSJhZnRlcnBheV9mb3JtIiBjbGFzcz0iYWZ0ZXJwYXlmb3JtIj4nOw0KCQkJJGFmdGVycGF5Zm9ybSAuPSAnPGxhYmVsIGZvcj0iYmFua25yIiBzdHlsZT0id2lkdGg6IDE2MHB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij5CYW5rcmVrZW5pbmc6IDwvbGFiZWw+PGlucHV0IG5hbWU9ImJhbmtuciIgdHlwZT0idGV4dCIgaWQ9ImJhbmtuciIgLz48YnIgLz48ZGl2IGlkPSJpYmFubXNnIj48L2Rpdj4nOwkJDQoJCQkkYWZ0ZXJwYXlmb3JtIC49ICc8bGFiZWwgZm9yPSJkb2IiIHN0eWxlPSJ3aWR0aDogMTYwcHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsiPkdlYm9vcnRlIGRhdHVtOiA8L2xhYmVsPjxpbnB1dCBuYW1lPSJkb2IiIHR5cGU9InRleHQiIGlkPSJkb2IiIGNsYXNzPSJkYXRlcGlja2VyIiAvPjxiciAvPic7CQkJDQoJCQkkYWZ0ZXJwYXlmb3JtIC49ICc8aW5wdXQgbmFtZT0iZ2VuZGVyIiB0eXBlPSJyYWRpbyIgaWQ9Imdlc2xhY2h0bSIgdmFsdWU9Ik0iIC8+PGxhYmVsIGZvcj0iZ2VzbGFjaHRtIj4gTWFuPC9sYWJlbD4gPGlucHV0IG5hbWU9ImdlbmRlciIgdHlwZT0icmFkaW8iIGlkPSJnZXNsYWNodHYiIHZhbHVlPSJWIiAvPjxsYWJlbCBmb3I9Imdlc2xhY2h0diI+IFZyb3V3PC9sYWJlbD4gPGJyIC8+JzsJCQkNCgkJCSRhZnRlcnBheWZvcm0gLj0gJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iYWtrb29yZCIgaWQ9ImFra29vcmRhZnRlcnBheSIgdmFsdWU9ImFra29vcmQiPiA8bGFiZWwgZm9yPSJha2tvb3JkYWZ0ZXJwYXkiPklrIGdhIGFra29vcmQgbWV0IGRlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYWZ0ZXJwYXkubmwvcGFnZS9jb25zdW1lbnQtYmV0YWxpbmdzdm9vcndhYXJkZW4iIHRhcmdldD0iX0JMQU5LIj5iZXRhbGluZ3N2b29yd2FhcmRlbjwvYT4gdmFuIEFmdGVyUGF5PC9sYWJlbD48YnIvPic7DQoJCQkkYWZ0ZXJwYXlmb3JtIC49ICc8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJ0aGlzLmRpc2FibGVkPXRydWU7ZG9jdW1lbnQuYWZ0ZXJwYXlfZm9ybS5zdWJtaXQoKSIgdmFsdWU9IkdhIHZlcmRlciIgdGl0bGU9IkJldGFhbCIgY2xhc3M9ImFmdGVycGF5U3VibWl0IiBpZD0ibWFjaHRpZ2luZ3N1Ym1pdCIgIC8+JzsJCQkNCg0KCQkJJGFmdGVycGF5Zm9ybSAuPSAiPGRpdiBpZD0nYWZ0ZXJwYXlpbmZvYnV0dG9uJz5LbGlrIGhpZXIgdm9vciBpbmZvcm1hdGllIG92ZXIgQWZ0ZXJwYXk8L2Rpdj48ZGl2IGlkPSdhZnRlcnBheWluZm8nPg0KCQkJ4oCYQWZ0ZXJQYXkgdm9lcnQgdm9vciBoZXQgdm9sbGVkaWdlIGFjaHRlcmFmIGJldGFhbHByb2NlcyB1aXQuIERpdCBiZXRla2VudCBkYXQgdSBlZW4gZGlnaXRhbGUgZmFjdHV1ciB2YW4gQWZ0ZXJQYXkgdmlhIGUtbWFpbCBvbnR2YW5ndCBvbSBoZXQgZ2Vrb2NodGUgcHJvZHVjdChlbikgdGUgYmV0YWxlbi4gVSBrdW50IGJpaiBiZXRhbGVuIG1ldCBlZW4gZGlnaXRhbGUgZmFjdHV1ciB0b3QgZWVuIGJlZHJhZyB2YW4gJmV1cm87IDE1MCwtICBhbHMgdSB2b29yIGRlIGVlcnN0ZSBrZWVyIGJldGFhbHQgdmlhIEFmdGVyUGF5LiBCZW50IHUgYWwgYmVrZW5kIGJpaiBBZnRlclBheSBrdW50IHUgYmV0YWxlbiB0b3QgZWVuIGJlZHJhZyB2YW4gJmV1cm87IDI1MCwtLjxiciAvPg0KPGJyIC8+DQoJCQlUZXIgZ29lZGtldXJpbmcgdmFuIHV3IHZlcnpvZWsgb20gdGUgYmV0YWxlbiBtZXQgQWZ0ZXJQYXkgdm9lcnQgQWZ0ZXJQYXkgZWVuIGdlZ2V2ZW5zY29udHJvbGUgdWl0LiBBZnRlclBheSBoYW50ZWVydCBlZW4gc3RyaWt0IHByaXZhY3kgYmVsZWlkIHpvYWxzIG9tc2NocmV2ZW4gaW4gaGFhciBwcml2YWN5IHN0YXRlbWVudC4gTW9jaHQgb252ZXJob29wdCB1dyB2ZXJ6b2VrIHRvdCBiZXRhbGluZyBuaWV0IGdlYXV0b3Jpc2VlcmQgd29yZGVuLCBkYW4ga3VudCB1IG5hdHV1cmxpamsgaGV0IGFhbiB0ZSBrb3BlbiBwcm9kdWN0IGJldGFsZW4gbWV0IGVlbiBhbmRlcmUgYmV0YWFsbWV0aG9kZS48YnIgLz4NCjxiciAvPg0KCQkJVSBrdW50IGJpaiB2cmFnZW4gYWx0aWpkIGNvbnRhY3QgbWV0IEFmdGVyUGF5IG9wbmVtZW4uIFZvb3IgbWVlciBpbmZvcm1hdGllIHZlcndpanplbiB3aWogdSBuYWFyIGhldCBjb25zdW1lbnRlbmRlZWwgdmFuIGRlIEFmdGVyUGF5IHdlYnNpdGUu4oCZPGJyIC8+PC9kaXY+IjsNCgkJCSRhZnRlcnBheWZvcm0gLj0gJzwvZm9ybT4nOw0KCQl9DQoJfSBlbHNlIHsNCgkJJHNpc293LT5EaXJlY3RvcnlSZXF1ZXN0KCRzZWxlY3QsIHRydWUsIGZhbHNlKTsgLy9saWpzdCwgaHRtbGNvZGVzLCB0ZXN0bW9kdXMNCgkJJHNwYXltZW50cyA9ICc8ZGl2IGNsYXNzPSJzaXNvd0Jhbmsgc2lzb3dpRGVhbCI+PGlucHV0IAkJCQkJCQkJdHlwZT0icmFkaW8iIGlkPSJzaXNvd2lEZWFsIiBuYW1lPSJwYXltZW50IiB2YWx1ZT0iIj48bGFiZWwJCQkJCQlmb3I9InNpc293aURlYWwiPmlERUFMPC9sYWJlbD48ZGl2IGNsYXNzPSJzaXNvd2lEZWFsYmFua2VuIj4nLiRzZWxlY3QuJzwvZGl2PjwvZGl2Pic7DQoJCWlmKCRzc29mb3J0KSB7JHNwYXltZW50cyAuPSAnPGRpdiBjbGFzcz0ic2lzb3dCYW5rIHNpc293RGlyZWN0ZWJhbmtpbmciPjxpbnB1dCAJCXR5cGU9InJhZGlvIiBpZD0ic2lzb3dEaXJlY3RlYmFua2luZyIgbmFtZT0icGF5bWVudCIgdmFsdWU9InNvZm9ydCI+PGxhYmVsCQlmb3I9InNpc293RGlyZWN0ZWJhbmtpbmciPkRJUkVDVGViYW5raW5nPC9sYWJlbD48L2Rpdj4nO30NCgkJaWYoJHNtaXN0ZXJjYXNoKSB7JHNwYXltZW50cyAuPSAnPGRpdiBjbGFzcz0ic2lzb3dCYW5rIHNpc293TWlzdGVyQ2FzaCI+PGlucHV0IAkJdHlwZT0icmFkaW8iIGlkPSJzaXNvd01pc3RlckNhc2giIG5hbWU9InBheW1lbnQiIHZhbHVlPSJtaXN0ZXJjYXNoIj48bGFiZWwJCWZvcj0ic2lzb3dNaXN0ZXJDYXNoIj5NaXN0ZXJDYXNoPC9sYWJlbD48L2Rpdj4nO30NCgkJaWYoJHN3ZWJzaG9wKSB7JHNwYXltZW50cyAuPSAnPGRpdiBjbGFzcz0ic2lzb3dCYW5rIHNpc293V2ViU2hvcEdpZnRDYXJkIj48aW5wdXQgCXR5cGU9InJhZGlvIiBpZD0ic2lzb3dXZWJTaG9wR2lmdENhcmQiIG5hbWU9InBheW1lbnQiIHZhbHVlPSJ3ZWJzaG9wIj48bGFiZWwJZm9yPSJzaXNvd1dlYlNob3BHaWZ0Q2FyZCI+V2ViU2hvcCBHaWZ0Q2FyZDwvbGFiZWw+PC9kaXY+Jzt9DQoJCWlmKCRzcG9kaXVtKSB7JHNwYXltZW50cyAuPSAnPGRpdiBjbGFzcz0ic2lzb3dCYW5rIHNpc293UG9kaXVtIj48aW5wdXQgCQkJCXR5cGU9InJhZGlvIiBpZD0ic2lzb3dQb2RpdW0iIG5hbWU9InBheW1lbnQiIHZhbHVlPSJwb2RpdW0iPjxsYWJlbAkJCQlmb3I9InNpc293UG9kaXVtIj5Qb2RpdW0gQ2FkZWF1a2FhcnQ8L2xhYmVsPjwvZGl2Pic7fQ0KCQlpZigkc3BheXBhbGVjKSB7JHNwYXltZW50cyAuPSAnPGRpdiBjbGFzcz0ic2lzb3dCYW5rIHNpc293UGF5cGFsIj48aW5wdXQgCQkJdHlwZT0icmFkaW8iIGlkPSJzaXNvd1BheXBhbCIgbmFtZT0icGF5bWVudCIgdmFsdWU9InBheXBhbGVjIj48bGFiZWwJCQlmb3I9InNpc293UGF5cGFsIj5QYXlwYWwgb2YgY3JlZGl0Y2FyZDwvbGFiZWw+PC9kaXY+Jzt9DQoJCWlmKCRza2xhcm5hKSB7DQoJCQkvL25vdCBmaW5pc2hlZA0KCQkJLy8kc3BheW1lbnRzIC49ICc8ZGl2IGNsYXNzPSJzaXNvd0Jhbmsgc2lzb3dLbGFybmEiPjxpbnB1dCAJCQkJCQl0eXBlPSJyYWRpbyIgaWQ9InNpc293S2xhcm5hIiBuYW1lPSJwYXltZW50IiB2YWx1ZT0ia2xhcm5hIj48bGFiZWwJCQkJZm9yPSJzaXNvd0tsYXJuYSI+QWNodGVyYWYgYmV0YWxlbiAoS2xhcm5hKTwvbGFiZWw+PC9kaXY+JzsNCgkJCS8vJHNwYXltZW50cyAuPSAnPGRpdiBjbGFzcz0ic2lzb3dCYW5rIHNpc293S2xhcm5hZGVsZW4iPjxpbnB1dCAJCQkJCXR5cGU9InJhZGlvIiBpZD0ic2lzb3dLbGFybmFkZWxlbiIgbmFtZT0icGF5bWVudCIgdmFsdWU9ImtsYXJuYWFjYyI+PGxhYmVsCQlmb3I9InNpc293S2xhcm5hZGVsZW4iPkdlc3ByZWlkIGJldGFsZW4gKEtsYXJuYSk8L2xhYmVsPjwvZGl2Pic7DQoJCX0NCgkJaWYoJHNjcmVkaXRjYXJkcykgew0KCQkJJHNwYXltZW50cyAuPSAnPGRpdiBjbGFzcz0ic2lzb3dCYW5rIHNpc293Q3JlZGl0Y2FyZHMiPjxpbnB1dCAJCQkJCXR5cGU9InJhZGlvIiBpZD0ic2lzb3dDcmVkaXRjYXJkcyIgbmFtZT0icGF5bWVudCIgdmFsdWU9ImNjIj48bGFiZWwJCQkJZm9yPSJzaXNvd0NyZWRpdGNhcmRzIj5DcmVkaXRjYXJkPC9sYWJlbD4nOw0KCQkJJHNwYXltZW50cyAuPSAnPGRpdiBjbGFzcz0ic2lzb3dDcmVkaXRjYXJkc2xpc3QiPjxzZWxlY3QgbmFtZT0icGF5bWVudCI+JzsNCgkJCSRzcGF5bWVudHMgLj0gJzxvcHRpb24gdmFsdWU9Im1hZXN0cm8iPk1hZXN0cm88L29wdGlvbj4nOw0KCQkJJHNwYXltZW50cyAuPSAnPG9wdGlvbiB2YWx1ZT0ibWFzdGVyY2FyZCI+TWFzdGVyY2FyZDwvb3B0aW9uPic7DQoJCQkkc3BheW1lbnRzIC49ICc8b3B0aW9uIHZhbHVlPSJ2aXNhIj5WaXNhPC9vcHRpb24+JzsJCQkNCgkJCSRzcGF5bWVudHMgLj0gIjwvc2VsZWN0PjwvZGl2PjwvZGl2PiI7DQoJCX0NCgkJaWYoJHNhZnRlcnBheSkgew0KCQkJJGFmdGVycGF5Zm9ybSA9ICc8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJtYWNodGlnaW5nIiB2YWx1ZT0iYWZ0ZXIiIC8+PGxhYmVsIGZvcj0ibWFjaHRpZ2luZyI+IEFmdGVyUGF5IOKAkyA8ZW0+VmVpbGlnIGFjaHRlcmFmIGJldGFsZW48L2VtPjwvbGFiZWw+PGJyIC8+JzsJCQkNCg0KCQkJJGFmdGVycGF5Zm9ybSAuPSAnPGZvcm0gbmFtZT0iYWZ0ZXJwYXlfZm9ybSIgbWV0aG9kPSJwb3N0IiB4YWN0aW9uPSInLiR1cmwuJyIgYWN0aW9uPSInLiR1cmwuJyIgaWQ9ImFmdGVycGF5X2Zvcm0iIGNsYXNzPSJhZnRlcnBheWZvcm0iPic7DQoNCgkJCSRhZnRlcnBheWZvcm0gLj0gJzxsYWJlbCBmb3I9ImJhbmtuciIgc3R5bGU9IndpZHRoOiAxNjBweDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyI+QmFua3Jla2VuaW5nOiA8L2xhYmVsPjxpbnB1dCBuYW1lPSJiYW5rbnIiIHR5cGU9InRleHQiIGlkPSJiYW5rbnIiIC8+PGJyIC8+PGRpdiBpZD0iaWJhbm1zZyI+PC9kaXY+JzsJCQkNCgkJCSRhZnRlcnBheWZvcm0gLj0gJzxsYWJlbCBmb3I9ImRvYiIgc3R5bGU9IndpZHRoOiAxNjBweDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyI+R2Vib29ydGUgZGF0dW06IDwvbGFiZWw+PGlucHV0IG5hbWU9ImRvYiIgdHlwZT0idGV4dCIgaWQ9ImRvYiIgIGNsYXNzPSJkYXRlcGlja2VyIiAvPjxiciAvPic7CQkJDQoJCQkkYWZ0ZXJwYXlmb3JtIC49ICc8aW5wdXQgbmFtZT0iZ2VuZGVyIiB0eXBlPSJyYWRpbyIgaWQ9Imdlc2xhY2h0bSIgdmFsdWU9Ik0iIC8+PGxhYmVsIGZvcj0iZ2VzbGFjaHRtIj4gTWFuPC9sYWJlbD4gPGlucHV0IG5hbWU9ImdlbmRlciIgdHlwZT0icmFkaW8iIGlkPSJnZXNsYWNodHYiIHZhbHVlPSJWIiAvPjxsYWJlbCBmb3I9Imdlc2xhY2h0diI+IFZyb3V3PC9sYWJlbD4gPGJyIC8+JzsJCQkNCgkJCSRhZnRlcnBheWZvcm0gLj0gJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iYWtrb29yZCIgaWQ9ImFra29vcmRhZnRlcnBheSIgdmFsdWU9ImFra29vcmQiPiA8bGFiZWwgZm9yPSJha2tvb3JkYWZ0ZXJwYXkiPklrIGdhIGFra29vcmQgbWV0IGRlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYWZ0ZXJwYXkubmwvcGFnZS9jb25zdW1lbnQtYmV0YWxpbmdzdm9vcndhYXJkZW4iIHRhcmdldD0iX0JMQU5LIj5iZXRhbGluZ3N2b29yd2FhcmRlbjwvYT4gdmFuIEFmdGVyUGF5PC9sYWJlbD48YnIvPic7DQoJCQkkYWZ0ZXJwYXlmb3JtIC49ICc8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJ0aGlzLmRpc2FibGVkPXRydWU7ZG9jdW1lbnQuYWZ0ZXJwYXlfZm9ybS5zdWJtaXQoKSIgdmFsdWU9IkdhIHZlcmRlciIgdGl0bGU9IkJldGFhbCIgY2xhc3M9ImFmdGVycGF5U3VibWl0IiBpZD0ibWFjaHRpZ2luZ3N1Ym1pdCIgIC8+JzsJCQkNCg0KCQkJJGFmdGVycGF5Zm9ybSAuPSAiPGRpdiBpZD0nYWZ0ZXJwYXlpbmZvYnV0dG9uJz5LbGlrIGhpZXIgdm9vciBpbmZvcm1hdGllIG92ZXIgQWZ0ZXJwYXk8L2Rpdj48ZGl2IGlkPSdhZnRlcnBheWluZm8nPg0KCQkJ4oCYQWZ0ZXJQYXkgdm9lcnQgdm9vciBoZXQgdm9sbGVkaWdlIGFjaHRlcmFmIGJldGFhbHByb2NlcyB1aXQuIERpdCBiZXRla2VudCBkYXQgdSBlZW4gZGlnaXRhbGUgZmFjdHV1ciB2YW4gQWZ0ZXJQYXkgdmlhIGUtbWFpbCBvbnR2YW5ndCBvbSBoZXQgZ2Vrb2NodGUgcHJvZHVjdChlbikgdGUgYmV0YWxlbi4gVSBrdW50IGJpaiBiZXRhbGVuIG1ldCBlZW4gZGlnaXRhbGUgZmFjdHV1ciB0b3QgZWVuIGJlZHJhZyB2YW4gJmV1cm87IDE1MCwtICBhbHMgdSB2b29yIGRlIGVlcnN0ZSBrZWVyIGJldGFhbHQgdmlhIEFmdGVyUGF5LiBCZW50IHUgYWwgYmVrZW5kIGJpaiBBZnRlclBheSBrdW50IHUgYmV0YWxlbiB0b3QgZWVuIGJlZHJhZyB2YW4gJmV1cm87IDI1MCwtLjxiciAvPg0KPGJyIC8+DQoJCQlUZXIgZ29lZGtldXJpbmcgdmFuIHV3IHZlcnpvZWsgb20gdGUgYmV0YWxlbiBtZXQgQWZ0ZXJQYXkgdm9lcnQgQWZ0ZXJQYXkgZWVuIGdlZ2V2ZW5zY29udHJvbGUgdWl0LiBBZnRlclBheSBoYW50ZWVydCBlZW4gc3RyaWt0IHByaXZhY3kgYmVsZWlkIHpvYWxzIG9tc2NocmV2ZW4gaW4gaGFhciBwcml2YWN5IHN0YXRlbWVudC4gTW9jaHQgb252ZXJob29wdCB1dyB2ZXJ6b2VrIHRvdCBiZXRhbGluZyBuaWV0IGdlYXV0b3Jpc2VlcmQgd29yZGVuLCBkYW4ga3VudCB1IG5hdHV1cmxpamsgaGV0IGFhbiB0ZSBrb3BlbiBwcm9kdWN0IGJldGFsZW4gbWV0IGVlbiBhbmRlcmUgYmV0YWFsbWV0aG9kZS48YnIgLz4NCjxiciAvPg0KCQkJVSBrdW50IGJpaiB2cmFnZW4gYWx0aWpkIGNvbnRhY3QgbWV0IEFmdGVyUGF5IG9wbmVtZW4uIFZvb3IgbWVlciBpbmZvcm1hdGllIHZlcndpanplbiB3aWogdSBuYWFyIGhldCBjb25zdW1lbnRlbmRlZWwgdmFuIGRlIEFmdGVyUGF5IHdlYnNpdGUu4oCZPGJyIC8+PC9kaXY+IjsNCgkJCSRhZnRlcnBheWZvcm0gLj0gJzwvZm9ybT4nOw0KCQl9DQoJfQ0KCQ0KDQoJJGZvcm10b3RhbCA9ICc8Zm9ybSBuYW1lPSJib2R5X2Zvcm0iIG1ldGhvZD0icG9zdCIgeGFjdGlvbj0iJy4kdXJsLiciIGFjdGlvbj0iJy4kdXJsLiciIGlkPSJib2R5X2Zvcm0iIGNsYXNzPSJzaXNvd2Zvcm0iPic7DQoJLy9leHRyYSBpbmZvIHRidiBLbGFybmENCi8vCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1c3RvbWVyIiB2YWx1ZT0iJy4kc09yZGVySWQuJyI+JzsgLy9rbGFudGNvZGUNCi8vCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImdlbmRlciIgdmFsdWU9IicuJHNPcmRlcklkLiciPic7IC8vZ2VzbGFjaHQgbWFsZS9mZW1hbGUNCi8vCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbGxpbmdfZmlyc3RuYW1lIiB2YWx1ZT0iJy4kc09yZGVySWQuJyI+JzsgLy92b29ybmFhbQ0KLy8JJGZvcm10b3RhbCAuPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmlsbGluZ19sYXN0bmFtZSAiIHZhbHVlPSInLiRzT3JkZXJJZC4nIj4nOyAvL2FjaHRlcm5hYW0NCi8vCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbGxpbmdfbWFpbCIgdmFsdWU9IicuJHNPcmRlcklkLiciPic7IC8vZW1haWwNCi8vCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbGxpbmdfY29tcGFueSIgdmFsdWU9IicuJHNPcmRlcklkLiciPic7IC8vYmVkcmlqZnNuYWFtIChvcHRpb25lZWwpDQovLwkkZm9ybXRvdGFsIC49ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaWxsaW5nX2FkZHJlc3MxIiB2YWx1ZT0iJy4kc09yZGVySWQuJyI+JzsgLy9hZHJlc3JlZ2VsIDENCi8vCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbGxpbmdfYWRkcmVzczIiIHZhbHVlPSInLiRzT3JkZXJJZC4nIj4nOyAvL2FkcmVzcmVnZWwgMiAob3B0aW9uZWVsKQ0KLy8JJGZvcm10b3RhbCAuPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmlsbGluZ196aXAiIHZhbHVlPSInLiRzT3JkZXJJZC4nIj4nOyAvL3Bvc3Rjb2RlDQovLwkkZm9ybXRvdGFsIC49ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaWxsaW5nX2NpdHkiIHZhbHVlPSInLiRzT3JkZXJJZC4nIj4nOyAvL3dvb25wbGFhdHMNCi8vCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbGxpbmdfY291bnRyeSIgdmFsdWU9IicuJHNPcmRlcklkLiciPic7IC8vbGFuZA0KLy8JJGZvcm10b3RhbCAuPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmlsbGluZ19jb3VudHJ5Y29kZSDvv7wiIHZhbHVlPSInLiRzT3JkZXJJZC4nIj4nOyAvL++/vCBMYW5kIElTTyBjb2RlIChzdGFuZGFhcmQgTkwpIA0KLy8JJGZvcm10b3RhbCAuPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmlsbGluZ19waG9uZSIgdmFsdWU9IicuJHNPcmRlcklkLiciPic7IC8vdGVsZWZvb24NCi8vCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpcnRoZGF0ZSIgdmFsdWU9IicuJHNPcmRlcklkLiciPic7IC8vZ2Vib29ydGVkYXR1bQ0KLy8JJGZvcm10b3RhbCAuPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGNsYXNzIiB2YWx1ZT0iJy4kc09yZGVySWQuJyI+JzsgLy9BbGxlZW4gdm9vciBLbGFybmEgQWNjb3VudCwgZGUgdG9lIHRlIHBhc3NlbiBQYXltZW50IENsYXNzIElEICh6aWUgb29rIEZldGNoTW9udGhseVJlcXVlc3QpDQovLyANCg0KDQoNCg0KCS8vZWluZGUgZXh0cmEgaW5mbyB0YnYgS2xhcm5hDQoJJGZvcm10b3RhbCAuPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icHVyY2hhc2VpZCIgdmFsdWU9IicuJHNPcmRlcklkLiciPic7IA0KCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFtb3VudCIgdmFsdWU9IicuJGZPcmRlckFtb3VudC4nIj4nOw0KCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlc2NyaXB0aW9uIiB2YWx1ZT0iJy4kc09yZGVyRGVzY3JpcHRpb24uJyI+JzsNCgkkZm9ybXRvdGFsIC49ICRzcGF5bWVudHM7CQ0KCS8vJGZvcm10b3RhbCAuPSAkc2VsZWN0Ow0KCSRmb3JtdG90YWwgLj0gJzxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9InRoaXMuZGlzYWJsZWQ9dHJ1ZTtkb2N1bWVudC5ib2R5X2Zvcm0uc3VibWl0KCkiIHZhbHVlPSJHYSB2ZXJkZXIiIHRpdGxlPSJCZXRhYWwiIGNsYXNzPSJzaXNvd1N1Ym1pdCIgaWQ9InNpc293c3VibWl0IiAvPic7DQoJJGZvcm10b3RhbCAuPSAnPC9mb3JtPic7DQoNCiAgICBpZiAoJHNqcXVlcnkpew0KCQkkZm9ybXRvdGFsIC49IDw8PEVPRg0KCQk8c3R5bGU+LnNpc293aURlYWxiYW5rZW4ge2Rpc3BsYXk6IG5vbmU7fTwvc3R5bGU+DQoJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCgkJLyogPCFbQ0RBVEFbICovDQoJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCgkJCQkkKCIuc2lzb3dmb3JtIGlucHV0W3R5cGU9J3JhZGlvJ10iKS5jaGFuZ2UoZnVuY3Rpb24oKSB7DQoJCQkJICAJaWYgKCQoIi5zaXNvd2Zvcm0gaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkIikudmFsKCkgPT0gJycpew0KCQkJCQkJJCgiLnNpc293aURlYWxiYW5rZW4iKS5zbGlkZURvd24oJ2Zhc3QnKTsNCgkJCQkJCSQoIi5zaXNvd0NyZWRpdGNhcmRzbGlzdCIpLnNsaWRlVXAoJ2Zhc3QnKTsNCgkJCQkJfSBlbHNlIGlmICgkKCIuc2lzb3dmb3JtIGlucHV0W3R5cGU9J3JhZGlvJ106Y2hlY2tlZCIpLnZhbCgpID09ICdjYycpIHsNCgkJCQkJCSQoIi5zaXNvd2lEZWFsYmFua2VuIikuc2xpZGVVcCgnZmFzdCcpOw0KCQkJCQkJJCgiLnNpc293Q3JlZGl0Y2FyZHNsaXN0Iikuc2xpZGVEb3duKCdmYXN0Jyk7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkKCIuc2lzb3dpRGVhbGJhbmtlbiIpLnNsaWRlVXAoJ2Zhc3QnKTsNCgkJCQkJCSQoIi5zaXNvd0NyZWRpdGNhcmRzbGlzdCIpLnNsaWRlVXAoJ2Zhc3QnKTsNCgkJCQkJfTsNCgkJCQl9KTsNCgkJCQkNCgkJCX0pOw0KCQkvKiBdXT4gKi8NCgkJPC9zY3JpcHQ+CQkNCkVPRjsNCgl9Ow0KCQ0KCWlmKCRzYWZ0ZXJwYXkpIHsNCgkJJGZvcm10b3RhbCAuPSAkYWZ0ZXJwYXlmb3JtOw0KCX07DQoJDQogICAgLy8gZ2l2ZSBldmVyeXRoaW5nIHRvIHNtYXJ0eQ0KICAgIGdsb2JhbCAkZ0NtczsNCiAgICAkc21hcnR5ID0mICRnQ21zLT5HZXRTbWFydHkoKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm10b3RhbCcsJGZvcm10b3RhbCk7DQogDQogICAgcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2Zvcm1fdGVtcGxhdGUnKTsNCg0KICB9DQoNCn0gLy8gY2xhc3MNCg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_settings_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij48aWZyYW1lIHNyYz0iL21vZHVsZXMvU2lzb3dHYXRld2F5L3RlbXBsYXRlcy9wYXlwYWwuaHRtbCIgd2lkdGg9IjEyMCIgaGVpZ2h0PSI0MCIgYm9yZGVyPSIwIiBzY3JvbGxpbmc9Im5vIj48L2lmcmFtZT48L2Rpdj4KCTxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0OyI+CgkJPGgzPlN0ZXVuIGRlemUgcGx1Z2luIGRvb3IgdGUgZG9uZXJlbiBvZiBkb29yIHV3IGtsYW50ZW4gYWFuIHRlIGxhdGVuIG1lbGRlbiB2b29yIFNpc293IHZpYSA8YSBocmVmPSJodHRwczovL3d3dy5zaXNvdy5ubC9TaXNvdy9pRGVhbC9BYW5tZWxkZW4uYXNweD9yPTE0MDYwNSIgdGFyZ2V0PSJfQkxBTksiPmRlemUgbGluazwvYT48L2gzPgoJCVUsIG9mIHV3IGtsYW50ZW4genVsbGVuIGRlIHplbGZkZSB0YXJpZXZlbiBob3VkZW4sIGhldCBrb3N0IHUgKG9mIHV3IGtsYW50ZW4pIGR1cyA8Yj5uaWV0czwvYj4gb20gZGV6ZSBwbHVnaW4gdGUgc3RldW5lbiE8YnIvPgoJCTxiciAvPjxiciAvPgoJCTxiciAvPjxlbT4oVGVzdCkgQmV0YWxpbmdlbiB3ZXJrZW4gZW5rZWwgbWV0IGVlbiBnZWxkaWcgU2lzb3cgYWNjb3VudCB3YWFyYmlqIHRlc3Rtb2R1cyBvb2sgaW4gZGUgYWRtaW4gcGFuZWwgdmFuIFNpc293IGFhbiBzdGFhdCwgZW5rZWwgYWxzIGhldCBTaXNvdyBhY2NvdW50IGdlYWN0aXZlZXJkIGlzIGthbiBkZSB0ZXN0bW9kdXMgdWl0LjwvZW0+PGJyIC8+PGJyIC8+Cgk8L2Rpdj4KICA8dGFibGU+CiAgICA8dGhlYWQ+CiAgICAgIDx0cj4KICAgICAgICA8dGg+TWVyY2hhbnRJRDwvdGg+CiAgICAgICAgPHRoPk1lcmNoYW50S2V5PC90aD4KICAgICAgICA8dGg+dGVzdG1vZGU8L3RoPgogICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgICAge2lmIGlzc2V0KCRlbnRyeSl9CiAgICAgICAgCiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5pbnB1dF9NZXJjaGFudElEfTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5pbnB1dF9NZXJjaGFudEtleX08L3RkPgogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+aW5wdXRfdGVzdG1vZGV9PC90ZD4KICAgICAgICAgIDwvdHI+CgkJICA8dHI+CgkJCTx0ZCBjb2xzcGFuPSIzIj4KCQkJCTxoND5TZWxlY3RlZXIgd2Vsa2UgYmV0YWFsZnVuY3RpZXMgdSB3aWx0IGFhbmJpZWRlbiAod2Vya3QgbmlldCBpbiB0ZXN0bW9kdXMpPC9oND4KCQkJCXskZW50cnktPmlucHV0X3NvZm9ydH0gRElSRUNUZWJhbmtpbmc8YnIgLz4KCQkJCXskZW50cnktPmlucHV0X21pc3RlcmNhc2h9IE1pc3RlckNhc2g8YnIgLz4KCQkJCXskZW50cnktPmlucHV0X3dlYnNob3B9IFdlYlNob3AgR2lmdENhcmQ8YnIgLz4KCQkJCXskZW50cnktPmlucHV0X3BvZGl1bX0gUG9kaXVtIENhZGVhdWthYXJ0PGJyIC8+CgkJCQl7JGVudHJ5LT5pbnB1dF9wYXlwYWxlY30gUGF5cGFsPGJyIC8+CgkJCQl7JGVudHJ5LT5pbnB1dF9jcmVkaXRjYXJkc30gQ3JlZGl0Y2FyZHM8YnIgLz4KCQkJCXskZW50cnktPmlucHV0X2tsYXJuYX0gS2xhcm5hPGJyIC8+CgkJCQk8aHIgLz4KCQkJCTxoNj5BZnRlcnBheSBzdGFhdCBsb3MgdmFuIFNpc293PC9oNj4KCQkJCTxiciAvPjxlbT4oVGVzdCkgQmV0YWxpbmdlbiB3ZXJrZW4gZW5rZWwgbWV0IGVlbiBnZWxkaWcgQWZ0ZXJwYXkgYWNjb3VudCB3YWFyYmlqIHRlc3Rtb2R1cyBvb2sgaW4gZGUgYWRtaW4gcGFuZWwgdmFuIEFmdGVycGF5IGFhbiBzdGFhdCwgZW5rZWwgYWxzIGhldCBBZnRlcnBheSBhY2NvdW50IGdlYWN0aXZlZXJkIGlzIGthbiBkZSB0ZXN0bW9kdXMgdWl0LjwvZW0+PGJyIC8+PGJyIC8+CgkJCQl7JGVudHJ5LT5pbnB1dF9hZnRlcnBheX0gQWZ0ZXJwYXk8YnIgLz4KCQkJCTxici8+CgkJCQl7JGVudHJ5LT5pbnB1dF9qcXVlcnl9IEdlYnJ1aWsgalF1ZXJ5IHZvb3IgaGV0IHdlZXJnZXZlbiAvIHZlcmJlcmdlbiB2YW4gZGUgaURlYWwgYmFua2VuPGJyIC8+CgkJCTwvdGQ+CgkJICA8L3RyPgoJCSAgPHRyPgogICAgICAgICAgICA8dGQ+VXcgQWZ0ZXJQYXkgTWVyY2hhbnRJRDxiciAvPnskZW50cnktPmlucHV0X01lcmNoYW50SURhZnRlcnBheX08L3RkPgogICAgICAgICAgICA8dGQ+VXcgQWZ0ZXJQYXkgcG9ydGZvbGlvaWQ8YnIgLz57JGVudHJ5LT5pbnB1dF9wb3J0Zm9saW9pZH08L3RkPgogICAgICAgICAgICA8dGQ+VXcgQWZ0ZXJQYXkgcGFzc3dvcmQ8YnIgLz57JGVudHJ5LT5pbnB1dF9wYXNzd29yZH08L3RkPgogICAgICAgICAgPC90cj4KCQkKICAgICAgICAKICAgICAge2Vsc2V9CiAgICAgIDx0cj4KICAgICAgICA8dGQ+eyRpbnB1dF9NZXJjaGFudElEfTwvdGQ+CiAgICAgICAgPHRkPnskaW5wdXRfTWVyY2hhbnRLZXl9PC90ZD4KICAgICAgICA8dGQ+eyRpbnB1dF90ZXN0bW9kZX08L3RkPgogICAgICA8L3RyPgoJICA8dHI+CgkJPHRkIGNvbHNwYW49IjMiPgoJCQk8aDQ+U2VsZWN0ZWVyIHdlbGtlIGJldGFhbGZ1bmN0aWVzIHUgd2lsdCBhYW5iaWVkZW4gKHdlcmt0IG5pZXQgaW4gdGVzdG1vZHVzKTwvaDQ+CgkJCXskaW5wdXRfc29mb3J0fSBESVJFQ1RlYmFua2luZzxiciAvPgoJCQl7JGlucHV0X21pc3RlcmNhc2h9IE1pc3RlckNhc2g8YnIgLz4KCQkJeyRpbnB1dF93ZWJzaG9wfSBXZWJTaG9wIEdpZnRDYXJkPGJyIC8+CgkJCXskaW5wdXRfcG9kaXVtfSBQb2RpdW0gQ2FkZWF1a2FhcnQ8YnIgLz4KCQkJeyRpbnB1dF9wYXlwYWxlY30gUGF5cGFsPGJyIC8+CgkJCXskaW5wdXRfY3JlZGl0Y2FyZHN9IENyZWRpdGNhcmRzPGJyIC8+CgkJCXskaW5wdXRfa2xhcm5hfSBLbGFybmE8YnIgLz4KCQkJPGhyIC8+CgkJCTxoNj5BZnRlcnBheSBzdGFhdCBsb3MgdmFuIFNpc293PC9oNj4KCQkJeyRpbnB1dF9hZnRlcnBheX0gQWZ0ZXJwYXk8YnIgLz4KCQkJPGJyLz4KCQkJeyRpbnB1dF9qcXVlcnl9IEdlYnJ1aWsgalF1ZXJ5IHZvb3IgaGV0IHdlZXJnZXZlbiAvIHZlcmJlcmdlbiB2YW4gZGUgaURlYWwgYmFua2VuPGJyIC8+CgkJPC90ZD4KCSAgPC90cj4KCSAgPHRyPgogICAgICAgIDx0ZD5VdyBBZnRlclBheSBNZXJjaGFudElEPGJyIC8+eyRpbnB1dF9NZXJjaGFudElEYWZ0ZXJwYXl9PC90ZD4KICAgICAgICA8dGQ+VXcgQWZ0ZXJQYXkgcG9ydGZvbGlvaWQ8YnIgLz57JGlucHV0X3BvcnRmb2xpb2lkfTwvdGQ+CiAgICAgICAgPHRkPlV3IEFmdGVyUGF5IHBhc3N3b3JkPGJyIC8+eyRpbnB1dF9wYXNzd29yZH08L3RkPgogICAgICA8L3RyPgoJICB7L2lmfQogICAgPC90Ym9keT4KICA8L3RhYmxlPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH08L3A+CjwvZGl2Pgp7JGZvcm1lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/orig_form_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZm9ybSB0ZW1wbGF0ZSAqfQp7JGZvcm10b3RhbH0K]]></data>
	</file>
	<file>
	  <filename>/templates/paypal.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGZvcm0gYWN0aW9uPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2NnaS1iaW4vd2Vic2NyIiBtZXRob2Q9InBvc3QiIGlkPSJwYXlwYWxqYW50aW5vIiB0YXJnZXQ9Il9CTEFOSyI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNtZCIgdmFsdWU9Il9zLXhjbGljayI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImVuY3J5cHRlZCIgdmFsdWU9Ii0tLS0tQkVHSU4gUEtDUzctLS0tLU1JSUhOd1lKS29aSWh2Y05BUWNFb0lJSEtEQ0NCeVFDQVFFeGdnRXdNSUlCTEFJQkFEQ0JsRENCampFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ1RBa05CTVJZd0ZBWURWUVFIRXcxTmIzVnVkR0ZwYmlCV2FXVjNNUlF3RWdZRFZRUUtFd3RRWVhsUVlXd2dTVzVqTGpFVE1CRUdBMVVFQ3hRS2JHbDJaVjlqWlhKMGN6RVJNQThHQTFVRUF4UUliR2wyWlY5aGNHa3hIREFhQmdrcWhraUc5dzBCQ1FFV0RYSmxRSEJoZVhCaGJDNWpiMjBDQVFBd0RRWUpLb1pJaHZjTkFRRUJCUUFFZ1lBR3RaaUNwalYxTjRzQy90OWtEdUs1L1p6UHhvSkErTlRQK1BmY25kYlFyYmJDdURyc0YydERWdW5rYmVoTkVTd2ROMkhpZzZoMEpzWmJwa2ZsTktHVitjSUFFUUhTdUZ4b0VYY1lGckoxUTdsdE5WbVRUZE05NGtCVzdSZWdwaHE4QXJ1eDV2ZzU1Zk9RUURnWGxkd2kvcWtIWlNLMVNjZklJeW9ubVVlRlhERUxNQWtHQlNzT0F3SWFCUUF3Z2JRR0NTcUdTSWIzRFFFSEFUQVVCZ2dxaGtpRzl3MERCd1FJRXU1SWYyZG5GMFdBZ1pEVVk2eGFhUWJXRlpuWGZHaDdYZWIrUjdwZExlZUlCYzc5bWhCME5jekpyT0NZd3prUkZkT1l5QzFmVnVPSVNOc3Z0aVRqVG9ONXhNK0ZnM2t5MWwzQmJPZ3RzWjcvZjRBK2NSTVBBYWkwbkJISlpJVGhrejMvTG1MUjN4V2hKQ3VlemVaQUFWZ3BvK09hdlcvUGhOUjdCTzlCQ01adDFCdHJ2YWVvSGhUWWNkZ0dUNENGUGxBZHdjcm9CRGIwM0FDZ2dnT0hNSUlEZ3pDQ0F1eWdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJBUVVGQURDQmpqRUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWtOQk1SWXdGQVlEVlFRSEV3MU5iM1Z1ZEdGcGJpQldhV1YzTVJRd0VnWURWUVFLRXd0UVlYbFFZV3dnU1c1akxqRVRNQkVHQTFVRUN4UUtiR2wyWlY5alpYSjBjekVSTUE4R0ExVUVBeFFJYkdsMlpWOWhjR2t4SERBYUJna3Foa2lHOXcwQkNRRVdEWEpsUUhCaGVYQmhiQzVqYjIwd0hoY05NRFF3TWpFek1UQXhNekUxV2hjTk16VXdNakV6TVRBeE16RTFXakNCampFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ1RBa05CTVJZd0ZBWURWUVFIRXcxTmIzVnVkR0ZwYmlCV2FXVjNNUlF3RWdZRFZRUUtFd3RRWVhsUVlXd2dTVzVqTGpFVE1CRUdBMVVFQ3hRS2JHbDJaVjlqWlhKMGN6RVJNQThHQTFVRUF4UUliR2wyWlY5aGNHa3hIREFhQmdrcWhraUc5dzBCQ1FFV0RYSmxRSEJoZVhCaGJDNWpiMjB3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU1GSFR0MzhSTXhMWEp5TzJTbVMrTmRsNzJUN29LSjR1NHV3KzZhd250QUxXaDAzUGV3bUlKdXpiQUxTY3NUUzRzWm9TMWZLY2lCR29oMTFnSWZIenlsdmtkTmUvaEpsNjYvUkdxcmo1ckZiMDhzQUFCTlR6RFRpcXFOcEplQnNZcy9jMmFpR296cHRYMlJsbkJrdEgrU1VOcEFhalc3MjROdjJXdmhpZjZzRkFnTUJBQUdqZ2U0d2dlc3dIUVlEVlIwT0JCWUVGSmFmZkx2R2J4ZTlXVDlTMXdvYjdCRFdaSlJyTUlHN0JnTlZIU01FZ2JNd2diQ0FGSmFmZkx2R2J4ZTlXVDlTMXdvYjdCRFdaSlJyb1lHVXBJR1JNSUdPTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNCTUNRMEV4RmpBVUJnTlZCQWNURFUxdmRXNTBZV2x1SUZacFpYY3hGREFTQmdOVkJBb1RDMUJoZVZCaGJDQkpibU11TVJNd0VRWURWUVFMRkFwc2FYWmxYMk5sY25Sek1SRXdEd1lEVlFRREZBaHNhWFpsWDJGd2FURWNNQm9HQ1NxR1NJYjNEUUVKQVJZTmNtVkFjR0Y1Y0dGc0xtTnZiWUlCQURBTUJnTlZIUk1FQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBSUZmT2xhYWdGcmw3MStqcTZPS2lkYldGU0UrUTRGcVJPdmRnSU9OdGgrOGtTSy8vWS80aWh1RTRZbXZ6bjVjZUUzUy9pQlNRUU1qeXZiK3MyVFdiUVlEd2NwMTI5T1BJYkQ5ZXBkcjR0Sk9VTmlTb2p3N0JId1lSaVBoNThTMXhHbEZnSEZYd3JFQmIzZGdOYk1VYSt1NHFlY3RzTUFYcFZIbkQ5d0l5Zm1ITVlJQm1qQ0NBWllDQVFFd2daUXdnWTR4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSUV3SkRRVEVXTUJRR0ExVUVCeE1OVFc5MWJuUmhhVzRnVm1sbGR6RVVNQklHQTFVRUNoTUxVR0Y1VUdGc0lFbHVZeTR4RXpBUkJnTlZCQXNVQ214cGRtVmZZMlZ5ZEhNeEVUQVBCZ05WQkFNVUNHeHBkbVZmWVhCcE1Sd3dHZ1lKS29aSWh2Y05BUWtCRmcxeVpVQndZWGx3WVd3dVkyOXRBZ0VBTUFrR0JTc09Bd0lhQlFDZ1hUQVlCZ2txaGtpRzl3MEJDUU14Q3dZSktvWklodmNOQVFjQk1Cd0dDU3FHU0liM0RRRUpCVEVQRncweE1URXdNVEV4TWpVMU1ESmFNQ01HQ1NxR1NJYjNEUUVKQkRFV0JCVHc5VTRPb0IzY2d6MThDWENPdDhnZUpLcElYakFOQmdrcWhraUc5dzBCQVFFRkFBU0JnTHM4RDA4WnROeklwVWFYK3U3V09zamdDM2FiMTdSZXdJVDdxTEljbTNiNDlsYU5wYXdKSzNrMkZTNEJqOWZGZjFGSFdmNFN4d2pLeEptYUJ2LzY0a2xDRHBlUmRtemd5Zlcra05kb2RSanU3S1NVYkJoaFEwMGhIa2ZGQ0huVE53LzhXY3VHYS9IdVhBVjYwSXdnOFZlWjBhYUdZZzNHbFBLaFphU1FnSTliLS0tLS1FTkQgUEtDUzctLS0tLQoiPgo8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vbmxfTkwvTkwvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCwgZGUgdmVpbGlnZSBlbiBjb21wbGV0ZSBtYW5pZXIgdmFuIG9ubGluZSBiZXRhbGVuLiI+CjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9ubF9OTC9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgo8L2Zvcm0+]]></data>
	</file>
</module>
