<?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>MAS_CGBlogToLISE</name>
	<version>1.0.1</version>
    <mincmsversion>2.2.0</mincmsversion>
	<help><![CDATA[PGRpdiBjbGFzcz0ibWFzLW1pZ3JhdGlvbi1oZWxwIj4KPGgzPk1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gTW9kdWxlPC9oMz4KCjxwPjxzdHJvbmc+TUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbjwvc3Ryb25nPiBpcyBhIHRvb2wgZm9yIG1pZ3JhdGluZyBkYXRhIGZyb20gdGhlIENHQmxvZyBtb2R1bGUgdG8gTElTRSBpbnN0YW5jZXMgaW4gQ01TIE1hZGUgU2ltcGxlLjwvcD4KCjxoND5GZWF0dXJlczwvaDQ+Cjx1bD4KICAgIDxsaT48c3Ryb25nPkNyZWF0ZSBOZXcgSW5zdGFuY2VzOjwvc3Ryb25nPiBBdXRvbWF0aWNhbGx5IGNyZWF0ZSBuZXcgTElTRSBpbnN0YW5jZXMgZnJvbSBDR0Jsb2cgZGF0YTwvbGk+CiAgICA8bGk+PHN0cm9uZz5Vc2UgRXhpc3RpbmcgSW5zdGFuY2VzOjwvc3Ryb25nPiBDb3B5IGRhdGEgdG8gZXhpc3RpbmcgTElTRSBpbnN0YW5jZXM8L2xpPgogICAgPGxpPjxzdHJvbmc+U2VsZWN0aXZlIE1pZ3JhdGlvbjo8L3N0cm9uZz4gQ2hvb3NlIHdoaWNoIGRhdGEgdG8gbWlncmF0ZSAoYXJ0aWNsZXMsIGNhdGVnb3JpZXMsIGN1c3RvbSBmaWVsZHMpPC9saT4KICAgIDxsaT48c3Ryb25nPlByZXZpZXc6PC9zdHJvbmc+IFByZXZpZXcgZGF0YSBiZWZvcmUgbWlncmF0aW9uPC9saT4KICAgIDxsaT48c3Ryb25nPkNvbXByZWhlbnNpdmUgTWFwcGluZzo8L3N0cm9uZz4gQXV0b21hdGljYWxseSBtYXBzIENHQmxvZyBkYXRhIHN0cnVjdHVyZXMgdG8gTElTRSBmb3JtYXQ8L2xpPgogICAgPGxpPjxzdHJvbmc+RXJyb3IgSGFuZGxpbmc6PC9zdHJvbmc+IERldGFpbGVkIGVycm9yIHJlcG9ydGluZyBhbmQgbG9nZ2luZzwvbGk+CjwvdWw+Cgo8aDQ+R2V0dGluZyBTdGFydGVkPC9oND4KPG9sPgogICAgPGxpPjxzdHJvbmc+UHJlcmVxdWlzaXRlczo8L3N0cm9uZz4gRW5zdXJlIGJvdGggQ0dCbG9nIGFuZCBMSVNFIG1vZHVsZXMgYXJlIGluc3RhbGxlZDwvbGk+CiAgICA8bGk+PHN0cm9uZz5BY2Nlc3MgTWlncmF0aW9uOjwvc3Ryb25nPiBHbyB0byBFeHRlbnNpb25zIOKGkiBNQVMgQ0dCbG9nIHRvIExJU0UgTWlncmF0aW9uPC9saT4KICAgIDxsaT48c3Ryb25nPkNob29zZSBJbnN0YW5jZTo8L3N0cm9uZz4gQ3JlYXRlIG5ldyBvciBzZWxlY3QgZXhpc3RpbmcgTElTRSBpbnN0YW5jZTwvbGk+CiAgICA8bGk+PHN0cm9uZz5TZWxlY3QgRGF0YTo8L3N0cm9uZz4gQ2hvb3NlIHdoaWNoIGRhdGEgdHlwZXMgdG8gbWlncmF0ZTwvbGk+CiAgICA8bGk+PHN0cm9uZz5QcmV2aWV3Ojwvc3Ryb25nPiBSZXZpZXcgd2hhdCB3aWxsIGJlIG1pZ3JhdGVkPC9saT4KICAgIDxsaT48c3Ryb25nPk1pZ3JhdGU6PC9zdHJvbmc+IFN0YXJ0IHRoZSBtaWdyYXRpb24gcHJvY2VzczwvbGk+Cjwvb2w+Cgo8aDQ+RGF0YSBNYXBwaW5nPC9oND4KPHVsPgogICAgPGxpPjxzdHJvbmc+QXJ0aWNsZXM6PC9zdHJvbmc+IENHQmxvZyBhcnRpY2xlcyDihpIgTElTRSBpdGVtczwvbGk+CiAgICA8bGk+PHN0cm9uZz5DYXRlZ29yaWVzOjwvc3Ryb25nPiBDR0Jsb2cgY2F0ZWdvcmllcyDihpIgTElTRSBjYXRlZ29yaWVzIChoaWVyYXJjaHkgcHJlc2VydmVkKTwvbGk+CiAgICA8bGk+PHN0cm9uZz5DdXN0b20gRmllbGRzOjwvc3Ryb25nPiBDR0Jsb2cgZmllbGQgZGVmaW5pdGlvbnMg4oaSIExJU0UgZmllbGQgZGVmaW5pdGlvbnM8L2xpPgogICAgPGxpPjxzdHJvbmc+RmllbGQgVmFsdWVzOjwvc3Ryb25nPiBDR0Jsb2cgZmllbGQgdmFsdWVzIOKGkiBMSVNFIGl0ZW0gZmllbGQgdmFsdWVzPC9saT4KPC91bD4KCjxoND5JbXBvcnRhbnQgTm90ZXM8L2g0Pgo8dWw+CiAgICA8bGk+TWlncmF0aW9uIGNhbm5vdCBiZSB1bmRvbmUgYXV0b21hdGljYWxseS4gQmFja3VwIHlvdXIgZGF0YSBiZWZvcmUgbWlncmF0aW9uLjwvbGk+CiAgICA8bGk+RmllbGQgdHlwZXMgYXJlIGF1dG9tYXRpY2FsbHkgbWFwcGVkIGZyb20gQ0dCbG9nIHRvIExJU0UgZm9ybWF0LjwvbGk+CiAgICA8bGk+Q2F0ZWdvcnkgaGllcmFyY2hpZXMgYXJlIHByZXNlcnZlZCBkdXJpbmcgbWlncmF0aW9uLjwvbGk+CiAgICA8bGk+QXJ0aWNsZSBVUkxzIGFuZCBtZXRhZGF0YSBhcmUgcHJlc2VydmVkLjwvbGk+CjwvdWw+CjwvZGl2PjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWN0aW9uPSJkZWZhdWx0YWRtaW4iIC0gQWN0aW9uIHRvIHBlcmZvcm08L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBtYXN0ZXIzMzk1ICZsdDtpbmZvQG5ld3N0YXJnZXRlZC5jb20mZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4wLjE8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+CjxsaT48c3Ryb25nPlZlcnNpb24gMS4wLjEsIDA2LjAxLjI2LCBtYXN0ZXIzMzk1PC9zdHJvbmc+OiBCdWcgZml4ZXMgYW5kIGltcHJvdmVtZW50cwogICAgPHVsPgogICAgICAgIDxsaT5GaXhlZCBkYXRhYmFzZSBjb2x1bW4gbmFtZXMgKGNyZWF0ZV90aW1lL21vZGlmaWVkX3RpbWUgaW5zdGVhZCBvZiBjcmVhdGVfZGF0ZS9tb2RpZmllZF9kYXRlKTwvbGk+CiAgICAgICAgPGxpPkZpeGVkIGNvbnRlbnQgc3RvcmFnZSAtIGFydGljbGUgY29udGVudCBhbmQgc3VtbWFyaWVzIG5vdyBjb3JyZWN0bHkgc3RvcmVkIGluIGZpZWxkdmFsIHRhYmxlPC9saT4KICAgICAgICA8bGk+QWRkZWQgYXV0b21hdGljIGNyZWF0aW9uIG9mIENvbnRlbnQgYW5kIFN1bW1hcnkgZmllbGQgZGVmaW5pdGlvbnM8L2xpPgogICAgICAgIDxsaT5GaXhlZCBmaWVsZCBkZWZpbml0aW9uIGluc2VydHMgdG8gdXNlIGNvcnJlY3QgTElTRSBzY2hlbWEgKG5hbWUsIGFsaWFzLCBoZWxwLCB0eXBlLCBwb3NpdGlvbiwgcmVxdWlyZWQsIHRlbXBsYXRlLCBleHRyYSk8L2xpPgogICAgICAgIDxsaT5SZW1vdmVkIGR1cGxpY2F0ZSBzdGF0aXN0aWNzIGRpc3BsYXkgaW4gbWlncmF0aW9uIGludGVyZmFjZTwvbGk+CiAgICAgICAgPGxpPkFkZGVkIHZpc2libGUgbGFiZWxzIGZvciByYWRpbyBidXR0b25zIGluIGluc3RhbmNlIHNlbGVjdGlvbjwvbGk+CiAgICAgICAgPGxpPlNwbGl0IE1pZ3JhdGlvbkVuZ2luZS5waHAgaW50byBzbWFsbGVyIG1vZHVsZXMgdG8gY29tcGx5IHdpdGggNTAwIGxpbmUgbGltaXQ8L2xpPgogICAgICAgIDxsaT5BZGRlZCBTdGFydCBNaWdyYXRpb24gYnV0dG9uIHRvIHByZXZpZXcgc2VjdGlvbjwvbGk+CiAgICAgICAgPGxpPkZpeGVkIGNhbGxiYWNrIGVycm9yIGZvciBsb2dnaW5nIGZ1bmN0aW9uYWxpdHk8L2xpPgogICAgPC91bD4KPC9saT4KPGxpPjxzdHJvbmc+VmVyc2lvbiAxLjAuMCwgMjAyNSwgbWFzdGVyMzM5NTwvc3Ryb25nPjogSW5pdGlhbCByZWxlYXNlCiAgICA8dWw+CiAgICAgICAgPGxpPk1pZ3JhdGUgYXJ0aWNsZXMgZnJvbSBDR0Jsb2cgdG8gTElTRTwvbGk+CiAgICAgICAgPGxpPk1pZ3JhdGUgY2F0ZWdvcmllcyB3aXRoIGhpZXJhcmNoeSBwcmVzZXJ2YXRpb248L2xpPgogICAgICAgIDxsaT5NaWdyYXRlIGN1c3RvbSBmaWVsZCBkZWZpbml0aW9ucyBhbmQgdmFsdWVzPC9saT4KICAgICAgICA8bGk+Q3JlYXRlIG5ldyBMSVNFIGluc3RhbmNlcyBvciB1c2UgZXhpc3Rpbmcgb25lczwvbGk+CiAgICAgICAgPGxpPlByZXZpZXcgbWlncmF0aW9uIGRhdGEgYmVmb3JlIGV4ZWN1dGluZzwvbGk+CiAgICAgICAgPGxpPkNvbXByZWhlbnNpdmUgZXJyb3IgaGFuZGxpbmcgYW5kIGxvZ2dpbmc8L2xpPgogICAgPC91bD4KPC9saT4KPC91bD48YnIgLz4=]]></about>
	<description><![CDATA[Migrates data from CGBlog module to LISE instances. Supports creating new LISE instances or copying to existing ones.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_settings_save.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFkbWluIFNldHRpbmdzIFNhdmUgQWN0aW9uIGZvciBNQVNfQ0dCbG9nVG9MSVNFCiAqIEJhc2VkIG9uIE1BU19EaXNxdXMgYW5kIE1BU19BSUFzc2lzdGFudCBwYXR0ZXJuCiAqLwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIGV4aXQ7CgppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgewogICAgcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CgovLyBIYW5kbGUgc2hvd2luZyBkb25hdGlvbnMgdGFiIGFnYWluCmlmIChpc3NldCgkcGFyYW1zWyJzaG93ZG9uYXRpb25zdGFiIl0pICYmICRwYXJhbXNbInNob3dkb25hdGlvbnN0YWIiXSA9PSAiMSIpIHsKICAgIC8vIFJlbW92ZSB0aGUgcHJlZmVyZW5jZSB0byBzaG93IHRoZSBkb25hdGlvbnMgdGFiIGFnYWluCiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgiaGlkZWRvbmF0aW9uc3RhYiIpOwogICAgJG1zZyA9ICR0aGlzLT5MYW5nKCdzZXR0aW5nc3VwZGF0ZWQnKTsKfSBlbHNlIHsKICAgIC8vIEhpZGUgdGhlIGRvbmF0aW9ucyB0YWIKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJoaWRlZG9uYXRpb25zdGFiIiwgJHRoaXMtPkdldFZlcnNpb24oKSk7CiAgICAkbXNnID0gJHRoaXMtPkxhbmcoJ3NldHRpbmdzdXBkYXRlZCcpOwp9CgovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KDAsIAogICAgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAKICAgICR0aGlzLT5MYW5nKCdwcmVmc3VwZGF0ZWQnKSk7CgovLyByZWRpcmVjdCBiYWNrIHRvIGFkbWluIHdpdGggbWVzc2FnZQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbXNnJyA9PiAkbXNnLCAnYWN0aXZldGFiJyA9PiAnYWRtaW5zZXR0aW5ncycpKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERlZmF1bHQgQWRtaW4gSW50ZXJmYWNlIGZvciBNQVNfQ0dCbG9nVG9MSVNFCiAqIENvbXBhdGlibGUgd2l0aCBQSFAgNy40LTguNgogKiBVc2VzIENNU01TIG5hdGl2ZSB0YWJzIGxpa2UgTUFTX0Rpc3F1cyBhbmQgTUFTX0FJQXNzaXN0YW50CiAqLwoKaWYgKCFpc3NldCgkZ0NtcykpIHsKICAgIGV4aXQ7Cn0KCmlmICghJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpKSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPjxwIGNsYXNzPSJwYWdldGV4dCI+QWNjZXNzIGRlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuPC9wPjwvZGl2Pic7CiAgICByZXR1cm47Cn0KCi8vIEhhbmRsZSBoaWRpbmcgZG9uYXRpb25zIHRhYgppZiAoaXNzZXQoJHBhcmFtc1siaGlkZWRvbmF0aW9uc3N1Ym1pdCJdKSkgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoImhpZGVkb25hdGlvbnN0YWIiLCAkdGhpcy0+R2V0VmVyc2lvbigpKTsKfQoKLy8gSGFuZGxlIHN1Y2Nlc3MvZXJyb3IgbWVzc2FnZXMKaWYgKCFlbXB0eSgkcGFyYW1zWydtc2cnXSkpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCRwYXJhbXNbJ21zZyddKSk7Cn0KCmlmICghZW1wdHkoJHBhcmFtc1snZXJyb3InXSkpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoYXJyYXkoJHRoaXMtPkxhbmcoJHBhcmFtc1snZXJyb3InXSkpKTsKfQoKLy8gR2V0IGN1cnJlbnQgdGFiCiRhY3RpdmV0YWIgPSBpc3NldCgkcGFyYW1zWyJhY3RpdmV0YWIiXSkgPyAkcGFyYW1zWyJhY3RpdmV0YWIiXSA6ICIiOwoKLy8gU3RhcnQgdGFicwplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJtaWdyYXRlIiwgJHRoaXMtPkxhbmcoJ3RhYl9taWdyYXRlJyksICgkYWN0aXZldGFiID09ICIiIHx8ICRhY3RpdmV0YWIgPT0gIm1pZ3JhdGUiKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigiYWRtaW5zZXR0aW5ncyIsICR0aGlzLT5MYW5nKCd0YWJfYWRtaW5zZXR0aW5ncycpLCAoJGFjdGl2ZXRhYiA9PSAiYWRtaW5zZXR0aW5ncyIpKTsKaWYgKCR0aGlzLT5TaG93RG9uYXRpb25zVGFiKCkpIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigiZG9uYXRpb25zIiwgJHRoaXMtPkxhbmcoJ3RhYl9kb25hdGlvbnMnKSwgKCRhY3RpdmV0YWIgPT0gImRvbmF0aW9ucyIpKTsKfQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoKLy8gTWlncmF0aW9uIHRhYgplY2hvICR0aGlzLT5TdGFydFRhYigibWlncmF0ZSIpOwplY2hvICc8aDI+JyAuICR0aGlzLT5MYW5nKCdtaWdyYXRpb25fdGl0bGUnKSAuICc8L2gyPic7CmVjaG8gJzxwPicgLiAkdGhpcy0+TGFuZygnbWlncmF0aW9uX2Rlc2NyaXB0aW9uJykgLiAnPC9wPic7CgovLyBDaGVjayBwcmVyZXF1aXNpdGVzCmVjaG8gJzxoMz4nIC4gJHRoaXMtPkxhbmcoJ21pZ3JhdGlvbl9wcmVyZXF1aXNpdGVzJykgLiAnPC9oMz4nOwplY2hvICc8cD4nIC4gJHRoaXMtPkxhbmcoJ21pZ3JhdGlvbl9wcmVyZXF1aXNpdGVzX2Rlc2MnKSAuICc8L3A+JzsKZWNobyAnPHVsPic7CgokY2dibG9nX2F2YWlsYWJsZSA9ICR0aGlzLT5Jc0NHQmxvZ0F2YWlsYWJsZSgpOwokbGlzZV9hdmFpbGFibGUgPSAkdGhpcy0+SXNMSVNFQXZhaWxhYmxlKCk7CgplY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdtaWdyYXRpb25fcHJlcmVxdWlzaXRlc19jZ2Jsb2cnKSAuICc6ICc7CmVjaG8gJGNnYmxvZ19hdmFpbGFibGUgPyAnPHN0cm9uZyBzdHlsZT0iY29sb3I6IGdyZWVuOyI+4pyTIEluc3RhbGxlZDwvc3Ryb25nPicgOiAnPHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPuKclyBOb3QgSW5zdGFsbGVkPC9zdHJvbmc+JzsKZWNobyAnPC9saT4nOwoKZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygnbWlncmF0aW9uX3ByZXJlcXVpc2l0ZXNfbGlzZScpIC4gJzogJzsKZWNobyAkbGlzZV9hdmFpbGFibGUgPyAnPHN0cm9uZyBzdHlsZT0iY29sb3I6IGdyZWVuOyI+4pyTIEluc3RhbGxlZDwvc3Ryb25nPicgOiAnPHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPuKclyBOb3QgSW5zdGFsbGVkPC9zdHJvbmc+JzsKZWNobyAnPC9saT4nOwoKJHN0YXRzID0gYXJyYXkoJ2FydGljbGVzJyA9PiAwLCAnY2F0ZWdvcmllcycgPT4gMCwgJ2ZpZWxkZGVmcycgPT4gMCwgJ2ZpZWxkdmFscycgPT4gMCk7CmlmICgkY2dibG9nX2F2YWlsYWJsZSkgewogICAgdHJ5IHsKICAgICAgICAkc3RhdHMgPSAkdGhpcy0+R2V0Q0dCbG9nU3RhdHMoKTsKICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgIC8vIFN0YXRzIGZhaWxlZCwgdXNlIGVtcHR5IGFycmF5CiAgICB9Cn0KJGhhc19kYXRhID0gKCRzdGF0c1snYXJ0aWNsZXMnXSA+IDAgfHwgJHN0YXRzWydjYXRlZ29yaWVzJ10gPiAwIHx8ICRzdGF0c1snZmllbGRkZWZzJ10gPiAwKTsKCmVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ21pZ3JhdGlvbl9wcmVyZXF1aXNpdGVzX2RhdGEnKSAuICc6ICc7CmVjaG8gJGhhc19kYXRhID8gJzxzdHJvbmcgc3R5bGU9ImNvbG9yOiBncmVlbjsiPuKckyBEYXRhIEZvdW5kPC9zdHJvbmc+JyA6ICc8c3Ryb25nIHN0eWxlPSJjb2xvcjogcmVkOyI+4pyXIE5vIERhdGE8L3N0cm9uZz4nOwplY2hvICc8L2xpPic7CmVjaG8gJzwvdWw+JzsKCmlmICghJGNnYmxvZ19hdmFpbGFibGUgfHwgISRsaXNlX2F2YWlsYWJsZSkgewogICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+UGxlYXNlIGluc3RhbGwgQ0dCbG9nIGFuZCBMSVNFIG1vZHVsZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWlncmF0aW9uIHRvb2wuPC9wPjwvZGl2Pic7Cn0gZWxzZWlmICghJGhhc19kYXRhKSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPjxwIGNsYXNzPSJwYWdldGV4dCIgc3R5bGU9ImNvbG9yOiByZWQ7Ij5ObyBDR0Jsb2cgZGF0YSBmb3VuZCB0byBtaWdyYXRlLjwvcD48L2Rpdj4nOwp9IGVsc2UgewogICAgLy8gU3RhdGlzdGljcwogICAgZWNobyAnPGgzPicgLiAkdGhpcy0+TGFuZygnc3RhdGlzdGljc190aXRsZScpIC4gJzwvaDM+JzsKICAgIGVjaG8gJzx1bD4nOwogICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygnc3RhdGlzdGljc19hcnRpY2xlcycpIC4gJzogJyAuICRzdGF0c1snYXJ0aWNsZXMnXSAuICc8L2xpPic7CiAgICBlY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2NhdGVnb3JpZXMnKSAuICc6ICcgLiAkc3RhdHNbJ2NhdGVnb3JpZXMnXSAuICc8L2xpPic7CiAgICBlY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2ZpZWxkZGVmcycpIC4gJzogJyAuICRzdGF0c1snZmllbGRkZWZzJ10gLiAnPC9saT4nOwogICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygnc3RhdGlzdGljc19maWVsZHZhbHMnKSAuICc6ICcgLiAkc3RhdHNbJ2ZpZWxkdmFscyddIC4gJzwvbGk+JzsKICAgIGVjaG8gJzwvdWw+JzsKICAgIAogICAgLy8gTG9hZCBtaWdyYXRpb24gZm9ybQogICAgdHJ5IHsKICAgICAgICAkZnVuY3Rpb25fZmlsZSA9ICR0aGlzLT5HZXRNb2R1bGVQYXRoKCkgLiAnL2Z1bmN0aW9uLmFkbWluX21pZ3JhdGV0YWIucGhwJzsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZ1bmN0aW9uX2ZpbGUpKSB7CiAgICAgICAgICAgIHJlcXVpcmVfb25jZSgkZnVuY3Rpb25fZmlsZSk7CiAgICAgICAgfQogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+RXJyb3IgbG9hZGluZyBtaWdyYXRpb24gaW50ZXJmYWNlOiAnIC4gaHRtbHNwZWNpYWxjaGFycygkZS0+Z2V0TWVzc2FnZSgpKSAuICc8L3A+PC9kaXY+JzsKICAgIH0gY2F0Y2ggKEVycm9yICRlKSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+RmF0YWwgRXJyb3I6ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD48L2Rpdj4nOwogICAgfQp9CgplY2hvICR0aGlzLT5FbmRUYWIoKTsKCi8vIEFkbWluIFNldHRpbmdzIHRhYgplY2hvICR0aGlzLT5TdGFydFRhYigiYWRtaW5zZXR0aW5ncyIpOwppbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pIC4gIi9mdW5jdGlvbi5hZG1pbl9zZXR0aW5ncy5waHAiKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgovLyBEb25hdGlvbnMgdGFiCmlmICgkdGhpcy0+U2hvd0RvbmF0aW9uc1RhYigpKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigiZG9uYXRpb25zIik7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pIC4gIi9mdW5jdGlvbi5kb25hdGlvbnMucGhwIik7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhlIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gbW9kdWxlIHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUuCgpUaGUgZm9ybWF0IGlzIGJhc2VkIG9uIFtLZWVwIGEgQ2hhbmdlbG9nXShodHRwczovL2tlZXBhY2hhbmdlbG9nLmNvbS9lbi8xLjAuMC8pLAphbmQgdGhpcyBwcm9qZWN0IGFkaGVyZXMgdG8gW1NlbWFudGljIFZlcnNpb25pbmddKGh0dHBzOi8vc2VtdmVyLm9yZy9zcGVjL3YyLjAuMC5odG1sKS4KCiMjIFsxLjAuMF0gLSAyMDI1LTExLTI4CgojIyMgQWRkZWQKCi0gSW5pdGlhbCByZWxlYXNlIG9mIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gbW9kdWxlCi0gTWlncmF0aW9uIG9mIGFydGljbGVzIGZyb20gQ0dCbG9nIHRvIExJU0UgaW5zdGFuY2VzCi0gTWlncmF0aW9uIG9mIGNhdGVnb3JpZXMgd2l0aCBoaWVyYXJjaHkgcHJlc2VydmF0aW9uCi0gTWlncmF0aW9uIG9mIGN1c3RvbSBmaWVsZCBkZWZpbml0aW9ucyBhbmQgdmFsdWVzCi0gU3VwcG9ydCBmb3IgY3JlYXRpbmcgbmV3IExJU0UgaW5zdGFuY2VzCi0gU3VwcG9ydCBmb3IgdXNpbmcgZXhpc3RpbmcgTElTRSBpbnN0YW5jZXMKLSBQcmV2aWV3IGZ1bmN0aW9uYWxpdHkgdG8gcmV2aWV3IG1pZ3JhdGlvbiBkYXRhIGJlZm9yZSBleGVjdXRpbmcKLSBDb21wcmVoZW5zaXZlIGVycm9yIGhhbmRsaW5nIGFuZCBsb2dnaW5nCi0gQXV0by1nZW5lcmF0aW9uIG9mIGluc3RhbmNlIG5hbWVzIHdoZW4gbm90IHByb3ZpZGVkCi0gQXV0by1nZW5lcmF0aW9uIG9mIGZyaWVuZGx5IG5hbWVzIHdoZW4gbm90IHByb3ZpZGVkCi0gQXV0b21hdGljIGNvbmZsaWN0IHJlc29sdXRpb24gZm9yIGluc3RhbmNlIG5hbWVzCi0gQ01TTVMgQWRtaW4gTG9nIGludGVncmF0aW9uIGZvciBhbGwgbWlncmF0aW9uIGFjdGl2aXRpZXMKLSBNb2R1bGUgbG9nIGZpbGVzIGZvciBkZXRhaWxlZCBkZWJ1Z2dpbmcKLSBUcmFuc2FjdGlvbiBzdXBwb3J0IGZvciBkYXRhIHNhZmV0eSAocm9sbGJhY2sgb24gZmFpbHVyZSkKLSBTdGF0aXN0aWNzIGRpc3BsYXkgc2hvd2luZyBDR0Jsb2cgZGF0YSBjb3VudHMKLSBNaWdyYXRpb24gcmVzdWx0cyB3aXRoIGRldGFpbGVkIGNvdW50cwotIFdhcm5pbmcgc3lzdGVtIGZvciBub24tY3JpdGljYWwgaXNzdWVzCi0gQWRtaW4gU2V0dGluZ3MgdGFiIGZvciBtb2R1bGUgY29uZmlndXJhdGlvbgotIERvbmF0aW9ucyB0YWIgZm9yIHN1cHBvcnRpbmcgdGhlIG1vZHVsZQotIEhlbHAgc3lzdGVtIGludGVncmF0ZWQgd2l0aCBDTVNNUyBoZWxwIGZyYW1ld29yawotIFBlcm1pc3Npb24gc3lzdGVtIChyZXF1aXJlcyAiTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMiKQotIFByZXJlcXVpc2l0ZXMgdmFsaWRhdGlvbiBiZWZvcmUgbWlncmF0aW9uCi0gRGF0YSBpbnRlZ3JpdHkgY2hlY2tzCi0gRmllbGQgdHlwZSBtYXBwaW5nIGZyb20gQ0dCbG9nIHRvIExJU0UgZm9ybWF0Ci0gQ2F0ZWdvcnkgcmVsYXRpb25zaGlwIHByZXNlcnZhdGlvbgotIEFydGljbGUgbWV0YWRhdGEgcHJlc2VydmF0aW9uCi0gVVJMIGFuZCBhbGlhcyBwcmVzZXJ2YXRpb24KCiMjIyBTZWN1cml0eQoKLSBJbnB1dCB2YWxpZGF0aW9uIGFuZCBzYW5pdGl6YXRpb24KLSBTUUwgaW5qZWN0aW9uIHByZXZlbnRpb24gKHByZXBhcmVkIHN0YXRlbWVudHMpCi0gUGVybWlzc2lvbiBjaGVja3MgZm9yIGFsbCBhY3Rpb25zCi0gU2VjdXJlIGZpbGUgb3BlcmF0aW9ucwoKIyMjIFRlY2huaWNhbCBEZXRhaWxzCgotIENvbXBhdGlibGUgd2l0aCBDTVNNUyAyLjIuMCsKLSBDb21wYXRpYmxlIHdpdGggUEhQIDcuNCB0byA4LjYKLSBMYXp5IGxvYWRpbmcgZW5hYmxlZCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCi0gTW9kdWxlIGZpbGVzIG9yZ2FuaXplZCAodW5kZXIgNTAwIGxpbmVzIHBlciBmaWxlKQotIENvbXByZWhlbnNpdmUgZXJyb3IgaGFuZGxpbmcgd2l0aCB0cnktY2F0Y2ggYmxvY2tzCi0gTG9nZ2luZyB0byBib3RoIGZpbGUgYW5kIENNU01TIEFkbWluIExvZwoKLS0tCgojIyBWZXJzaW9uIEhpc3RvcnkKCiMjIyBWZXJzaW9uIDEuMC4wICgyMDI1LTExLTI4KQoKKipJbml0aWFsIFJlbGVhc2UqKgoKRmVhdHVyZXM6Ci0gTWlncmF0ZSBhcnRpY2xlcyBmcm9tIENHQmxvZyB0byBMSVNFCi0gTWlncmF0ZSBjYXRlZ29yaWVzIHdpdGggaGllcmFyY2h5IHByZXNlcnZhdGlvbgotIE1pZ3JhdGUgY3VzdG9tIGZpZWxkIGRlZmluaXRpb25zIGFuZCB2YWx1ZXMKLSBDcmVhdGUgbmV3IExJU0UgaW5zdGFuY2VzIG9yIHVzZSBleGlzdGluZyBvbmVzCi0gUHJldmlldyBtaWdyYXRpb24gZGF0YSBiZWZvcmUgZXhlY3V0aW5nCi0gQ29tcHJlaGVuc2l2ZSBlcnJvciBoYW5kbGluZyBhbmQgbG9nZ2luZwotIEF1dG8tZ2VuZXJhdGlvbiBvZiBpbnN0YW5jZSBuYW1lcwotIENNU01TIEFkbWluIExvZyBpbnRlZ3JhdGlvbgoKLS0tCgoqKk5vdGUqKjogRm9yIGRldGFpbGVkIG1pZ3JhdGlvbiBsb2dzLCBjaGVjazoKLSBDTVNNUyBBZG1pbiBMb2c6IFNpdGUgQWRtaW4g4oaSIEFkbWluIExvZwotIE1vZHVsZSBMb2dzOiBgbW9kdWxlcy9NQVNfQ0dCbG9nVG9MSVNFL2xvZ3MvYAoK]]></data>
	</file>
	<file>
	  <filename>/CONTRIBUTING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDb250cmlidXRpbmcgdG8gTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbgoKVGhhbmsgeW91IGZvciB5b3VyIGludGVyZXN0IGluIGNvbnRyaWJ1dGluZyB0byBNQVMgQ0dCbG9nIHRvIExJU0UgTWlncmF0aW9uISBUaGlzIGRvY3VtZW50IHByb3ZpZGVzIGd1aWRlbGluZXMgYW5kIGluc3RydWN0aW9ucyBmb3IgY29udHJpYnV0aW5nLgoKIyMgQ29kZSBvZiBDb25kdWN0CgotIEJlIHJlc3BlY3RmdWwgYW5kIGNvbnNpZGVyYXRlCi0gV2VsY29tZSBuZXdjb21lcnMgYW5kIGhlbHAgdGhlbSBsZWFybgotIEZvY3VzIG9uIHdoYXQgaXMgYmVzdCBmb3IgdGhlIGNvbW11bml0eQotIFNob3cgZW1wYXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCgojIyBIb3cgdG8gQ29udHJpYnV0ZQoKIyMjIFJlcG9ydGluZyBCdWdzCgpCZWZvcmUgY3JlYXRpbmcgYSBidWcgcmVwb3J0OgoKMS4gQ2hlY2sgaWYgdGhlIGlzc3VlIGhhcyBhbHJlYWR5IGJlZW4gcmVwb3J0ZWQKMi4gVGVzdCBvbiB0aGUgbGF0ZXN0IHZlcnNpb24KMy4gQ2hlY2sgdGhlIGRvY3VtZW50YXRpb24KCldoZW4gY3JlYXRpbmcgYSBidWcgcmVwb3J0OgoKLSBVc2UgYSBjbGVhciBhbmQgZGVzY3JpcHRpdmUgdGl0bGUKLSBQcm92aWRlIGRldGFpbGVkIHN0ZXBzIHRvIHJlcHJvZHVjZQotIEluY2x1ZGUgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24gKENNU01TIHZlcnNpb24sIFBIUCB2ZXJzaW9uLCBldGMuKQotIEluY2x1ZGUgZXJyb3IgbWVzc2FnZXMgYW5kIGxvZ3MKLSBBZGQgc2NyZWVuc2hvdHMgaWYgYXBwbGljYWJsZQoKIyMjIFN1Z2dlc3RpbmcgRmVhdHVyZXMKCkZlYXR1cmUgc3VnZ2VzdGlvbnMgYXJlIHdlbGNvbWUhIFdoZW4gc3VnZ2VzdGluZzoKCi0gQ2hlY2sgaWYgdGhlIGZlYXR1cmUgaGFzIGJlZW4gc3VnZ2VzdGVkIGJlZm9yZQotIEV4cGxhaW4gdGhlIHVzZSBjYXNlCi0gRGVzY3JpYmUgaG93IGl0IHdvdWxkIHdvcmsKLSBDb25zaWRlciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CgojIyMgUHVsbCBSZXF1ZXN0cwoKMS4gKipGb3JrIHRoZSByZXBvc2l0b3J5KioKMi4gKipDcmVhdGUgYSBmZWF0dXJlIGJyYW5jaCoqOiBgZ2l0IGNoZWNrb3V0IC1iIGZlYXR1cmUvYW1hemluZy1mZWF0dXJlYAozLiAqKk1ha2UgeW91ciBjaGFuZ2VzKioKNC4gKipGb2xsb3cgY29kaW5nIHN0YW5kYXJkcyoqIChzZWUgYmVsb3cpCjUuICoqVGVzdCB0aG9yb3VnaGx5KioKNi4gKipVcGRhdGUgZG9jdW1lbnRhdGlvbioqCjcuICoqQ29tbWl0IHdpdGggY2xlYXIgbWVzc2FnZXMqKgo4LiAqKlB1c2ggdG8geW91ciBmb3JrKioKOS4gKipDcmVhdGUgYSBQdWxsIFJlcXVlc3QqKgoKIyMgQ29kaW5nIFN0YW5kYXJkcwoKIyMjIFBIUCBDb2RlCgotIFBIUCA3LjQgdG8gOC42IGNvbXBhdGlibGUKLSBGb2xsb3cgUFNSLTEyIGNvZGluZyBzdHlsZQotIFVzZSBtZWFuaW5nZnVsIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcwotIEFkZCBjb21tZW50cyBmb3IgY29tcGxleCBsb2dpYwotIE1heGltdW0gNTAwIGxpbmVzIHBlciBmaWxlIChzcGxpdCBpbnRvIG1vZHVsZXMgaWYgbmVlZGVkKQoKIyMjIEZpbGUgT3JnYW5pemF0aW9uCgotIEtlZXAgZmlsZXMgdW5kZXIgNTAwIGxpbmVzCi0gU3BsaXQgbGFyZ2UgZmlsZXMgaW50byBtb2R1bGVzCi0gU3RvcmUgbW9kdWxlcyBpbiBgbGliL2Agb3IgYXBwcm9wcmlhdGUgc3ViZGlyZWN0b3JpZXMKLSBVc2UgY2xlYXIsIGRlc2NyaXB0aXZlIGZpbGUgbmFtZXMKCiMjIyBFcnJvciBIYW5kbGluZwoKLSBBbHdheXMgdXNlIHRyeS1jYXRjaCBibG9ja3MKLSBMb2cgZXJyb3JzIGFwcHJvcHJpYXRlbHkKLSBOZXZlciBleHBvc2Ugc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGluIGVycm9ycwotIFByb3ZpZGUgdXNlci1mcmllbmRseSBlcnJvciBtZXNzYWdlcwoKIyMjIFNlY3VyaXR5CgotIFZhbGlkYXRlIGFsbCB1c2VyIGlucHV0Ci0gVXNlIHByZXBhcmVkIHN0YXRlbWVudHMgZm9yIGRhdGFiYXNlIHF1ZXJpZXMKLSBOZXZlciBoYXJkY29kZSBjcmVkZW50aWFscwotIFN0b3JlIHNlbnNpdGl2ZSBkYXRhIGluIGNvbmZpZy5waHAgKGZvbGxvd2luZyBwcm9qZWN0IHJ1bGVzKQotIFNhbml0aXplIG91dHB1dAoKIyMjIERhdGFiYXNlCgotIFVzZSBDTVNNUyBkYXRhYmFzZSBhYnN0cmFjdGlvbiBsYXllcgotIFVzZSB0cmFuc2FjdGlvbnMgZm9yIG11bHRpLXN0ZXAgb3BlcmF0aW9ucwotIEFsd2F5cyB1c2UgcHJlcGFyZWQgc3RhdGVtZW50cwotIEhhbmRsZSBlcnJvcnMgZ3JhY2VmdWxseQoKIyMgRGV2ZWxvcG1lbnQgU2V0dXAKCjEuICoqQ2xvbmUgdGhlIHJlcG9zaXRvcnkqKgogICBgYGBiYXNoCiAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vbWFzdGVyMzM5NS9NQVNfQ0dCbG9nVG9MSVNFLmdpdAogICBgYGAKCjIuICoqU2V0IHVwIGRldmVsb3BtZW50IGVudmlyb25tZW50KioKICAgLSBDTVNNUyAyLjIuMCsgaW5zdGFsbGF0aW9uCiAgIC0gUEhQIDcuNCB0byA4LjYKICAgLSBDR0Jsb2cgbW9kdWxlIGluc3RhbGxlZAogICAtIExJU0UgbW9kdWxlIGluc3RhbGxlZAoKMy4gKipDcmVhdGUgYSBkZXZlbG9wbWVudCBicmFuY2gqKgogICBgYGBiYXNoCiAgIGdpdCBjaGVja291dCAtYiBkZXYveW91ci1mZWF0dXJlLW5hbWUKICAgYGBgCgo0LiAqKk1ha2UgeW91ciBjaGFuZ2VzKioKCjUuICoqVGVzdCB0aG9yb3VnaGx5KioKCiMjIFRlc3RpbmcKCkJlZm9yZSBzdWJtaXR0aW5nIGEgUFI6CgotIFsgXSBUZXN0IG9uIENNU01TIDIuMi4wKwotIFsgXSBUZXN0IHdpdGggUEhQIDcuNCBhbmQgOC42Ci0gWyBdIFRlc3QgbWlncmF0aW9uIHdpdGggc2FtcGxlIGRhdGEKLSBbIF0gVmVyaWZ5IGVycm9yIGhhbmRsaW5nCi0gWyBdIENoZWNrIGFkbWluIGxvZyBlbnRyaWVzCi0gWyBdIFRlc3Qgd2l0aCBuZXcgYW5kIGV4aXN0aW5nIGluc3RhbmNlcwotIFsgXSBWZXJpZnkgbm8gUEhQIGVycm9ycyBvciB3YXJuaW5ncwotIFsgXSBDaGVjayBicm93c2VyIGNvbnNvbGUgZm9yIGVycm9ycwoKIyMgRG9jdW1lbnRhdGlvbgoKV2hlbiBhZGRpbmcgZmVhdHVyZXM6CgotIFVwZGF0ZSBSRUFETUUubWQgaWYgbmVlZGVkCi0gVXBkYXRlIHJlbGV2YW50IGRvY3MvIGZpbGVzCi0gVXBkYXRlIGhlbHAuaW5jIGlmIGFwcGxpY2FibGUKLSBVcGRhdGUgbGFuZ3VhZ2UgZmlsZXMgaWYgYWRkaW5nIG5ldyBzdHJpbmdzCi0gQWRkIGNvZGUgY29tbWVudHMgZm9yIGNvbXBsZXggbG9naWMKCiMjIENvbW1pdCBNZXNzYWdlcwoKVXNlIGNsZWFyLCBkZXNjcmlwdGl2ZSBjb21taXQgbWVzc2FnZXM6CgpgYGAKQWRkIGZlYXR1cmU6IEF1dG8tZ2VuZXJhdGUgaW5zdGFuY2UgbmFtZXMKCi0gSW1wbGVtZW50IGF1dG9tYXRpYyBpbnN0YW5jZSBuYW1lIGdlbmVyYXRpb24KLSBIYW5kbGUgbmFtaW5nIGNvbmZsaWN0cwotIEFkZCB2YWxpZGF0aW9uCmBgYAoKRm9ybWF0OgotIFN0YXJ0IHdpdGggYWN0aW9uIHZlcmIgKEFkZCwgRml4LCBVcGRhdGUsIFJlbW92ZSkKLSBLZWVwIHVuZGVyIDUwIGNoYXJhY3RlcnMgZm9yIHRpdGxlCi0gQWRkIGRldGFpbHMgaW4gYm9keSBpZiBuZWVkZWQKCiMjIFB1bGwgUmVxdWVzdCBQcm9jZXNzCgoxLiAqKlVwZGF0ZSBkb2N1bWVudGF0aW9uKiogYXMgbmVlZGVkCjIuICoqQWRkIHRlc3RzKiogaWYgYXBwbGljYWJsZQozLiAqKkVuc3VyZSBhbGwgdGVzdHMgcGFzcyoqCjQuICoqRm9sbG93IHRoZSBQUiB0ZW1wbGF0ZSoqCjUuICoqUmVxdWVzdCByZXZpZXcqKgoKIyMgTW9kdWxlIFN0cnVjdHVyZQoKYGBgCk1BU19DR0Jsb2dUb0xJU0UvCuKUnOKUgOKUgCBhY3Rpb24uZGVmYXVsdGFkbWluLnBocCAgICAjIE1haW4gYWRtaW4gaW50ZXJmYWNlCuKUnOKUgOKUgCBmdW5jdGlvbi5hZG1pbl9taWdyYXRldGFiLnBocCAgIyBNaWdyYXRpb24gdGFiIGNvbnRlbnQK4pSc4pSA4pSAIGZ1bmN0aW9uLmFkbWluX3NldHRpbmdzLnBocCAgICAjIFNldHRpbmdzIHRhYgrilJzilIDilIAgZnVuY3Rpb24uZG9uYXRpb25zLnBocCAgICAgICAgICMgRG9uYXRpb25zIHRhYgrilJzilIDilIAgbGliLwrilIIgICDilJzilIDilIAgY2xhc3MuTWlncmF0aW9uRW5naW5lLnBocCAgIyBDb3JlIG1pZ3JhdGlvbiBsb2dpYwrilIIgICDilJzilIDilIAgY2xhc3MuRGF0YU1hcHBlci5waHAgICAgICAgIyBEYXRhIG1hcHBpbmcgdXRpbGl0aWVzCuKUgiAgIOKUlOKUgOKUgCBjbGFzcy5NaWdyYXRpb25WYWxpZGF0b3IucGhwICMgVmFsaWRhdGlvbiBsb2dpYwrilJzilIDilIAgbGFuZy8K4pSCICAg4pSU4pSA4pSAIGVuX1VTLnBocCAgICAgICAgICAgICAgICAgICMgTGFuZ3VhZ2Ugc3RyaW5ncwrilJzilIDilIAgdGVtcGxhdGVzLwrilIIgICDilJTilIDilIAgZG9uYXRpb25zLnRwbCAgICAgICAgICAgICAgIyBEb25hdGlvbnMgdGVtcGxhdGUK4pSU4pSA4pSAIGRvY3MvICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvY3VtZW50YXRpb24KYGBgCgojIyBRdWVzdGlvbnM/CgpJZiB5b3UgaGF2ZSBxdWVzdGlvbnM6CgotIE9wZW4gYW4gaXNzdWUgZm9yIGRpc2N1c3Npb24KLSBDaGVjayBleGlzdGluZyBpc3N1ZXMgYW5kIFBScwotIFJldmlldyB0aGUgZG9jdW1lbnRhdGlvbgoKVGhhbmsgeW91IGZvciBjb250cmlidXRpbmchIPCfjokKCg==]]></data>
	</file>
	<file>
	  <filename>/CONTRIBUTORS.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDb250cmlidXRvcnMKClRoaXMgcHJvamVjdCBpcyBtYWludGFpbmVkIGJ5IG1hc3RlcjMzOTUuCg==]]></data>
	</file>
	<file>
	  <filename>/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/docs/DATA_MAPPING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBEYXRhIE1hcHBpbmcgR3VpZGUKClRoaXMgZG9jdW1lbnQgZXhwbGFpbnMgaG93IGRhdGEgaXMgbWFwcGVkIGZyb20gQ0dCbG9nIHRvIExJU0UgZHVyaW5nIG1pZ3JhdGlvbi4KCiMjIE92ZXJ2aWV3CgpUaGUgTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbiBtb2R1bGUgYXV0b21hdGljYWxseSBtYXBzIGRhdGEgc3RydWN0dXJlcyBiZXR3ZWVuIENHQmxvZyBhbmQgTElTRSBmb3JtYXRzLCBwcmVzZXJ2aW5nIHJlbGF0aW9uc2hpcHMsIGhpZXJhcmNoaWVzLCBhbmQgZmllbGQgdHlwZXMuCgojIyBDb3JlIERhdGEgTWFwcGluZwoKfCBDR0Jsb2cgU3RydWN0dXJlIHwgTElTRSBTdHJ1Y3R1cmUgfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfAp8IEFydGljbGVzIHwgSXRlbXMgfCBBbGwgYXJ0aWNsZSBkYXRhIGlzIG1pZ3JhdGVkIHRvIExJU0UgaXRlbXMgfAp8IENhdGVnb3JpZXMgfCBDYXRlZ29yaWVzIHwgSGllcmFyY2h5IGFuZCByZWxhdGlvbnNoaXBzIHByZXNlcnZlZCB8CnwgQ3VzdG9tIEZpZWxkcyB8IEZpZWxkIERlZmluaXRpb25zIHwgRmllbGQgdHlwZXMgYXJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHwKfCBGaWVsZCBWYWx1ZXMgfCBJdGVtIEZpZWxkIFZhbHVlcyB8IExpbmtlZCB0byBtaWdyYXRlZCBpdGVtcyB8CgojIyBBcnRpY2xlIHRvIEl0ZW0gTWFwcGluZwoKIyMjIFN0YW5kYXJkIEZpZWxkcwoKfCBDR0Jsb2cgRmllbGQgfCBMSVNFIEZpZWxkIHwgVHJhbnNmb3JtYXRpb24gfAp8LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18CnwgYGNnYmxvZ190aXRsZWAgfCBgdGl0bGVgIHwgRGlyZWN0IGNvcHkgfAp8IGBjZ2Jsb2dfZGF0YWAgfCBgZGF0YWAgfCBEaXJlY3QgY29weSAoY29udGVudCkgfAp8IGBzdW1tYXJ5YCB8IGBzdW1tYXJ5YCB8IERpcmVjdCBjb3B5IHwKfCBgY2dibG9nX2RhdGVgIHwgYGNyZWF0ZV9kYXRlYCB8IERhdGUgZm9ybWF0IHByZXNlcnZlZCB8CnwgYHN0YXR1c2AgfCBgYWN0aXZlYCB8IGBwdWJsaXNoZWRgIOKGkiBgMWAsIGBkcmFmdGAg4oaSIGAwYCB8CnwgYHVybGAgfCBgdXJsYCB8IFVSTCBzdHJ1Y3R1cmUgbWFpbnRhaW5lZCB8CnwgYGF1dGhvcmAgfCBgYXV0aG9yYCB8IEF1dGhvciBpbmZvcm1hdGlvbiBwcmVzZXJ2ZWQgfAp8IGBtb2RpZmllZF9kYXRlYCB8IGBtb2RpZmllZF9kYXRlYCB8IE1vZGlmaWNhdGlvbiB0aW1lc3RhbXAgfAp8IGBzdGFydF90aW1lYCB8IGBzdGFydF90aW1lYCB8IFB1YmxpY2F0aW9uIHN0YXJ0IHRpbWUgfAp8IGBlbmRfdGltZWAgfCBgZW5kX3RpbWVgIHwgUHVibGljYXRpb24gZW5kIHRpbWUgfAoKIyMjIE1ldGFkYXRhIFByZXNlcnZhdGlvbgoKLSBBcnRpY2xlIElEcyBhcmUgcHJlc2VydmVkIHdoZXJlIHBvc3NpYmxlCi0gU0VPIG1ldGFkYXRhIChtZXRhIGRlc2NyaXB0aW9uLCBrZXl3b3JkcykgaXMgbWFpbnRhaW5lZAotIFB1YmxpY2F0aW9uIGRhdGVzIGFuZCB0aW1lcyBhcmUgcHJlc2VydmVkCi0gQXV0aG9yIGluZm9ybWF0aW9uIGlzIG1haW50YWluZWQKCiMjIENhdGVnb3J5IE1hcHBpbmcKCiMjIyBIaWVyYXJjaHkgUHJlc2VydmF0aW9uCgpDYXRlZ29yaWVzIG1haW50YWluIHRoZWlyIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXBzOgoKYGBgCkNHQmxvZyBTdHJ1Y3R1cmU6CuKUnOKUgOKUgCBUZWNobm9sb2d5IChwYXJlbnQpCuKUgiAgIOKUnOKUgOKUgCBTb2Z0d2FyZSAoY2hpbGQpCuKUgiAgIOKUlOKUgOKUgCBIYXJkd2FyZSAoY2hpbGQpCuKUlOKUgOKUgCBOZXdzIChwYXJlbnQpCiAgICDilJTilIDilIAgQnJlYWtpbmcgTmV3cyAoY2hpbGQpCgpMSVNFIFN0cnVjdHVyZSAocHJlc2VydmVkKToK4pSc4pSA4pSAIFRlY2hub2xvZ3kgKHBhcmVudCkK4pSCICAg4pSc4pSA4pSAIFNvZnR3YXJlIChjaGlsZCkK4pSCICAg4pSU4pSA4pSAIEhhcmR3YXJlIChjaGlsZCkK4pSU4pSA4pSAIE5ld3MgKHBhcmVudCkKICAgIOKUlOKUgOKUgCBCcmVha2luZyBOZXdzIChjaGlsZCkKYGBgCgojIyMgQ2F0ZWdvcnkgUHJvcGVydGllcwoKfCBDR0Jsb2cgUHJvcGVydHkgfCBMSVNFIFByb3BlcnR5IHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18CnwgQ2F0ZWdvcnkgbmFtZSB8IENhdGVnb3J5IG5hbWUgfCBEaXJlY3QgY29weSB8CnwgUGFyZW50IGNhdGVnb3J5IHwgUGFyZW50IGNhdGVnb3J5IHwgUmVsYXRpb25zaGlwIG1haW50YWluZWQgfAp8IENhdGVnb3J5IG9yZGVyIHwgQ2F0ZWdvcnkgb3JkZXIgfCBPcmRlcmluZyBwcmVzZXJ2ZWQgfAp8IENhdGVnb3J5IGRlc2NyaXB0aW9uIHwgQ2F0ZWdvcnkgZGVzY3JpcHRpb24gfCBJZiBhdmFpbGFibGUgfAoKIyMgQ3VzdG9tIEZpZWxkIFR5cGUgTWFwcGluZwoKVGhlIG1vZHVsZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIENHQmxvZyBmaWVsZCB0eXBlcyB0byBjb21wYXRpYmxlIExJU0UgZmllbGQgdHlwZXM6Cgp8IENHQmxvZyBGaWVsZCBUeXBlIHwgTElTRSBGaWVsZCBUeXBlIHwgQ29udmVyc2lvbiBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHRleHRib3hgIHwgYHRleHRgIHwgU2luZ2xlLWxpbmUgdGV4dCBpbnB1dCB8CnwgYHRleHRhcmVhYCB8IGB0ZXh0YXJlYWAgfCBNdWx0aS1saW5lIHRleHQgaW5wdXQgfAp8IGBjaGVja2JveGAgfCBgY2hlY2tib3hgIHwgQm9vbGVhbiBjaGVja2JveCB8CnwgYGZpbGVgIHwgYGZpbGVgIHwgRmlsZSB1cGxvYWQgZmllbGQgfAp8IGBpbWFnZWAgfCBgaW1hZ2VgIHwgSW1hZ2UgdXBsb2FkIGZpZWxkIHwKfCBgZmlsZV9zZWxlY3RgIHwgYGZpbGVfc2VsZWN0YCB8IEZpbGUgc2VsZWN0aW9uIGRyb3Bkb3duIHwKfCBgaW1hZ2Vfc2VsZWN0YCB8IGBpbWFnZV9zZWxlY3RgIHwgSW1hZ2Ugc2VsZWN0aW9uIGRyb3Bkb3duIHwKfCBgZHJvcGRvd25gIHwgYGRyb3Bkb3duYCB8IERyb3Bkb3duIHNlbGVjdGlvbiB8CnwgYHJhZGlvYCB8IGByYWRpb2AgfCBSYWRpbyBidXR0b24gZ3JvdXAgfAp8IGBtdWx0aXNlbGVjdGAgfCBgbXVsdGlzZWxlY3RgIHwgTXVsdGlwbGUgc2VsZWN0aW9uIHwKCiMjIyBGaWVsZCBEZWZpbml0aW9uIE1hcHBpbmcKCnwgQ0dCbG9nIEZpZWxkIERlZmluaXRpb24gfCBMSVNFIEZpZWxkIERlZmluaXRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLXwKfCBGaWVsZCBuYW1lIHwgRmllbGQgbmFtZSB8IERpcmVjdCBjb3B5IHwKfCBGaWVsZCB0eXBlIHwgRmllbGQgdHlwZSB8IENvbnZlcnRlZCBwZXIgbWFwcGluZyB0YWJsZSB8CnwgRmllbGQgbGFiZWwgfCBGaWVsZCBsYWJlbCB8IERpc3BsYXkgbGFiZWwgcHJlc2VydmVkIHwKfCBEZWZhdWx0IHZhbHVlIHwgRGVmYXVsdCB2YWx1ZSB8IERlZmF1bHQgdmFsdWVzIG1haW50YWluZWQgfAp8IFJlcXVpcmVkIGZsYWcgfCBSZXF1aXJlZCBmbGFnIHwgVmFsaWRhdGlvbiBydWxlcyBwcmVzZXJ2ZWQgfAp8IEhlbHAgdGV4dCB8IEhlbHAgdGV4dCB8IFVzZXIgZ3VpZGFuY2UgdGV4dCB8CgojIyBGaWVsZCBWYWx1ZSBNYXBwaW5nCgojIyMgVmFsdWUgUHJlc2VydmF0aW9uCgotIEZpZWxkIHZhbHVlcyBhcmUgbGlua2VkIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgaXRlbXMKLSBEYXRhIHR5cGVzIGFyZSBwcmVzZXJ2ZWQgKHRleHQsIG51bWJlcnMsIGRhdGVzKQotIEZpbGUgYW5kIGltYWdlIHJlZmVyZW5jZXMgYXJlIG1haW50YWluZWQKLSBNdWx0aS12YWx1ZSBmaWVsZHMgYXJlIHByb3Blcmx5IGhhbmRsZWQKCiMjIyBWYWx1ZSBMaW5raW5nCgpgYGAKQ0dCbG9nIEFydGljbGUg4oaSIExJU0UgSXRlbQrilJzilIDilIAgQXJ0aWNsZSBJRDogMTIzCuKUgiAgIOKUnOKUgOKUgCBGaWVsZDogIkF1dGhvciBCaW8iIOKGkiBWYWx1ZTogIkpvaG4gRG9lIgrilIIgICDilJzilIDilIAgRmllbGQ6ICJGZWF0dXJlZCBJbWFnZSIg4oaSIFZhbHVlOiAiL3VwbG9hZHMvaW1hZ2UuanBnIgrilIIgICDilJTilIDilIAgRmllbGQ6ICJUYWdzIiDihpIgVmFsdWU6IFsidGVjaCIsICJuZXdzIl0KYGBgCgojIyBSZWxhdGlvbnNoaXAgUHJlc2VydmF0aW9uCgojIyMgQXJ0aWNsZS1DYXRlZ29yeSBSZWxhdGlvbnNoaXBzCgotIEFydGljbGVzIG1haW50YWluIHRoZWlyIGNhdGVnb3J5IGFzc2lnbm1lbnRzCi0gTXVsdGlwbGUgY2F0ZWdvcnkgYXNzaWdubWVudHMgYXJlIHByZXNlcnZlZAotIENhdGVnb3J5IGhpZXJhcmNoaWVzIGFyZSByZXNwZWN0ZWQKCiMjIyBBcnRpY2xlLUZpZWxkIFJlbGF0aW9uc2hpcHMKCi0gQ3VzdG9tIGZpZWxkIHZhbHVlcyByZW1haW4gbGlua2VkIHRvIGFydGljbGVzCi0gRmllbGQgZGVmaW5pdGlvbnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHZhbHVlcwotIEFsbCByZWxhdGlvbnNoaXBzIGFyZSB2YWxpZGF0ZWQgZHVyaW5nIG1pZ3JhdGlvbgoKIyMgRGF0YSBJbnRlZ3JpdHkKCiMjIyBWYWxpZGF0aW9uIER1cmluZyBNaWdyYXRpb24KCjEuICoqRmllbGQgVHlwZSBWYWxpZGF0aW9uKio6IEVuc3VyZXMgZmllbGQgdHlwZXMgYXJlIGNvbXBhdGlibGUKMi4gKipSZWxhdGlvbnNoaXAgVmFsaWRhdGlvbioqOiBWZXJpZmllcyBhbGwgcmVsYXRpb25zaGlwcyBleGlzdAozLiAqKkRhdGEgVHlwZSBWYWxpZGF0aW9uKio6IENvbmZpcm1zIGRhdGEgdHlwZXMgbWF0Y2ggZmllbGQgZGVmaW5pdGlvbnMKNC4gKipSZWZlcmVuY2UgVmFsaWRhdGlvbioqOiBDaGVja3MgZmlsZS9pbWFnZSByZWZlcmVuY2VzIGFyZSB2YWxpZAoKIyMjIEVycm9yIEhhbmRsaW5nCgotIEludmFsaWQgZmllbGQgdHlwZXMgYXJlIGxvZ2dlZCBhcyB3YXJuaW5ncwotIE1pc3NpbmcgcmVsYXRpb25zaGlwcyBhcmUgcmVwb3J0ZWQKLSBEYXRhIHR5cGUgbWlzbWF0Y2hlcyBhcmUgaGFuZGxlZCBncmFjZWZ1bGx5Ci0gTWlzc2luZyBmaWxlIHJlZmVyZW5jZXMgYXJlIG5vdGVkCgojIyBTcGVjaWFsIENhc2VzCgojIyMgRGF0ZSBhbmQgVGltZSBGaWVsZHMKCi0gRGF0ZXMgYXJlIHByZXNlcnZlZCBpbiB0aGVpciBvcmlnaW5hbCBmb3JtYXQKLSBUaW1lIHpvbmVzIGFyZSBtYWludGFpbmVkCi0gRGF0ZSByYW5nZXMgKHN0YXJ0L2VuZCB0aW1lcykgYXJlIHByZXNlcnZlZAoKIyMjIEZpbGUgYW5kIEltYWdlIEZpZWxkcwoKLSBGaWxlIHBhdGhzIGFyZSBwcmVzZXJ2ZWQKLSBGaWxlIHJlZmVyZW5jZXMgYXJlIG1haW50YWluZWQKLSBNaXNzaW5nIGZpbGVzIGFyZSBsb2dnZWQgYnV0IGRvbid0IHN0b3AgbWlncmF0aW9uCgojIyMgTXVsdGktVmFsdWUgRmllbGRzCgotIEFycmF5cyBhcmUgcHJvcGVybHkgY29udmVydGVkCi0gTXVsdGlwbGUgc2VsZWN0aW9ucyBhcmUgcHJlc2VydmVkCi0gQ29tbWEtc2VwYXJhdGVkIHZhbHVlcyBhcmUgaGFuZGxlZAoKIyMgTWlncmF0aW9uIE9yZGVyCgpUbyBtYWludGFpbiBkYXRhIGludGVncml0eSwgbWlncmF0aW9uIGZvbGxvd3MgdGhpcyBvcmRlcjoKCjEuICoqQ2F0ZWdvcmllcyoqIChmaXJzdCkgLSBSZXF1aXJlZCBmb3IgYXJ0aWNsZSByZWxhdGlvbnNoaXBzCjIuICoqRmllbGQgRGVmaW5pdGlvbnMqKiAoc2Vjb25kKSAtIFJlcXVpcmVkIGZvciBmaWVsZCB2YWx1ZXMKMy4gKipBcnRpY2xlcy9JdGVtcyoqICh0aGlyZCkgLSBMaW5rcyB0byBjYXRlZ29yaWVzCjQuICoqRmllbGQgVmFsdWVzKiogKGxhc3QpIC0gTGlua3MgdG8gaXRlbXMgYW5kIGZpZWxkIGRlZmluaXRpb25zCgpUaGlzIG9yZGVyIGVuc3VyZXMgYWxsIGRlcGVuZGVuY2llcyBleGlzdCBiZWZvcmUgdGhleSdyZSByZWZlcmVuY2VkLgoKIyMgUG9zdC1NaWdyYXRpb24gVmVyaWZpY2F0aW9uCgpBZnRlciBtaWdyYXRpb24sIHZlcmlmeToKCi0gWyBdIEFsbCBhcnRpY2xlcyBtaWdyYXRlZCBzdWNjZXNzZnVsbHkKLSBbIF0gQ2F0ZWdvcnkgaGllcmFyY2hpZXMgYXJlIGNvcnJlY3QKLSBbIF0gRmllbGQgZGVmaW5pdGlvbnMgbWF0Y2ggb3JpZ2luYWwgdHlwZXMKLSBbIF0gRmllbGQgdmFsdWVzIGFyZSBsaW5rZWQgY29ycmVjdGx5Ci0gWyBdIFJlbGF0aW9uc2hpcHMgYXJlIHByZXNlcnZlZAotIFsgXSBObyBkYXRhIGxvc3Mgb2NjdXJyZWQKCiMjIEN1c3RvbSBNYXBwaW5nCgpGb3IgYWR2YW5jZWQgdXNlcnMsIHRoZSBtb2R1bGUncyBtYXBwaW5nIGNhbiBiZSBleHRlbmRlZCBieSBtb2RpZnlpbmcgdGhlIGBEYXRhTWFwcGVyYCBjbGFzcyBpbiBgbGliL2NsYXNzLkRhdGFNYXBwZXIucGhwYC4KCiMjIEV4YW1wbGVzCgojIyMgRXhhbXBsZSAxOiBTaW1wbGUgQXJ0aWNsZSBNaWdyYXRpb24KCioqQ0dCbG9nIEFydGljbGU6KioKLSBUaXRsZTogIkdldHRpbmcgU3RhcnRlZCB3aXRoIENNU01TIgotIENvbnRlbnQ6ICJUaGlzIGlzIGEgZ3VpZGUuLi4iCi0gQ2F0ZWdvcnk6ICJUdXRvcmlhbHMiCi0gQXV0aG9yOiAiSm9obiBEb2UiCi0gUHVibGlzaGVkOiBZZXMKCioqTElTRSBJdGVtIChhZnRlciBtaWdyYXRpb24pOioqCi0gVGl0bGU6ICJHZXR0aW5nIFN0YXJ0ZWQgd2l0aCBDTVNNUyIKLSBEYXRhOiAiVGhpcyBpcyBhIGd1aWRlLi4uIgotIENhdGVnb3J5OiAiVHV0b3JpYWxzIgotIEF1dGhvcjogIkpvaG4gRG9lIgotIEFjdGl2ZTogMQoKIyMjIEV4YW1wbGUgMjogQXJ0aWNsZSB3aXRoIEN1c3RvbSBGaWVsZHMKCioqQ0dCbG9nIEFydGljbGU6KioKLSBUaXRsZTogIlByb2R1Y3QgUmV2aWV3IgotIEN1c3RvbSBGaWVsZDogIlJhdGluZyIgKGRyb3Bkb3duKSA9ICI1IHN0YXJzIgotIEN1c3RvbSBGaWVsZDogIlJldmlld2VyIiAodGV4dGJveCkgPSAiSmFuZSBTbWl0aCIKCioqTElTRSBJdGVtIChhZnRlciBtaWdyYXRpb24pOioqCi0gVGl0bGU6ICJQcm9kdWN0IFJldmlldyIKLSBGaWVsZDogIlJhdGluZyIgKGRyb3Bkb3duKSA9ICI1IHN0YXJzIgotIEZpZWxkOiAiUmV2aWV3ZXIiICh0ZXh0KSA9ICJKYW5lIFNtaXRoIgoKIyMgVHJvdWJsZXNob290aW5nIE1hcHBpbmcgSXNzdWVzCgojIyMgRmllbGQgVHlwZSBNaXNtYXRjaGVzCgpJZiBhIGZpZWxkIHR5cGUgY2Fubm90IGJlIG1hcHBlZDoKLSBDaGVjayB0aGUgZmllbGQgdHlwZSBpbiBDR0Jsb2cKLSBWZXJpZnkgaXQncyBpbiB0aGUgbWFwcGluZyB0YWJsZQotIFJldmlldyBtaWdyYXRpb24gbG9ncyBmb3Igd2FybmluZ3MKCiMjIyBNaXNzaW5nIFJlbGF0aW9uc2hpcHMKCklmIHJlbGF0aW9uc2hpcHMgYXJlIG1pc3Npbmc6Ci0gVmVyaWZ5IGNhdGVnb3JpZXMgd2VyZSBtaWdyYXRlZCBmaXJzdAotIENoZWNrIGZpZWxkIGRlZmluaXRpb25zIHdlcmUgY3JlYXRlZAotIFJldmlldyBtaWdyYXRpb24gb3JkZXIgaW4gbG9ncwoKIyMjIERhdGEgTG9zcwoKSWYgZGF0YSBhcHBlYXJzIHRvIGJlIGxvc3Q6Ci0gQ2hlY2sgbWlncmF0aW9uIGxvZ3MgZm9yIGVycm9ycwotIFZlcmlmeSBzb3VyY2UgZGF0YSBleGlzdHMKLSBSZXZpZXcgZmllbGQgbWFwcGluZ3MKLSBDaGVjayBmb3IgdmFsaWRhdGlvbiBlcnJvcnMKCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIFtVc2FnZSBHdWlkZV0oVVNBR0UubWQpIC0gSG93IHRvIHVzZSB0aGUgbWlncmF0aW9uIG1vZHVsZQotIFtJbnN0YWxsYXRpb24gR3VpZGVdKElOU1RBTExBVElPTi5tZCkgLSBJbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zCi0gW1Ryb3VibGVzaG9vdGluZyBHdWlkZV0oVFJPVUJMRVNIT09USU5HLm1kKSAtIENvbW1vbiBpc3N1ZXMgYW5kIHNvbHV0aW9ucwoK]]></data>
	</file>
	<file>
	  <filename>/docs/DOWNLOAD.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBEb3dubG9hZCBJbnN0cnVjdGlvbnMKClRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgZG93bmxvYWQgbGlua3MgYW5kIGluc3RydWN0aW9ucyBmb3IgdGhlIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gbW9kdWxlLgoKIyMgRG93bmxvYWQgTGlua3MKCiMjIyBNb2R1bGUgWE1MIEZpbGUgKFJlY29tbWVuZGVkIGZvciBNb2R1bGUgTWFuYWdlcikKCioqRmlsZSoqOiBgTUFTX0NHQmxvZ1RvTElTRS0xLjAuMC54bWxgCgoqKkRpcmVjdCBEb3dubG9hZCoqOiBbTUFTX0NHQmxvZ1RvTElTRS0xLjAuMC54bWxdKC4uL01BU19DR0Jsb2dUb0xJU0UtMS4wLjAueG1sKQoKKipHaXRIdWIgUmVsZWFzZSoqOiBbUmVsZWFzZXMgUGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL21hc3RlcjMzOTUvTUFTX0NHQmxvZ1RvTElTRS9yZWxlYXNlcykKCioqVXNhZ2UqKjogVXBsb2FkIHRoaXMgZmlsZSB2aWEgQ01TTVMgTW9kdWxlIE1hbmFnZXIgKEV4dGVuc2lvbnMg4oaSIE1vZHVsZSBNYW5hZ2VyIOKGkiBVcGxvYWQgTW9kdWxlKQoKIyMjIENvbXBsZXRlIE1vZHVsZSBaSVAgKEZvciBNYW51YWwgSW5zdGFsbGF0aW9uKQoKKipGaWxlKio6IGBNQVNfQ0dCbG9nVG9MSVNFLTEuMC4wLnppcGAKCioqR2l0SHViIFJlbGVhc2UqKjogW1JlbGVhc2VzIFBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXN0ZXIzMzk1L01BU19DR0Jsb2dUb0xJU0UvcmVsZWFzZXMpCgoqKlVzYWdlKio6IEV4dHJhY3QgdG8geW91ciBDTVNNUyBgbW9kdWxlcy9gIGRpcmVjdG9yeQoKIyMgSW5zdGFsbGF0aW9uIE1ldGhvZHMKCiMjIyBNZXRob2QgMTogTW9kdWxlIE1hbmFnZXIgKEVhc2llc3QpCgoxLiBEb3dubG9hZCBgTUFTX0NHQmxvZ1RvTElTRS0xLjAuMC54bWxgCjIuIEdvIHRvICoqRXh0ZW5zaW9ucyDihpIgTW9kdWxlIE1hbmFnZXIg4oaSIFVwbG9hZCBNb2R1bGUqKgozLiBTZWxlY3QgdGhlIFhNTCBmaWxlIGFuZCB1cGxvYWQKNC4gQ2xpY2sgKipJbnN0YWxsKiogd2hlbiBpdCBhcHBlYXJzIGluIHRoZSBtb2R1bGUgbGlzdAoKIyMjIE1ldGhvZCAyOiBNYW51YWwgSW5zdGFsbGF0aW9uCgoxLiBEb3dubG9hZCBgTUFTX0NHQmxvZ1RvTElTRS0xLjAuMC56aXBgCjIuIEV4dHJhY3QgdGhlIFpJUCBmaWxlCjMuIFVwbG9hZCB0aGUgYE1BU19DR0Jsb2dUb0xJU0VgIGZvbGRlciB0byBgbW9kdWxlcy9gIGRpcmVjdG9yeQo0LiBTZXQgcGVybWlzc2lvbnMgKGlmIG5lZWRlZCk6CiAgIGBgYGJhc2gKICAgY2hvd24gLVIgbmV3c3QzOTIyOm5ld3N0MzkyMiBtb2R1bGVzL01BU19DR0Jsb2dUb0xJU0UvCiAgIGNobW9kIC1SIDc1NSBtb2R1bGVzL01BU19DR0Jsb2dUb0xJU0UvCiAgIGBgYAo1LiBHbyB0byAqKkV4dGVuc2lvbnMg4oaSIE1vZHVsZSBNYW5hZ2VyKiogYW5kIGluc3RhbGwKCiMjIFZlcnNpb24gSW5mb3JtYXRpb24KCioqQ3VycmVudCBWZXJzaW9uKio6IDEuMC4wICAKKipSZWxlYXNlIERhdGUqKjogMjAyNS0xMS0yOCAgCioqQ01TTVMgQ29tcGF0aWJpbGl0eSoqOiAyLjIuMCsgIAoqKlBIUCBDb21wYXRpYmlsaXR5Kio6IDcuNCB0byA4LjYKCiMjIFZlcmlmaWNhdGlvbgoKQWZ0ZXIgZG93bmxvYWRpbmc6CgoxLiBDaGVjayBmaWxlIHNpemUgbWF0Y2hlcyBleHBlY3RlZCBzaXplCjIuIFZlcmlmeSBmaWxlIGludGVncml0eSAobm8gY29ycnVwdGlvbikKMy4gRm9yIFpJUDogRXh0cmFjdCBhbmQgdmVyaWZ5IGZvbGRlciBzdHJ1Y3R1cmUKNC4gRm9yIFhNTDogQ2hlY2sgaXQncyB2YWxpZCBYTUwgZm9ybWF0CgojIyBGaWxlIExvY2F0aW9ucwoKIyMjIFhNTCBGaWxlIExvY2F0aW9uCgpUaGUgWE1MIGZpbGUgaXMgbG9jYXRlZCBpbiB0aGUgbW9kdWxlIHJvb3Q6Ci0gTW9kdWxlIHJvb3Q6IGBtb2R1bGVzL01BU19DR0Jsb2dUb0xJU0UvTUFTX0NHQmxvZ1RvTElTRS0xLjAuMC54bWxgCi0gRG93bmxvYWQgZGlyZWN0bHkgZnJvbSBHaXRIdWIgcmVwb3NpdG9yeSByb290CgojIyMgWklQIEZpbGUgTG9jYXRpb24KClRoZSBaSVAgZmlsZSBpcyBjcmVhdGVkIGZyb20gdGhlIG1vZHVsZSBkaXJlY3RvcnkgYW5kIGV4Y2x1ZGVzOgotIExvZyBmaWxlcyAoYGxvZ3MvKi5sb2dgKQotIEdpdCBmaWxlcyAoYC5naXQvKmApCi0gVGVtcG9yYXJ5IGZpbGVzCgojIyBHaXRIdWIgUmVwb3NpdG9yeQoKKipSZXBvc2l0b3J5Kio6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXN0ZXIzMzk1L01BU19DR0Jsb2dUb0xJU0UKCioqUmVsZWFzZXMqKjogaHR0cHM6Ly9naXRodWIuY29tL21hc3RlcjMzOTUvTUFTX0NHQmxvZ1RvTElTRS9yZWxlYXNlcwoKIyMgVHJvdWJsZXNob290aW5nIERvd25sb2FkcwoKIyMjIFhNTCBGaWxlIFdvbid0IFVwbG9hZAoKLSBWZXJpZnkgZmlsZSBzaXplIGlzIGNvcnJlY3QKLSBDaGVjayBmaWxlIHBlcm1pc3Npb25zCi0gVHJ5IGRvd25sb2FkaW5nIGFnYWluCi0gQ2xlYXIgYnJvd3NlciBjYWNoZQoKIyMjIFpJUCBGaWxlIFdvbid0IEV4dHJhY3QKCi0gVmVyaWZ5IGZpbGUgZG93bmxvYWRlZCBjb21wbGV0ZWx5Ci0gQ2hlY2sgZmlsZSBzaXplIG1hdGNoZXMgZXhwZWN0ZWQKLSBUcnkgZG93bmxvYWRpbmcgYWdhaW4KLSBVc2UgZGlmZmVyZW50IGV4dHJhY3Rpb24gdG9vbAoKIyMgU3VwcG9ydAoKRm9yIGRvd25sb2FkIGlzc3VlczoKLSBDaGVjayBHaXRIdWIgcmVwb3NpdG9yeSBmb3IgbGF0ZXN0IHZlcnNpb24KLSBWZXJpZnkgeW91IGhhdmUgY29ycmVjdCBwZXJtaXNzaW9ucwotIENvbnRhY3Q6IGluZm9AbmV3c3RhcmdldGVkLmNvbQoK]]></data>
	</file>
	<file>
	  <filename>/docs/INSTALLATION.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBJbnN0YWxsYXRpb24gR3VpZGUKClRoaXMgZ3VpZGUgcHJvdmlkZXMgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zIGZvciBpbnN0YWxsaW5nIHRoZSBNQVMgQ0dCbG9nIHRvIExJU0UgTWlncmF0aW9uIG1vZHVsZS4KCiMjIFByZXJlcXVpc2l0ZXMKCkJlZm9yZSBpbnN0YWxsaW5nIHRoZSBtb2R1bGUsIGVuc3VyZSB5b3UgaGF2ZToKCi0gKipDTVMgTWFkZSBTaW1wbGUgMi4yLjAqKiBvciBoaWdoZXIKLSAqKlBIUCA3LjQqKiB0byAqKjguNioqCi0gKipDR0Jsb2cgbW9kdWxlKiogaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkCi0gKipMSVNFIG1vZHVsZSoqIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZAotIEFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byB5b3VyIENNU01TIGluc3RhbGxhdGlvbgoKIyMgSW5zdGFsbGF0aW9uIE1ldGhvZHMKCiMjIyBNZXRob2QgMTogTW9kdWxlIE1hbmFnZXIgKFJlY29tbWVuZGVkKQoKVGhpcyBpcyB0aGUgZWFzaWVzdCBtZXRob2QgYW5kIHJlY29tbWVuZGVkIGZvciBtb3N0IHVzZXJzLgoKMS4gKipEb3dubG9hZCB0aGUgWE1MIGZpbGUqKgogICAtIEdvIHRvIHRoZSBbUmVsZWFzZXMgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL21hc3RlcjMzOTUvTUFTX0NHQmxvZ1RvTElTRS9yZWxlYXNlcykKICAgLSBEb3dubG9hZCBgTUFTX0NHQmxvZ1RvTElTRS0xLjAuMC54bWxgCgoyLiAqKlVwbG9hZCB2aWEgTW9kdWxlIE1hbmFnZXIqKgogICAtIExvZyBpbnRvIHlvdXIgQ01TTVMgYWRtaW4gcGFuZWwKICAgLSBOYXZpZ2F0ZSB0byAqKkV4dGVuc2lvbnMg4oaSIE1vZHVsZSBNYW5hZ2VyKioKICAgLSBDbGljayAqKiJVcGxvYWQgTW9kdWxlIioqCiAgIC0gU2VsZWN0IHRoZSBkb3dubG9hZGVkIFhNTCBmaWxlCiAgIC0gQ2xpY2sgKioiVXBsb2FkIioqCgozLiAqKkluc3RhbGwgdGhlIG1vZHVsZSoqCiAgIC0gQWZ0ZXIgdXBsb2FkLCB0aGUgbW9kdWxlIHNob3VsZCBhcHBlYXIgaW4gdGhlIG1vZHVsZSBsaXN0CiAgIC0gQ2xpY2sgKioiSW5zdGFsbCIqKiBuZXh0IHRvIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24KICAgLSBGb2xsb3cgdGhlIGluc3RhbGxhdGlvbiBwcm9tcHRzCgojIyMgTWV0aG9kIDI6IE1hbnVhbCBJbnN0YWxsYXRpb24KClVzZSB0aGlzIG1ldGhvZCBpZiB5b3UgcHJlZmVyIG1hbnVhbCBpbnN0YWxsYXRpb24gb3IgaWYgTW9kdWxlIE1hbmFnZXIgdXBsb2FkIGZhaWxzLgoKMS4gKipEb3dubG9hZCB0aGUgbW9kdWxlIFpJUCoqCiAgIC0gR28gdG8gdGhlIFtSZWxlYXNlcyBwYWdlXShodHRwczovL2dpdGh1Yi5jb20vbWFzdGVyMzM5NS9NQVNfQ0dCbG9nVG9MSVNFL3JlbGVhc2VzKQogICAtIERvd25sb2FkIGBNQVNfQ0dCbG9nVG9MSVNFLTEuMC4wLnppcGAKCjIuICoqRXh0cmFjdCB0byBtb2R1bGVzIGRpcmVjdG9yeSoqCiAgIC0gRXh0cmFjdCB0aGUgWklQIGZpbGUKICAgLSBVcGxvYWQgdGhlIGBNQVNfQ0dCbG9nVG9MSVNFYCBmb2xkZXIgdG8geW91ciBDTVNNUyBgbW9kdWxlcy9gIGRpcmVjdG9yeQogICAtIEVuc3VyZSB0aGUgZm9sZGVyIHN0cnVjdHVyZSBpczogYG1vZHVsZXMvTUFTX0NHQmxvZ1RvTElTRS9gCgozLiAqKlNldCBjb3JyZWN0IHBlcm1pc3Npb25zKioKICAgYGBgYmFzaAogICBjaG93biAtUiBuZXdzdDM5MjI6bmV3c3QzOTIyIG1vZHVsZXMvTUFTX0NHQmxvZ1RvTElTRS8KICAgY2htb2QgLVIgNzU1IG1vZHVsZXMvTUFTX0NHQmxvZ1RvTElTRS8KICAgY2htb2QgNjQ0IG1vZHVsZXMvTUFTX0NHQmxvZ1RvTElTRS8qLnBocAogICBgYGAKCjQuICoqSW5zdGFsbCB2aWEgTW9kdWxlIE1hbmFnZXIqKgogICAtIE5hdmlnYXRlIHRvICoqRXh0ZW5zaW9ucyDihpIgTW9kdWxlIE1hbmFnZXIqKgogICAtIEZpbmQgIk1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24iIGluIHRoZSBsaXN0CiAgIC0gQ2xpY2sgKioiSW5zdGFsbCIqKgoKIyMgUG9zdC1JbnN0YWxsYXRpb24KCkFmdGVyIGluc3RhbGxhdGlvbjoKCjEuICoqVmVyaWZ5IGluc3RhbGxhdGlvbioqCiAgIC0gR28gdG8gKipFeHRlbnNpb25zIOKGkiBNQVMgQ0dCbG9nIHRvIExJU0UgTWlncmF0aW9uKioKICAgLSBZb3Ugc2hvdWxkIHNlZSB0aGUgbWlncmF0aW9uIGludGVyZmFjZQoKMi4gKipDaGVjayBwcmVyZXF1aXNpdGVzKioKICAgLSBUaGUgbW9kdWxlIHdpbGwgZGlzcGxheSBpZiBDR0Jsb2cgYW5kIExJU0UgbW9kdWxlcyBhcmUgaW5zdGFsbGVkCiAgIC0gVmVyaWZ5IGJvdGggbW9kdWxlcyBzaG93IGFzICJJbnN0YWxsZWQiCgozLiAqKlNldCBwZXJtaXNzaW9ucyoqIChpZiBuZWVkZWQpCiAgIC0gVGhlIG1vZHVsZSByZXF1aXJlcyAiTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMiIHBlcm1pc3Npb24KICAgLSBBZG1pbiB1c2VycyB0eXBpY2FsbHkgaGF2ZSB0aGlzIGJ5IGRlZmF1bHQKCiMjIFZlcmlmaWNhdGlvbgoKVG8gdmVyaWZ5IHRoZSBpbnN0YWxsYXRpb246CgoxLiBDaGVjayB0aGF0IHRoZSBtb2R1bGUgYXBwZWFycyBpbiAqKkV4dGVuc2lvbnMqKiBtZW51CjIuIEFjY2VzcyB0aGUgbW9kdWxlIGFuZCB2ZXJpZnkgcHJlcmVxdWlzaXRlcyBhcmUgbWV0CjMuIENoZWNrIHRoZSBDTVNNUyBBZG1pbiBMb2cgZm9yIGluc3RhbGxhdGlvbiBjb25maXJtYXRpb24KCiMjIFRyb3VibGVzaG9vdGluZyBJbnN0YWxsYXRpb24KCiMjIyBNb2R1bGUgZG9lc24ndCBhcHBlYXIgYWZ0ZXIgdXBsb2FkCgotIENsZWFyIENNU01TIGNhY2hlOiAqKlNpdGUgQWRtaW4g4oaSIEdsb2JhbCBTZXR0aW5ncyDihpIgQ2xlYXIgQ2FjaGUqKgotIENoZWNrIGZpbGUgcGVybWlzc2lvbnMgb24gdGhlIG1vZHVsZSBkaXJlY3RvcnkKLSBWZXJpZnkgUEhQIGVycm9yIGxvZ3MgZm9yIGFueSBpc3N1ZXMKCiMjIyBJbnN0YWxsYXRpb24gZmFpbHMKCi0gQ2hlY2sgUEhQIHZlcnNpb24gKHJlcXVpcmVzIDcuNCspCi0gVmVyaWZ5IENNU01TIHZlcnNpb24gKHJlcXVpcmVzIDIuMi4wKykKLSBDaGVjayBmaWxlIHBlcm1pc3Npb25zCi0gUmV2aWV3IENNU01TIGVycm9yIGxvZ3MKCiMjIyBNb2R1bGUgc2hvd3MgZXJyb3JzCgotIEVuc3VyZSBDR0Jsb2cgYW5kIExJU0UgbW9kdWxlcyBhcmUgaW5zdGFsbGVkIGZpcnN0Ci0gQ2hlY2sgdGhhdCBhbGwgZmlsZXMgdXBsb2FkZWQgY29ycmVjdGx5Ci0gVmVyaWZ5IGRhdGFiYXNlIHBlcm1pc3Npb25zCgojIyBVbmluc3RhbGxhdGlvbgoKVG8gdW5pbnN0YWxsIHRoZSBtb2R1bGU6CgoxLiBOYXZpZ2F0ZSB0byAqKkV4dGVuc2lvbnMg4oaSIE1vZHVsZSBNYW5hZ2VyKioKMi4gRmluZCAiTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbiIKMy4gQ2xpY2sgKioiVW5pbnN0YWxsIioqCjQuIENvbmZpcm0gdW5pbnN0YWxsYXRpb24KCioqTm90ZSoqOiBVbmluc3RhbGxhdGlvbiBkb2VzIG5vdCByZW1vdmUgbG9nIGZpbGVzLiBJZiB5b3Ugd2FudCB0byBjb21wbGV0ZWx5IHJlbW92ZSB0aGUgbW9kdWxlLCBtYW51YWxseSBkZWxldGUgdGhlIGBNQVNfQ0dCbG9nVG9MSVNFYCBmb2xkZXIgYWZ0ZXIgdW5pbnN0YWxsYXRpb24uCgojIyBOZXh0IFN0ZXBzCgpBZnRlciBzdWNjZXNzZnVsIGluc3RhbGxhdGlvbjoKCjEuIFJlYWQgdGhlIFtVc2FnZSBHdWlkZV0oVVNBR0UubWQpCjIuIFJldmlldyB0aGUgbW9kdWxlIHNldHRpbmdzCjMuIFBlcmZvcm0gYSB0ZXN0IG1pZ3JhdGlvbiBvbiBhIGRldmVsb3BtZW50IGVudmlyb25tZW50Cgo=]]></data>
	</file>
	<file>
	  <filename>/docs/TROUBLESHOOTING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBUcm91Ymxlc2hvb3RpbmcgR3VpZGUKCkNvbW1vbiBpc3N1ZXMgYW5kIHNvbHV0aW9ucyBmb3IgdGhlIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gbW9kdWxlLgoKIyMgUXVpY2sgRGlhZ25vc2lzCgojIyMgQ2hlY2sgUHJlcmVxdWlzaXRlcyBGaXJzdAoKQmVmb3JlIHRyb3VibGVzaG9vdGluZywgdmVyaWZ5OgoKLSBbIF0gQ01TIE1hZGUgU2ltcGxlIDIuMi4wIG9yIGhpZ2hlcgotIFsgXSBQSFAgNy40IHRvIDguNgotIFsgXSBDR0Jsb2cgbW9kdWxlIGluc3RhbGxlZCBhbmQgYWN0aXZlCi0gWyBdIExJU0UgbW9kdWxlIGluc3RhbGxlZCBhbmQgYWN0aXZlCi0gWyBdIEJvdGggbW9kdWxlcyBoYXZlIGRhdGEvY29udGVudAoKIyMgQ29tbW9uIElzc3VlcwoKIyMjIE1vZHVsZSBJbnN0YWxsYXRpb24gSXNzdWVzCgojIyMjIE1vZHVsZSBkb2Vzbid0IGFwcGVhciBhZnRlciB1cGxvYWQKCioqU3ltcHRvbXM6KioKLSBVcGxvYWRlZCB2aWEgTW9kdWxlIE1hbmFnZXIgYnV0IG1vZHVsZSBkb2Vzbid0IHNob3cgaW4gbGlzdAotIE1vZHVsZSBmb2xkZXIgZXhpc3RzIGJ1dCBpc24ndCByZWNvZ25pemVkCgoqKlNvbHV0aW9uczoqKgoKMS4gKipDbGVhciBDTVNNUyBDYWNoZSoqCiAgIC0gR28gdG8gKipTaXRlIEFkbWluIOKGkiBHbG9iYWwgU2V0dGluZ3Mg4oaSIENsZWFyIENhY2hlKioKICAgLSBSZWZyZXNoIHRoZSBtb2R1bGUgbGlzdAoKMi4gKipDaGVjayBGaWxlIFBlcm1pc3Npb25zKioKICAgYGBgYmFzaAogICBjaG1vZCAtUiA3NTUgbW9kdWxlcy9NQVNfQ0dCbG9nVG9MSVNFLwogICBjaG1vZCA2NDQgbW9kdWxlcy9NQVNfQ0dCbG9nVG9MSVNFLyoucGhwCiAgIGBgYAoKMy4gKipWZXJpZnkgRm9sZGVyIFN0cnVjdHVyZSoqCiAgIC0gRW5zdXJlIGZvbGRlciBpcyBuYW1lZCBleGFjdGx5IGBNQVNfQ0dCbG9nVG9MSVNFYAogICAtIENoZWNrIHRoYXQgYE1BU19DR0Jsb2dUb0xJU0UubW9kdWxlLnBocGAgZXhpc3RzIGluIHJvb3QKCjQuICoqQ2hlY2sgUEhQIEVycm9yIExvZ3MqKgogICAtIFJldmlldyBQSFAgZXJyb3IgbG9ncyBmb3Igc3ludGF4IGVycm9ycwogICAtIENoZWNrIENNU01TIGVycm9yIGxvZ3MKCiMjIyMgSW5zdGFsbGF0aW9uIGZhaWxzCgoqKlN5bXB0b21zOioqCi0gSW5zdGFsbGF0aW9uIHByb2Nlc3Mgc3RvcHMgb3IgZXJyb3JzCi0gRXJyb3IgbWVzc2FnZXMgZHVyaW5nIGluc3RhbGxhdGlvbgoKKipTb2x1dGlvbnM6KioKCjEuICoqQ2hlY2sgUEhQIFZlcnNpb24qKgogICBgYGBiYXNoCiAgIHBocCAtdgogICBgYGAKICAgTXVzdCBiZSBQSFAgNy40IHRvIDguNgoKMi4gKipWZXJpZnkgQ01TTVMgVmVyc2lvbioqCiAgIC0gR28gdG8gKipTaXRlIEFkbWluIOKGkiBHbG9iYWwgU2V0dGluZ3MqKgogICAtIENoZWNrIHZlcnNpb24gKG11c3QgYmUgMi4yLjArKQoKMy4gKipDaGVjayBEYXRhYmFzZSBQZXJtaXNzaW9ucyoqCiAgIC0gVmVyaWZ5IGRhdGFiYXNlIHVzZXIgaGFzIENSRUFURS9BTFRFUiBwZXJtaXNzaW9ucwogICAtIENoZWNrIGRhdGFiYXNlIGNvbm5lY3Rpb24gc2V0dGluZ3MKCjQuICoqUmV2aWV3IEVycm9yIExvZ3MqKgogICAtIENoZWNrIENNU01TIEFkbWluIExvZwogICAtIFJldmlldyBQSFAgZXJyb3IgbG9ncwogICAtIENoZWNrIG1vZHVsZSBsb2cgZmlsZXMKCiMjIyBQcmVyZXF1aXNpdGVzIElzc3VlcwoKIyMjIyAiQ0dCbG9nIG1vZHVsZSBpcyBub3QgaW5zdGFsbGVkIgoKKipTeW1wdG9tczoqKgotIE1vZHVsZSBzaG93cyBDR0Jsb2cgYXMgbm90IGluc3RhbGxlZAotIENhbm5vdCBwcm9jZWVkIHdpdGggbWlncmF0aW9uCgoqKlNvbHV0aW9uczoqKgoKMS4gKipWZXJpZnkgQ0dCbG9nIEluc3RhbGxhdGlvbioqCiAgIC0gR28gdG8gKipFeHRlbnNpb25zIOKGkiBNb2R1bGUgTWFuYWdlcioqCiAgIC0gQ2hlY2sgaWYgQ0dCbG9nIGlzIGxpc3RlZCBhbmQgaW5zdGFsbGVkCiAgIC0gSWYgbm90IGluc3RhbGxlZCwgaW5zdGFsbCBpdCBmaXJzdAoKMi4gKipDaGVjayBNb2R1bGUgQWN0aXZhdGlvbioqCiAgIC0gRW5zdXJlIENHQmxvZyBpcyBhY3RpdmF0ZWQKICAgLSBDaGVjayBmb3IgYW55IENHQmxvZyBlcnJvcnMKCjMuICoqVmVyaWZ5IE1vZHVsZSBGaWxlcyoqCiAgIC0gQ2hlY2sgdGhhdCBDR0Jsb2cgZmlsZXMgZXhpc3QgaW4gYG1vZHVsZXMvQ0dCbG9nL2AKICAgLSBWZXJpZnkgQ0dCbG9nIGRhdGFiYXNlIHRhYmxlcyBleGlzdAoKIyMjIyAiTElTRSBtb2R1bGUgaXMgbm90IGluc3RhbGxlZCIKCioqU3ltcHRvbXM6KioKLSBNb2R1bGUgc2hvd3MgTElTRSBhcyBub3QgaW5zdGFsbGVkCi0gQ2Fubm90IGNyZWF0ZSBMSVNFIGluc3RhbmNlcwoKKipTb2x1dGlvbnM6KioKCjEuICoqVmVyaWZ5IExJU0UgSW5zdGFsbGF0aW9uKioKICAgLSBHbyB0byAqKkV4dGVuc2lvbnMg4oaSIE1vZHVsZSBNYW5hZ2VyKioKICAgLSBDaGVjayBpZiBMSVNFIGlzIGxpc3RlZCBhbmQgaW5zdGFsbGVkCiAgIC0gSWYgbm90IGluc3RhbGxlZCwgaW5zdGFsbCBpdCBmaXJzdAoKMi4gKipDaGVjayBNb2R1bGUgQWN0aXZhdGlvbioqCiAgIC0gRW5zdXJlIExJU0UgaXMgYWN0aXZhdGVkCiAgIC0gVmVyaWZ5IExJU0UgaXMgd29ya2luZyBwcm9wZXJseQoKMy4gKipWZXJpZnkgTW9kdWxlIEZpbGVzKioKICAgLSBDaGVjayB0aGF0IExJU0UgZmlsZXMgZXhpc3QgaW4gYG1vZHVsZXMvTElTRS9gCiAgIC0gVmVyaWZ5IExJU0UgZGF0YWJhc2UgdGFibGVzIGV4aXN0CgojIyMgTWlncmF0aW9uIElzc3VlcwoKIyMjIyAiTm8gQ0dCbG9nIGRhdGEgZm91bmQgdG8gbWlncmF0ZSIKCioqU3ltcHRvbXM6KioKLSBNb2R1bGUgc2hvd3Mgbm8gYXJ0aWNsZXMgb3IgY2F0ZWdvcmllcwotIFByZXZpZXcgc2hvd3MgemVybyBpdGVtcwoKKipTb2x1dGlvbnM6KioKCjEuICoqVmVyaWZ5IENHQmxvZyBIYXMgRGF0YSoqCiAgIC0gQ2hlY2sgQ0dCbG9nIG1vZHVsZSBmb3IgYXJ0aWNsZXMKICAgLSBWZXJpZnkgY2F0ZWdvcmllcyBleGlzdAogICAtIENoZWNrIHRoYXQgZGF0YSBpcyBwdWJsaXNoZWQvYWN0aXZlCgoyLiAqKkNoZWNrIERhdGFiYXNlIENvbm5lY3Rpb24qKgogICAtIFZlcmlmeSBDTVNNUyBjYW4gYWNjZXNzIENHQmxvZyB0YWJsZXMKICAgLSBDaGVjayBkYXRhYmFzZSBwZXJtaXNzaW9ucwoKMy4gKipSZXZpZXcgTW9kdWxlIExvZ3MqKgogICAtIENoZWNrIGBtb2R1bGVzL01BU19DR0Jsb2dUb0xJU0UvbG9ncy9gIGZvciBlcnJvcnMKICAgLSBSZXZpZXcgQ01TTVMgQWRtaW4gTG9nCgojIyMjIE1pZ3JhdGlvbiBmYWlscyBvciBzdG9wcwoKKipTeW1wdG9tczoqKgotIE1pZ3JhdGlvbiBzdGFydHMgYnV0IGRvZXNuJ3QgY29tcGxldGUKLSBFcnJvciBtZXNzYWdlcyBkdXJpbmcgbWlncmF0aW9uCi0gUGFydGlhbCBkYXRhIG1pZ3JhdGlvbgoKKipTb2x1dGlvbnM6KioKCjEuICoqQ2hlY2sgRGF0YWJhc2UgVHJhbnNhY3Rpb25zKioKICAgLSBNaWdyYXRpb24gdXNlcyB0cmFuc2FjdGlvbnMKICAgLSBDaGVjayBpZiB0cmFuc2FjdGlvbiB3YXMgcm9sbGVkIGJhY2sKICAgLSBSZXZpZXcgZXJyb3IgbWVzc2FnZXMKCjIuICoqVmVyaWZ5IERpc2sgU3BhY2UqKgogICBgYGBiYXNoCiAgIGRmIC1oCiAgIGBgYAogICBFbnN1cmUgc3VmZmljaWVudCBkaXNrIHNwYWNlCgozLiAqKkNoZWNrIFBIUCBNZW1vcnkgTGltaXQqKgogICAtIEluY3JlYXNlIGBtZW1vcnlfbGltaXRgIGluIHBocC5pbmkgaWYgbmVlZGVkCiAgIC0gTGFyZ2UgbWlncmF0aW9ucyBtYXkgbmVlZCBtb3JlIG1lbW9yeQoKNC4gKipSZXZpZXcgRXJyb3IgTG9ncyoqCiAgIC0gQ2hlY2sgQ01TTVMgQWRtaW4gTG9nIGZvciBkZXRhaWxlZCBlcnJvcnMKICAgLSBSZXZpZXcgbW9kdWxlIGxvZyBmaWxlcwogICAtIENoZWNrIFBIUCBlcnJvciBsb2dzCgo1LiAqKkRhdGFiYXNlIExvY2sgSXNzdWVzKioKICAgLSBFbnN1cmUgbm8gb3RoZXIgcHJvY2Vzc2VzIGFyZSB1c2luZyBkYXRhYmFzZQogICAtIENoZWNrIGZvciBsb25nLXJ1bm5pbmcgcXVlcmllcwoKIyMjIyAiTElTRSBpbnN0YW5jZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cyIKCioqU3ltcHRvbXM6KioKLSBDYW5ub3QgY3JlYXRlIG5ldyBpbnN0YW5jZQotIE5hbWUgY29uZmxpY3QgZXJyb3IKCioqU29sdXRpb25zOioqCgoxLiAqKkNob29zZSBEaWZmZXJlbnQgTmFtZSoqCiAgIC0gRW50ZXIgYSB1bmlxdWUgaW5zdGFuY2UgbmFtZQogICAtIFVzZSBhdXRvLWdlbmVyYXRpb24gKGxlYXZlIGVtcHR5KQoKMi4gKipVc2UgRXhpc3RpbmcgSW5zdGFuY2UqKgogICAtIFNlbGVjdCAiVXNlIEV4aXN0aW5nIExJU0UgSW5zdGFuY2UiCiAgIC0gQ2hvb3NlIGZyb20gZHJvcGRvd24KCjMuICoqQ2hlY2sgRXhpc3RpbmcgSW5zdGFuY2VzKioKICAgLSBHbyB0byBMSVNFIG1vZHVsZQogICAtIFJldmlldyBleGlzdGluZyBpbnN0YW5jZSBuYW1lcwogICAtIERlbGV0ZSB1bnVzZWQgaW5zdGFuY2VzIGlmIG5lZWRlZAoKIyMjIERhdGEgSXNzdWVzCgojIyMjIE1pc3NpbmcgZGF0YSBhZnRlciBtaWdyYXRpb24KCioqU3ltcHRvbXM6KioKLSBTb21lIGFydGljbGVzIGRpZG4ndCBtaWdyYXRlCi0gQ2F0ZWdvcmllcyBtaXNzaW5nCi0gRmllbGQgdmFsdWVzIG5vdCBtaWdyYXRlZAoKKipTb2x1dGlvbnM6KioKCjEuICoqQ2hlY2sgTWlncmF0aW9uIFJlc3VsdHMqKgogICAtIFJldmlldyBtaWdyYXRpb24gc3VtbWFyeQogICAtIE5vdGUgYW55IHdhcm5pbmdzIG9yIGVycm9ycwoKMi4gKipWZXJpZnkgU291cmNlIERhdGEqKgogICAtIENoZWNrIENHQmxvZyBmb3IgbWlzc2luZyBpdGVtcwogICAtIFZlcmlmeSBkYXRhIGlzIGFjdGl2ZS9wdWJsaXNoZWQKCjMuICoqUmV2aWV3IE1pZ3JhdGlvbiBMb2dzKioKICAgLSBDaGVjayB3aGF0IHdhcyBhY3R1YWxseSBtaWdyYXRlZAogICAtIExvb2sgZm9yIHNraXBwZWQgaXRlbXMKCjQuICoqQ2hlY2sgRGF0YSBTZWxlY3Rpb24qKgogICAtIFZlcmlmeSBjb3JyZWN0IGNoZWNrYm94ZXMgd2VyZSBzZWxlY3RlZAogICAtIEVuc3VyZSBhbGwgZGF0YSB0eXBlcyB3ZXJlIGNob3NlbgoKIyMjIyBJbmNvcnJlY3QgZGF0YSBtYXBwaW5nCgoqKlN5bXB0b21zOioqCi0gRmllbGQgdmFsdWVzIGRvbid0IG1hdGNoCi0gQ2F0ZWdvcmllcyBpbiB3cm9uZyBwbGFjZQotIFJlbGF0aW9uc2hpcHMgYnJva2VuCgoqKlNvbHV0aW9uczoqKgoKMS4gKipSZXZpZXcgRGF0YSBNYXBwaW5nKioKICAgLSBDaGVjayBbRGF0YSBNYXBwaW5nIEd1aWRlXShEQVRBX01BUFBJTkcubWQpCiAgIC0gVmVyaWZ5IGZpZWxkIHR5cGUgY29udmVyc2lvbnMKCjIuICoqQ2hlY2sgTWlncmF0aW9uIE9yZGVyKioKICAgLSBDYXRlZ29yaWVzIHNob3VsZCBtaWdyYXRlIGZpcnN0CiAgIC0gRmllbGQgZGVmaW5pdGlvbnMgYmVmb3JlIHZhbHVlcwogICAtIFJldmlldyBtaWdyYXRpb24gbG9ncwoKMy4gKipWZXJpZnkgU291cmNlIERhdGEqKgogICAtIENoZWNrIENHQmxvZyBkYXRhIHN0cnVjdHVyZQogICAtIFZlcmlmeSBmaWVsZCB0eXBlcwoKIyMjIFBlcmZvcm1hbmNlIElzc3VlcwoKIyMjIyBNaWdyYXRpb24gaXMgdmVyeSBzbG93CgoqKlN5bXB0b21zOioqCi0gTWlncmF0aW9uIHRha2VzIGEgbG9uZyB0aW1lCi0gQnJvd3NlciB0aW1lcyBvdXQKCioqU29sdXRpb25zOioqCgoxLiAqKkluY3JlYXNlIFBIUCBUaW1lb3V0KioKICAgYGBgcGhwCiAgIHNldF90aW1lX2xpbWl0KDApOyAvLyBJbiBwaHAuaW5pIG9yIHNjcmlwdAogICBgYGAKCjIuICoqTWlncmF0ZSBpbiBCYXRjaGVzKioKICAgLSBNaWdyYXRlIGNhdGVnb3JpZXMgZmlyc3QKICAgLSBUaGVuIGFydGljbGVzCiAgIC0gVGhlbiBmaWVsZHMgc2VwYXJhdGVseQoKMy4gKipPcHRpbWl6ZSBEYXRhYmFzZSoqCiAgIC0gUnVuIGRhdGFiYXNlIG9wdGltaXphdGlvbgogICAtIENoZWNrIGZvciBzbG93IHF1ZXJpZXMKCjQuICoqQ2hlY2sgU2VydmVyIFJlc291cmNlcyoqCiAgIC0gTW9uaXRvciBDUFUgYW5kIG1lbW9yeSB1c2FnZQogICAtIENoZWNrIGRhdGFiYXNlIHBlcmZvcm1hbmNlCgojIyMgTG9nZ2luZyBJc3N1ZXMKCiMjIyMgTm8gbG9ncyBnZW5lcmF0ZWQKCioqU3ltcHRvbXM6KioKLSBObyBsb2cgZmlsZXMgY3JlYXRlZAotIEFkbWluIGxvZyBlbXB0eQoKKipTb2x1dGlvbnM6KioKCjEuICoqQ2hlY2sgTG9nIERpcmVjdG9yeSBQZXJtaXNzaW9ucyoqCiAgIGBgYGJhc2gKICAgY2htb2QgNzU1IG1vZHVsZXMvTUFTX0NHQmxvZ1RvTElTRS9sb2dzLwogICBjaG93biBuZXdzdDM5MjI6bmV3c3QzOTIyIG1vZHVsZXMvTUFTX0NHQmxvZ1RvTElTRS9sb2dzLwogICBgYGAKCjIuICoqVmVyaWZ5IExvZyBEaXJlY3RvcnkgRXhpc3RzKioKICAgLSBFbnN1cmUgYGxvZ3MvYCBkaXJlY3RvcnkgZXhpc3RzCiAgIC0gQ2hlY2sgaXQncyB3cml0YWJsZQoKMy4gKipDaGVjayBDTVNNUyBMb2dnaW5nKioKICAgLSBWZXJpZnkgQ01TTVMgQWRtaW4gTG9nIGlzIGVuYWJsZWQKICAgLSBDaGVjayBsb2cgZmlsZSBwZXJtaXNzaW9ucwoKIyMgR2V0dGluZyBIZWxwCgojIyMgQmVmb3JlIEFza2luZyBmb3IgSGVscAoKMS4gKipDaGVjayBEb2N1bWVudGF0aW9uKioKICAgLSBSZXZpZXcgW1VzYWdlIEd1aWRlXShVU0FHRS5tZCkKICAgLSBSZWFkIFtJbnN0YWxsYXRpb24gR3VpZGVdKElOU1RBTExBVElPTi5tZCkKICAgLSBDaGVjayBbRGF0YSBNYXBwaW5nIEd1aWRlXShEQVRBX01BUFBJTkcubWQpCgoyLiAqKlJldmlldyBMb2dzKioKICAgLSBDaGVjayBDTVNNUyBBZG1pbiBMb2cKICAgLSBSZXZpZXcgbW9kdWxlIGxvZyBmaWxlcwogICAtIENoZWNrIFBIUCBlcnJvciBsb2dzCgozLiAqKkdhdGhlciBJbmZvcm1hdGlvbioqCiAgIC0gQ01TTVMgdmVyc2lvbgogICAtIFBIUCB2ZXJzaW9uCiAgIC0gTW9kdWxlIHZlcnNpb25zCiAgIC0gRXJyb3IgbWVzc2FnZXMKICAgLSBMb2cgZXhjZXJwdHMKCiMjIyBTdXBwb3J0IENoYW5uZWxzCgotICoqR2l0SHViIElzc3VlcyoqOiBbT3BlbiBhbiBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL21hc3RlcjMzOTUvTUFTX0NHQmxvZ1RvTElTRS9pc3N1ZXMpCi0gKipFbWFpbCBTdXBwb3J0Kio6IGluZm9AbmV3c3RhcmdldGVkLmNvbQotICoqRG9jdW1lbnRhdGlvbioqOiBDaGVjayBgZG9jcy9gIGZvbGRlcgoKIyMjIFJlcG9ydGluZyBJc3N1ZXMKCldoZW4gcmVwb3J0aW5nIGlzc3VlcywgaW5jbHVkZToKCjEuICoqRW52aXJvbm1lbnQgSW5mb3JtYXRpb24qKgogICAtIENNU01TIHZlcnNpb24KICAgLSBQSFAgdmVyc2lvbgogICAtIFNlcnZlciBPUwogICAtIE1vZHVsZSB2ZXJzaW9ucwoKMi4gKipFcnJvciBEZXRhaWxzKioKICAgLSBFeGFjdCBlcnJvciBtZXNzYWdlcwogICAtIFdoZW4gZXJyb3Igb2NjdXJzCiAgIC0gU3RlcHMgdG8gcmVwcm9kdWNlCgozLiAqKkxvZyBJbmZvcm1hdGlvbioqCiAgIC0gUmVsZXZhbnQgbG9nIGV4Y2VycHRzCiAgIC0gRXJyb3Igc3RhY2sgdHJhY2VzCiAgIC0gTWlncmF0aW9uIHN0YXRpc3RpY3MKCjQuICoqU2NyZWVuc2hvdHMqKgogICAtIEVycm9yIHNjcmVlbnNob3RzCiAgIC0gQ29uZmlndXJhdGlvbiBzY3JlZW5zaG90cwogICAtIE1pZ3JhdGlvbiBpbnRlcmZhY2Ugc2NyZWVuc2hvdHMKCiMjIFByZXZlbnRpb24gVGlwcwoKIyMjIEJlZm9yZSBNaWdyYXRpb24KCi0g4pyFIEFsd2F5cyBiYWNrdXAgZGF0YWJhc2UgZmlyc3QKLSDinIUgVGVzdCBvbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudAotIOKchSBWZXJpZnkgcHJlcmVxdWlzaXRlcyBhcmUgbWV0Ci0g4pyFIENoZWNrIGF2YWlsYWJsZSBkaXNrIHNwYWNlCi0g4pyFIFJldmlldyBzb3VyY2UgZGF0YSBzdHJ1Y3R1cmUKCiMjIyBEdXJpbmcgTWlncmF0aW9uCgotIOKchSBVc2UgcHJldmlldyBmZWF0dXJlIGZpcnN0Ci0g4pyFIERvbid0IGNsb3NlIGJyb3dzZXIgZHVyaW5nIG1pZ3JhdGlvbgotIOKchSBNb25pdG9yIHRoZSBwcm9jZXNzCi0g4pyFIE5vdGUgYW55IHdhcm5pbmdzCgojIyMgQWZ0ZXIgTWlncmF0aW9uCgotIOKchSBWZXJpZnkgbWlncmF0ZWQgZGF0YQotIOKchSBDaGVjayBhbGwgcmVsYXRpb25zaGlwcwotIOKchSBUZXN0IGZyb250ZW5kIGRpc3BsYXkKLSDinIUgUmV2aWV3IGxvZ3MgZm9yIGlzc3VlcwotIOKchSBLZWVwIGJhY2t1cCB1bnRpbCB2ZXJpZmllZAoKIyMgQWR2YW5jZWQgVHJvdWJsZXNob290aW5nCgojIyMgRGF0YWJhc2UgSXNzdWVzCgpJZiBleHBlcmllbmNpbmcgZGF0YWJhc2UtcmVsYXRlZCBpc3N1ZXM6CgoxLiAqKkNoZWNrIERhdGFiYXNlIENvbm5lY3Rpb24qKgogICBgYGBwaHAKICAgLy8gVGVzdCBjb25uZWN0aW9uCiAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoIlNFTEVDVCAxIik7CiAgIGBgYAoKMi4gKipWZXJpZnkgVGFibGUgU3RydWN0dXJlKioKICAgLSBDaGVjayBDR0Jsb2cgdGFibGVzIGV4aXN0CiAgIC0gVmVyaWZ5IExJU0UgdGFibGVzIGV4aXN0CiAgIC0gQ2hlY2sgdGFibGUgcGVybWlzc2lvbnMKCjMuICoqUmV2aWV3IFNRTCBRdWVyaWVzKioKICAgLSBDaGVjayBtaWdyYXRpb24gbG9ncyBmb3IgU1FMIGVycm9ycwogICAtIFZlcmlmeSBxdWVyeSBzeW50YXgKICAgLSBDaGVjayBmb3IgY29uc3RyYWludCB2aW9sYXRpb25zCgojIyMgTW9kdWxlIENvbmZsaWN0cwoKSWYgZXhwZXJpZW5jaW5nIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXM6CgoxLiAqKkNoZWNrIE1vZHVsZSBMb2FkIE9yZGVyKioKICAgLSBWZXJpZnkgbW9kdWxlIGRlcGVuZGVuY2llcwogICAtIENoZWNrIG1vZHVsZSBpbml0aWFsaXphdGlvbgoKMi4gKipSZXZpZXcgTW9kdWxlIEhvb2tzKioKICAgLSBDaGVjayBmb3IgaG9vayBjb25mbGljdHMKICAgLSBWZXJpZnkgZXZlbnQgaGFuZGxlcnMKCjMuICoqVGVzdCBpbiBJc29sYXRpb24qKgogICAtIERpc2FibGUgb3RoZXIgbW9kdWxlcyB0ZW1wb3JhcmlseQogICAtIFRlc3QgbWlncmF0aW9uIGFsb25lCgojIyBSZWNvdmVyeSBQcm9jZWR1cmVzCgojIyMgUm9sbGJhY2sgTWlncmF0aW9uCgpJZiBtaWdyYXRpb24gZmFpbHM6CgoxLiAqKkF1dG9tYXRpYyBSb2xsYmFjayoqCiAgIC0gTW9kdWxlIHVzZXMgdHJhbnNhY3Rpb25zCiAgIC0gRmFpbGVkIG1pZ3JhdGlvbnMgYXV0by1yb2xsYmFjawogICAtIE9yaWdpbmFsIGRhdGEgdW5jaGFuZ2VkCgoyLiAqKk1hbnVhbCBDbGVhbnVwKioKICAgLSBEZWxldGUgZmFpbGVkIExJU0UgaW5zdGFuY2UKICAgLSBSZW1vdmUgcGFydGlhbCBkYXRhCiAgIC0gUmVzdG9yZSBmcm9tIGJhY2t1cCBpZiBuZWVkZWQKCiMjIyBSZXN0b3JlIGZyb20gQmFja3VwCgpJZiBkYXRhIGNvcnJ1cHRpb24gb2NjdXJzOgoKMS4gKipEYXRhYmFzZSBSZXN0b3JlKioKICAgLSBSZXN0b3JlIGZyb20gYmFja3VwCiAgIC0gVmVyaWZ5IGRhdGEgaW50ZWdyaXR5CiAgIC0gUmUtcnVuIG1pZ3JhdGlvbiBpZiBuZWVkZWQKCjIuICoqU2VsZWN0aXZlIFJlc3RvcmUqKgogICAtIFJlc3RvcmUgc3BlY2lmaWMgdGFibGVzCiAgIC0gUHJlc2VydmUgb3RoZXIgZGF0YQogICAtIFJlLW1pZ3JhdGUgYWZmZWN0ZWQgZGF0YQoKIyMgQWRkaXRpb25hbCBSZXNvdXJjZXMKCi0gW1VzYWdlIEd1aWRlXShVU0FHRS5tZCkgLSBDb21wbGV0ZSB1c2FnZSBpbnN0cnVjdGlvbnMKLSBbSW5zdGFsbGF0aW9uIEd1aWRlXShJTlNUQUxMQVRJT04ubWQpIC0gSW5zdGFsbGF0aW9uIGRldGFpbHMKLSBbRGF0YSBNYXBwaW5nIEd1aWRlXShEQVRBX01BUFBJTkcubWQpIC0gRGF0YSBtYXBwaW5nIGluZm9ybWF0aW9uCi0gW0dpdEh1YiBSZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vbWFzdGVyMzM5NS9NQVNfQ0dCbG9nVG9MSVNFKSAtIFNvdXJjZSBjb2RlIGFuZCBpc3N1ZXMKCg==]]></data>
	</file>
	<file>
	  <filename>/docs/USAGE.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBVc2FnZSBHdWlkZQoKQ29tcGxldGUgZ3VpZGUgZm9yIHVzaW5nIHRoZSBNQVMgQ0dCbG9nIHRvIExJU0UgTWlncmF0aW9uIG1vZHVsZS4KCiMjIEdldHRpbmcgU3RhcnRlZAoKIyMjIEFjY2Vzc2luZyB0aGUgTW9kdWxlCgoxLiBMb2cgaW50byB5b3VyIENNU01TIGFkbWluIHBhbmVsCjIuIE5hdmlnYXRlIHRvICoqRXh0ZW5zaW9ucyDihpIgTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbioqCjMuIFlvdSdsbCBzZWUgdGhlIE1pZ3JhdGlvbiB0YWIgd2l0aCBwcmVyZXF1aXNpdGVzIGNoZWNrCgojIyMgVW5kZXJzdGFuZGluZyB0aGUgSW50ZXJmYWNlCgpUaGUgbW9kdWxlIGludGVyZmFjZSBjb25zaXN0cyBvZiB0aHJlZSBtYWluIHRhYnM6CgotICoqTWlncmF0aW9uKio6IE1haW4gbWlncmF0aW9uIGludGVyZmFjZQotICoqQWRtaW4gU2V0dGluZ3MqKjogTW9kdWxlIGNvbmZpZ3VyYXRpb24KLSAqKkRvbmF0aW9ucyoqOiBTdXBwb3J0IGluZm9ybWF0aW9uCgojIyBQcmVyZXF1aXNpdGVzIENoZWNrCgpCZWZvcmUgc3RhcnRpbmcgYSBtaWdyYXRpb24sIHRoZSBtb2R1bGUgY2hlY2tzOgoKLSDinJMgQ0dCbG9nIG1vZHVsZSBpcyBpbnN0YWxsZWQKLSDinJMgTElTRSBtb2R1bGUgaXMgaW5zdGFsbGVkICAKLSDinJMgQ0dCbG9nIGNvbnRhaW5zIGRhdGEgdG8gbWlncmF0ZQoKQWxsIHByZXJlcXVpc2l0ZXMgbXVzdCBiZSBtZXQgYmVmb3JlIHByb2NlZWRpbmcuCgojIyBNaWdyYXRpb24gT3B0aW9ucwoKIyMjIE9wdGlvbiAxOiBDcmVhdGUgTmV3IExJU0UgSW5zdGFuY2UKCkNyZWF0ZSBhIGJyYW5kIG5ldyBMSVNFIGluc3RhbmNlIHdpdGggeW91ciBDR0Jsb2cgZGF0YS4KCioqU3RlcHM6KioKCjEuIFNlbGVjdCAqKiJDcmVhdGUgTmV3IExJU0UgSW5zdGFuY2UiKioKMi4gKipJbnN0YW5jZSBOYW1lKiogKG9wdGlvbmFsKToKICAgLSBFbnRlciBhbiBhbHBoYW51bWVyaWMgbmFtZSAobm8gc3BhY2VzKQogICAtIExlYXZlIGVtcHR5IGZvciBhdXRvLWdlbmVyYXRpb24KICAgLSBGb3JtYXQ6IGBDR0Jsb2dNaWdyYXRlZFlZWVlNTURESEhNTVNTYAozLiAqKkZyaWVuZGx5IE5hbWUqKiAob3B0aW9uYWwpOgogICAtIEVudGVyIGEgZGlzcGxheSBuYW1lCiAgIC0gTGVhdmUgZW1wdHkgZm9yIGF1dG8tZ2VuZXJhdGlvbgogICAtIEZvcm1hdDogYENHQmxvZyBNaWdyYXRlZCAtIFlZWVktTU0tREQgSEg6TU06U1NgCjQuIFNlbGVjdCBkYXRhIHR5cGVzIHRvIG1pZ3JhdGUKNS4gQ2xpY2sgKioiUHJldmlldyBNaWdyYXRpb24iKiogb3IgKioiU3RhcnQgTWlncmF0aW9uIioqCgoqKkF1dG8tR2VuZXJhdGlvbjoqKgotIElmIGluc3RhbmNlIG5hbWUgaXMgZW1wdHksIGdlbmVyYXRlczogYENHQmxvZ01pZ3JhdGVkMjAyNTExMjgwMDQ2NDhgCi0gSWYgZnJpZW5kbHkgbmFtZSBpcyBlbXB0eSwgZ2VuZXJhdGVzOiBgQ0dCbG9nIE1pZ3JhdGVkIC0gMjAyNS0xMS0yOCAwMDo0Njo0OGAKLSBBdXRvbWF0aWNhbGx5IGhhbmRsZXMgbmFtaW5nIGNvbmZsaWN0cyBieSBhcHBlbmRpbmcgbnVtYmVycwoKIyMjIE9wdGlvbiAyOiBVc2UgRXhpc3RpbmcgTElTRSBJbnN0YW5jZQoKQ29weSBkYXRhIHRvIGFuIGV4aXN0aW5nIExJU0UgaW5zdGFuY2UuCgoqKlN0ZXBzOioqCgoxLiBTZWxlY3QgKioiVXNlIEV4aXN0aW5nIExJU0UgSW5zdGFuY2UiKioKMi4gQ2hvb3NlIGFuIGluc3RhbmNlIGZyb20gdGhlIGRyb3Bkb3duCjMuIFNlbGVjdCBkYXRhIHR5cGVzIHRvIG1pZ3JhdGUKNC4gQ2xpY2sgKioiUHJldmlldyBNaWdyYXRpb24iKiogb3IgKioiU3RhcnQgTWlncmF0aW9uIioqCgoqKkltcG9ydGFudDoqKiBUaGlzIHdpbGwgYWRkIGRhdGEgdG8gdGhlIGV4aXN0aW5nIGluc3RhbmNlLiBFbnN1cmUgeW91IHdhbnQgdG8gbWVyZ2UgZGF0YS4KCiMjIERhdGEgU2VsZWN0aW9uCgpDaG9vc2Ugd2hhdCB0byBtaWdyYXRlOgoKLSDimJEgKipNaWdyYXRlIEFydGljbGVzKio6IE1pZ3JhdGVzIGFsbCBDR0Jsb2cgYXJ0aWNsZXMgdG8gTElTRSBpdGVtcwotIOKYkSAqKk1pZ3JhdGUgQ2F0ZWdvcmllcyoqOiBNaWdyYXRlcyBjYXRlZ29yaWVzIHdpdGggaGllcmFyY2h5Ci0g4piRICoqTWlncmF0ZSBDdXN0b20gRmllbGRzKio6IE1pZ3JhdGVzIGZpZWxkIGRlZmluaXRpb25zCi0g4piRICoqTWlncmF0ZSBGaWVsZCBWYWx1ZXMqKjogTWlncmF0ZXMgZmllbGQgdmFsdWVzIGZvciBhcnRpY2xlcwoKWW91IGNhbiBzZWxlY3QgYW55IGNvbWJpbmF0aW9uIG9mIHRoZXNlIG9wdGlvbnMuCgojIyBQcmV2aWV3IE1pZ3JhdGlvbgoKQWx3YXlzIHByZXZpZXcgYmVmb3JlIG1pZ3JhdGluZzoKCjEuIENsaWNrICoqIlByZXZpZXcgTWlncmF0aW9uIioqIGJ1dHRvbgoyLiBSZXZpZXcgdGhlIHN0YXRpc3RpY3M6CiAgIC0gQXJ0aWNsZXMgdG8gbWlncmF0ZTogWAogICAtIENhdGVnb3JpZXMgdG8gbWlncmF0ZTogWAogICAtIEZpZWxkIGRlZmluaXRpb25zIHRvIG1pZ3JhdGU6IFgKICAgLSBGaWVsZCB2YWx1ZXMgdG8gbWlncmF0ZTogWAozLiBDbGljayAqKiJDYW5jZWwiKiogdG8gZ28gYmFjayBhbmQgYWRqdXN0IHNldHRpbmdzCjQuIElmIHNhdGlzZmllZCwgcmV0dXJuIGFuZCBjbGljayAqKiJTdGFydCBNaWdyYXRpb24iKioKCiMjIFN0YXJ0aW5nIE1pZ3JhdGlvbgoKMS4gVmVyaWZ5IHlvdXIgc2VsZWN0aW9ucwoyLiBDbGljayAqKiJTdGFydCBNaWdyYXRpb24iKiogYnV0dG9uCjMuIENvbmZpcm0gdGhlIGFjdGlvbiAoSmF2YVNjcmlwdCBjb25maXJtYXRpb24pCjQuIFdhaXQgZm9yIG1pZ3JhdGlvbiB0byBjb21wbGV0ZQo1LiBSZXZpZXcgcmVzdWx0cwoKIyMjIE1pZ3JhdGlvbiBQcm9jZXNzCgpUaGUgbWlncmF0aW9uIGZvbGxvd3MgdGhlc2Ugc3RlcHM6CgoxLiAqKlZhbGlkYXRpb24qKjogQ2hlY2tzIHByZXJlcXVpc2l0ZXMgYW5kIHZhbGlkYXRlcyBpbnB1dAoyLiAqKkluc3RhbmNlIENyZWF0aW9uKiogKGlmIG5ldyk6IENyZWF0ZXMgTElTRSBpbnN0YW5jZQozLiAqKkNhdGVnb3JpZXMqKjogTWlncmF0ZXMgY2F0ZWdvcmllcyBmaXJzdCAobmVlZGVkIGZvciByZWxhdGlvbnNoaXBzKQo0LiAqKkZpZWxkIERlZmluaXRpb25zKio6IE1pZ3JhdGVzIGN1c3RvbSBmaWVsZCBkZWZpbml0aW9ucwo1LiAqKkFydGljbGVzKio6IE1pZ3JhdGVzIGFydGljbGVzIHdpdGggY2F0ZWdvcnkgcmVsYXRpb25zaGlwcwo2LiAqKkZpZWxkIFZhbHVlcyoqOiBNaWdyYXRlcyBjdXN0b20gZmllbGQgdmFsdWVzCjcuICoqVmVyaWZpY2F0aW9uKio6IENvbmZpcm1zIG1pZ3JhdGlvbiBzdWNjZXNzCgojIyMgVHJhbnNhY3Rpb24gU2FmZXR5CgotIEFsbCBtaWdyYXRpb25zIHVzZSBkYXRhYmFzZSB0cmFuc2FjdGlvbnMKLSBPbiBlcnJvciwgYWxsIGNoYW5nZXMgYXJlIHJvbGxlZCBiYWNrCi0gT3JpZ2luYWwgZGF0YSByZW1haW5zIHVuY2hhbmdlZAoKIyMgTWlncmF0aW9uIFJlc3VsdHMKCkFmdGVyIG1pZ3JhdGlvbiwgeW91J2xsIHNlZToKCi0gKipBcnRpY2xlcyBtaWdyYXRlZCoqOiBDb3VudCBvZiBtaWdyYXRlZCBhcnRpY2xlcwotICoqQ2F0ZWdvcmllcyBtaWdyYXRlZCoqOiBDb3VudCBvZiBtaWdyYXRlZCBjYXRlZ29yaWVzCi0gKipGaWVsZCBkZWZpbml0aW9ucyBtaWdyYXRlZCoqOiBDb3VudCBvZiBmaWVsZCBkZWZpbml0aW9ucwotICoqRmllbGQgdmFsdWVzIG1pZ3JhdGVkKio6IENvdW50IG9mIGZpZWxkIHZhbHVlcwotICoqV2FybmluZ3MqKiAoaWYgYW55KTogTm9uLWNyaXRpY2FsIGlzc3VlcyBlbmNvdW50ZXJlZAoKIyMjIENoZWNraW5nIFJlc3VsdHMKCjEuIFJldmlldyB0aGUgcmVzdWx0cyBwYWdlIGFmdGVyIG1pZ3JhdGlvbgoyLiBDaGVjayBDTVNNUyBBZG1pbiBMb2cgZm9yIGRldGFpbGVkIGxvZ3MKMy4gVmVyaWZ5IGRhdGEgaW4geW91ciBMSVNFIGluc3RhbmNlCjQuIENoZWNrIG1vZHVsZSBsb2cgZmlsZXMgaWYgbmVlZGVkCgojIyBEYXRhIE1hcHBpbmcKCkZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBob3cgZGF0YSBpcyBtYXBwZWQgZnJvbSBDR0Jsb2cgdG8gTElTRSwgc2VlIHRoZSBbRGF0YSBNYXBwaW5nIEd1aWRlXShEQVRBX01BUFBJTkcubWQpLgoKIyMjIFF1aWNrIFJlZmVyZW5jZQoKLSAqKkFydGljbGVzKiog4oaSICoqSXRlbXMqKjogQWxsIGFydGljbGUgZGF0YSBpcyBtaWdyYXRlZCB0byBMSVNFIGl0ZW1zCi0gKipDYXRlZ29yaWVzKiog4oaSICoqQ2F0ZWdvcmllcyoqOiBIaWVyYXJjaHkgYW5kIHJlbGF0aW9uc2hpcHMgcHJlc2VydmVkCi0gKipDdXN0b20gRmllbGRzKiog4oaSICoqRmllbGQgRGVmaW5pdGlvbnMqKjogRmllbGQgdHlwZXMgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQKLSAqKkZpZWxkIFZhbHVlcyoqIOKGkiAqKkl0ZW0gRmllbGQgVmFsdWVzKio6IExpbmtlZCB0byBtaWdyYXRlZCBpdGVtcwoKU2VlIFtEYXRhIE1hcHBpbmcgR3VpZGVdKERBVEFfTUFQUElORy5tZCkgZm9yIGNvbXBsZXRlIG1hcHBpbmcgZGV0YWlscy4KCiMjIEJlc3QgUHJhY3RpY2VzCgojIyMgQmVmb3JlIE1pZ3JhdGlvbgoKMS4gKipCYWNrdXAgeW91ciBkYXRhYmFzZSoqIC0gRXNzZW50aWFsIHNhZmV0eSBtZWFzdXJlCjIuIFRlc3Qgb24gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgZmlyc3QKMy4gVmVyaWZ5IENHQmxvZyBkYXRhIGlzIGNvcnJlY3QKNC4gQ2hlY2sgYXZhaWxhYmxlIGRpc2sgc3BhY2UKCiMjIyBEdXJpbmcgTWlncmF0aW9uCgoxLiBVc2UgUHJldmlldyBmZWF0dXJlIGJlZm9yZSBtaWdyYXRpbmcKMi4gRG9uJ3QgY2xvc2UgYnJvd3NlciBkdXJpbmcgbWlncmF0aW9uCjMuIE1vbml0b3IgdGhlIHByb2Nlc3MKNC4gTm90ZSBhbnkgd2FybmluZ3MKCiMjIyBBZnRlciBNaWdyYXRpb24KCjEuIFZlcmlmeSBtaWdyYXRlZCBkYXRhCjIuIENoZWNrIGFsbCByZWxhdGlvbnNoaXBzCjMuIFRlc3QgZnJvbnRlbmQgZGlzcGxheQo0LiBSZXZpZXcgbG9ncyBmb3IgYW55IGlzc3VlcwoKIyMgVHJvdWJsZXNob290aW5nCgojIyMgTWlncmF0aW9uIEZhaWxzCgoxLiBDaGVjayBDTVNNUyBBZG1pbiBMb2cgZm9yIGVycm9ycwoyLiBWZXJpZnkgZGF0YWJhc2UgcGVybWlzc2lvbnMKMy4gQ2hlY2sgZGlzayBzcGFjZQo0LiBSZXZpZXcgbW9kdWxlIGxvZyBmaWxlcwoKIyMjIERhdGEgTWlzc2luZwoKMS4gVmVyaWZ5IHNvdXJjZSBkYXRhIGV4aXN0cyBpbiBDR0Jsb2cKMi4gQ2hlY2sgbWlncmF0aW9uIHJlc3VsdHMKMy4gUmV2aWV3IHdhcm5pbmdzCjQuIENoZWNrIGNhdGVnb3J5L2FydGljbGUgcmVsYXRpb25zaGlwcwoKIyMjIEluc3RhbmNlIENyZWF0aW9uIEZhaWxzCgoxLiBWZXJpZnkgTElTRSBtb2R1bGUgaXMgd29ya2luZwoyLiBDaGVjayBmb3IgbmFtaW5nIGNvbmZsaWN0cwozLiBWZXJpZnkgcGVybWlzc2lvbnMKNC4gQ2hlY2sgZGlzayBzcGFjZQoKIyMgU2V0dGluZ3MKCiMjIyBBZG1pbiBTZXR0aW5ncyBUYWIKCkNvbmZpZ3VyZSBtb2R1bGUgYmVoYXZpb3I6CgotICoqTW9kdWxlIEZyaWVuZGx5IE5hbWUqKjogQ3VzdG9taXplIHRoZSBtb2R1bGUgbmFtZSBpbiBhZG1pbiBuYXZpZ2F0aW9uCi0gKipEb25hdGlvbnMgVGFiKio6IFNob3cvaGlkZSB0aGUgZG9uYXRpb25zIHRhYgoKQWNjZXNzIHNldHRpbmdzIHZpYSAqKkV4dGVuc2lvbnMg4oaSIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24g4oaSIEFkbWluIFNldHRpbmdzKioKCiMjIyBMb2dnaW5nCgpUaGUgbW9kdWxlIHByb3ZpZGVzIGNvbXByZWhlbnNpdmUgbG9nZ2luZzoKCi0gKipDTVNNUyBBZG1pbiBMb2cqKjogQWxsIG1pZ3JhdGlvbiBhY3Rpdml0aWVzIGFyZSBsb2dnZWQgdG8gKipTaXRlIEFkbWluIOKGkiBBZG1pbiBMb2cqKgotICoqTW9kdWxlIExvZyBGaWxlcyoqOiBEZXRhaWxlZCBsb2dzIGFyZSBzdG9yZWQgaW4gYG1vZHVsZXMvTUFTX0NHQmxvZ1RvTElTRS9sb2dzL2AKCkxvZyBlbnRyaWVzIGluY2x1ZGU6Ci0gTWlncmF0aW9uIHN0YXJ0L2NvbXBsZXRpb24KLSBOdW1iZXIgb2YgaXRlbXMgbWlncmF0ZWQKLSBFcnJvcnMgYW5kIHdhcm5pbmdzCi0gSW5zdGFuY2UgY3JlYXRpb24gZGV0YWlscwoKIyMgVGlwcwoKLSBTdGFydCB3aXRoIGEgc21hbGwgdGVzdCBtaWdyYXRpb24KLSBVc2UgcHJldmlldyBiZWZvcmUgbGFyZ2UgbWlncmF0aW9ucwotIEtlZXAgYmFja3VwcyBiZWZvcmUgZWFjaCBtaWdyYXRpb24KLSBEb2N1bWVudCB5b3VyIG1pZ3JhdGlvbiBzZXR0aW5ncwotIFJldmlldyBsb2dzIHJlZ3VsYXJseQoKIyMgQWR2YW5jZWQgVXNhZ2UKCiMjIyBNaWdyYXRpbmcgTXVsdGlwbGUgSW5zdGFuY2VzCgpZb3UgY2FuIGNyZWF0ZSBtdWx0aXBsZSBMSVNFIGluc3RhbmNlcyBmcm9tIHRoZSBzYW1lIENHQmxvZyBkYXRhOgoKMS4gRmlyc3QgbWlncmF0aW9uOiBDcmVhdGUgaW5zdGFuY2UgIkJsb2cyMDI0IgoyLiBTZWNvbmQgbWlncmF0aW9uOiBDcmVhdGUgaW5zdGFuY2UgIkJsb2dBcmNoaXZlIgozLiBVc2UgZGlmZmVyZW50IGluc3RhbmNlIG5hbWVzIGVhY2ggdGltZQoKIyMjIFNlbGVjdGl2ZSBEYXRhIE1pZ3JhdGlvbgoKTWlncmF0ZSBzcGVjaWZpYyBkYXRhIHR5cGVzOgoKLSBPbmx5IGNhdGVnb3JpZXM6IFVuY2hlY2sgYXJ0aWNsZXMgYW5kIGZpZWxkcwotIE9ubHkgYXJ0aWNsZXM6IFVuY2hlY2sgY2F0ZWdvcmllcyBhbmQgZmllbGRzCi0gQ3VzdG9tIGZpZWxkcyBvbmx5OiBVbmNoZWNrIGFydGljbGVzIGFuZCBjYXRlZ29yaWVzCgpUaGlzIGFsbG93cyBmb3IgZmxleGlibGUgZGF0YSBvcmdhbml6YXRpb24uCgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_migratetab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pZ3JhdGlvbiBUYWIgRnVuY3Rpb24KICogTWFpbiBtaWdyYXRpb24gaW50ZXJmYWNlCiAqLwoKLy8gTm90ZTogVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGZyb20gYWN0aW9uLmRlZmF1bHRhZG1pbi5waHAsIHNvIGNtc21zKCkgc2hvdWxkIGFscmVhZHkgYmUgYXZhaWxhYmxlCgovLyBGdW5jdGlvbiB0byBsb2FkIGNsYXNzZXMgb25seSB3aGVuIG5lZWRlZApmdW5jdGlvbiBsb2FkX21pZ3JhdGlvbl9jbGFzc2VzKCRtb2R1bGUpIHsKICAgIHN0YXRpYyAkY2xhc3Nlc19sb2FkZWQgPSBmYWxzZTsKICAgIGlmICgkY2xhc3Nlc19sb2FkZWQpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIAogICAgdHJ5IHsKICAgICAgICAkbW9kdWxlX3BhdGggPSAkbW9kdWxlLT5HZXRNb2R1bGVQYXRoKCk7CiAgICAgICAgaWYgKCFpc19kaXIoJG1vZHVsZV9wYXRoIC4gJy9saWInKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdMaWJyYXJ5IGRpcmVjdG9yeSBub3QgZm91bmQ6ICcgLiAkbW9kdWxlX3BhdGggLiAnL2xpYicpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkdmFsaWRhdG9yX2ZpbGUgPSAkbW9kdWxlX3BhdGggLiAnL2xpYi9jbGFzcy5NaWdyYXRpb25WYWxpZGF0b3IucGhwJzsKICAgICAgICAkbWFwcGVyX2ZpbGUgPSAkbW9kdWxlX3BhdGggLiAnL2xpYi9jbGFzcy5EYXRhTWFwcGVyLnBocCc7CiAgICAgICAgJGVuZ2luZV9maWxlID0gJG1vZHVsZV9wYXRoIC4gJy9saWIvY2xhc3MuTWlncmF0aW9uRW5naW5lLnBocCc7CiAgICAgICAgCiAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkdmFsaWRhdG9yX2ZpbGUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1ZhbGlkYXRvciBjbGFzcyBub3QgZm91bmQ6ICcgLiAkdmFsaWRhdG9yX2ZpbGUpOwogICAgICAgIH0KICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRtYXBwZXJfZmlsZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignRGF0YU1hcHBlciBjbGFzcyBub3QgZm91bmQ6ICcgLiAkbWFwcGVyX2ZpbGUpOwogICAgICAgIH0KICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRlbmdpbmVfZmlsZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTWlncmF0aW9uRW5naW5lIGNsYXNzIG5vdCBmb3VuZDogJyAuICRlbmdpbmVfZmlsZSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJlcXVpcmVfb25jZSgkdmFsaWRhdG9yX2ZpbGUpOwogICAgICAgIHJlcXVpcmVfb25jZSgkbWFwcGVyX2ZpbGUpOwogICAgICAgIHJlcXVpcmVfb25jZSgkZW5naW5lX2ZpbGUpOwogICAgICAgICRjbGFzc2VzX2xvYWRlZCA9IHRydWU7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPjxwIGNsYXNzPSJwYWdldGV4dCIgc3R5bGU9ImNvbG9yOiByZWQ7Ij5FcnJvciBsb2FkaW5nIGNsYXNzZXM6ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD48L2Rpdj4nOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0gY2F0Y2ggKEVycm9yICRlKSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+RmF0YWwgRXJyb3IgbG9hZGluZyBjbGFzc2VzOiAnIC4gaHRtbHNwZWNpYWxjaGFycygkZS0+Z2V0TWVzc2FnZSgpKSAuICc8L3A+PC9kaXY+JzsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCi8vIEhhbmRsZSBwcmV2aWV3IHJlcXVlc3QKaWYgKGlzc2V0KCRwYXJhbXNbJ3ByZXZpZXcnXSkpIHsKICAgIGlmICghbG9hZF9taWdyYXRpb25fY2xhc3NlcygkdGhpcykpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB0cnkgewogICAgICAgICR2YWxpZGF0b3IgPSBuZXcgTWlncmF0aW9uVmFsaWRhdG9yKCR0aGlzKTsKICAgICAgICAkdmFsaWRhdG9yLT5WYWxpZGF0ZVByZXJlcXVpc2l0ZXMoKTsKICAgICAgICAkZXJyb3JzID0gJHZhbGlkYXRvci0+R2V0RXJyb3JzKCk7CiAgICAgICAgCiAgICAgICAgaWYgKCFlbXB0eSgkZXJyb3JzKSkgewogICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCRlcnJvcnMpOwogICAgICAgICAgICAkdGhpcy0+QXVkaXQoMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAnTWlncmF0aW9uIHByZXZpZXcgZmFpbGVkOiAnIC4gaW1wbG9kZSgnLCAnLCAkZXJyb3JzKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHN0YXRzID0gJHRoaXMtPkdldENHQmxvZ1N0YXRzKCk7CiAgICAgICAgCiAgICAgICAgLy8gTG9nIHByZXZpZXcgdG8gYWRtaW4gbG9nCiAgICAgICAgJHByZXZpZXdfbXNnID0gc3ByaW50ZigKICAgICAgICAgICAgJ01pZ3JhdGlvbiBwcmV2aWV3OiAlZCBhcnRpY2xlcywgJWQgY2F0ZWdvcmllcywgJWQgZmllbGQgZGVmaW5pdGlvbnMsICVkIGZpZWxkIHZhbHVlcyByZWFkeSBmb3IgbWlncmF0aW9uJywKICAgICAgICAgICAgJHN0YXRzWydhcnRpY2xlcyddLAogICAgICAgICAgICAkc3RhdHNbJ2NhdGVnb3JpZXMnXSwKICAgICAgICAgICAgJHN0YXRzWydmaWVsZGRlZnMnXSwKICAgICAgICAgICAgJHN0YXRzWydmaWVsZHZhbHMnXQogICAgICAgICk7CiAgICAgICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHByZXZpZXdfbXNnKTsKICAgICAgICAKICAgICAgICBlY2hvICc8aDI+JyAuICR0aGlzLT5MYW5nKCdwcmV2aWV3X3RpdGxlJykgLiAnPC9oMj4nOwogICAgICAgIGVjaG8gJzxwPicgLiAkdGhpcy0+TGFuZygncHJldmlld19kZXNjcmlwdGlvbicpIC4gJzwvcD4nOwogICAgICAgIGVjaG8gJzx1bD4nOwogICAgICAgIGVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ3ByZXZpZXdfYXJ0aWNsZXNfY291bnQnLCAkc3RhdHNbJ2FydGljbGVzJ10pIC4gJzwvbGk+JzsKICAgICAgICBlY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdwcmV2aWV3X2NhdGVnb3JpZXNfY291bnQnLCAkc3RhdHNbJ2NhdGVnb3JpZXMnXSkgLiAnPC9saT4nOwogICAgICAgIGVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ3ByZXZpZXdfZmllbGRkZWZzX2NvdW50JywgJHN0YXRzWydmaWVsZGRlZnMnXSkgLiAnPC9saT4nOwogICAgICAgIGVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ3ByZXZpZXdfZmllbGR2YWxzX2NvdW50JywgJHN0YXRzWydmaWVsZHZhbHMnXSkgLiAnPC9saT4nOwogICAgICAgIGVjaG8gJzwvdWw+JzsKICAgICAgICAKICAgICAgICAvLyBDcmVhdGUgcHJvcGVyIENhbmNlbCBsaW5rIGJhY2sgdG8gbWlncmF0aW9uIHRhYiAoY2xlYXJzIHByZXZpZXcgcGFyYW1ldGVyKQogICAgICAgIC8vIFVzZSBDcmVhdGVMaW5rIGRpcmVjdGx5IC0gaXQgd2lsbCBpbmNsdWRlIGFsbCBuZWNlc3Nhcnkgc2Vzc2lvbiB0b2tlbnMKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CiAgICAgICAgZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ21pZ3JhdGVfY2FuY2VsJyksIGFycmF5KCdhY3RpdmV0YWInID0+ICdtaWdyYXRlJyksICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnY2xhc3M9ImNtc19idXR0b25saW5rIicpOwogICAgICAgIGVjaG8gJzwvcD4nOwogICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgcmV0dXJuOwogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+RXJyb3I6ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD48L2Rpdj4nOwogICAgICAgIHJldHVybjsKICAgIH0KfQoKLy8gSGFuZGxlIG1pZ3JhdGlvbiBleGVjdXRpb24KaWYgKGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGUnXSkpIHsKICAgIGlmICghbG9hZF9taWdyYXRpb25fY2xhc3NlcygkdGhpcykpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB0cnkgewogICAgICAgICRlbmdpbmUgPSBuZXcgTWlncmF0aW9uRW5naW5lKCR0aGlzKTsKICAgICAgICAkZW5naW5lLT5TZXRQYXJhbWV0ZXJzKCRwYXJhbXMpOwogICAgICAgIAogICAgICAgICRyZXN1bHQgPSAkZW5naW5lLT5FeGVjdXRlKCk7CiAgICAgICAgCiAgICAgICAgaWYgKCRyZXN1bHQpIHsKICAgICAgICAgICAgJHJlc3VsdHMgPSAkZW5naW5lLT5HZXRSZXN1bHRzKCk7CiAgICAgICAgICAgICR3YXJuaW5ncyA9ICRlbmdpbmUtPkdldFdhcm5pbmdzKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBlY2hvICc8aDI+JyAuICR0aGlzLT5MYW5nKCdyZXN1bHRzX3RpdGxlJykgLiAnPC9oMj4nOwogICAgICAgICAgICBlY2hvICc8dWw+JzsKICAgICAgICAgICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygncmVzdWx0c19hcnRpY2xlc19taWdyYXRlZCcsICRyZXN1bHRzWydhcnRpY2xlcyddKSAuICc8L2xpPic7CiAgICAgICAgICAgIGVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ3Jlc3VsdHNfY2F0ZWdvcmllc19taWdyYXRlZCcsICRyZXN1bHRzWydjYXRlZ29yaWVzJ10pIC4gJzwvbGk+JzsKICAgICAgICAgICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygncmVzdWx0c19maWVsZGRlZnNfbWlncmF0ZWQnLCAkcmVzdWx0c1snZmllbGRkZWZzJ10pIC4gJzwvbGk+JzsKICAgICAgICAgICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygncmVzdWx0c19maWVsZHZhbHNfbWlncmF0ZWQnLCAkcmVzdWx0c1snZmllbGR2YWxzJ10pIC4gJzwvbGk+JzsKICAgICAgICAgICAgZWNobyAnPC91bD4nOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCFlbXB0eSgkd2FybmluZ3MpKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8aDM+JyAuICR0aGlzLT5MYW5nKCdyZXN1bHRzX3dhcm5pbmdzJywgY291bnQoJHdhcm5pbmdzKSkgLiAnPC9oMz4nOwogICAgICAgICAgICAgICAgZWNobyAnPHVsPic7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkd2FybmluZ3MgYXMgJHdhcm5pbmcpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8bGk+JyAuIGh0bWxzcGVjaWFsY2hhcnMoJHdhcm5pbmcpIC4gJzwvbGk+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gJzwvdWw+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQXVkaXQgbG9nIGlzIGFscmVhZHkgZG9uZSBieSBNaWdyYXRpb25FbmdpbmUKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZXRhYicgPT4gJ21pZ3JhdGUnLCAnbXNnJyA9PiAnbWlncmF0aW9uX2NvbXBsZXRlZCcpKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRlcnJvcnMgPSAkZW5naW5lLT5HZXRFcnJvcnMoKTsKICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZXJyb3JzKTsKICAgICAgICAgICAgLy8gQXVkaXQgbG9nIGlzIGFscmVhZHkgZG9uZSBieSBNaWdyYXRpb25FbmdpbmUKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWNobyAnPHA+JyAuICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ21pZ3JhdGVfY2FuY2VsJyksIGFycmF5KCdhY3RpdmV0YWInID0+ICdtaWdyYXRlJykpIC4gJzwvcD4nOwogICAgICAgIHJldHVybjsKICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+PHAgY2xhc3M9InBhZ2V0ZXh0IiBzdHlsZT0iY29sb3I6IHJlZDsiPkVycm9yIGR1cmluZyBtaWdyYXRpb246ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD48L2Rpdj4nOwogICAgICAgIGVjaG8gJzxwPicgLiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdtaWdyYXRlX2NhbmNlbCcpLCBhcnJheSgnYWN0aXZldGFiJyA9PiAnbWlncmF0ZScpKSAuICc8L3A+JzsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCi8vIE1haW4gbWlncmF0aW9uIGZvcm0gLSBETyBOT1QgbG9hZCBjbGFzc2VzIGhlcmUsIG9ubHkgc2hvdyB0aGUgZm9ybQovLyBHZXQgc3RhdHMgd2l0aG91dCBsb2FkaW5nIGNsYXNzZXMKdHJ5IHsKICAgICRzdGF0cyA9ICR0aGlzLT5HZXRDR0Jsb2dTdGF0cygpOwp9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICRzdGF0cyA9IGFycmF5KCdhcnRpY2xlcycgPT4gMCwgJ2NhdGVnb3JpZXMnID0+IDAsICdmaWVsZGRlZnMnID0+IDAsICdmaWVsZHZhbHMnID0+IDApOwp9IGNhdGNoIChFcnJvciAkZSkgewogICAgJHN0YXRzID0gYXJyYXkoJ2FydGljbGVzJyA9PiAwLCAnY2F0ZWdvcmllcycgPT4gMCwgJ2ZpZWxkZGVmcycgPT4gMCwgJ2ZpZWxkdmFscycgPT4gMCk7Cn0KCnRyeSB7CiAgICAkbGlzZV9pbnN0YW5jZXMgPSAkdGhpcy0+R2V0TElTRUluc3RhbmNlcygpOwp9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICRsaXNlX2luc3RhbmNlcyA9IGFycmF5KCk7Cn0gY2F0Y2ggKEVycm9yICRlKSB7CiAgICAkbGlzZV9pbnN0YW5jZXMgPSBhcnJheSgpOwp9CgovLyBEZWZhdWx0IHZhbHVlcwokaW5zdGFuY2VfbmFtZSA9IGlzc2V0KCRwYXJhbXNbJ2luc3RhbmNlX25hbWUnXSkgPyAkcGFyYW1zWydpbnN0YW5jZV9uYW1lJ10gOiAnJzsKJGluc3RhbmNlX2ZyaWVuZGx5bmFtZSA9IGlzc2V0KCRwYXJhbXNbJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZSddKSA/ICRwYXJhbXNbJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZSddIDogJyc7CiR1c2VfZXhpc3RpbmcgPSBpc3NldCgkcGFyYW1zWyd1c2VfZXhpc3RpbmcnXSkgPyAoaW50KSRwYXJhbXNbJ3VzZV9leGlzdGluZyddIDogMDsKJGV4aXN0aW5nX2luc3RhbmNlX2lkID0gaXNzZXQoJHBhcmFtc1snZXhpc3RpbmdfaW5zdGFuY2VfaWQnXSkgPyAoaW50KSRwYXJhbXNbJ2V4aXN0aW5nX2luc3RhbmNlX2lkJ10gOiAwOwokbWlncmF0ZV9hcnRpY2xlcyA9IGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGVfYXJ0aWNsZXMnXSkgPyAoaW50KSRwYXJhbXNbJ21pZ3JhdGVfYXJ0aWNsZXMnXSA6IDE7CiRtaWdyYXRlX2NhdGVnb3JpZXMgPSBpc3NldCgkcGFyYW1zWydtaWdyYXRlX2NhdGVnb3JpZXMnXSkgPyAoaW50KSRwYXJhbXNbJ21pZ3JhdGVfY2F0ZWdvcmllcyddIDogMTsKJG1pZ3JhdGVfZmllbGRkZWZzID0gaXNzZXQoJHBhcmFtc1snbWlncmF0ZV9maWVsZGRlZnMnXSkgPyAoaW50KSRwYXJhbXNbJ21pZ3JhdGVfZmllbGRkZWZzJ10gOiAxOwokbWlncmF0ZV9maWVsZHZhbHMgPSBpc3NldCgkcGFyYW1zWydtaWdyYXRlX2ZpZWxkdmFscyddKSA/IChpbnQpJHBhcmFtc1snbWlncmF0ZV9maWVsZHZhbHMnXSA6IDE7CgovLyBTdGF0aXN0aWNzCmVjaG8gJzxoMz4nIC4gJHRoaXMtPkxhbmcoJ3N0YXRpc3RpY3NfdGl0bGUnKSAuICc8L2gzPic7CmVjaG8gJzx1bD4nOwplY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2FydGljbGVzJykgLiAnOiAnIC4gJHN0YXRzWydhcnRpY2xlcyddIC4gJzwvbGk+JzsKZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygnc3RhdGlzdGljc19jYXRlZ29yaWVzJykgLiAnOiAnIC4gJHN0YXRzWydjYXRlZ29yaWVzJ10gLiAnPC9saT4nOwplY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2ZpZWxkZGVmcycpIC4gJzogJyAuICRzdGF0c1snZmllbGRkZWZzJ10gLiAnPC9saT4nOwplY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2ZpZWxkdmFscycpIC4gJzogJyAuICRzdGF0c1snZmllbGR2YWxzJ10gLiAnPC9saT4nOwplY2hvICc8L3VsPic7CgovLyBNaWdyYXRpb24gZm9ybQplY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAncG9zdCcsICcnLCBmYWxzZSwgJycsIGFycmF5KCdhY3RpdmV0YWInID0+ICdtaWdyYXRlJykpOwoKLy8gSW5zdGFuY2Ugc2VsZWN0aW9uCmVjaG8gJzxoMz4nIC4gJHRoaXMtPkxhbmcoJ2luc3RhbmNlX3NlbGVjdGlvbicpIC4gJzwvaDM+JzsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2luc3RhbmNlX2NyZWF0ZV9uZXcnKSAuICc6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0UmFkaW8oJGlkLCAndXNlX2V4aXN0aW5nJywgMCwgJHVzZV9leGlzdGluZyA9PSAwLCAnb25jbGljaz0idG9nZ2xlSW5zdGFuY2VPcHRpb25zKCkiJyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnaW5zdGFuY2VfdXNlX2V4aXN0aW5nJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFJhZGlvKCRpZCwgJ3VzZV9leGlzdGluZycsIDEsICR1c2VfZXhpc3RpbmcgPT0gMSwgJ29uY2xpY2s9InRvZ2dsZUluc3RhbmNlT3B0aW9ucygpIicpOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCi8vIE5ldyBpbnN0YW5jZSBvcHRpb25zCmVjaG8gJzxkaXYgaWQ9Im5ld19pbnN0YW5jZV9vcHRpb25zIiBzdHlsZT0iZGlzcGxheTogJyAuICgkdXNlX2V4aXN0aW5nID09IDAgPyAnYmxvY2snIDogJ25vbmUnKSAuICc7Ij4nOwplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdpbnN0YW5jZV9uYW1lJykgLiAnIDxzdHJvbmc+KG9wdGlvbmFsKTwvc3Ryb25nPjo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2luc3RhbmNlX25hbWUnLCAkaW5zdGFuY2VfbmFtZSwgNDAsIDI1NSwgJycsICdpZD0iaW5zdGFuY2VfbmFtZV9maWVsZCIgcGxhY2Vob2xkZXI9IkxlYXZlIGVtcHR5IGZvciBhdXRvLWdlbmVyYXRlZCBuYW1lIicpOwplY2hvICc8YnI+PGVtPicgLiAkdGhpcy0+TGFuZygnaW5zdGFuY2VfbmFtZV9oZWxwJykgLiAnPC9lbT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZScpIC4gJyA8c3Ryb25nPihvcHRpb25hbCk8L3N0cm9uZz46PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnN0YW5jZV9mcmllbmRseW5hbWUnLCAkaW5zdGFuY2VfZnJpZW5kbHluYW1lLCA0MCwgMjU1LCAnJywgJ2lkPSJpbnN0YW5jZV9mcmllbmRseW5hbWVfZmllbGQiIHBsYWNlaG9sZGVyPSJMZWF2ZSBlbXB0eSBmb3IgYXV0by1nZW5lcmF0ZWQgbmFtZSInKTsKZWNobyAnPGJyPjxlbT4nIC4gJHRoaXMtPkxhbmcoJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZV9oZWxwJykgLiAnPC9lbT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKZWNobyAnPC9kaXY+JzsKCi8vIEV4aXN0aW5nIGluc3RhbmNlIG9wdGlvbnMKZWNobyAnPGRpdiBpZD0iZXhpc3RpbmdfaW5zdGFuY2Vfb3B0aW9ucyIgc3R5bGU9ImRpc3BsYXk6ICcgLiAoJHVzZV9leGlzdGluZyA9PSAxID8gJ2Jsb2NrJyA6ICdub25lJykgLiAnOyI+JzsKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnaW5zdGFuY2Vfc2VsZWN0JykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwppZiAoZW1wdHkoJGxpc2VfaW5zdGFuY2VzKSkgewogICAgZWNobyAnPHA+JyAuICR0aGlzLT5MYW5nKCdpbnN0YW5jZV9ub25lJykgLiAnPC9wPic7Cn0gZWxzZSB7CiAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICBmb3JlYWNoICgkbGlzZV9pbnN0YW5jZXMgYXMgJGluc3QpIHsKICAgICAgICAkZGlzcGxheV9uYW1lID0gJGluc3QtPm1vZHVsZV9uYW1lOwogICAgICAgIGlmIChtZXRob2RfZXhpc3RzKCRpbnN0LCAnR2V0RnJpZW5kbHlOYW1lJykpIHsKICAgICAgICAgICAgJGRpc3BsYXlfbmFtZSA9ICRpbnN0LT5HZXRGcmllbmRseU5hbWUoKTsKICAgICAgICB9CiAgICAgICAgJG9wdGlvbnNbJGluc3QtPm1vZHVsZV9pZF0gPSAkZGlzcGxheV9uYW1lOwogICAgfQogICAgZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdleGlzdGluZ19pbnN0YW5jZV9pZCcsICRvcHRpb25zLCAtMSwgJGV4aXN0aW5nX2luc3RhbmNlX2lkKTsKICAgIGVjaG8gJzxicj48ZW0+JyAuICR0aGlzLT5MYW5nKCdpbnN0YW5jZV9zZWxlY3RfaGVscCcpIC4gJzwvZW0+JzsKfQplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKZWNobyAnPC9kaXY+JzsKCi8vIERhdGEgc2VsZWN0aW9uCmVjaG8gJzxoMz4nIC4gJHRoaXMtPkxhbmcoJ2RhdGFfc2VsZWN0aW9uJykgLiAnPC9oMz4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGF0YV9taWdyYXRlX2FydGljbGVzJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ21pZ3JhdGVfYXJ0aWNsZXMnLCAxLCAkbWlncmF0ZV9hcnRpY2xlcyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGF0YV9taWdyYXRlX2NhdGVnb3JpZXMnKSAuICc6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnbWlncmF0ZV9jYXRlZ29yaWVzJywgMSwgJG1pZ3JhdGVfY2F0ZWdvcmllcyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGF0YV9taWdyYXRlX2ZpZWxkZGVmcycpIC4gJzo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdtaWdyYXRlX2ZpZWxkZGVmcycsIDEsICRtaWdyYXRlX2ZpZWxkZGVmcyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGF0YV9taWdyYXRlX2ZpZWxkdmFscycpIC4gJzo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdtaWdyYXRlX2ZpZWxkdmFscycsIDEsICRtaWdyYXRlX2ZpZWxkdmFscyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKLy8gQWN0aW9uIGJ1dHRvbnMKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdwcmV2aWV3JywgJHRoaXMtPkxhbmcoJ21pZ3JhdGVfcHJldmlldycpKTsKZWNobyAnICc7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ21pZ3JhdGUnLCAkdGhpcy0+TGFuZygnbWlncmF0ZV9idXR0b24nKSk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKLy8gQWRkIGNvbmZpcm1hdGlvbiBKYXZhU2NyaXB0CmVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgdmFyIG1pZ3JhdGVCdG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dFtuYW1lPVwnbTFfbWlncmF0ZVwnXSIpOwogICAgaWYgKG1pZ3JhdGVCdG4pIHsKICAgICAgICBtaWdyYXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIWNvbmZpcm0oIicgLiBhZGRzbGFzaGVzKCR0aGlzLT5MYW5nKCdtaWdyYXRlX2NvbmZpcm0nKSkgLiAnIikpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9KTsKPC9zY3JpcHQ+JzsKCmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCi8vIEphdmFTY3JpcHQgZm9yIHRvZ2dsaW5nIGluc3RhbmNlIG9wdGlvbnMKZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpmdW5jdGlvbiB0b2dnbGVJbnN0YW5jZU9wdGlvbnMoKSB7CiAgICB2YXIgdXNlRXhpc3RpbmcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dFtuYW1lPVwnbTFfdXNlX2V4aXN0aW5nXCddW3ZhbHVlPVwnMVwnXSIpLmNoZWNrZWQ7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3X2luc3RhbmNlX29wdGlvbnMiKS5zdHlsZS5kaXNwbGF5ID0gdXNlRXhpc3RpbmcgPyAibm9uZSIgOiAiYmxvY2siOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4aXN0aW5nX2luc3RhbmNlX29wdGlvbnMiKS5zdHlsZS5kaXNwbGF5ID0gdXNlRXhpc3RpbmcgPyAiYmxvY2siIDogIm5vbmUiOwp9Cjwvc2NyaXB0Pic7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFkbWluIFNldHRpbmdzIEZ1bmN0aW9uIGZvciBNQVNfQ0dCbG9nVG9MSVNFCiAqIEJhc2VkIG9uIE1BU19EaXNxdXMgYW5kIE1BU19BSUFzc2lzdGFudCBwYXR0ZXJuCiAqLwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIGV4aXQ7CgppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgewogICAgcmV0dXJuOwp9CgovLyBDaGVjayBpZiBkb25hdGlvbnMgdGFiIGlzIGN1cnJlbnRseSBoaWRkZW4KJGRvbmF0aW9uc0hpZGRlbiA9ICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgiaGlkZWRvbmF0aW9uc3RhYiIpID09ICR0aGlzLT5HZXRWZXJzaW9uKCkpOwoKZWNobyAnPGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjQ0NDOyBwYWRkaW5nOjEwcHg7IG1hcmdpbjoxMHB4IDA7Ij4nOwplY2hvICc8aDM+JyAuICR0aGlzLT5MYW5nKCd0YWJfYWRtaW5zZXR0aW5ncycpIC4gJzwvaDM+JzsKCmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJhZG1pbl9zZXR0aW5nc19zYXZlIiwgJHJldHVybmlkKTsKZWNobyAnPHA+JzsKZWNobyAnPGxhYmVsIGZvcj0ic2hvd2RvbmF0aW9uc3RhYiI+JyAuICR0aGlzLT5MYW5nKCdzaG93ZG9uYXRpb25zdGFiJykgLiAnPC9sYWJlbD48YnIvPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAic2hvd2RvbmF0aW9uc3RhYiIsICIxIiwgISRkb25hdGlvbnNIaWRkZW4pOwplY2hvICc8L3A+JzsKCmVjaG8gJzxwPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsICR0aGlzLT5MYW5nKCJzdWJtaXQiKSk7CmVjaG8gJzwvcD4nOwplY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgplY2hvICc8L2Rpdj4nOwo/PgoK]]></data>
	</file>
	<file>
	  <filename>/function.donations.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERvbmF0aW9ucyBGdW5jdGlvbiBmb3IgTUFTX0NHQmxvZ1RvTElTRQogKiBCYXNlZCBvbiBNQVNfRGlzcXVzIGFuZCBNQVNfQUlBc3Npc3RhbnQgcGF0dGVybgogKi8KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKaWYgKCEkdGhpcy0+VmlzaWJsZVRvQWRtaW5Vc2VyKCkpIHsKICAgIHJldHVybjsKfQoKLy8gR2V0IFNtYXJ0eSBpbnN0YW5jZQokc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CgovLyBBc3NpZ24gdG8gU21hcnR5CiRzbWFydHktPmFzc2lnbignbW9kdWxlJywgJHRoaXMpOwokc21hcnR5LT5hc3NpZ24oJ2lkJywgJGlkKTsKJHNtYXJ0eS0+YXNzaWduKCdwYXJhbXMnLCAkcGFyYW1zKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXR1cm5pZCcsICRyZXR1cm5pZCk7CiRzbWFydHktPmFzc2lnbigiZm9ybXN0YXJ0IiwgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCJmb3JtZW5kIiwgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbigiaGlkZXN1Ym1pdCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJoaWRlZG9uYXRpb25zc3VibWl0IiwgJHRoaXMtPkxhbmcoImhpZGVkb25hdGlvbnNzdWJtaXQiKSkpOwokc21hcnR5LT5hc3NpZ24oImRvbmF0aW9uc3RleHQiLCAkdGhpcy0+TGFuZygiZG9uYXRpb25zdGV4dCIpKTsKJHNtYXJ0eS0+YXNzaWduKCJzcG9uc29yc3RleHQiLCAkdGhpcy0+TGFuZygic3BvbnNvcnMiKSk7CgovLyBEaXNwbGF5IHRlbXBsYXRlCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZG9uYXRpb25zLnRwbCcpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/GITHUB_SETUP.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBHaXRIdWIgUmVwb3NpdG9yeSBTZXR1cCBTdW1tYXJ5CgpUaGlzIGRvY3VtZW50IHN1bW1hcml6ZXMgd2hhdCBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGUgR2l0SHViIHJlcG9zaXRvcnkgYXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXN0ZXIzMzk1L01BU19DR0Jsb2dUb0xJU0UKCiMjIEZpbGVzIENyZWF0ZWQKCiMjIyBEb2N1bWVudGF0aW9uIEZpbGVzCgoxLiAqKlJFQURNRS5tZCoqIC0gTWFpbiByZXBvc2l0b3J5IFJFQURNRSB3aXRoOgogICAtIE92ZXJ2aWV3IGFuZCBmZWF0dXJlcwogICAtIEluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMKICAgLSBVc2FnZSBndWlkZQogICAtIERvd25sb2FkIGxpbmtzCiAgIC0gRGF0YSBtYXBwaW5nIGluZm9ybWF0aW9uCiAgIC0gVHJvdWJsZXNob290aW5nCgoyLiAqKkNIQU5HRUxPRy5tZCoqIC0gVmVyc2lvbiBoaXN0b3J5IGFuZCBjaGFuZ2VzCjMuICoqQ09OVFJJQlVUSU5HLm1kKiogLSBDb250cmlidXRpb24gZ3VpZGVsaW5lcwo0LiAqKkxJQ0VOU0UqKiAtIEdQTCB2MyBsaWNlbnNlIGZpbGUKCiMjIyBEb2N1bWVudGF0aW9uIERpcmVjdG9yeSAoYGRvY3MvYCkKCjEuICoqSU5TVEFMTEFUSU9OLm1kKiogLSBEZXRhaWxlZCBpbnN0YWxsYXRpb24gZ3VpZGUKMi4gKipVU0FHRS5tZCoqIC0gQ29tcHJlaGVuc2l2ZSB1c2FnZSBkb2N1bWVudGF0aW9uCjMuICoqRE9XTkxPQUQubWQqKiAtIERvd25sb2FkIGluc3RydWN0aW9ucyBhbmQgbGlua3MKCiMjIyBHaXRIdWIgVGVtcGxhdGVzIChgLmdpdGh1Yi9gKQoKMS4gKipwdWxsX3JlcXVlc3RfdGVtcGxhdGUubWQqKiAtIFBSIHRlbXBsYXRlIGZvciBjb250cmlidXRpb25zCgojIyBNb2R1bGUgRmlsZXMKCkFsbCBtb2R1bGUgZmlsZXMgYXJlIGluY2x1ZGVkIGluIHRoZSByZXBvc2l0b3J5OgoKLSBNYWluIG1vZHVsZSBjbGFzcyAoYE1BU19DR0Jsb2dUb0xJU0UubW9kdWxlLnBocGApCi0gQWRtaW4gYWN0aW9ucyBhbmQgZnVuY3Rpb25zCi0gTGlicmFyeSBjbGFzc2VzIChNaWdyYXRpb25FbmdpbmUsIERhdGFNYXBwZXIsIE1pZ3JhdGlvblZhbGlkYXRvcikKLSBMYW5ndWFnZSBmaWxlcwotIFRlbXBsYXRlcwotIEluc3RhbGxhdGlvbi91bmluc3RhbGxhdGlvbiBzY3JpcHRzCi0gKipNQVNfQ0dCbG9nVG9MSVNFLTEuMC4wLnhtbCoqIC0gTW9kdWxlIFhNTCBmaWxlIGZvciBNb2R1bGUgTWFuYWdlcgoKIyMgRG93bmxvYWQgRmlsZXMKCiMjIyBNb2R1bGUgWE1MIEZpbGUKCioqTG9jYXRpb24qKjogYE1BU19DR0Jsb2dUb0xJU0UvTUFTX0NHQmxvZ1RvTElTRS0xLjAuMC54bWxgCgoqKlVzYWdlKio6IERpcmVjdCBkb3dubG9hZCBsaW5rIGluIFJFQURNRS5tZCBmb3IgTW9kdWxlIE1hbmFnZXIgdXBsb2FkCgoqKkdpdEh1YiBEaXJlY3QgTGluayBGb3JtYXQqKjogCmBgYApodHRwczovL2dpdGh1Yi5jb20vbWFzdGVyMzM5NS9NQVNfQ0dCbG9nVG9MSVNFL3Jhdy9tYWluL01BU19DR0Jsb2dUb0xJU0UtMS4wLjAueG1sCmBgYAoKIyMjIE1vZHVsZSBaSVAgRmlsZQoKKipMb2NhdGlvbioqOiBgTUFTX0NHQmxvZ1RvTElTRS0xLjAuMC56aXBgIChpbiBwYXJlbnQgbW9kdWxlcyBkaXJlY3RvcnkpCgoqKkNvbnRhaW5zKio6IENvbXBsZXRlIG1vZHVsZSBmb2xkZXIgKGV4Y2x1ZGluZyBsb2dzKQoKKipVc2FnZSoqOiBNYW51YWwgaW5zdGFsbGF0aW9uIGJ5IGV4dHJhY3RpbmcgdG8gYG1vZHVsZXMvYCBkaXJlY3RvcnkKCioqTm90ZSoqOiBUaGUgWklQIGZpbGUgc2hvdWxkIGJlIHVwbG9hZGVkIHRvIEdpdEh1YiBSZWxlYXNlcyBhcyBhbiBhc3NldC4KCiMjIEdpdEh1YiBSZWxlYXNlcyBTZXR1cAoKV2hlbiBjcmVhdGluZyBhIHJlbGVhc2Ugb24gR2l0SHViOgoKMS4gKipUYWcqKjogYHYxLjAuMGAKMi4gKipUaXRsZSoqOiBgTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbiB2MS4wLjBgCjMuICoqRGVzY3JpcHRpb24qKjogQ29weSBmcm9tIENIQU5HRUxPRy5tZCB2ZXJzaW9uIDEuMC4wIHNlY3Rpb24KNC4gKipBc3NldHMgdG8gVXBsb2FkKio6CiAgIC0gYE1BU19DR0Jsb2dUb0xJU0UtMS4wLjAueG1sYCAoZnJvbSBtb2R1bGUgZGlyZWN0b3J5KQogICAtIGBNQVNfQ0dCbG9nVG9MSVNFLTEuMC4wLnppcGAgKGZyb20gbW9kdWxlcyBkaXJlY3RvcnkpCgojIyBSZXBvc2l0b3J5IFN0cnVjdHVyZQoKYGBgCk1BU19DR0Jsb2dUb0xJU0UvCuKUnOKUgOKUgCBSRUFETUUubWQgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWFpbiBSRUFETUUK4pSc4pSA4pSAIExJQ0VOU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHUEwgdjMgTGljZW5zZQrilJzilIDilIAgQ0hBTkdFTE9HLm1kICAgICAgICAgICAgICAgICAgICAgICAjIFZlcnNpb24gaGlzdG9yeQrilJzilIDilIAgQ09OVFJJQlVUSU5HLm1kICAgICAgICAgICAgICAgICAgICAjIENvbnRyaWJ1dGlvbiBndWlkZQrilJzilIDilIAgR0lUSFVCX1NFVFVQLm1kICAgICAgICAgICAgICAgICAgICAjIFRoaXMgZmlsZQrilJzilIDilIAgTUFTX0NHQmxvZ1RvTElTRS0xLjAuMC54bWwgICAgICAgICMgTW9kdWxlIFhNTCAoZGlyZWN0IGRvd25sb2FkKQrilJzilIDilIAgLmdpdGh1Yi8K4pSCICAg4pSU4pSA4pSAIHB1bGxfcmVxdWVzdF90ZW1wbGF0ZS5tZCAgICAgICMgUFIgdGVtcGxhdGUK4pSc4pSA4pSAIGRvY3MvCuKUgiAgIOKUnOKUgOKUgCBJTlNUQUxMQVRJT04ubWQgICAgICAgICAgICAgICAjIEluc3RhbGxhdGlvbiBndWlkZQrilIIgICDilJzilIDilIAgVVNBR0UubWQgICAgICAgICAgICAgICAgICAgICAgIyBVc2FnZSBndWlkZQrilIIgICDilJTilIDilIAgRE9XTkxPQUQubWQgICAgICAgICAgICAgICAgICAgIyBEb3dubG9hZCBpbnN0cnVjdGlvbnMK4pSc4pSA4pSAIGFjdGlvbi4qLnBocCAgICAgICAgICAgICAgICAgICAgICAgIyBBZG1pbiBhY3Rpb25zCuKUnOKUgOKUgCBmdW5jdGlvbi4qLnBocCAgICAgICAgICAgICAgICAgICAgICMgQWRtaW4gZnVuY3Rpb25zCuKUnOKUgOKUgCBsaWIvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTGlicmFyeSBjbGFzc2VzCuKUnOKUgOKUgCBsYW5nLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTGFuZ3VhZ2UgZmlsZXMK4pSc4pSA4pSAIHRlbXBsYXRlcy8gICAgICAgICAgICAgICAgICAgICAgICAgIyBUZW1wbGF0ZXMK4pSc4pSA4pSAIGxvZ3MvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBMb2cgZmlsZXMgKGdpdGlnbm9yZWQpCuKUnOKUgOKUgCBNQVNfQ0dCbG9nVG9MSVNFLm1vZHVsZS5waHAgICAgICAgIyBNYWluIG1vZHVsZSBjbGFzcwrilJzilIDilIAgbWV0aG9kLmluc3RhbGwucGhwICAgICAgICAgICAgICAgICAjIEluc3RhbGxhdGlvbiBzY3JpcHQK4pSc4pSA4pSAIG1ldGhvZC51bmluc3RhbGwucGhwICAgICAgICAgICAgICAgIyBVbmluc3RhbGxhdGlvbiBzY3JpcHQK4pSU4pSA4pSAIG1vZHVsZWluZm8uaW5pICAgICAgICAgICAgICAgICAgICAgIyBNb2R1bGUgbWV0YWRhdGEKYGBgCgojIyBOZXh0IFN0ZXBzIGZvciBHaXRIdWIKCjEuICoqSW5pdGlhbGl6ZSBSZXBvc2l0b3J5KiogKGlmIG5vdCBhbHJlYWR5IGRvbmUpOgogICBgYGBiYXNoCiAgIGNkIC9ob21lL25ld3N0YXJnZXRlZC5jb20vcHVibGljX2h0bWwvbW9kdWxlcy9NQVNfQ0dCbG9nVG9MSVNFCiAgIGdpdCBpbml0CiAgIGdpdCBhZGQgLgogICBnaXQgY29tbWl0IC1tICJJbml0aWFsIHJlbGVhc2UgdjEuMC4wIgogICBnaXQgYnJhbmNoIC1NIG1haW4KICAgZ2l0IHJlbW90ZSBhZGQgb3JpZ2luIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXN0ZXIzMzk1L01BU19DR0Jsb2dUb0xJU0UuZ2l0CiAgIGdpdCBwdXNoIC11IG9yaWdpbiBtYWluCiAgIGBgYAoKMi4gKipDcmVhdGUgRmlyc3QgUmVsZWFzZSoqOgogICAtIEdvIHRvIEdpdEh1YiByZXBvc2l0b3J5CiAgIC0gQ2xpY2sgIlJlbGVhc2VzIiDihpIgIkNyZWF0ZSBhIG5ldyByZWxlYXNlIgogICAtIFRhZzogYHYxLjAuMGAKICAgLSBUaXRsZTogYE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gdjEuMC4wYAogICAtIFVwbG9hZCBib3RoIFhNTCBhbmQgWklQIGZpbGVzIGFzIGFzc2V0cwoKMy4gKipWZXJpZnkgRGlyZWN0IERvd25sb2FkIExpbmtzKio6CiAgIC0gWE1MIGZpbGU6IFNob3VsZCBiZSBhY2Nlc3NpYmxlIHZpYSByYXcgR2l0SHViIFVSTAogICAtIFpJUCBmaWxlOiBTaG91bGQgYmUgZG93bmxvYWRhYmxlIGZyb20gUmVsZWFzZXMgcGFnZQoKIyMgRG93bmxvYWQgTGlua3MgaW4gUkVBRE1FCgpUaGUgUkVBRE1FLm1kIGluY2x1ZGVzIGRvd25sb2FkIGxpbmtzIHRoYXQgd29yayBhcyBmb2xsb3dzOgoKLSAqKlhNTCBGaWxlKio6IERpcmVjdCBsaW5rIHRvIGZpbGUgaW4gcmVwb3NpdG9yeSAod29ya3Mgb25jZSBwdXNoZWQgdG8gR2l0SHViKQotICoqWklQIEZpbGUqKjogTGluayB0byBHaXRIdWIgUmVsZWFzZXMgcGFnZQoKIyMgVmVyaWZpY2F0aW9uIENoZWNrbGlzdAoKLSBbeF0gUkVBRE1FLm1kIGNyZWF0ZWQgd2l0aCBhbGwgaW5mb3JtYXRpb24KLSBbeF0gQ0hBTkdFTE9HLm1kIHdpdGggdmVyc2lvbiBoaXN0b3J5Ci0gW3hdIENPTlRSSUJVVElORy5tZCB3aXRoIGd1aWRlbGluZXMKLSBbeF0gTElDRU5TRSBmaWxlIChHUEwgdjMpCi0gW3hdIERvY3VtZW50YXRpb24gaW4gZG9jcy8gZGlyZWN0b3J5Ci0gW3hdIFBSIHRlbXBsYXRlIGluIC5naXRodWIvCi0gW3hdIFhNTCBmaWxlIGluIG1vZHVsZSBkaXJlY3RvcnkKLSBbeF0gWklQIGZpbGUgY3JlYXRlZCAoZXhjbHVkaW5nIGxvZ3MpCi0gW3hdIEFsbCBmaWxlcyBoYXZlIHByb3BlciBwZXJtaXNzaW9ucwotIFt4XSBEb3dubG9hZCBpbnN0cnVjdGlvbnMgZG9jdW1lbnRlZAoKIyMgRmlsZSBMb2NhdGlvbnMKCiMjIyBPbiBTZXJ2ZXIKCi0gTW9kdWxlIGRpcmVjdG9yeTogYC9ob21lL25ld3N0YXJnZXRlZC5jb20vcHVibGljX2h0bWwvbW9kdWxlcy9NQVNfQ0dCbG9nVG9MSVNFL2AKLSBYTUwgZmlsZTogYC9ob21lL25ld3N0YXJnZXRlZC5jb20vcHVibGljX2h0bWwvbW9kdWxlcy9NQVNfQ0dCbG9nVG9MSVNFL01BU19DR0Jsb2dUb0xJU0UtMS4wLjAueG1sYAotIFpJUCBmaWxlOiBgL2hvbWUvbmV3c3RhcmdldGVkLmNvbS9wdWJsaWNfaHRtbC9tb2R1bGVzL01BU19DR0Jsb2dUb0xJU0UtMS4wLjAuemlwYAoKIyMjIEluIFJlcG9zaXRvcnkKCi0gWE1MIGZpbGUgd2lsbCBiZSBhdDogYE1BU19DR0Jsb2dUb0xJU0UtMS4wLjAueG1sYCAocm9vdCkKLSBaSVAgZmlsZSBzaG91bGQgYmUgdXBsb2FkZWQgYXMgUmVsZWFzZSBhc3NldAoKIyMgTm90ZXMKCi0gVGhlIFhNTCBmaWxlIGlzIGluY2x1ZGVkIGJvdGggYXMgYSBzdGFuZGFsb25lIGRvd25sb2FkIGFuZCBpbiB0aGUgWklQCi0gTG9nIGZpbGVzIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBaSVAgKGdpdGlnbm9yZWQpCi0gQWxsIGRvY3VtZW50YXRpb24gZm9sbG93cyBHaXRIdWIgc3RhbmRhcmRzCi0gUFIgdGVtcGxhdGUgZm9sbG93cyBiZXN0IHByYWN0aWNlcwotIENvZGUgZm9sbG93cyBwcm9qZWN0IGNvZGluZyBzdGFuZGFyZHMgKDUwMCBsaW5lcyBtYXggcGVyIGZpbGUpCgo=]]></data>
	</file>
	<file>
	  <filename>/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEhlbHAgRmlsZSBmb3IgTUFTX0NHQmxvZ1RvTElTRSBNb2R1bGUKICovCgpyZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEVuZ2xpc2ggTGFuZ3VhZ2UgRmlsZSBmb3IgTUFTX0NHQmxvZ1RvTElTRSBNb2R1bGUKICovCgovLyBNb2R1bGUgaW5mbwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ01pZ3JhdGVzIGRhdGEgZnJvbSBDR0Jsb2cgbW9kdWxlIHRvIExJU0UgaW5zdGFuY2VzLiBTdXBwb3J0cyBjcmVhdGluZyBuZXcgTElTRSBpbnN0YW5jZXMgb3IgY29weWluZyB0byBleGlzdGluZyBvbmVzLic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gaGFzIGJlZW4gaW5zdGFsbGVkIHN1Y2Nlc3NmdWxseSEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gaGFzIGJlZW4gdW5pbnN0YWxsZWQuJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24/JzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZCBzdWNjZXNzZnVsbHkuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHVuaW5zdGFsbGVkLic7CgovLyBQZXJtaXNzaW9ucwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIGRlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ3Blcm1pc3Npb25fdXNlJ10gPSAnVXNlIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24nOwoKLy8gVGFicwokbGFuZ1sndGFiX21pZ3JhdGUnXSA9ICdNaWdyYXRpb24nOwokbGFuZ1sndGFiX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1sndGFiX2RvbmF0aW9ucyddID0gJ0RvbmF0aW9ucyc7CiRsYW5nWyd0YWJfYWRtaW5zZXR0aW5ncyddID0gJ0FkbWluIFNldHRpbmdzJzsKJGxhbmdbJ2NvbmZpZ3VyYXRpb24nXSA9ICdDb25maWd1cmF0aW9uJzsKCi8vIFNldHRpbmdzCiRsYW5nWydwcm9tcHRfZnJpZW5kbHluYW1lJ10gPSAnTW9kdWxlIEZyaWVuZGx5IE5hbWUnOwokbGFuZ1snaW5mb19mcmllbmRseW5hbWUnXSA9ICdUaGlzIHNwZWNpZmllcyB0aGUgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGlkZW50aWZ5IHRoaXMgbW9kdWxlIGluIHRoZSBhZG1pbiBuYXZpZ2F0aW9uLiAgSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZC4gIFlvdSBtYXkgaGF2ZSB0byBjbGVhciB0aGUgQ01TTVMgY2FjaGUgYWZ0ZXIgY2hhbmdpbmcgdGhpcyB2YWx1ZS4nOwokbGFuZ1snc2hvd19kb25hdGlvbnMnXSA9ICdTaG93IERvbmF0aW9ucyBUYWInOwokbGFuZ1snaGlkZWRvbmF0aW9uc3N1Ym1pdCddID0gJ0hpZGUgZG9uYXRpb25zIHRhYic7CiRsYW5nWydkb25hdGlvbnNfdGFiX2hpZGRlbiddID0gJ0RvbmF0aW9ucyB0YWIgaGFzIGJlZW4gaGlkZGVuLiBZb3UgY2FuIHNob3cgaXQgYWdhaW4gaW4gQWRtaW4gU2V0dGluZ3MuJzsKJGxhbmdbJ2RvbmF0aW9uc3RleHQnXSA9ICdBIGxvdCBvZiB0aW1lIGFuZCBlZmZvcnQgaGFzIGJlZW4gcHV0IGludG8gY3JlYXRpbmcgdGhpcyBtb2R1bGUuIFBsZWFzZSBjb25zaWRlciBhIHNtYWxsIGRvbmF0aW9uICg14oKsIGZvciBpbnN0YW5jZSwgb3Igd2hhdCB5b3UgY2FuIHNwYXJlKSB1c2luZyB0aGUgUGF5UGFsLWJ1dHRvbiBiZWxvdywgZXNwZWNpYWxseSBpZiB5b3UgdXNlIHRoaXMgbW9kdWxlIGluIGEgY29tbWVyY2lhbCBjb250ZXh0LiBJZiB5b3UgZG9uYXRlIG1vcmUgdGhhbiAzMOKCrCB5b3UgY2FuIGhhdmUgYSBsaW5rIHRvIHlvdXIgY29tcGFueSBvbiB0aGlzIHBhZ2UsIGlmIHlvdSB3aXNoIHRvLiBTZW5kIG1lIGFuIGVtYWlsIGFib3V0IHdoYXQgeW91IHdvdWxkIGxpa2Ugc2hvd24gYW5kIEkgd2lsbCBwdXQgaXQgaW4gZm9yIHRoZSBuZXh0IHZlcnNpb24uIFRoYW5rIHlvdSEnOwokbGFuZ1snc3BvbnNvcnMnXSA9ICdDdXJyZW50IHNwb25zb3JzLCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEnOwokbGFuZ1snc2hvd2RvbmF0aW9uc3RhYiddID0gJ1Nob3cgZG9uYXRpb25zIHRhYic7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1snbXNnX3ByZWZzX3NhdmVkJ10gPSAnUHJlZmVyZW5jZXMgU2F2ZWQnOwokbGFuZ1snc2V0dGluZ3N1cGRhdGVkJ10gPSAnU2V0dGluZ3MgdXBkYXRlZCBzdWNjZXNzZnVsbHknOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnUHJlZmVyZW5jZXMgdXBkYXRlZCc7CgovLyBNaWdyYXRpb24gSW50ZXJmYWNlCiRsYW5nWydtaWdyYXRpb25fdGl0bGUnXSA9ICdDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24nOwokbGFuZ1snbWlncmF0aW9uX2Rlc2NyaXB0aW9uJ10gPSAnVGhpcyB0b29sIG1pZ3JhdGVzIGRhdGEgZnJvbSBDR0Jsb2cgbW9kdWxlIHRvIExJU0UgaW5zdGFuY2VzLic7CiRsYW5nWydtaWdyYXRpb25fcHJlcmVxdWlzaXRlcyddID0gJ1ByZXJlcXVpc2l0ZXMnOwokbGFuZ1snbWlncmF0aW9uX3ByZXJlcXVpc2l0ZXNfZGVzYyddID0gJ0JlZm9yZSBzdGFydGluZyBtaWdyYXRpb24sIGVuc3VyZTonOwokbGFuZ1snbWlncmF0aW9uX3ByZXJlcXVpc2l0ZXNfY2dibG9nJ10gPSAnQ0dCbG9nIG1vZHVsZSBpcyBpbnN0YWxsZWQnOwokbGFuZ1snbWlncmF0aW9uX3ByZXJlcXVpc2l0ZXNfbGlzZSddID0gJ0xJU0UgbW9kdWxlIGlzIGluc3RhbGxlZCc7CiRsYW5nWydtaWdyYXRpb25fcHJlcmVxdWlzaXRlc19kYXRhJ10gPSAnQ0dCbG9nIGNvbnRhaW5zIGRhdGEgdG8gbWlncmF0ZSc7CgovLyBTdGF0aXN0aWNzCiRsYW5nWydzdGF0aXN0aWNzX3RpdGxlJ10gPSAnQ0dCbG9nIFN0YXRpc3RpY3MnOwokbGFuZ1snc3RhdGlzdGljc19hcnRpY2xlcyddID0gJ0FydGljbGVzJzsKJGxhbmdbJ3N0YXRpc3RpY3NfY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZXMnOwokbGFuZ1snc3RhdGlzdGljc19maWVsZGRlZnMnXSA9ICdDdXN0b20gRmllbGRzJzsKJGxhbmdbJ3N0YXRpc3RpY3NfZmllbGR2YWxzJ10gPSAnRmllbGQgVmFsdWVzJzsKCi8vIEluc3RhbmNlIFNlbGVjdGlvbgokbGFuZ1snaW5zdGFuY2Vfc2VsZWN0aW9uJ10gPSAnTElTRSBJbnN0YW5jZSBTZWxlY3Rpb24nOwokbGFuZ1snaW5zdGFuY2VfY3JlYXRlX25ldyddID0gJ0NyZWF0ZSBOZXcgTElTRSBJbnN0YW5jZSc7CiRsYW5nWydpbnN0YW5jZV91c2VfZXhpc3RpbmcnXSA9ICdVc2UgRXhpc3RpbmcgTElTRSBJbnN0YW5jZSc7CiRsYW5nWydpbnN0YW5jZV9uYW1lJ10gPSAnSW5zdGFuY2UgTmFtZSc7CiRsYW5nWydpbnN0YW5jZV9uYW1lX2hlbHAnXSA9ICdFbnRlciBhIG5hbWUgZm9yIHRoZSBuZXcgTElTRSBpbnN0YW5jZSAoYWxwaGFudW1lcmljIG9ubHksIG5vIHNwYWNlcykuIElmIGxlZnQgZW1wdHksIGEgZGVmYXVsdCBuYW1lIHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuJzsKJGxhbmdbJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZSddID0gJ0ZyaWVuZGx5IE5hbWUnOwokbGFuZ1snaW5zdGFuY2VfZnJpZW5kbHluYW1lX2hlbHAnXSA9ICdFbnRlciBhIGZyaWVuZGx5IGRpc3BsYXkgbmFtZSBmb3IgdGhlIGluc3RhbmNlLiBJZiBsZWZ0IGVtcHR5LCBhIGRlZmF1bHQgbmFtZSB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5Lic7CiRsYW5nWydpbnN0YW5jZV9zZWxlY3QnXSA9ICdTZWxlY3QgRXhpc3RpbmcgSW5zdGFuY2UnOwokbGFuZ1snaW5zdGFuY2Vfc2VsZWN0X2hlbHAnXSA9ICdDaG9vc2UgYW4gZXhpc3RpbmcgTElTRSBpbnN0YW5jZSB0byBtaWdyYXRlIGRhdGEgaW50by4nOwokbGFuZ1snaW5zdGFuY2Vfbm9uZSddID0gJ05vIExJU0UgaW5zdGFuY2VzIGF2YWlsYWJsZSc7CgovLyBEYXRhIFNlbGVjdGlvbgokbGFuZ1snZGF0YV9zZWxlY3Rpb24nXSA9ICdEYXRhIHRvIE1pZ3JhdGUnOwokbGFuZ1snZGF0YV9taWdyYXRlX2FydGljbGVzJ10gPSAnTWlncmF0ZSBBcnRpY2xlcyc7CiRsYW5nWydkYXRhX21pZ3JhdGVfY2F0ZWdvcmllcyddID0gJ01pZ3JhdGUgQ2F0ZWdvcmllcyc7CiRsYW5nWydkYXRhX21pZ3JhdGVfZmllbGRkZWZzJ10gPSAnTWlncmF0ZSBDdXN0b20gRmllbGRzJzsKJGxhbmdbJ2RhdGFfbWlncmF0ZV9maWVsZHZhbHMnXSA9ICdNaWdyYXRlIEZpZWxkIFZhbHVlcyc7CgovLyBQcmV2aWV3CiRsYW5nWydwcmV2aWV3X3RpdGxlJ10gPSAnTWlncmF0aW9uIFByZXZpZXcnOwokbGFuZ1sncHJldmlld19kZXNjcmlwdGlvbiddID0gJ1JldmlldyB0aGUgZGF0YSB0aGF0IHdpbGwgYmUgbWlncmF0ZWQ6JzsKJGxhbmdbJ3ByZXZpZXdfYXJ0aWNsZXNfY291bnQnXSA9ICdBcnRpY2xlcyB0byBtaWdyYXRlOiAlcyc7CiRsYW5nWydwcmV2aWV3X2NhdGVnb3JpZXNfY291bnQnXSA9ICdDYXRlZ29yaWVzIHRvIG1pZ3JhdGU6ICVzJzsKJGxhbmdbJ3ByZXZpZXdfZmllbGRkZWZzX2NvdW50J10gPSAnRmllbGQgZGVmaW5pdGlvbnMgdG8gbWlncmF0ZTogJXMnOwokbGFuZ1sncHJldmlld19maWVsZHZhbHNfY291bnQnXSA9ICdGaWVsZCB2YWx1ZXMgdG8gbWlncmF0ZTogJXMnOwoKLy8gTWlncmF0aW9uIEFjdGlvbnMKJGxhbmdbJ21pZ3JhdGVfYnV0dG9uJ10gPSAnU3RhcnQgTWlncmF0aW9uJzsKJGxhbmdbJ21pZ3JhdGVfcHJldmlldyddID0gJ1ByZXZpZXcgTWlncmF0aW9uJzsKJGxhbmdbJ21pZ3JhdGVfY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ21pZ3JhdGVfY29uZmlybSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBzdGFydCB0aGUgbWlncmF0aW9uPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLic7CgovLyBNaWdyYXRpb24gU3RhdHVzCiRsYW5nWydtaWdyYXRpb25fc3RhcnRlZCddID0gJ01pZ3JhdGlvbiBzdGFydGVkLi4uJzsKJGxhbmdbJ21pZ3JhdGlvbl9pbl9wcm9ncmVzcyddID0gJ01pZ3JhdGlvbiBpbiBwcm9ncmVzcy4uLic7CiRsYW5nWydtaWdyYXRpb25fY29tcGxldGVkJ10gPSAnTWlncmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJzsKJGxhbmdbJ21pZ3JhdGlvbl9mYWlsZWQnXSA9ICdNaWdyYXRpb24gZmFpbGVkLiBQbGVhc2UgY2hlY2sgdGhlIGxvZ3MgZm9yIGRldGFpbHMuJzsKJGxhbmdbJ21pZ3JhdGlvbl9wYXJ0aWFsJ10gPSAnTWlncmF0aW9uIGNvbXBsZXRlZCB3aXRoIHdhcm5pbmdzLiBTb21lIGRhdGEgbWF5IG5vdCBoYXZlIGJlZW4gbWlncmF0ZWQuJzsKCi8vIE1pZ3JhdGlvbiBTdGVwcwokbGFuZ1snc3RlcF92YWxpZGF0aW9uJ10gPSAnVmFsaWRhdGluZyBwcmVyZXF1aXNpdGVzLi4uJzsKJGxhbmdbJ3N0ZXBfaW5zdGFuY2UnXSA9ICdDcmVhdGluZyBMSVNFIGluc3RhbmNlLi4uJzsKJGxhbmdbJ3N0ZXBfY2F0ZWdvcmllcyddID0gJ01pZ3JhdGluZyBjYXRlZ29yaWVzLi4uJzsKJGxhbmdbJ3N0ZXBfZmllbGRkZWZzJ10gPSAnTWlncmF0aW5nIGZpZWxkIGRlZmluaXRpb25zLi4uJzsKJGxhbmdbJ3N0ZXBfYXJ0aWNsZXMnXSA9ICdNaWdyYXRpbmcgYXJ0aWNsZXMuLi4nOwokbGFuZ1snc3RlcF9maWVsZHZhbHMnXSA9ICdNaWdyYXRpbmcgZmllbGQgdmFsdWVzLi4uJzsKJGxhbmdbJ3N0ZXBfcmVsYXRpb25zaGlwcyddID0gJ01pZ3JhdGluZyByZWxhdGlvbnNoaXBzLi4uJzsKJGxhbmdbJ3N0ZXBfdmVyaWZpY2F0aW9uJ10gPSAnVmVyaWZ5aW5nIG1pZ3JhdGlvbi4uLic7CgovLyBSZXN1bHRzCiRsYW5nWydyZXN1bHRzX3RpdGxlJ10gPSAnTWlncmF0aW9uIFJlc3VsdHMnOwokbGFuZ1sncmVzdWx0c19hcnRpY2xlc19taWdyYXRlZCddID0gJ0FydGljbGVzIG1pZ3JhdGVkOiAlcyc7CiRsYW5nWydyZXN1bHRzX2NhdGVnb3JpZXNfbWlncmF0ZWQnXSA9ICdDYXRlZ29yaWVzIG1pZ3JhdGVkOiAlcyc7CiRsYW5nWydyZXN1bHRzX2ZpZWxkZGVmc19taWdyYXRlZCddID0gJ0ZpZWxkIGRlZmluaXRpb25zIG1pZ3JhdGVkOiAlcyc7CiRsYW5nWydyZXN1bHRzX2ZpZWxkdmFsc19taWdyYXRlZCddID0gJ0ZpZWxkIHZhbHVlcyBtaWdyYXRlZDogJXMnOwokbGFuZ1sncmVzdWx0c19lcnJvcnMnXSA9ICdFcnJvcnM6ICVzJzsKJGxhbmdbJ3Jlc3VsdHNfd2FybmluZ3MnXSA9ICdXYXJuaW5nczogJXMnOwoKLy8gRXJyb3JzCiRsYW5nWydlcnJvcl9jZ2Jsb2dfbm90X2luc3RhbGxlZCddID0gJ0NHQmxvZyBtb2R1bGUgaXMgbm90IGluc3RhbGxlZC4nOwokbGFuZ1snZXJyb3JfbGlzZV9ub3RfaW5zdGFsbGVkJ10gPSAnTElTRSBtb2R1bGUgaXMgbm90IGluc3RhbGxlZC4nOwokbGFuZ1snZXJyb3Jfbm9fZGF0YSddID0gJ05vIENHQmxvZyBkYXRhIGZvdW5kIHRvIG1pZ3JhdGUuJzsKJGxhbmdbJ2Vycm9yX2luc3RhbmNlX2V4aXN0cyddID0gJ0xJU0UgaW5zdGFuY2Ugd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuJzsKJGxhbmdbJ2Vycm9yX2luc3RhbmNlX2ludmFsaWQnXSA9ICdJbnZhbGlkIGluc3RhbmNlIG5hbWUuIFVzZSBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLic7CiRsYW5nWydlcnJvcl9pbnN0YW5jZV9ub3RfZm91bmQnXSA9ICdTZWxlY3RlZCBMSVNFIGluc3RhbmNlIG5vdCBmb3VuZC4nOwokbGFuZ1snZXJyb3JfbWlncmF0aW9uX2ZhaWxlZCddID0gJ01pZ3JhdGlvbiBmYWlsZWQ6ICVzJzsKJGxhbmdbJ2Vycm9yX2RhdGFiYXNlJ10gPSAnRGF0YWJhc2UgZXJyb3I6ICVzJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcGVyZm9ybSBtaWdyYXRpb24uJzsKCi8vIFdhcm5pbmdzCiRsYW5nWyd3YXJuaW5nX25vX2NhdGVnb3JpZXMnXSA9ICdObyBjYXRlZ29yaWVzIGZvdW5kIGluIENHQmxvZy4nOwokbGFuZ1snd2FybmluZ19ub19maWVsZGRlZnMnXSA9ICdObyBjdXN0b20gZmllbGRzIGZvdW5kIGluIENHQmxvZy4nOwokbGFuZ1snd2FybmluZ19ub19hcnRpY2xlcyddID0gJ05vIGFydGljbGVzIGZvdW5kIGluIENHQmxvZy4nOwoKLy8gSGVscAokbGFuZ1snaGVscCddID0gJzxkaXYgY2xhc3M9Im1hcy1taWdyYXRpb24taGVscCI+CjxoMz5NQVMgQ0dCbG9nIHRvIExJU0UgTWlncmF0aW9uIE1vZHVsZTwvaDM+Cgo8cD48c3Ryb25nPk1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb248L3N0cm9uZz4gaXMgYSB0b29sIGZvciBtaWdyYXRpbmcgZGF0YSBmcm9tIHRoZSBDR0Jsb2cgbW9kdWxlIHRvIExJU0UgaW5zdGFuY2VzIGluIENNUyBNYWRlIFNpbXBsZS48L3A+Cgo8aDQ+RmVhdHVyZXM8L2g0Pgo8dWw+CiAgICA8bGk+PHN0cm9uZz5DcmVhdGUgTmV3IEluc3RhbmNlczo8L3N0cm9uZz4gQXV0b21hdGljYWxseSBjcmVhdGUgbmV3IExJU0UgaW5zdGFuY2VzIGZyb20gQ0dCbG9nIGRhdGE8L2xpPgogICAgPGxpPjxzdHJvbmc+VXNlIEV4aXN0aW5nIEluc3RhbmNlczo8L3N0cm9uZz4gQ29weSBkYXRhIHRvIGV4aXN0aW5nIExJU0UgaW5zdGFuY2VzPC9saT4KICAgIDxsaT48c3Ryb25nPlNlbGVjdGl2ZSBNaWdyYXRpb246PC9zdHJvbmc+IENob29zZSB3aGljaCBkYXRhIHRvIG1pZ3JhdGUgKGFydGljbGVzLCBjYXRlZ29yaWVzLCBjdXN0b20gZmllbGRzKTwvbGk+CiAgICA8bGk+PHN0cm9uZz5QcmV2aWV3Ojwvc3Ryb25nPiBQcmV2aWV3IGRhdGEgYmVmb3JlIG1pZ3JhdGlvbjwvbGk+CiAgICA8bGk+PHN0cm9uZz5Db21wcmVoZW5zaXZlIE1hcHBpbmc6PC9zdHJvbmc+IEF1dG9tYXRpY2FsbHkgbWFwcyBDR0Jsb2cgZGF0YSBzdHJ1Y3R1cmVzIHRvIExJU0UgZm9ybWF0PC9saT4KICAgIDxsaT48c3Ryb25nPkVycm9yIEhhbmRsaW5nOjwvc3Ryb25nPiBEZXRhaWxlZCBlcnJvciByZXBvcnRpbmcgYW5kIGxvZ2dpbmc8L2xpPgo8L3VsPgoKPGg0PkdldHRpbmcgU3RhcnRlZDwvaDQ+CjxvbD4KICAgIDxsaT48c3Ryb25nPlByZXJlcXVpc2l0ZXM6PC9zdHJvbmc+IEVuc3VyZSBib3RoIENHQmxvZyBhbmQgTElTRSBtb2R1bGVzIGFyZSBpbnN0YWxsZWQ8L2xpPgogICAgPGxpPjxzdHJvbmc+QWNjZXNzIE1pZ3JhdGlvbjo8L3N0cm9uZz4gR28gdG8gRXh0ZW5zaW9ucyDihpIgTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbjwvbGk+CiAgICA8bGk+PHN0cm9uZz5DaG9vc2UgSW5zdGFuY2U6PC9zdHJvbmc+IENyZWF0ZSBuZXcgb3Igc2VsZWN0IGV4aXN0aW5nIExJU0UgaW5zdGFuY2U8L2xpPgogICAgPGxpPjxzdHJvbmc+U2VsZWN0IERhdGE6PC9zdHJvbmc+IENob29zZSB3aGljaCBkYXRhIHR5cGVzIHRvIG1pZ3JhdGU8L2xpPgogICAgPGxpPjxzdHJvbmc+UHJldmlldzo8L3N0cm9uZz4gUmV2aWV3IHdoYXQgd2lsbCBiZSBtaWdyYXRlZDwvbGk+CiAgICA8bGk+PHN0cm9uZz5NaWdyYXRlOjwvc3Ryb25nPiBTdGFydCB0aGUgbWlncmF0aW9uIHByb2Nlc3M8L2xpPgo8L29sPgoKPGg0PkRhdGEgTWFwcGluZzwvaDQ+Cjx1bD4KICAgIDxsaT48c3Ryb25nPkFydGljbGVzOjwvc3Ryb25nPiBDR0Jsb2cgYXJ0aWNsZXMg4oaSIExJU0UgaXRlbXM8L2xpPgogICAgPGxpPjxzdHJvbmc+Q2F0ZWdvcmllczo8L3N0cm9uZz4gQ0dCbG9nIGNhdGVnb3JpZXMg4oaSIExJU0UgY2F0ZWdvcmllcyAoaGllcmFyY2h5IHByZXNlcnZlZCk8L2xpPgogICAgPGxpPjxzdHJvbmc+Q3VzdG9tIEZpZWxkczo8L3N0cm9uZz4gQ0dCbG9nIGZpZWxkIGRlZmluaXRpb25zIOKGkiBMSVNFIGZpZWxkIGRlZmluaXRpb25zPC9saT4KICAgIDxsaT48c3Ryb25nPkZpZWxkIFZhbHVlczo8L3N0cm9uZz4gQ0dCbG9nIGZpZWxkIHZhbHVlcyDihpIgTElTRSBpdGVtIGZpZWxkIHZhbHVlczwvbGk+CjwvdWw+Cgo8aDQ+SW1wb3J0YW50IE5vdGVzPC9oND4KPHVsPgogICAgPGxpPk1pZ3JhdGlvbiBjYW5ub3QgYmUgdW5kb25lIGF1dG9tYXRpY2FsbHkuIEJhY2t1cCB5b3VyIGRhdGEgYmVmb3JlIG1pZ3JhdGlvbi48L2xpPgogICAgPGxpPkZpZWxkIHR5cGVzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCBmcm9tIENHQmxvZyB0byBMSVNFIGZvcm1hdC48L2xpPgogICAgPGxpPkNhdGVnb3J5IGhpZXJhcmNoaWVzIGFyZSBwcmVzZXJ2ZWQgZHVyaW5nIG1pZ3JhdGlvbi48L2xpPgogICAgPGxpPkFydGljbGUgVVJMcyBhbmQgbWV0YWRhdGEgYXJlIHByZXNlcnZlZC48L2xpPgo8L3VsPgo8L2Rpdj4nOwoKLy8gQ2hhbmdlbG9nCiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+CjxsaT48c3Ryb25nPlZlcnNpb24gMS4wLjEsIDA2LjAxLjI2LCBtYXN0ZXIzMzk1PC9zdHJvbmc+OiBCdWcgZml4ZXMgYW5kIGltcHJvdmVtZW50cwogICAgPHVsPgogICAgICAgIDxsaT5GaXhlZCBkYXRhYmFzZSBjb2x1bW4gbmFtZXMgKGNyZWF0ZV90aW1lL21vZGlmaWVkX3RpbWUgaW5zdGVhZCBvZiBjcmVhdGVfZGF0ZS9tb2RpZmllZF9kYXRlKTwvbGk+CiAgICAgICAgPGxpPkZpeGVkIGNvbnRlbnQgc3RvcmFnZSAtIGFydGljbGUgY29udGVudCBhbmQgc3VtbWFyaWVzIG5vdyBjb3JyZWN0bHkgc3RvcmVkIGluIGZpZWxkdmFsIHRhYmxlPC9saT4KICAgICAgICA8bGk+QWRkZWQgYXV0b21hdGljIGNyZWF0aW9uIG9mIENvbnRlbnQgYW5kIFN1bW1hcnkgZmllbGQgZGVmaW5pdGlvbnM8L2xpPgogICAgICAgIDxsaT5GaXhlZCBmaWVsZCBkZWZpbml0aW9uIGluc2VydHMgdG8gdXNlIGNvcnJlY3QgTElTRSBzY2hlbWEgKG5hbWUsIGFsaWFzLCBoZWxwLCB0eXBlLCBwb3NpdGlvbiwgcmVxdWlyZWQsIHRlbXBsYXRlLCBleHRyYSk8L2xpPgogICAgICAgIDxsaT5SZW1vdmVkIGR1cGxpY2F0ZSBzdGF0aXN0aWNzIGRpc3BsYXkgaW4gbWlncmF0aW9uIGludGVyZmFjZTwvbGk+CiAgICAgICAgPGxpPkFkZGVkIHZpc2libGUgbGFiZWxzIGZvciByYWRpbyBidXR0b25zIGluIGluc3RhbmNlIHNlbGVjdGlvbjwvbGk+CiAgICAgICAgPGxpPlNwbGl0IE1pZ3JhdGlvbkVuZ2luZS5waHAgaW50byBzbWFsbGVyIG1vZHVsZXMgdG8gY29tcGx5IHdpdGggNTAwIGxpbmUgbGltaXQ8L2xpPgogICAgICAgIDxsaT5BZGRlZCBTdGFydCBNaWdyYXRpb24gYnV0dG9uIHRvIHByZXZpZXcgc2VjdGlvbjwvbGk+CiAgICAgICAgPGxpPkZpeGVkIGNhbGxiYWNrIGVycm9yIGZvciBsb2dnaW5nIGZ1bmN0aW9uYWxpdHk8L2xpPgogICAgPC91bD4KPC9saT4KPGxpPjxzdHJvbmc+VmVyc2lvbiAxLjAuMCwgMjAyNSwgbWFzdGVyMzM5NTwvc3Ryb25nPjogSW5pdGlhbCByZWxlYXNlCiAgICA8dWw+CiAgICAgICAgPGxpPk1pZ3JhdGUgYXJ0aWNsZXMgZnJvbSBDR0Jsb2cgdG8gTElTRTwvbGk+CiAgICAgICAgPGxpPk1pZ3JhdGUgY2F0ZWdvcmllcyB3aXRoIGhpZXJhcmNoeSBwcmVzZXJ2YXRpb248L2xpPgogICAgICAgIDxsaT5NaWdyYXRlIGN1c3RvbSBmaWVsZCBkZWZpbml0aW9ucyBhbmQgdmFsdWVzPC9saT4KICAgICAgICA8bGk+Q3JlYXRlIG5ldyBMSVNFIGluc3RhbmNlcyBvciB1c2UgZXhpc3Rpbmcgb25lczwvbGk+CiAgICAgICAgPGxpPlByZXZpZXcgbWlncmF0aW9uIGRhdGEgYmVmb3JlIGV4ZWN1dGluZzwvbGk+CiAgICAgICAgPGxpPkNvbXByZWhlbnNpdmUgZXJyb3IgaGFuZGxpbmcgYW5kIGxvZ2dpbmc8L2xpPgogICAgPC91bD4KPC9saT4KPC91bD4nOwoKLy8gQXVkaXQgbG9nIG1lc3NhZ2VzCiRsYW5nWydhdWRpdF9wcmV2aWV3X21pZ3JhdGlvbiddID0gJ1ByZXZpZXdlZCBtaWdyYXRpb246ICVzIGFydGljbGVzLCAlcyBjYXRlZ29yaWVzLCAlcyBmaWVsZCBkZWZpbml0aW9ucywgJXMgZmllbGQgdmFsdWVzJzsKJGxhbmdbJ2F1ZGl0X3N0YXJ0X21pZ3JhdGlvbiddID0gJ1N0YXJ0ZWQgbWlncmF0aW9uIHRvIExJU0UgaW5zdGFuY2U6ICVzJzsKJGxhbmdbJ2F1ZGl0X2NvbXBsZXRlX21pZ3JhdGlvbiddID0gJ0NvbXBsZXRlZCBtaWdyYXRpb246ICVzIGFydGljbGVzLCAlcyBjYXRlZ29yaWVzLCAlcyBmaWVsZCBkZWZpbml0aW9ucyBtaWdyYXRlZCc7CiRsYW5nWydhdWRpdF9mYWlsZWRfbWlncmF0aW9uJ10gPSAnTWlncmF0aW9uIGZhaWxlZDogJXMnOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.DataMapper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERhdGEgTWFwcGVyIENsYXNzCiAqIE1hcHMgQ0dCbG9nIGRhdGEgc3RydWN0dXJlcyB0byBMSVNFIGZvcm1hdAogKi8KCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgZXhpdDsKCmNsYXNzIERhdGFNYXBwZXIKewogICAgLyoqCiAgICAgKiBNYXAgQ0dCbG9nIGZpZWxkIHR5cGUgdG8gTElTRSBmaWVsZCB0eXBlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gTWFwRmllbGRUeXBlKCRjZ2Jsb2dfdHlwZSkKICAgIHsKICAgICAgICAkbWFwcGluZyA9IGFycmF5KAogICAgICAgICAgICAndGV4dGJveCcgPT4gJ3RleHQnLAogICAgICAgICAgICAndGV4dGFyZWEnID0+ICd0ZXh0YXJlYScsCiAgICAgICAgICAgICdjaGVja2JveCcgPT4gJ2NoZWNrYm94JywKICAgICAgICAgICAgJ2ZpbGUnID0+ICdmaWxlJywKICAgICAgICAgICAgJ2ltYWdlJyA9PiAnaW1hZ2UnLAogICAgICAgICAgICAnZmlsZV9zZWxlY3QnID0+ICdmaWxlX3NlbGVjdCcsCiAgICAgICAgICAgICdpbWFnZV9zZWxlY3QnID0+ICdpbWFnZV9zZWxlY3QnCiAgICAgICAgKTsKICAgICAgICAKICAgICAgICByZXR1cm4gaXNzZXQoJG1hcHBpbmdbJGNnYmxvZ190eXBlXSkgPyAkbWFwcGluZ1skY2dibG9nX3R5cGVdIDogJ3RleHQnOwogICAgfQogICAgCiAgICAvKioKICAgICAqIE1hcCBhcnRpY2xlIHN0YXR1cyB0byBhY3RpdmUgZmxhZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIE1hcFN0YXR1c1RvQWN0aXZlKCRzdGF0dXMpCiAgICB7CiAgICAgICAgcmV0dXJuICgkc3RhdHVzID09ICdwdWJsaXNoZWQnKSA/IDEgOiAwOwogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCBDR0Jsb2cgYXJ0aWNsZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRDR0Jsb2dBcnRpY2xlcygkZGIpCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2dibG9nIE9SREVSIEJZIGNnYmxvZ19pZCc7CiAgICAgICAgcmV0dXJuICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgQ0dCbG9nIGNhdGVnb3JpZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRDR0Jsb2dDYXRlZ29yaWVzKCRkYikKICAgIHsKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jZ2Jsb2dfY2F0ZWdvcmllcyBPUkRFUiBCWSBoaWVyYXJjaHksIGl0ZW1fb3JkZXInOwogICAgICAgIHJldHVybiAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IENHQmxvZyBmaWVsZCBkZWZpbml0aW9ucwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIEdldENHQmxvZ0ZpZWxkRGVmcygkZGIpCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2dibG9nX2ZpZWxkZGVmcyBPUkRFUiBCWSBpdGVtX29yZGVyJzsKICAgICAgICByZXR1cm4gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCBDR0Jsb2cgZmllbGQgdmFsdWVzIGZvciBhbiBhcnRpY2xlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gR2V0Q0dCbG9nRmllbGRWYWxzKCRkYiwgJGFydGljbGVfaWQpCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBmdi4qLCBmZC5uYW1lLCBmZC50eXBlIAogICAgICAgICAgICAgICAgICBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2NnYmxvZ19maWVsZHZhbHMgZnYKICAgICAgICAgICAgICAgICAgTEVGVCBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2NnYmxvZ19maWVsZGRlZnMgZmQgT04gZnYuZmllbGRkZWZfaWQgPSBmZC5pZAogICAgICAgICAgICAgICAgICBXSEVSRSBmdi5jZ2Jsb2dfaWQgPSA/JzsKICAgICAgICByZXR1cm4gJGRiLT5HZXRBcnJheSgkcXVlcnksIGFycmF5KCRhcnRpY2xlX2lkKSk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IENHQmxvZyBhcnRpY2xlIGNhdGVnb3JpZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRDR0Jsb2dBcnRpY2xlQ2F0ZWdvcmllcygkZGIsICRhcnRpY2xlX2lkKQogICAgewogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgY2F0ZWdvcnlfaWQgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jZ2Jsb2dfYmxvZ19jYXRlZ29yaWVzIFdIRVJFIGJsb2dfaWQgPSA/JzsKICAgICAgICAkcmVzdWx0ID0gJGRiLT5HZXRBcnJheSgkcXVlcnksIGFycmF5KCRhcnRpY2xlX2lkKSk7CiAgICAgICAgJGNhdGVnb3JpZXMgPSBhcnJheSgpOwogICAgICAgIGlmICgkcmVzdWx0KSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRyZXN1bHQgYXMgJHJvdykgewogICAgICAgICAgICAgICAgJGNhdGVnb3JpZXNbXSA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjYXRlZ29yaWVzOwogICAgfQogICAgCiAgICAvKioKICAgICAqIFByZXBhcmUgYXJ0aWNsZSBkYXRhIGZvciBMSVNFCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gUHJlcGFyZUFydGljbGVEYXRhKCRjZ2Jsb2dfYXJ0aWNsZSwgJGRiKQogICAgewogICAgICAgICRkYXRhID0gYXJyYXkoCiAgICAgICAgICAgICd0aXRsZScgPT4gJGNnYmxvZ19hcnRpY2xlWydjZ2Jsb2dfdGl0bGUnXSwKICAgICAgICAgICAgJ2RhdGEnID0+ICRjZ2Jsb2dfYXJ0aWNsZVsnY2dibG9nX2RhdGEnXSwKICAgICAgICAgICAgJ3N1bW1hcnknID0+IGlzc2V0KCRjZ2Jsb2dfYXJ0aWNsZVsnc3VtbWFyeSddKSA/ICRjZ2Jsb2dfYXJ0aWNsZVsnc3VtbWFyeSddIDogJycsCiAgICAgICAgICAgICdjcmVhdGVfZGF0ZScgPT4gJGNnYmxvZ19hcnRpY2xlWydjZ2Jsb2dfZGF0ZSddLAogICAgICAgICAgICAnbW9kaWZpZWRfZGF0ZScgPT4gaXNzZXQoJGNnYmxvZ19hcnRpY2xlWydtb2RpZmllZF9kYXRlJ10pID8gJGNnYmxvZ19hcnRpY2xlWydtb2RpZmllZF9kYXRlJ10gOiAkY2dibG9nX2FydGljbGVbJ2NnYmxvZ19kYXRlJ10sCiAgICAgICAgICAgICdhY3RpdmUnID0+IHNlbGY6Ok1hcFN0YXR1c1RvQWN0aXZlKCRjZ2Jsb2dfYXJ0aWNsZVsnc3RhdHVzJ10pLAogICAgICAgICAgICAndXJsJyA9PiBpc3NldCgkY2dibG9nX2FydGljbGVbJ3VybCddKSA/ICRjZ2Jsb2dfYXJ0aWNsZVsndXJsJ10gOiAnJywKICAgICAgICAgICAgJ2F1dGhvcicgPT4gaXNzZXQoJGNnYmxvZ19hcnRpY2xlWydhdXRob3InXSkgPyAkY2dibG9nX2FydGljbGVbJ2F1dGhvciddIDogJycsCiAgICAgICAgICAgICdwb3NpdGlvbicgPT4gMCAvLyBXaWxsIGJlIHNldCBkdXJpbmcgbWlncmF0aW9uCiAgICAgICAgKTsKICAgICAgICAKICAgICAgICAvLyBHZW5lcmF0ZSBhbGlhcyBmcm9tIHRpdGxlIGlmIFVSTCBpcyBlbXB0eQogICAgICAgIGlmIChlbXB0eSgkZGF0YVsndXJsJ10pKSB7CiAgICAgICAgICAgICRkYXRhWydhbGlhcyddID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkZGF0YVsndGl0bGUnXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGRhdGFbJ2FsaWFzJ10gPSBtdW5nZV9zdHJpbmdfdG9fdXJsKCRkYXRhWyd1cmwnXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBQcmVwYXJlIGNhdGVnb3J5IGRhdGEgZm9yIExJU0UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBQcmVwYXJlQ2F0ZWdvcnlEYXRhKCRjZ2Jsb2dfY2F0ZWdvcnkpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAnbmFtZScgPT4gJGNnYmxvZ19jYXRlZ29yeVsnbmFtZSddLAogICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+IGlzc2V0KCRjZ2Jsb2dfY2F0ZWdvcnlbJ2Rlc2NyaXB0aW9uJ10pID8gJGNnYmxvZ19jYXRlZ29yeVsnZGVzY3JpcHRpb24nXSA6ICcnLAogICAgICAgICAgICAncGFyZW50X2lkJyA9PiBpc3NldCgkY2dibG9nX2NhdGVnb3J5WydwYXJlbnRfaWQnXSkgPyAoaW50KSRjZ2Jsb2dfY2F0ZWdvcnlbJ3BhcmVudF9pZCddIDogbnVsbCwKICAgICAgICAgICAgJ3Bvc2l0aW9uJyA9PiBpc3NldCgkY2dibG9nX2NhdGVnb3J5WydpdGVtX29yZGVyJ10pID8gKGludCkkY2dibG9nX2NhdGVnb3J5WydpdGVtX29yZGVyJ10gOiAwCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBQcmVwYXJlIGZpZWxkIGRlZmluaXRpb24gZGF0YSBmb3IgTElTRQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIFByZXBhcmVGaWVsZERlZkRhdGEoJGNnYmxvZ19maWVsZGRlZikKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdhbGlhcycgPT4gJGNnYmxvZ19maWVsZGRlZlsnbmFtZSddLAogICAgICAgICAgICAndHlwZScgPT4gc2VsZjo6TWFwRmllbGRUeXBlKCRjZ2Jsb2dfZmllbGRkZWZbJ3R5cGUnXSksCiAgICAgICAgICAgICdwb3NpdGlvbicgPT4gaXNzZXQoJGNnYmxvZ19maWVsZGRlZlsnaXRlbV9vcmRlciddKSA/IChpbnQpJGNnYmxvZ19maWVsZGRlZlsnaXRlbV9vcmRlciddIDogMCwKICAgICAgICAgICAgJ3B1YmxpYycgPT4gaXNzZXQoJGNnYmxvZ19maWVsZGRlZlsncHVibGljJ10pID8gKGludCkkY2dibG9nX2ZpZWxkZGVmWydwdWJsaWMnXSA6IDEKICAgICAgICApOwogICAgfQp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MigrationDataHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pZ3JhdGlvbiBEYXRhIEhhbmRsZXIgQ2xhc3MKICogSGFuZGxlcyBkYXRhIG1pZ3JhdGlvbiBvcGVyYXRpb25zIGZvciBDR0Jsb2cgdG8gTElTRQogKi8KCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgZXhpdDsKCmNsYXNzIE1pZ3JhdGlvbkRhdGFIYW5kbGVyCnsKICAgIHByaXZhdGUgJG1vZHVsZTsKICAgIHByaXZhdGUgJGRiOwogICAgcHJpdmF0ZSAkdGFibGVfcHJlZml4OwogICAgcHJpdmF0ZSAkY2F0ZWdvcnlfbWFwOwogICAgcHJpdmF0ZSAkZmllbGRkZWZfbWFwOwogICAgcHJpdmF0ZSAkYXJ0aWNsZV9tYXA7CiAgICBwcml2YXRlICRyZXN1bHRzOwogICAgcHJpdmF0ZSAkbG9nX2ZpbGU7CiAgICBwcml2YXRlICRsb2dfY2FsbGJhY2s7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbW9kdWxlLCAkZGIsICR0YWJsZV9wcmVmaXgsICYkcmVzdWx0cywgJGxvZ19maWxlLCAkbG9nX2NhbGxiYWNrKQogICAgewogICAgICAgICR0aGlzLT5tb2R1bGUgPSAkbW9kdWxlOwogICAgICAgICR0aGlzLT5kYiA9ICRkYjsKICAgICAgICAkdGhpcy0+dGFibGVfcHJlZml4ID0gJHRhYmxlX3ByZWZpeDsKICAgICAgICAkdGhpcy0+cmVzdWx0cyA9ICYkcmVzdWx0czsKICAgICAgICAkdGhpcy0+bG9nX2ZpbGUgPSAkbG9nX2ZpbGU7CiAgICAgICAgJHRoaXMtPmxvZ19jYWxsYmFjayA9ICRsb2dfY2FsbGJhY2s7CiAgICAgICAgJHRoaXMtPmNhdGVnb3J5X21hcCA9IGFycmF5KCk7CiAgICAgICAgJHRoaXMtPmZpZWxkZGVmX21hcCA9IGFycmF5KCk7CiAgICAgICAgJHRoaXMtPmFydGljbGVfbWFwID0gYXJyYXkoKTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBNaWdyYXRlIGNhdGVnb3JpZXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIE1pZ3JhdGVDYXRlZ29yaWVzKCkKICAgIHsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRpbmcgY2F0ZWdvcmllcy4uLicpOwogICAgICAgICRjZ2Jsb2dfY2F0cyA9IERhdGFNYXBwZXI6OkdldENHQmxvZ0NhdGVnb3JpZXMoJHRoaXMtPmRiKTsKICAgICAgICAkY2F0ZWdvcnlfdGFibGUgPSAkdGhpcy0+dGFibGVfcHJlZml4IC4gJ2NhdGVnb3J5JzsKICAgICAgICAKICAgICAgICAkY2F0ZWdvcnlfbWFwID0gYXJyYXkoKTsgLy8gTWFwIG9sZCBJRCB0byBuZXcgSUQKICAgICAgICAKICAgICAgICAvLyBGaXJzdCBwYXNzOiBpbnNlcnQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0ZW1wb3JhcnkgcGFyZW50X2lkCiAgICAgICAgZm9yZWFjaCAoJGNnYmxvZ19jYXRzIGFzICRjYXQpIHsKICAgICAgICAgICAgJGRhdGEgPSBEYXRhTWFwcGVyOjpQcmVwYXJlQ2F0ZWdvcnlEYXRhKCRjYXQpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gSW5zZXJ0IGNhdGVnb3J5IChwYXJlbnRfaWQgd2lsbCBiZSB1cGRhdGVkIGluIHNlY29uZCBwYXNzKQogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuICRjYXRlZ29yeV90YWJsZSAuICcgKG5hbWUsIGRlc2NyaXB0aW9uLCBwYXJlbnRfaWQsIHBvc2l0aW9uKSBWQUxVRVMgKD8sID8sID8sID8pJzsKICAgICAgICAgICAgJHRoaXMtPmRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCiAgICAgICAgICAgICAgICAkZGF0YVsnbmFtZSddLAogICAgICAgICAgICAgICAgJGRhdGFbJ2Rlc2NyaXB0aW9uJ10sCiAgICAgICAgICAgICAgICBudWxsLCAvLyBTZXQgdG8gbnVsbCBpbml0aWFsbHkKICAgICAgICAgICAgICAgICRkYXRhWydwb3NpdGlvbiddCiAgICAgICAgICAgICkpOwogICAgICAgICAgICAKICAgICAgICAgICAgJG5ld19pZCA9ICR0aGlzLT5kYi0+SW5zZXJ0X0lEKCk7CiAgICAgICAgICAgICRjYXRlZ29yeV9tYXBbJGNhdFsnaWQnXV0gPSAkbmV3X2lkOwogICAgICAgICAgICAkdGhpcy0+cmVzdWx0c1snY2F0ZWdvcmllcyddKys7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFNlY29uZCBwYXNzOiB1cGRhdGUgcGFyZW50X2lkIHJlZmVyZW5jZXMgd2l0aCBuZXcgSURzCiAgICAgICAgZm9yZWFjaCAoJGNnYmxvZ19jYXRzIGFzICRjYXQpIHsKICAgICAgICAgICAgaWYgKCRjYXRbJ3BhcmVudF9pZCddICYmIGlzc2V0KCRjYXRlZ29yeV9tYXBbJGNhdFsncGFyZW50X2lkJ11dKSAmJiBpc3NldCgkY2F0ZWdvcnlfbWFwWyRjYXRbJ2lkJ11dKSkgewogICAgICAgICAgICAgICAgJG5ld19pZCA9ICRjYXRlZ29yeV9tYXBbJGNhdFsnaWQnXV07CiAgICAgICAgICAgICAgICAkbmV3X3BhcmVudF9pZCA9ICRjYXRlZ29yeV9tYXBbJGNhdFsncGFyZW50X2lkJ11dOwogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gJGNhdGVnb3J5X3RhYmxlIC4gJyBTRVQgcGFyZW50X2lkID0gPyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nOwogICAgICAgICAgICAgICAgJHRoaXMtPmRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld19wYXJlbnRfaWQsICRuZXdfaWQpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTdG9yZSBjYXRlZ29yeSBtYXAgZm9yIGFydGljbGUgcmVsYXRpb25zaGlwcwogICAgICAgICR0aGlzLT5jYXRlZ29yeV9tYXAgPSAkY2F0ZWdvcnlfbWFwOwogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGVkICcgLiAkdGhpcy0+cmVzdWx0c1snY2F0ZWdvcmllcyddIC4gJyBjYXRlZ29yaWVzJywgZmFsc2UpOwogICAgfQogICAgCiAgICAvKioKICAgICAqIENyZWF0ZSBkZWZhdWx0IGZpZWxkIGRlZmluaXRpb25zIGZvciBDb250ZW50IGFuZCBTdW1tYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBDcmVhdGVEZWZhdWx0RmllbGREZWZzKCkKICAgIHsKICAgICAgICAkZmllbGRkZWZfdGFibGUgPSAkdGhpcy0+dGFibGVfcHJlZml4IC4gJ2ZpZWxkZGVmJzsKICAgICAgICAKICAgICAgICAvLyBDaGVjayBpZiBDb250ZW50IGZpZWxkIGFscmVhZHkgZXhpc3RzCiAgICAgICAgJGNvbnRlbnRfY2hlY2sgPSAkdGhpcy0+ZGItPkdldE9uZSgnU0VMRUNUIGZpZWxkZGVmX2lkIEZST00gJyAuICRmaWVsZGRlZl90YWJsZSAuICcgV0hFUkUgYWxpYXMgPSA/JywgYXJyYXkoJ2NvbnRlbnQnKSk7CiAgICAgICAgaWYgKCEkY29udGVudF9jaGVjaykgewogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuICRmaWVsZGRlZl90YWJsZSAuICcgKG5hbWUsIGFsaWFzLCBoZWxwLCB0eXBlLCBwb3NpdGlvbiwgcmVxdWlyZWQsIHRlbXBsYXRlLCBleHRyYSkgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSc7CiAgICAgICAgICAgICR0aGlzLT5kYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KAogICAgICAgICAgICAgICAgJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgJ2NvbnRlbnQnLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWEnLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAneyRmaWVsZGRlZi5uYW1lfTogeyRmaWVsZGRlZi52YWx1ZX0nLAogICAgICAgICAgICAgICAgbnVsbAogICAgICAgICAgICApKTsKICAgICAgICAgICAgJGNvbnRlbnRfaWQgPSAkdGhpcy0+ZGItPkluc2VydF9JRCgpOwogICAgICAgICAgICAkdGhpcy0+ZmllbGRkZWZfbWFwWydjb250ZW50J10gPSAkY29udGVudF9pZDsKICAgICAgICAgICAgJHRoaXMtPnJlc3VsdHNbJ2ZpZWxkZGVmcyddKys7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmZpZWxkZGVmX21hcFsnY29udGVudCddID0gJGNvbnRlbnRfY2hlY2s7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENoZWNrIGlmIFN1bW1hcnkgZmllbGQgYWxyZWFkeSBleGlzdHMKICAgICAgICAkc3VtbWFyeV9jaGVjayA9ICR0aGlzLT5kYi0+R2V0T25lKCdTRUxFQ1QgZmllbGRkZWZfaWQgRlJPTSAnIC4gJGZpZWxkZGVmX3RhYmxlIC4gJyBXSEVSRSBhbGlhcyA9ID8nLCBhcnJheSgnc3VtbWFyeScpKTsKICAgICAgICBpZiAoISRzdW1tYXJ5X2NoZWNrKSB7CiAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gJGZpZWxkZGVmX3RhYmxlIC4gJyAobmFtZSwgYWxpYXMsIGhlbHAsIHR5cGUsIHBvc2l0aW9uLCByZXF1aXJlZCwgdGVtcGxhdGUsIGV4dHJhKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8pJzsKICAgICAgICAgICAgJHRoaXMtPmRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCiAgICAgICAgICAgICAgICAnU3VtbWFyeScsCiAgICAgICAgICAgICAgICAnc3VtbWFyeScsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICdUZXh0QXJlYScsCiAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICd7JGZpZWxkZGVmLm5hbWV9OiB7JGZpZWxkZGVmLnZhbHVlfScsCiAgICAgICAgICAgICAgICBudWxsCiAgICAgICAgICAgICkpOwogICAgICAgICAgICAkc3VtbWFyeV9pZCA9ICR0aGlzLT5kYi0+SW5zZXJ0X0lEKCk7CiAgICAgICAgICAgICR0aGlzLT5maWVsZGRlZl9tYXBbJ3N1bW1hcnknXSA9ICRzdW1tYXJ5X2lkOwogICAgICAgICAgICAkdGhpcy0+cmVzdWx0c1snZmllbGRkZWZzJ10rKzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+ZmllbGRkZWZfbWFwWydzdW1tYXJ5J10gPSAkc3VtbWFyeV9jaGVjazsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogTWlncmF0ZSBmaWVsZCBkZWZpbml0aW9ucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gTWlncmF0ZUZpZWxkRGVmcygpCiAgICB7CiAgICAgICAgJHRoaXMtPkxvZygnTWlncmF0aW5nIGZpZWxkIGRlZmluaXRpb25zLi4uJyk7CiAgICAgICAgJGNnYmxvZ19maWVsZHMgPSBEYXRhTWFwcGVyOjpHZXRDR0Jsb2dGaWVsZERlZnMoJHRoaXMtPmRiKTsKICAgICAgICAkZmllbGRkZWZfdGFibGUgPSAkdGhpcy0+dGFibGVfcHJlZml4IC4gJ2ZpZWxkZGVmJzsKICAgICAgICAKICAgICAgICAkZmllbGRkZWZfbWFwID0gYXJyYXkoKTsgLy8gTWFwIG9sZCBJRCB0byBuZXcgSUQKICAgICAgICAkcG9zaXRpb24gPSAxMDsgLy8gU3RhcnQgYWZ0ZXIgZGVmYXVsdCBmaWVsZHMgKENvbnRlbnQ9MSwgU3VtbWFyeT0yKQogICAgICAgIAogICAgICAgIGZvcmVhY2ggKCRjZ2Jsb2dfZmllbGRzIGFzICRmaWVsZCkgewogICAgICAgICAgICAkZGF0YSA9IERhdGFNYXBwZXI6OlByZXBhcmVGaWVsZERlZkRhdGEoJGZpZWxkKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIE1hcCBmaWVsZCB0eXBlIGNvcnJlY3RseQogICAgICAgICAgICAkbGlzZV90eXBlID0gRGF0YU1hcHBlcjo6TWFwRmllbGRUeXBlKCRmaWVsZFsndHlwZSddKTsKICAgICAgICAgICAgLy8gQ29udmVydCB0byBMSVNFIHR5cGUgZm9ybWF0IChUZXh0SW5wdXQsIFRleHRBcmVhLCBldGMuKQogICAgICAgICAgICBpZiAoJGxpc2VfdHlwZSA9PSAndGV4dCcpIHsKICAgICAgICAgICAgICAgICRsaXNlX3R5cGUgPSAnVGV4dElucHV0JzsKICAgICAgICAgICAgfSBlbHNlaWYgKCRsaXNlX3R5cGUgPT0gJ3RleHRhcmVhJykgewogICAgICAgICAgICAgICAgJGxpc2VfdHlwZSA9ICdUZXh0QXJlYSc7CiAgICAgICAgICAgIH0gZWxzZWlmICgkbGlzZV90eXBlID09ICdjaGVja2JveCcpIHsKICAgICAgICAgICAgICAgICRsaXNlX3R5cGUgPSAnQ2hlY2tib3gnOwogICAgICAgICAgICB9IGVsc2VpZiAoJGxpc2VfdHlwZSA9PSAnZmlsZScpIHsKICAgICAgICAgICAgICAgICRsaXNlX3R5cGUgPSAnRmlsZSc7CiAgICAgICAgICAgIH0gZWxzZWlmICgkbGlzZV90eXBlID09ICdpbWFnZScpIHsKICAgICAgICAgICAgICAgICRsaXNlX3R5cGUgPSAnSW1hZ2UnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBJbnNlcnQgZmllbGQgZGVmaW5pdGlvbiB3aXRoIGFsbCByZXF1aXJlZCBjb2x1bW5zCiAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gJGZpZWxkZGVmX3RhYmxlIC4gJyAobmFtZSwgYWxpYXMsIGhlbHAsIHR5cGUsIHBvc2l0aW9uLCByZXF1aXJlZCwgdGVtcGxhdGUsIGV4dHJhKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8pJzsKICAgICAgICAgICAgJHRoaXMtPmRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCiAgICAgICAgICAgICAgICBpc3NldCgkZmllbGRbJ25hbWUnXSkgPyAkZmllbGRbJ25hbWUnXSA6ICRkYXRhWydhbGlhcyddLAogICAgICAgICAgICAgICAgJGRhdGFbJ2FsaWFzJ10sCiAgICAgICAgICAgICAgICBpc3NldCgkZmllbGRbJ2hlbHAnXSkgPyAkZmllbGRbJ2hlbHAnXSA6ICcnLAogICAgICAgICAgICAgICAgJGxpc2VfdHlwZSwKICAgICAgICAgICAgICAgICRwb3NpdGlvbisrLAogICAgICAgICAgICAgICAgMCwgLy8gcmVxdWlyZWQKICAgICAgICAgICAgICAgICd7JGZpZWxkZGVmLm5hbWV9OiB7JGZpZWxkZGVmLnZhbHVlfScsIC8vIHRlbXBsYXRlCiAgICAgICAgICAgICAgICBudWxsIC8vIGV4dHJhCiAgICAgICAgICAgICkpOwogICAgICAgICAgICAKICAgICAgICAgICAgJG5ld19pZCA9ICR0aGlzLT5kYi0+SW5zZXJ0X0lEKCk7CiAgICAgICAgICAgICRmaWVsZGRlZl9tYXBbJGZpZWxkWydpZCddXSA9ICRuZXdfaWQ7CiAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydmaWVsZGRlZnMnXSsrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBNZXJnZSB3aXRoIGRlZmF1bHQgZmllbGRkZWZzCiAgICAgICAgJHRoaXMtPmZpZWxkZGVmX21hcCA9IGFycmF5X21lcmdlKCR0aGlzLT5maWVsZGRlZl9tYXAsICRmaWVsZGRlZl9tYXApOwogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGVkICcgLiBjb3VudCgkZmllbGRkZWZfbWFwKSAuICcgZmllbGQgZGVmaW5pdGlvbnMnLCBmYWxzZSk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogTWlncmF0ZSBhcnRpY2xlcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gTWlncmF0ZUFydGljbGVzKCRtaWdyYXRlX2NhdGVnb3JpZXMsICRjYXRlZ29yeV9tYXApCiAgICB7CiAgICAgICAgJHRoaXMtPkxvZygnTWlncmF0aW5nIGFydGljbGVzLi4uJyk7CiAgICAgICAgJGNnYmxvZ19hcnRpY2xlcyA9IERhdGFNYXBwZXI6OkdldENHQmxvZ0FydGljbGVzKCR0aGlzLT5kYik7CiAgICAgICAgJGl0ZW1fdGFibGUgPSAkdGhpcy0+dGFibGVfcHJlZml4IC4gJ2l0ZW0nOwogICAgICAgICRpdGVtX2NhdGVnb3J5X3RhYmxlID0gJHRoaXMtPnRhYmxlX3ByZWZpeCAuICdpdGVtX2NhdGVnb3JpZXMnOwogICAgICAgICRmaWVsZHZhbF90YWJsZSA9ICR0aGlzLT50YWJsZV9wcmVmaXggLiAnZmllbGR2YWwnOwogICAgICAgIAogICAgICAgICRhcnRpY2xlX21hcCA9IGFycmF5KCk7IC8vIE1hcCBvbGQgSUQgdG8gbmV3IElECiAgICAgICAgJHBvc2l0aW9uID0gMDsKICAgICAgICAKICAgICAgICBmb3JlYWNoICgkY2dibG9nX2FydGljbGVzIGFzICRhcnRpY2xlKSB7CiAgICAgICAgICAgICRkYXRhID0gRGF0YU1hcHBlcjo6UHJlcGFyZUFydGljbGVEYXRhKCRhcnRpY2xlLCAkdGhpcy0+ZGIpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gSW5zZXJ0IGFydGljbGUgLSB1c2UgY29ycmVjdCBjb2x1bW4gbmFtZXMgYW5kIGV4Y2x1ZGUgZGF0YS9zdW1tYXJ5CiAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gJGl0ZW1fdGFibGUgLiAnICh0aXRsZSwgdXJsLCBhbGlhcywgcG9zaXRpb24sIGFjdGl2ZSwgY3JlYXRlX3RpbWUsIG1vZGlmaWVkX3RpbWUpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPyknOwogICAgICAgICAgICAkdGhpcy0+ZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgKICAgICAgICAgICAgICAgICRkYXRhWyd0aXRsZSddLAogICAgICAgICAgICAgICAgJGRhdGFbJ3VybCddLAogICAgICAgICAgICAgICAgJGRhdGFbJ2FsaWFzJ10sCiAgICAgICAgICAgICAgICAkcG9zaXRpb24rKywKICAgICAgICAgICAgICAgICRkYXRhWydhY3RpdmUnXSwKICAgICAgICAgICAgICAgICRkYXRhWydjcmVhdGVfZGF0ZSddLCAvLyBTdGlsbCB1c2UgY3JlYXRlX2RhdGUgZnJvbSBEYXRhTWFwcGVyLCBidXQgaW5zZXJ0IGludG8gY3JlYXRlX3RpbWUKICAgICAgICAgICAgICAgICRkYXRhWydtb2RpZmllZF9kYXRlJ10gLy8gU3RpbGwgdXNlIG1vZGlmaWVkX2RhdGUgZnJvbSBEYXRhTWFwcGVyLCBidXQgaW5zZXJ0IGludG8gbW9kaWZpZWRfdGltZQogICAgICAgICAgICApKTsKICAgICAgICAgICAgCiAgICAgICAgICAgICRuZXdfaWQgPSAkdGhpcy0+ZGItPkluc2VydF9JRCgpOwogICAgICAgICAgICAkYXJ0aWNsZV9tYXBbJGFydGljbGVbJ2NnYmxvZ19pZCddXSA9ICRuZXdfaWQ7CiAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydhcnRpY2xlcyddKys7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBTdG9yZSBjb250ZW50IGFuZCBzdW1tYXJ5IGFzIGZpZWxkIHZhbHVlcwogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmZpZWxkZGVmX21hcFsnY29udGVudCddKSAmJiAhZW1wdHkoJGRhdGFbJ2RhdGEnXSkpIHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gJGZpZWxkdmFsX3RhYmxlIC4gJyAoaXRlbV9pZCwgZmllbGRkZWZfaWQsIHZhbHVlX2luZGV4LCB2YWx1ZSkgVkFMVUVTICg/LCA/LCA/LCA/KSc7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgKICAgICAgICAgICAgICAgICAgICAkbmV3X2lkLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5maWVsZGRlZl9tYXBbJ2NvbnRlbnQnXSwKICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICRkYXRhWydkYXRhJ10KICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlc3VsdHNbJ2ZpZWxkdmFscyddKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZmllbGRkZWZfbWFwWydzdW1tYXJ5J10pICYmICFlbXB0eSgkZGF0YVsnc3VtbWFyeSddKSkgewogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiAkZmllbGR2YWxfdGFibGUgLiAnIChpdGVtX2lkLCBmaWVsZGRlZl9pZCwgdmFsdWVfaW5kZXgsIHZhbHVlKSBWQUxVRVMgKD8sID8sID8sID8pJzsKICAgICAgICAgICAgICAgICR0aGlzLT5kYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KAogICAgICAgICAgICAgICAgICAgICRuZXdfaWQsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZpZWxkZGVmX21hcFsnc3VtbWFyeSddLAogICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgJGRhdGFbJ3N1bW1hcnknXQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+cmVzdWx0c1snZmllbGR2YWxzJ10rKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gTWlncmF0ZSBjYXRlZ29yeSByZWxhdGlvbnNoaXBzCiAgICAgICAgICAgIGlmICgkbWlncmF0ZV9jYXRlZ29yaWVzICYmICFlbXB0eSgkY2F0ZWdvcnlfbWFwKSkgewogICAgICAgICAgICAgICAgJGNhdGVnb3JpZXMgPSBEYXRhTWFwcGVyOjpHZXRDR0Jsb2dBcnRpY2xlQ2F0ZWdvcmllcygkdGhpcy0+ZGIsICRhcnRpY2xlWydjZ2Jsb2dfaWQnXSk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkY2F0ZWdvcmllcyBhcyAkb2xkX2NhdF9pZCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2F0ZWdvcnlfbWFwWyRvbGRfY2F0X2lkXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5ld19jYXRfaWQgPSAkY2F0ZWdvcnlfbWFwWyRvbGRfY2F0X2lkXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiAkaXRlbV9jYXRlZ29yeV90YWJsZSAuICcgKGl0ZW1faWQsIGNhdGVnb3J5X2lkKSBWQUxVRVMgKD8sID8pJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld19pZCwgJG5ld19jYXRfaWQpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gU3RvcmUgYXJ0aWNsZSBtYXAgZm9yIGZpZWxkIHZhbHVlcwogICAgICAgICR0aGlzLT5hcnRpY2xlX21hcCA9ICRhcnRpY2xlX21hcDsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRlZCAnIC4gJHRoaXMtPnJlc3VsdHNbJ2FydGljbGVzJ10gLiAnIGFydGljbGVzJywgZmFsc2UpOwogICAgfQogICAgCiAgICAvKioKICAgICAqIE1pZ3JhdGUgZmllbGQgdmFsdWVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBNaWdyYXRlRmllbGRWYWxzKCkKICAgIHsKICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPmFydGljbGVfbWFwKSB8fCBlbXB0eSgkdGhpcy0+ZmllbGRkZWZfbWFwKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGluZyBmaWVsZCB2YWx1ZXMuLi4nKTsKICAgICAgICAkZmllbGR2YWxfdGFibGUgPSAkdGhpcy0+dGFibGVfcHJlZml4IC4gJ2ZpZWxkdmFsJzsKICAgICAgICAKICAgICAgICBmb3JlYWNoICgkdGhpcy0+YXJ0aWNsZV9tYXAgYXMgJG9sZF9hcnRpY2xlX2lkID0+ICRuZXdfYXJ0aWNsZV9pZCkgewogICAgICAgICAgICAkZmllbGR2YWxzID0gRGF0YU1hcHBlcjo6R2V0Q0dCbG9nRmllbGRWYWxzKCR0aGlzLT5kYiwgJG9sZF9hcnRpY2xlX2lkKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvcmVhY2ggKCRmaWVsZHZhbHMgYXMgJGZpZWxkdmFsKSB7CiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBmaWVsZGRlZiB3YXMgbWlncmF0ZWQgZnJvbSBDR0Jsb2cgKGJ5IElEKQogICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+ZmllbGRkZWZfbWFwWyRmaWVsZHZhbFsnZmllbGRkZWZfaWQnXV0pKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIFNraXAgaWYgZmllbGRkZWYgd2Fzbid0IG1pZ3JhdGVkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRuZXdfZmllbGRkZWZfaWQgPSAkdGhpcy0+ZmllbGRkZWZfbWFwWyRmaWVsZHZhbFsnZmllbGRkZWZfaWQnXV07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gJGZpZWxkdmFsX3RhYmxlIC4gJyAoaXRlbV9pZCwgZmllbGRkZWZfaWQsIHZhbHVlX2luZGV4LCB2YWx1ZSkgVkFMVUVTICg/LCA/LCA/LCA/KSc7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgKICAgICAgICAgICAgICAgICAgICAkbmV3X2FydGljbGVfaWQsCiAgICAgICAgICAgICAgICAgICAgJG5ld19maWVsZGRlZl9pZCwKICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICRmaWVsZHZhbFsndmFsdWUnXQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydmaWVsZHZhbHMnXSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGVkIGZpZWxkIHZhbHVlcycsIGZhbHNlKTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgY2F0ZWdvcnkgbWFwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRDYXRlZ29yeU1hcCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jYXRlZ29yeV9tYXA7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IGZpZWxkZGVmIG1hcAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RmllbGRkZWZNYXAoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmllbGRkZWZfbWFwOwogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCBhcnRpY2xlIG1hcAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QXJ0aWNsZU1hcCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hcnRpY2xlX21hcDsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBMb2cgbWVzc2FnZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIExvZygkbWVzc2FnZSwgJGF1ZGl0ID0gdHJ1ZSkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmxvZ19jYWxsYmFjaykgewogICAgICAgICAgICBjYWxsX3VzZXJfZnVuYygkdGhpcy0+bG9nX2NhbGxiYWNrLCAkbWVzc2FnZSwgJGF1ZGl0KTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.MigrationEngine.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pZ3JhdGlvbiBFbmdpbmUgQ2xhc3MKICogQ29yZSBtaWdyYXRpb24gbG9naWMgZm9yIENHQmxvZyB0byBMSVNFCiAqLwoKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwoKY2xhc3MgTWlncmF0aW9uRW5naW5lCnsKICAgIHByaXZhdGUgJG1vZHVsZTsKICAgIHByaXZhdGUgJGRiOwogICAgcHJpdmF0ZSAkaW5zdGFuY2VfbmFtZTsKICAgIHByaXZhdGUgJGluc3RhbmNlX2ZyaWVuZGx5bmFtZTsKICAgIHByaXZhdGUgJHVzZV9leGlzdGluZzsKICAgIHByaXZhdGUgJGV4aXN0aW5nX2luc3RhbmNlX2lkOwogICAgcHJpdmF0ZSAkbWlncmF0ZV9hcnRpY2xlczsKICAgIHByaXZhdGUgJG1pZ3JhdGVfY2F0ZWdvcmllczsKICAgIHByaXZhdGUgJG1pZ3JhdGVfZmllbGRkZWZzOwogICAgcHJpdmF0ZSAkbWlncmF0ZV9maWVsZHZhbHM7CiAgICBwcml2YXRlICRyZXN1bHRzOwogICAgcHJpdmF0ZSAkZXJyb3JzOwogICAgcHJpdmF0ZSAkd2FybmluZ3M7CiAgICBwcml2YXRlICRsb2dfZmlsZSA9IG51bGw7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbW9kdWxlKQogICAgewogICAgICAgICR0aGlzLT5tb2R1bGUgPSAkbW9kdWxlOwogICAgICAgIAogICAgICAgIC8vIERvbid0IGluaXRpYWxpemUgREIgaGVyZSAtIGRvIGl0IGxhemlseSB3aGVuIG5lZWRlZAogICAgICAgICR0aGlzLT5yZXN1bHRzID0gYXJyYXkoCiAgICAgICAgICAgICdhcnRpY2xlcycgPT4gMCwKICAgICAgICAgICAgJ2NhdGVnb3JpZXMnID0+IDAsCiAgICAgICAgICAgICdmaWVsZGRlZnMnID0+IDAsCiAgICAgICAgICAgICdmaWVsZHZhbHMnID0+IDAKICAgICAgICApOwogICAgICAgICR0aGlzLT5lcnJvcnMgPSBhcnJheSgpOwogICAgICAgICR0aGlzLT53YXJuaW5ncyA9IGFycmF5KCk7CiAgICAgICAgJHRoaXMtPmRiID0gbnVsbDsgLy8gSW5pdGlhbGl6ZSBsYXppbHkKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgZGF0YWJhc2UgY29ubmVjdGlvbiAobGF6eSBpbml0aWFsaXphdGlvbikKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBHZXREYigpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5kYiA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+ZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPmRiOwogICAgfQogICAgCiAgICAvKioKICAgICAqIFNldHVwIGxvZ2dpbmcgKGxhenkgaW5pdGlhbGl6YXRpb24pCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gU2V0dXBMb2dnaW5nKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmxvZ19maWxlID09PSBudWxsKSB7CiAgICAgICAgICAgICRtb2R1bGVfcGF0aCA9ICR0aGlzLT5tb2R1bGUtPkdldE1vZHVsZVBhdGgoKTsKICAgICAgICAgICAgJGxvZ3NfZGlyID0gY21zX2pvaW5fcGF0aCgkbW9kdWxlX3BhdGgsICdsb2dzJyk7CiAgICAgICAgICAgIGlmICghaXNfZGlyKCRsb2dzX2RpcikpIHsKICAgICAgICAgICAgICAgIEBta2RpcigkbG9nc19kaXIsIDA3NTUsIHRydWUpOwogICAgICAgICAgICAgICAgLy8gU2V0IGNvcnJlY3Qgb3duZXJzaGlwIGZvciBsb2dzIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgQGNob3duKCRsb2dzX2RpciwgJ25ld3N0MzkyMicpOwogICAgICAgICAgICAgICAgQGNoZ3JwKCRsb2dzX2RpciwgJ25ld3N0MzkyMicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5sb2dfZmlsZSA9IGNtc19qb2luX3BhdGgoJGxvZ3NfZGlyLCAnbWlncmF0aW9uXycgLiBkYXRlKCdZLW0tZF9ILWktcycpIC4gJy5sb2cnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogU2V0IG1pZ3JhdGlvbiBwYXJhbWV0ZXJzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCRwYXJhbXMpCiAgICB7CiAgICAgICAgJHRoaXMtPmluc3RhbmNlX25hbWUgPSBpc3NldCgkcGFyYW1zWydpbnN0YW5jZV9uYW1lJ10pID8gdHJpbSgkcGFyYW1zWydpbnN0YW5jZV9uYW1lJ10pIDogJyc7CiAgICAgICAgJHRoaXMtPmluc3RhbmNlX2ZyaWVuZGx5bmFtZSA9IGlzc2V0KCRwYXJhbXNbJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZSddKSA/IHRyaW0oJHBhcmFtc1snaW5zdGFuY2VfZnJpZW5kbHluYW1lJ10pIDogJyc7CiAgICAgICAgJHRoaXMtPnVzZV9leGlzdGluZyA9IGlzc2V0KCRwYXJhbXNbJ3VzZV9leGlzdGluZyddKSAmJiAkcGFyYW1zWyd1c2VfZXhpc3RpbmcnXSA9PSAxOwogICAgICAgICR0aGlzLT5leGlzdGluZ19pbnN0YW5jZV9pZCA9IGlzc2V0KCRwYXJhbXNbJ2V4aXN0aW5nX2luc3RhbmNlX2lkJ10pID8gKGludCkkcGFyYW1zWydleGlzdGluZ19pbnN0YW5jZV9pZCddIDogMDsKICAgICAgICAkdGhpcy0+bWlncmF0ZV9hcnRpY2xlcyA9IGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGVfYXJ0aWNsZXMnXSkgJiYgJHBhcmFtc1snbWlncmF0ZV9hcnRpY2xlcyddID09IDE7CiAgICAgICAgJHRoaXMtPm1pZ3JhdGVfY2F0ZWdvcmllcyA9IGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGVfY2F0ZWdvcmllcyddKSAmJiAkcGFyYW1zWydtaWdyYXRlX2NhdGVnb3JpZXMnXSA9PSAxOwogICAgICAgICR0aGlzLT5taWdyYXRlX2ZpZWxkZGVmcyA9IGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGVfZmllbGRkZWZzJ10pICYmICRwYXJhbXNbJ21pZ3JhdGVfZmllbGRkZWZzJ10gPT0gMTsKICAgICAgICAkdGhpcy0+bWlncmF0ZV9maWVsZHZhbHMgPSBpc3NldCgkcGFyYW1zWydtaWdyYXRlX2ZpZWxkdmFscyddKSAmJiAkcGFyYW1zWydtaWdyYXRlX2ZpZWxkdmFscyddID09IDE7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogRXhlY3V0ZSBtaWdyYXRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEV4ZWN1dGUoKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR0aGlzLT5Mb2coJ1N0YXJ0aW5nIG1pZ3JhdGlvbiBmcm9tIENHQmxvZyB0byBMSVNFLi4uJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBWYWxpZGF0ZSBwcmVyZXF1aXNpdGVzCiAgICAgICAgICAgICR2YWxpZGF0b3IgPSBuZXcgTWlncmF0aW9uVmFsaWRhdG9yKCR0aGlzLT5tb2R1bGUpOwogICAgICAgICAgICBpZiAoISR2YWxpZGF0b3ItPlZhbGlkYXRlUHJlcmVxdWlzaXRlcygpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3JzID0gJHZhbGlkYXRvci0+R2V0RXJyb3JzKCk7CiAgICAgICAgICAgICAgICAkZXJyb3JfbXNnID0gaW1wbG9kZSgnLCAnLCAkdGhpcy0+ZXJyb3JzKTsKICAgICAgICAgICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGlvbiBmYWlsZWQ6ICcgLiAkZXJyb3JfbXNnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRhcmdldCBpbnN0YW5jZQogICAgICAgICAgICBpZiAoJHRoaXMtPnVzZV9leGlzdGluZykgewogICAgICAgICAgICAgICAgaWYgKCEkdmFsaWRhdG9yLT5WYWxpZGF0ZUV4aXN0aW5nSW5zdGFuY2UoJHRoaXMtPmV4aXN0aW5nX2luc3RhbmNlX2lkKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5lcnJvcnMgPSAkdmFsaWRhdG9yLT5HZXRFcnJvcnMoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaW5zdGFuY2VzID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRUluc3RhbmNlcygpOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGluc3RhbmNlcyBhcyAkaW5zdCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkaW5zdC0+bW9kdWxlX2lkID09ICR0aGlzLT5leGlzdGluZ19pbnN0YW5jZV9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW5zdGFuY2VfbmFtZSA9IHN0cl9yZXBsYWNlKCdMSVNFJywgJycsICRpbnN0LT5tb2R1bGVfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIGFuZCBhdXRvLWdlbmVyYXRlIGluc3RhbmNlIG5hbWUgaWYgZW1wdHkKICAgICAgICAgICAgICAgICR2YWxpZGF0ZWRfbmFtZSA9ICR2YWxpZGF0b3ItPlZhbGlkYXRlSW5zdGFuY2VOYW1lKCR0aGlzLT5pbnN0YW5jZV9uYW1lLCB0cnVlKTsKICAgICAgICAgICAgICAgIGlmICgkdmFsaWRhdGVkX25hbWUgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVycm9ycyA9ICR2YWxpZGF0b3ItPkdldEVycm9ycygpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIFVzZSB2YWxpZGF0ZWQvZ2VuZXJhdGVkIG5hbWUgKG1heSBoYXZlIGJlZW4gYXV0by1nZW5lcmF0ZWQgb3IgbW9kaWZpZWQpCiAgICAgICAgICAgICAgICAkdGhpcy0+aW5zdGFuY2VfbmFtZSA9ICR2YWxpZGF0ZWRfbmFtZTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gQXV0by1nZW5lcmF0ZSBmcmllbmRseSBuYW1lIGlmIGVtcHR5CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPmluc3RhbmNlX2ZyaWVuZGx5bmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW5zdGFuY2VfZnJpZW5kbHluYW1lID0gJ0NHQmxvZyBNaWdyYXRlZCAtICcgLiBkYXRlKCdZLW0tZCBIOmk6cycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBpbnN0YW5jZQogICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+Q3JlYXRlTElTRUluc3RhbmNlKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICR0aGlzLT53YXJuaW5ncyA9ICR2YWxpZGF0b3ItPkdldFdhcm5pbmdzKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBTdGFydCB0cmFuc2FjdGlvbgogICAgICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAgICAgJGRiLT5TdGFydFRyYW5zKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgLy8gTWlncmF0ZSBjYXRlZ29yaWVzIGZpcnN0IChuZWVkZWQgZm9yIHJlbGF0aW9uc2hpcHMpCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1pZ3JhdGVfY2F0ZWdvcmllcykgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5NaWdyYXRlQ2F0ZWdvcmllcygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBNaWdyYXRlIGZpZWxkIGRlZmluaXRpb25zCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1pZ3JhdGVfZmllbGRkZWZzKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPk1pZ3JhdGVGaWVsZERlZnMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gTWlncmF0ZSBhcnRpY2xlcwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5taWdyYXRlX2FydGljbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPk1pZ3JhdGVBcnRpY2xlcygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBNaWdyYXRlIGZpZWxkIHZhbHVlcwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5taWdyYXRlX2ZpZWxkdmFscyAmJiAkdGhpcy0+bWlncmF0ZV9hcnRpY2xlcykgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5NaWdyYXRlRmllbGRWYWxzKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIENvbW1pdCB0cmFuc2FjdGlvbgogICAgICAgICAgICAgICAgJGRiLT5Db21wbGV0ZVRyYW5zKCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIExvZyBzdWNjZXNzZnVsIG1pZ3JhdGlvbiB3aXRoIHN0YXRpc3RpY3MKICAgICAgICAgICAgICAgICRzdGF0c19tc2cgPSBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICdNaWdyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseTogJWQgYXJ0aWNsZXMsICVkIGNhdGVnb3JpZXMsICVkIGZpZWxkIGRlZmluaXRpb25zLCAlZCBmaWVsZCB2YWx1ZXMgbWlncmF0ZWQnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydhcnRpY2xlcyddLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydjYXRlZ29yaWVzJ10sCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnJlc3VsdHNbJ2ZpZWxkZGVmcyddLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydmaWVsZHZhbHMnXQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5Mb2coJHN0YXRzX21zZyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgJGRiLT5GYWlsVHJhbnMoKTsKICAgICAgICAgICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2Vycm9yX21pZ3JhdGlvbl9mYWlsZWQnLCAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGlvbiBmYWlsZWQ6ICcgLiAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3JfbWlncmF0aW9uX2ZhaWxlZCcsICRlLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRpb24gZXJyb3I6ICcgLiAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBDcmVhdGUgbmV3IExJU0UgaW5zdGFuY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBDcmVhdGVMSVNFSW5zdGFuY2UoKQogICAgewogICAgICAgICR0aGlzLT5Mb2coJ0NyZWF0aW5nIG5ldyBMSVNFIGluc3RhbmNlOiAnIC4gJHRoaXMtPmluc3RhbmNlX25hbWUpOwogICAgICAgIAogICAgICAgICRsaXNlID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRU1vZHVsZSgpOwogICAgICAgIGlmICghJGxpc2UpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3JfbGlzZV9ub3RfaW5zdGFsbGVkJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gVXNlIExJU0UgY2xvbmVyIHRvIGNyZWF0ZSBpbnN0YW5jZSBmcm9tIGEgYmFzZSB0ZW1wbGF0ZQogICAgICAgIC8vIFdlJ2xsIGNsb25lIGZyb20gdGhlIGZpcnN0IGF2YWlsYWJsZSBMSVNFIGluc3RhbmNlLCBvciBjcmVhdGUgYmFzZSBzdHJ1Y3R1cmUKICAgICAgICAkaW5zdGFuY2VzID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRUluc3RhbmNlcygpOwogICAgICAgIAogICAgICAgIGlmIChlbXB0eSgkaW5zdGFuY2VzKSkgewogICAgICAgICAgICAvLyBObyBleGlzdGluZyBpbnN0YW5jZXMgLSB3ZSBuZWVkIHRvIGNyZWF0ZSBiYXNlIHN0cnVjdHVyZSBtYW51YWxseQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPkNyZWF0ZUxJU0VJbnN0YW5jZUZyb21TY3JhdGNoKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gQ2xvbmUgZnJvbSBmaXJzdCBhdmFpbGFibGUgaW5zdGFuY2UKICAgICAgICAgICAgJGJhc2VfaW5zdGFuY2UgPSByZXNldCgkaW5zdGFuY2VzKTsKICAgICAgICAgICAgJGJhc2VfbmFtZSA9ICRiYXNlX2luc3RhbmNlLT5tb2R1bGVfbmFtZTsKICAgICAgICAgICAgJG5ld19uYW1lID0gJ0xJU0UnIC4gJHRoaXMtPmluc3RhbmNlX25hbWU7CiAgICAgICAgICAgIAogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgLy8gTG9hZCBMSVNFQ2xvbmVyIGNsYXNzCiAgICAgICAgICAgICAgICAkbGlzZV9wYXRoID0gY21zX2pvaW5fcGF0aChjbXNtcygpLT5HZXRDb25maWcoKVsncm9vdF9wYXRoJ10sICdtb2R1bGVzJywgJ0xJU0UnLCAnbGliJywgJ2NsYXNzLkxJU0VDbG9uZXIucGhwJyk7CiAgICAgICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRsaXNlX3BhdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJ0xJU0VDbG9uZXIgY2xhc3Mgbm90IGZvdW5kJzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXF1aXJlX29uY2UoJGxpc2VfcGF0aCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRjbG9uZXIgPSBuZXcgTElTRUNsb25lcigkYmFzZV9uYW1lLCAkbmV3X25hbWUpOwogICAgICAgICAgICAgICAgJGZ1bGxfbmFtZSA9ICRjbG9uZXItPlJ1bigpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgaW5zdGFuY2UgcHJlZmVyZW5jZXMKICAgICAgICAgICAgICAgICRtb2RvcHMgPSBjbXNtcygpLT5HZXRNb2R1bGVPcGVyYXRpb25zKCk7CiAgICAgICAgICAgICAgICAkbmV3X21vZCA9ICRtb2RvcHMtPmdldF9tb2R1bGVfaW5zdGFuY2UoJGZ1bGxfbmFtZSwgTlVMTCwgVFJVRSk7CiAgICAgICAgICAgICAgICBpZiAoJG5ld19tb2QpIHsKICAgICAgICAgICAgICAgICAgICAkbmV3X21vZC0+U2V0UHJlZmVyZW5jZSgnZnJpZW5kbHluYW1lJywgJHRoaXMtPmluc3RhbmNlX2ZyaWVuZGx5bmFtZSA/OiAkdGhpcy0+aW5zdGFuY2VfbmFtZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR0aGlzLT5pbnN0YW5jZV9uYW1lID0gc3RyX3JlcGxhY2UoJ0xJU0UnLCAnJywgJGZ1bGxfbmFtZSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+TG9nKCdMSVNFIGluc3RhbmNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5OiAnIC4gJGZ1bGxfbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3JzW10gPSAkdGhpcy0+bW9kdWxlLT5MYW5nKCdlcnJvcl9taWdyYXRpb25fZmFpbGVkJywgJGUtPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+TG9nKCdGYWlsZWQgdG8gY3JlYXRlIGluc3RhbmNlOiAnIC4gJGUtPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ3JlYXRlIExJU0UgaW5zdGFuY2UgZnJvbSBzY3JhdGNoIChmYWxsYmFjaykKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBDcmVhdGVMSVNFSW5zdGFuY2VGcm9tU2NyYXRjaCgpCiAgICB7CiAgICAgICAgLy8gVGhpcyBpcyBhIGNvbXBsZXggb3BlcmF0aW9uIC0gZm9yIG5vdywgd2UnbGwgcmVxdWlyZSBhdCBsZWFzdCBvbmUgTElTRSBpbnN0YW5jZQogICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICdDYW5ub3QgY3JlYXRlIExJU0UgaW5zdGFuY2U6IE5vIGJhc2UgTElTRSBpbnN0YW5jZXMgYXZhaWxhYmxlLiBQbGVhc2UgY3JlYXRlIGF0IGxlYXN0IG9uZSBMSVNFIGluc3RhbmNlIGZpcnN0Lic7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCB0YWJsZSBwcmVmaXggZm9yIGluc3RhbmNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gR2V0VGFibGVQcmVmaXgoKQogICAgewogICAgICAgIC8vIElmIHVzaW5nIGV4aXN0aW5nIGluc3RhbmNlLCBnZXQgdGhlIGFjdHVhbCBtb2R1bGUgbmFtZQogICAgICAgIGlmICgkdGhpcy0+dXNlX2V4aXN0aW5nICYmICR0aGlzLT5leGlzdGluZ19pbnN0YW5jZV9pZCkgewogICAgICAgICAgICAkbGlzZSA9ICR0aGlzLT5tb2R1bGUtPkdldExJU0VNb2R1bGUoKTsKICAgICAgICAgICAgaWYgKCRsaXNlKSB7CiAgICAgICAgICAgICAgICAkaW5zdGFuY2VzID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRUluc3RhbmNlcygpOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGluc3RhbmNlcyBhcyAkaW5zdCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkaW5zdC0+bW9kdWxlX2lkID09ICR0aGlzLT5leGlzdGluZ19pbnN0YW5jZV9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5zdGFuY2VfYWxpYXMgPSBzdHJ0b2xvd2VyKCRpbnN0LT5tb2R1bGVfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkaW5zdGFuY2VfYWxpYXMgLiAnXyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIEZvciBuZXcgaW5zdGFuY2VzCiAgICAgICAgJGluc3RhbmNlX2FsaWFzID0gc3RydG9sb3dlcignTElTRScgLiAkdGhpcy0+aW5zdGFuY2VfbmFtZSk7CiAgICAgICAgcmV0dXJuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRpbnN0YW5jZV9hbGlhcyAuICdfJzsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBNaWdyYXRlIGNhdGVnb3JpZXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBNaWdyYXRlQ2F0ZWdvcmllcygpCiAgICB7CiAgICAgICAgJHRoaXMtPlNldHVwTG9nZ2luZygpOwogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGluZyBjYXRlZ29yaWVzLi4uJyk7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgJGNnYmxvZ19jYXRzID0gRGF0YU1hcHBlcjo6R2V0Q0dCbG9nQ2F0ZWdvcmllcygkZGIpOwogICAgICAgICR0YWJsZV9wcmVmaXggPSAkdGhpcy0+R2V0VGFibGVQcmVmaXgoKTsKICAgICAgICAkY2F0ZWdvcnlfdGFibGUgPSAkdGFibGVfcHJlZml4IC4gJ2NhdGVnb3J5JzsKICAgICAgICAKICAgICAgICAkY2F0ZWdvcnlfbWFwID0gYXJyYXkoKTsgLy8gTWFwIG9sZCBJRCB0byBuZXcgSUQKICAgICAgICAKICAgICAgICAvLyBGaXJzdCBwYXNzOiBpbnNlcnQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0ZW1wb3JhcnkgcGFyZW50X2lkCiAgICAgICAgZm9yZWFjaCAoJGNnYmxvZ19jYXRzIGFzICRjYXQpIHsKICAgICAgICAgICAgJGRhdGEgPSBEYXRhTWFwcGVyOjpQcmVwYXJlQ2F0ZWdvcnlEYXRhKCRjYXQpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gSW5zZXJ0IGNhdGVnb3J5IChwYXJlbnRfaWQgd2lsbCBiZSB1cGRhdGVkIGluIHNlY29uZCBwYXNzKQogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuICRjYXRlZ29yeV90YWJsZSAuICcgKG5hbWUsIGRlc2NyaXB0aW9uLCBwYXJlbnRfaWQsIHBvc2l0aW9uKSBWQUxVRVMgKD8sID8sID8sID8pJzsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCiAgICAgICAgICAgICAgICAkZGF0YVsnbmFtZSddLAogICAgICAgICAgICAgICAgJGRhdGFbJ2Rlc2NyaXB0aW9uJ10sCiAgICAgICAgICAgICAgICBudWxsLCAvLyBTZXQgdG8gbnVsbCBpbml0aWFsbHkKICAgICAgICAgICAgICAgICRkYXRhWydwb3NpdGlvbiddCiAgICAgICAgICAgICkpOwogICAgICAgICAgICAKICAgICAgICAgICAgJG5ld19pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7CiAgICAgICAgICAgICRjYXRlZ29yeV9tYXBbJGNhdFsnaWQnXV0gPSAkbmV3X2lkOwogICAgICAgICAgICAkdGhpcy0+cmVzdWx0c1snY2F0ZWdvcmllcyddKys7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFNlY29uZCBwYXNzOiB1cGRhdGUgcGFyZW50X2lkIHJlZmVyZW5jZXMgd2l0aCBuZXcgSURzCiAgICAgICAgZm9yZWFjaCAoJGNnYmxvZ19jYXRzIGFzICRjYXQpIHsKICAgICAgICAgICAgaWYgKCRjYXRbJ3BhcmVudF9pZCddICYmIGlzc2V0KCRjYXRlZ29yeV9tYXBbJGNhdFsncGFyZW50X2lkJ11dKSAmJiBpc3NldCgkY2F0ZWdvcnlfbWFwWyRjYXRbJ2lkJ11dKSkgewogICAgICAgICAgICAgICAgJG5ld19pZCA9ICRjYXRlZ29yeV9tYXBbJGNhdFsnaWQnXV07CiAgICAgICAgICAgICAgICAkbmV3X3BhcmVudF9pZCA9ICRjYXRlZ29yeV9tYXBbJGNhdFsncGFyZW50X2lkJ11dOwogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gJGNhdGVnb3J5X3RhYmxlIC4gJyBTRVQgcGFyZW50X2lkID0gPyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nOwogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld19wYXJlbnRfaWQsICRuZXdfaWQpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTdG9yZSBjYXRlZ29yeSBtYXAgZm9yIGFydGljbGUgcmVsYXRpb25zaGlwcwogICAgICAgICR0aGlzLT5jYXRlZ29yeV9tYXAgPSAkY2F0ZWdvcnlfbWFwOwogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGVkICcgLiAkdGhpcy0+cmVzdWx0c1snY2F0ZWdvcmllcyddIC4gJyBjYXRlZ29yaWVzJywgZmFsc2UpOyAvLyBEb24ndCBhdWRpdCBldmVyeSBzdGVwCiAgICB9CiAgICAKICAgIC8qKgogICAgICogTWlncmF0ZSBmaWVsZCBkZWZpbml0aW9ucwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIE1pZ3JhdGVGaWVsZERlZnMoKQogICAgewogICAgICAgICR0aGlzLT5TZXR1cExvZ2dpbmcoKTsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRpbmcgZmllbGQgZGVmaW5pdGlvbnMuLi4nKTsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkY2dibG9nX2ZpZWxkcyA9IERhdGFNYXBwZXI6OkdldENHQmxvZ0ZpZWxkRGVmcygkZGIpOwogICAgICAgICR0YWJsZV9wcmVmaXggPSAkdGhpcy0+R2V0VGFibGVQcmVmaXgoKTsKICAgICAgICAkZmllbGRkZWZfdGFibGUgPSAkdGFibGVfcHJlZml4IC4gJ2ZpZWxkZGVmJzsKICAgICAgICAKICAgICAgICAkZmllbGRkZWZfbWFwID0gYXJyYXkoKTsgLy8gTWFwIG9sZCBJRCB0byBuZXcgSUQKICAgICAgICAKICAgICAgICBmb3JlYWNoICgkY2dibG9nX2ZpZWxkcyBhcyAkZmllbGQpIHsKICAgICAgICAgICAgJGRhdGEgPSBEYXRhTWFwcGVyOjpQcmVwYXJlRmllbGREZWZEYXRhKCRmaWVsZCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBJbnNlcnQgZmllbGQgZGVmaW5pdGlvbgogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuICRmaWVsZGRlZl90YWJsZSAuICcgKGFsaWFzLCB0eXBlLCBwb3NpdGlvbiwgcHVibGljKSBWQUxVRVMgKD8sID8sID8sID8pJzsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCiAgICAgICAgICAgICAgICAkZGF0YVsnYWxpYXMnXSwKICAgICAgICAgICAgICAgICRkYXRhWyd0eXBlJ10sCiAgICAgICAgICAgICAgICAkZGF0YVsncG9zaXRpb24nXSwKICAgICAgICAgICAgICAgICRkYXRhWydwdWJsaWMnXQogICAgICAgICAgICApKTsKICAgICAgICAgICAgCiAgICAgICAgICAgICRuZXdfaWQgPSAkZGItPkluc2VydF9JRCgpOwogICAgICAgICAgICAkZmllbGRkZWZfbWFwWyRmaWVsZFsnaWQnXV0gPSAkbmV3X2lkOwogICAgICAgICAgICAkdGhpcy0+cmVzdWx0c1snZmllbGRkZWZzJ10rKzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gU3RvcmUgZmllbGRkZWYgbWFwIGZvciBsYXRlciB1c2UKICAgICAgICAkdGhpcy0+ZmllbGRkZWZfbWFwID0gJGZpZWxkZGVmX21hcDsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRlZCAnIC4gJHRoaXMtPnJlc3VsdHNbJ2ZpZWxkZGVmcyddIC4gJyBmaWVsZCBkZWZpbml0aW9ucycsIGZhbHNlKTsgLy8gRG9uJ3QgYXVkaXQgZXZlcnkgc3RlcAogICAgfQogICAgCiAgICAvKioKICAgICAqIE1pZ3JhdGUgYXJ0aWNsZXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBNaWdyYXRlQXJ0aWNsZXMoKQogICAgewogICAgICAgICR0aGlzLT5TZXR1cExvZ2dpbmcoKTsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRpbmcgYXJ0aWNsZXMuLi4nKTsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkY2dibG9nX2FydGljbGVzID0gRGF0YU1hcHBlcjo6R2V0Q0dCbG9nQXJ0aWNsZXMoJGRiKTsKICAgICAgICAkdGFibGVfcHJlZml4ID0gJHRoaXMtPkdldFRhYmxlUHJlZml4KCk7CiAgICAgICAgJGl0ZW1fdGFibGUgPSAkdGFibGVfcHJlZml4IC4gJ2l0ZW0nOwogICAgICAgICRpdGVtX2NhdGVnb3J5X3RhYmxlID0gJHRhYmxlX3ByZWZpeCAuICdpdGVtX2NhdGVnb3JpZXMnOwogICAgICAgIAogICAgICAgICRhcnRpY2xlX21hcCA9IGFycmF5KCk7IC8vIE1hcCBvbGQgSUQgdG8gbmV3IElECiAgICAgICAgJHBvc2l0aW9uID0gMDsKICAgICAgICAKICAgICAgICAvLyBHZXQgY2F0ZWdvcnkgbWFwIGlmIGNhdGVnb3JpZXMgd2VyZSBtaWdyYXRlZAogICAgICAgICRjYXRlZ29yeV9tYXAgPSBhcnJheSgpOwogICAgICAgIGlmICgkdGhpcy0+bWlncmF0ZV9jYXRlZ29yaWVzICYmIGlzc2V0KCR0aGlzLT5jYXRlZ29yeV9tYXApKSB7CiAgICAgICAgICAgICRjYXRlZ29yeV9tYXAgPSAkdGhpcy0+Y2F0ZWdvcnlfbWFwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmb3JlYWNoICgkY2dibG9nX2FydGljbGVzIGFzICRhcnRpY2xlKSB7CiAgICAgICAgICAgICRkYXRhID0gRGF0YU1hcHBlcjo6UHJlcGFyZUFydGljbGVEYXRhKCRhcnRpY2xlLCAkZGIpOwogICAgICAgICAgICAkZGF0YVsncG9zaXRpb24nXSA9ICRwb3NpdGlvbisrOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gSW5zZXJ0IGFydGljbGUKICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiAkaXRlbV90YWJsZSAuICcgKHRpdGxlLCBkYXRhLCBzdW1tYXJ5LCBjcmVhdGVfZGF0ZSwgbW9kaWZpZWRfZGF0ZSwgYWN0aXZlLCB1cmwsIGFsaWFzLCBwb3NpdGlvbikgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSc7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KAogICAgICAgICAgICAgICAgJGRhdGFbJ3RpdGxlJ10sCiAgICAgICAgICAgICAgICAkZGF0YVsnZGF0YSddLAogICAgICAgICAgICAgICAgJGRhdGFbJ3N1bW1hcnknXSwKICAgICAgICAgICAgICAgICRkYXRhWydjcmVhdGVfZGF0ZSddLAogICAgICAgICAgICAgICAgJGRhdGFbJ21vZGlmaWVkX2RhdGUnXSwKICAgICAgICAgICAgICAgICRkYXRhWydhY3RpdmUnXSwKICAgICAgICAgICAgICAgICRkYXRhWyd1cmwnXSwKICAgICAgICAgICAgICAgICRkYXRhWydhbGlhcyddLAogICAgICAgICAgICAgICAgJGRhdGFbJ3Bvc2l0aW9uJ10KICAgICAgICAgICAgKSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkbmV3X2lkID0gJGRiLT5JbnNlcnRfSUQoKTsKICAgICAgICAgICAgJGFydGljbGVfbWFwWyRhcnRpY2xlWydjZ2Jsb2dfaWQnXV0gPSAkbmV3X2lkOwogICAgICAgICAgICAkdGhpcy0+cmVzdWx0c1snYXJ0aWNsZXMnXSsrOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gTWlncmF0ZSBjYXRlZ29yeSByZWxhdGlvbnNoaXBzCiAgICAgICAgICAgIGlmICgkdGhpcy0+bWlncmF0ZV9jYXRlZ29yaWVzICYmICFlbXB0eSgkY2F0ZWdvcnlfbWFwKSkgewogICAgICAgICAgICAgICAgJGNhdGVnb3JpZXMgPSBEYXRhTWFwcGVyOjpHZXRDR0Jsb2dBcnRpY2xlQ2F0ZWdvcmllcygkZGIsICRhcnRpY2xlWydjZ2Jsb2dfaWQnXSk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkY2F0ZWdvcmllcyBhcyAkb2xkX2NhdF9pZCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2F0ZWdvcnlfbWFwWyRvbGRfY2F0X2lkXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5ld19jYXRfaWQgPSAkY2F0ZWdvcnlfbWFwWyRvbGRfY2F0X2lkXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiAkaXRlbV9jYXRlZ29yeV90YWJsZSAuICcgKGl0ZW1faWQsIGNhdGVnb3J5X2lkKSBWQUxVRVMgKD8sID8pJzsKICAgICAgICAgICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld19pZCwgJG5ld19jYXRfaWQpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gU3RvcmUgYXJ0aWNsZSBtYXAgZm9yIGZpZWxkIHZhbHVlcwogICAgICAgICR0aGlzLT5hcnRpY2xlX21hcCA9ICRhcnRpY2xlX21hcDsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRlZCAnIC4gJHRoaXMtPnJlc3VsdHNbJ2FydGljbGVzJ10gLiAnIGFydGljbGVzJywgZmFsc2UpOyAvLyBEb24ndCBhdWRpdCBldmVyeSBzdGVwCiAgICB9CiAgICAKICAgIC8qKgogICAgICogTWlncmF0ZSBmaWVsZCB2YWx1ZXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBNaWdyYXRlRmllbGRWYWxzKCkKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5hcnRpY2xlX21hcCkgfHwgIWlzc2V0KCR0aGlzLT5maWVsZGRlZl9tYXApKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHRoaXMtPlNldHVwTG9nZ2luZygpOwogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGluZyBmaWVsZCB2YWx1ZXMuLi4nKTsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkdGFibGVfcHJlZml4ID0gJHRoaXMtPkdldFRhYmxlUHJlZml4KCk7CiAgICAgICAgJGZpZWxkdmFsX3RhYmxlID0gJHRhYmxlX3ByZWZpeCAuICdmaWVsZHZhbCc7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFydGljbGVfbWFwIGFzICRvbGRfYXJ0aWNsZV9pZCA9PiAkbmV3X2FydGljbGVfaWQpIHsKICAgICAgICAgICAgJGZpZWxkdmFscyA9IERhdGFNYXBwZXI6OkdldENHQmxvZ0ZpZWxkVmFscygkZGIsICRvbGRfYXJ0aWNsZV9pZCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3JlYWNoICgkZmllbGR2YWxzIGFzICRmaWVsZHZhbCkgewogICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+ZmllbGRkZWZfbWFwWyRmaWVsZHZhbFsnZmllbGRkZWZfaWQnXV0pKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIFNraXAgaWYgZmllbGRkZWYgd2Fzbid0IG1pZ3JhdGVkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRuZXdfZmllbGRkZWZfaWQgPSAkdGhpcy0+ZmllbGRkZWZfbWFwWyRmaWVsZHZhbFsnZmllbGRkZWZfaWQnXV07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gJGZpZWxkdmFsX3RhYmxlIC4gJyAoaXRlbV9pZCwgZmllbGRkZWZfaWQsIHZhbHVlKSBWQUxVRVMgKD8sID8sID8pJzsKICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KAogICAgICAgICAgICAgICAgICAgICRuZXdfYXJ0aWNsZV9pZCwKICAgICAgICAgICAgICAgICAgICAkbmV3X2ZpZWxkZGVmX2lkLAogICAgICAgICAgICAgICAgICAgICRmaWVsZHZhbFsndmFsdWUnXQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydmaWVsZHZhbHMnXSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGVkICcgLiAkdGhpcy0+cmVzdWx0c1snZmllbGR2YWxzJ10gLiAnIGZpZWxkIHZhbHVlcycsIGZhbHNlKTsgLy8gRG9uJ3QgYXVkaXQgZXZlcnkgc3RlcAogICAgfQogICAgCiAgICAvKioKICAgICAqIExvZyBtZXNzYWdlIHRvIGJvdGggZmlsZSBhbmQgYWRtaW4gbG9nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gTG9nKCRtZXNzYWdlLCAkYXVkaXQgPSB0cnVlKQogICAgewogICAgICAgICR0aGlzLT5TZXR1cExvZ2dpbmcoKTsKICAgICAgICAkdGltZXN0YW1wID0gZGF0ZSgnWS1tLWQgSDppOnMnKTsKICAgICAgICAkbG9nX2VudHJ5ID0gIlskdGltZXN0YW1wXSAkbWVzc2FnZVxuIjsKICAgICAgICBAZmlsZV9wdXRfY29udGVudHMoJHRoaXMtPmxvZ19maWxlLCAkbG9nX2VudHJ5LCBGSUxFX0FQUEVORCk7CiAgICAgICAgCiAgICAgICAgLy8gQWxzbyBsb2cgdG8gQ01TTVMgQWRtaW4gTG9nCiAgICAgICAgaWYgKCRhdWRpdCAmJiBtZXRob2RfZXhpc3RzKCR0aGlzLT5tb2R1bGUsICdBdWRpdCcpKSB7CiAgICAgICAgICAgICR0aGlzLT5tb2R1bGUtPkF1ZGl0KDAsICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkbWVzc2FnZSk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCByZXN1bHRzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRSZXN1bHRzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3VsdHM7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IGVycm9ycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXJyb3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVycm9yczsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgd2FybmluZ3MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldFdhcm5pbmdzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPndhcm5pbmdzOwogICAgfQp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MigrationValidator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pZ3JhdGlvbiBWYWxpZGF0b3IgQ2xhc3MKICogVmFsaWRhdGVzIHByZXJlcXVpc2l0ZXMgYW5kIGRhdGEgaW50ZWdyaXR5IGJlZm9yZSBtaWdyYXRpb24KICovCgppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIGV4aXQ7CgpjbGFzcyBNaWdyYXRpb25WYWxpZGF0b3IKewogICAgcHJpdmF0ZSAkbW9kdWxlOwogICAgcHJpdmF0ZSAkZXJyb3JzOwogICAgcHJpdmF0ZSAkd2FybmluZ3M7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbW9kdWxlKQogICAgewogICAgICAgICR0aGlzLT5tb2R1bGUgPSAkbW9kdWxlOwogICAgICAgICR0aGlzLT5lcnJvcnMgPSBhcnJheSgpOwogICAgICAgICR0aGlzLT53YXJuaW5ncyA9IGFycmF5KCk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogVmFsaWRhdGUgYWxsIHByZXJlcXVpc2l0ZXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFZhbGlkYXRlUHJlcmVxdWlzaXRlcygpCiAgICB7CiAgICAgICAgJHRoaXMtPmVycm9ycyA9IGFycmF5KCk7CiAgICAgICAgJHRoaXMtPndhcm5pbmdzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICAvLyBDaGVjayBDR0Jsb2cgYXZhaWxhYmlsaXR5CiAgICAgICAgaWYgKCEkdGhpcy0+bW9kdWxlLT5Jc0NHQmxvZ0F2YWlsYWJsZSgpKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2Vycm9yX2NnYmxvZ19ub3RfaW5zdGFsbGVkJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gQ2hlY2sgTElTRSBhdmFpbGFiaWxpdHkKICAgICAgICBpZiAoISR0aGlzLT5tb2R1bGUtPklzTElTRUF2YWlsYWJsZSgpKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2Vycm9yX2xpc2Vfbm90X2luc3RhbGxlZCcpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENoZWNrIGZvciBkYXRhCiAgICAgICAgJHN0YXRzID0gJHRoaXMtPm1vZHVsZS0+R2V0Q0dCbG9nU3RhdHMoKTsKICAgICAgICBpZiAoJHN0YXRzWydhcnRpY2xlcyddID09IDAgJiYgJHN0YXRzWydjYXRlZ29yaWVzJ10gPT0gMCAmJiAkc3RhdHNbJ2ZpZWxkZGVmcyddID09IDApIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3Jfbm9fZGF0YScpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFdhcm5pbmdzIGZvciBtaXNzaW5nIGRhdGEgdHlwZXMKICAgICAgICBpZiAoJHN0YXRzWydhcnRpY2xlcyddID09IDApIHsKICAgICAgICAgICAgJHRoaXMtPndhcm5pbmdzW10gPSAkdGhpcy0+bW9kdWxlLT5MYW5nKCd3YXJuaW5nX25vX2FydGljbGVzJyk7CiAgICAgICAgfQogICAgICAgIGlmICgkc3RhdHNbJ2NhdGVnb3JpZXMnXSA9PSAwKSB7CiAgICAgICAgICAgICR0aGlzLT53YXJuaW5nc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnd2FybmluZ19ub19jYXRlZ29yaWVzJyk7CiAgICAgICAgfQogICAgICAgIGlmICgkc3RhdHNbJ2ZpZWxkZGVmcyddID09IDApIHsKICAgICAgICAgICAgJHRoaXMtPndhcm5pbmdzW10gPSAkdGhpcy0+bW9kdWxlLT5MYW5nKCd3YXJuaW5nX25vX2ZpZWxkZGVmcycpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBWYWxpZGF0ZSBpbnN0YW5jZSBuYW1lIGFuZCBnZW5lcmF0ZSBkZWZhdWx0IGlmIGVtcHR5CiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0ZWQvZ2VuZXJhdGVkIGluc3RhbmNlIG5hbWUgb3IgZmFsc2Ugb24gZXJyb3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFZhbGlkYXRlSW5zdGFuY2VOYW1lKCRpbnN0YW5jZV9uYW1lLCAkY2hlY2tfZXhpc3RzID0gdHJ1ZSkKICAgIHsKICAgICAgICAvLyBHZW5lcmF0ZSBkZWZhdWx0IG5hbWUgaWYgZW1wdHkKICAgICAgICBpZiAoZW1wdHkoJGluc3RhbmNlX25hbWUpKSB7CiAgICAgICAgICAgICRpbnN0YW5jZV9uYW1lID0gJHRoaXMtPkdlbmVyYXRlRGVmYXVsdEluc3RhbmNlTmFtZSgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDaGVjayBmb3IgdmFsaWQgY2hhcmFjdGVycyAoYWxwaGFudW1lcmljIG9ubHkpCiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXlthLXpBLVowLTldKyQvJywgJGluc3RhbmNlX25hbWUpKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2Vycm9yX2luc3RhbmNlX2ludmFsaWQnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDaGVjayBpZiBpbnN0YW5jZSBhbHJlYWR5IGV4aXN0cyBhbmQgZmluZCBhdmFpbGFibGUgbmFtZQogICAgICAgIGlmICgkY2hlY2tfZXhpc3RzKSB7CiAgICAgICAgICAgICRsaXNlID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRU1vZHVsZSgpOwogICAgICAgICAgICBpZiAoJGxpc2UpIHsKICAgICAgICAgICAgICAgICRpbnN0YW5jZXMgPSAkdGhpcy0+bW9kdWxlLT5HZXRMSVNFSW5zdGFuY2VzKCk7CiAgICAgICAgICAgICAgICAkY291bnRlciA9IDE7CiAgICAgICAgICAgICAgICAkb3JpZ2luYWxfbmFtZSA9ICRpbnN0YW5jZV9uYW1lOwogICAgICAgICAgICAgICAgJHZhbGlkYXRlZF9uYW1lID0gJGluc3RhbmNlX25hbWU7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIElmIG5hbWUgZXhpc3RzLCBhcHBlbmQgbnVtYmVyIHVudGlsIHdlIGZpbmQgYXZhaWxhYmxlIG5hbWUKICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgJG5hbWVfZXhpc3RzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGluc3RhbmNlcyBhcyAkaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgnTElTRScsICcnLCAkaW5zdGFuY2UtPm1vZHVsZV9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIoJG5hbWUpID09IHN0cnRvbG93ZXIoJHZhbGlkYXRlZF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVfZXhpc3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICghJG5hbWVfZXhpc3RzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBOYW1lIGV4aXN0cywgdHJ5IHdpdGggY291bnRlcgogICAgICAgICAgICAgICAgICAgICR2YWxpZGF0ZWRfbmFtZSA9ICRvcmlnaW5hbF9uYW1lIC4gJGNvdW50ZXI7CiAgICAgICAgICAgICAgICAgICAgJGNvdW50ZXIrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgcmV0dXJuICR2YWxpZGF0ZWRfbmFtZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJGluc3RhbmNlX25hbWU7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2VuZXJhdGUgZGVmYXVsdCBpbnN0YW5jZSBuYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZW5lcmF0ZURlZmF1bHRJbnN0YW5jZU5hbWUoKQogICAgewogICAgICAgIC8vIEdlbmVyYXRlIG5hbWUgYmFzZWQgb24gQ0dCbG9nIGFuZCB0aW1lc3RhbXAKICAgICAgICAkYmFzZV9uYW1lID0gJ0NHQmxvZ01pZ3JhdGVkJzsKICAgICAgICAkdGltZXN0YW1wID0gZGF0ZSgnWW1kSGlzJyk7CiAgICAgICAgcmV0dXJuICRiYXNlX25hbWUgLiAkdGltZXN0YW1wOwogICAgfQogICAgCiAgICAvKioKICAgICAqIFZhbGlkYXRlIGV4aXN0aW5nIGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBWYWxpZGF0ZUV4aXN0aW5nSW5zdGFuY2UoJGluc3RhbmNlX2lkKQogICAgewogICAgICAgICRsaXNlID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRU1vZHVsZSgpOwogICAgICAgIGlmICghJGxpc2UpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3JfbGlzZV9ub3RfaW5zdGFsbGVkJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGluc3RhbmNlcyA9ICR0aGlzLT5tb2R1bGUtPkdldExJU0VJbnN0YW5jZXMoKTsKICAgICAgICAkZm91bmQgPSBmYWxzZTsKICAgICAgICBmb3JlYWNoICgkaW5zdGFuY2VzIGFzICRpbnN0YW5jZSkgewogICAgICAgICAgICBpZiAoJGluc3RhbmNlLT5tb2R1bGVfaWQgPT0gJGluc3RhbmNlX2lkKSB7CiAgICAgICAgICAgICAgICAkZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCEkZm91bmQpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3JfaW5zdGFuY2Vfbm90X2ZvdW5kJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IGVycm9ycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXJyb3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVycm9yczsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgd2FybmluZ3MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldFdhcm5pbmdzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPndhcm5pbmdzOwogICAgfQogICAgCiAgICAvKioKICAgICAqIENoZWNrIGlmIHZhbGlkYXRpb24gcGFzc2VkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1ZhbGlkKCkKICAgIHsKICAgICAgICByZXR1cm4gZW1wdHkoJHRoaXMtPmVycm9ycyk7CiAgICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDcKCkNvcHlyaWdodCAoQykgMjAyNSBtYXN0ZXIzMzk1CgpUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo=]]></data>
	</file>
	<file>
	  <filename>/logs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/logs/migration_2025-11-28_00-46-48.log</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WzIwMjUtMTEtMjggMDA6NDY6NDhdIFN0YXJ0aW5nIG1pZ3JhdGlvbiBmcm9tIENHQmxvZyB0byBMSVNFLi4uClsyMDI1LTExLTI4IDAwOjQ2OjQ4XSBDcmVhdGluZyBuZXcgTElTRSBpbnN0YW5jZTogQ0dCbG9nTWlncmF0ZWQyMDI1MTEyODAwNDY0OApbMjAyNS0xMS0yOCAwMDo0Njo1MF0gTElTRSBpbnN0YW5jZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseTogTElTRUNHQmxvZ01pZ3JhdGVkMjAyNTExMjgwMDQ2NDgKWzIwMjUtMTEtMjggMDA6NDY6NTBdIE1pZ3JhdGluZyBjYXRlZ29yaWVzLi4uClsyMDI1LTExLTI4IDAwOjQ2OjUwXSBNaWdyYXRlZCAxIGNhdGVnb3JpZXMKWzIwMjUtMTEtMjggMDA6NDY6NTBdIE1pZ3JhdGluZyBmaWVsZCBkZWZpbml0aW9ucy4uLgpbMjAyNS0xMS0yOCAwMDo0Njo1MF0gTWlncmF0ZWQgMCBmaWVsZCBkZWZpbml0aW9ucwpbMjAyNS0xMS0yOCAwMDo0Njo1MF0gTWlncmF0aW5nIGFydGljbGVzLi4uClsyMDI1LTExLTI4IDAwOjQ2OjUwXSBNaWdyYXRlZCAxIGFydGljbGVzClsyMDI1LTExLTI4IDAwOjQ2OjUwXSBNaWdyYXRpbmcgZmllbGQgdmFsdWVzLi4uClsyMDI1LTExLTI4IDAwOjQ2OjUwXSBNaWdyYXRlZCAwIGZpZWxkIHZhbHVlcwpbMjAyNS0xMS0yOCAwMDo0Njo1MF0gTWlncmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHk6IDEgYXJ0aWNsZXMsIDEgY2F0ZWdvcmllcywgMCBmaWVsZCBkZWZpbml0aW9ucywgMCBmaWVsZCB2YWx1ZXMgbWlncmF0ZWQK]]></data>
	</file>
	<file>
	  <filename>/logs/migration_2026-01-06_00-16-01.log</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WzIwMjYtMDEtMDYgMDA6MTY6MDFdIFN0YXJ0aW5nIG1pZ3JhdGlvbiBmcm9tIENHQmxvZyB0byBMSVNFLi4uClsyMDI2LTAxLTA2IDAwOjE2OjAxXSBDcmVhdGluZyBuZXcgTElTRSBpbnN0YW5jZTogQ0dCbG9nTWlncmF0ZWQyMDI2MDEwNjAwMTYwMQpbMjAyNi0wMS0wNiAwMDoxNjowNF0gTElTRSBpbnN0YW5jZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseTogTElTRUNHQmxvZ01pZ3JhdGVkMjAyNjAxMDYwMDE2MDEKWzIwMjYtMDEtMDYgMDA6MTY6MDRdIE1pZ3JhdGluZyBjYXRlZ29yaWVzLi4uClsyMDI2LTAxLTA2IDAwOjE2OjA0XSBNaWdyYXRlZCAxIGNhdGVnb3JpZXMKWzIwMjYtMDEtMDYgMDA6MTY6MDRdIE1pZ3JhdGluZyBmaWVsZCBkZWZpbml0aW9ucy4uLgpbMjAyNi0wMS0wNiAwMDoxNjowNF0gTWlncmF0ZWQgMCBmaWVsZCBkZWZpbml0aW9ucwpbMjAyNi0wMS0wNiAwMDoxNjowNF0gTWlncmF0aW5nIGFydGljbGVzLi4uClsyMDI2LTAxLTA2IDAwOjE2OjA0XSBNaWdyYXRlZCAxIGFydGljbGVzClsyMDI2LTAxLTA2IDAwOjE2OjA0XSBNaWdyYXRpbmcgZmllbGQgdmFsdWVzLi4uClsyMDI2LTAxLTA2IDAwOjE2OjA0XSBNaWdyYXRlZCAwIGZpZWxkIHZhbHVlcwpbMjAyNi0wMS0wNiAwMDoxNjowNF0gTWlncmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHk6IDEgYXJ0aWNsZXMsIDEgY2F0ZWdvcmllcywgMCBmaWVsZCBkZWZpbml0aW9ucywgMCBmaWVsZCB2YWx1ZXMgbWlncmF0ZWQK]]></data>
	</file>
	<file>
	  <filename>/logs/migration_2026-01-06_01-07-07.log</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WzIwMjYtMDEtMDYgMDE6MDc6MDddIFN0YXJ0aW5nIG1pZ3JhdGlvbiBmcm9tIENHQmxvZyB0byBMSVNFLi4uClsyMDI2LTAxLTA2IDAxOjA3OjA3XSBDcmVhdGluZyBuZXcgTElTRSBpbnN0YW5jZTogQ0dCbG9nTWlncmF0ZWQyMDI2MDEwNjAxMDcwNwpbMjAyNi0wMS0wNiAwMTowNzowOF0gTElTRSBpbnN0YW5jZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseTogTElTRUNHQmxvZ01pZ3JhdGVkMjAyNjAxMDYwMTA3MDcK]]></data>
	</file>
	<file>
	  <filename>/logs/migration_2026-01-06_01-13-18.log</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WzIwMjYtMDEtMDYgMDE6MTM6MThdIFN0YXJ0aW5nIG1pZ3JhdGlvbiBmcm9tIENHQmxvZyB0byBMSVNFLi4uClsyMDI2LTAxLTA2IDAxOjEzOjE4XSBDcmVhdGluZyBuZXcgTElTRSBpbnN0YW5jZTogQ0dCbG9nTWlncmF0ZWQyMDI2MDEwNjAxMTMxOApbMjAyNi0wMS0wNiAwMToxMzoxOV0gTElTRSBpbnN0YW5jZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseTogTElTRUNHQmxvZ01pZ3JhdGVkMjAyNjAxMDYwMTEzMTgKWzIwMjYtMDEtMDYgMDE6MTM6MTldIE1pZ3JhdGluZyBjYXRlZ29yaWVzLi4uClsyMDI2LTAxLTA2IDAxOjEzOjE5XSBNaWdyYXRlZCAxIGNhdGVnb3JpZXMKWzIwMjYtMDEtMDYgMDE6MTM6MTldIE1pZ3JhdGluZyBmaWVsZCBkZWZpbml0aW9ucy4uLgpbMjAyNi0wMS0wNiAwMToxMzoxOV0gTWlncmF0ZWQgMCBmaWVsZCBkZWZpbml0aW9ucwpbMjAyNi0wMS0wNiAwMToxMzoxOV0gTWlncmF0aW5nIGFydGljbGVzLi4uClsyMDI2LTAxLTA2IDAxOjEzOjE5XSBNaWdyYXRlZCAxIGFydGljbGVzClsyMDI2LTAxLTA2IDAxOjEzOjE5XSBNaWdyYXRpbmcgZmllbGQgdmFsdWVzLi4uClsyMDI2LTAxLTA2IDAxOjEzOjE5XSBNaWdyYXRlZCBmaWVsZCB2YWx1ZXMKWzIwMjYtMDEtMDYgMDE6MTM6MTldIE1pZ3JhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5OiAxIGFydGljbGVzLCAxIGNhdGVnb3JpZXMsIDIgZmllbGQgZGVmaW5pdGlvbnMsIDIgZmllbGQgdmFsdWVzIG1pZ3JhdGVkCg==]]></data>
	</file>
	<file>
	  <filename>/MAS_CGBlogToLISE.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1BU19DR0Jsb2dUb0xJU0UgTW9kdWxlIGZvciBDTVNNUwogKiAKICogTWlncmF0ZXMgZGF0YSBmcm9tIENHQmxvZyBtb2R1bGUgdG8gTElTRSBpbnN0YW5jZXMKICogCiAqIEBwYWNrYWdlIE1BU19DR0Jsb2dUb0xJU0UKICogQGF1dGhvciBtYXN0ZXIzMzk1CiAqIEBjb3B5cmlnaHQgMjAyNSBtYXN0ZXIzMzk1CiAqIEBsaWNlbnNlIEdQTCB2MwogKiBAdmVyc2lvbiAxLjAuMAogKi8KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKY2xhc3MgTUFTX0NHQmxvZ1RvTElTRSBleHRlbmRzIENNU01vZHVsZQp7CiAgICAvLyBQcmVmZXJlbmNlIGNvbnN0YW50cwogICAgY29uc3QgUFJFRl9GUklFTkRMWU5BTUUgPSAnZnJpZW5kbHluYW1lJzsKICAgIGNvbnN0IFBSRUZfU0hPV19ET05BVElPTlMgPSAnbWFzX3Nob3dfZG9uYXRpb25zJzsKICAgIAogICAgZnVuY3Rpb24gR2V0TmFtZSgpIHsgCiAgICAgICAgcmV0dXJuICdNQVNfQ0dCbG9nVG9MSVNFJzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsgCiAgICAgICAgJGZyaWVuZGx5bmFtZSA9IHRyaW0oJHRoaXMtPkdldFByZWZlcmVuY2Uoc2VsZjo6UFJFRl9GUklFTkRMWU5BTUUpKTsKICAgICAgICBpZiAoISRmcmllbmRseW5hbWUpIHsKICAgICAgICAgICAgJGZyaWVuZGx5bmFtZSA9ICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRmcmllbmRseW5hbWU7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyAKICAgICAgICByZXR1cm4gJzEuMC4xJzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgeyAKICAgICAgICByZXR1cm4gJzIuMi4wJzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsgCiAgICAgICAgcmV0dXJuICdtYXN0ZXIzMzk1JzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgeyAKICAgICAgICByZXR1cm4gJ2luZm9AbmV3c3RhcmdldGVkLmNvbSc7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSB7IAogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRIZWxwKCkgeyAKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IAogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyAKICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEhhc0FkbWluKCkgeyAKICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsKICAgICAgICByZXR1cm4gJ2V4dGVuc2lvbnMnOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkgeyAKICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKSB7IAogICAgICAgIHJldHVybiB0cnVlOyAKICAgIH0KICAgIAogICAgZnVuY3Rpb24gQWxsb3dTbWFydHlDYWNoaW5nKCkgeyAKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQogICAgewogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0YWRtaW4nLCAnQWN0aW9uIHRvIHBlcmZvcm0nKTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBDaGVjayBpZiBDR0Jsb2cgbW9kdWxlIGlzIGluc3RhbGxlZCBhbmQgYXZhaWxhYmxlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBJc0NHQmxvZ0F2YWlsYWJsZSgpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG1vZG9wcyA9IGNtc21zKCktPkdldE1vZHVsZU9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJGluc3RhbGxlZCA9ICRtb2RvcHMtPkdldEluc3RhbGxlZE1vZHVsZXMoKTsKICAgICAgICAgICAgcmV0dXJuIGluX2FycmF5KCdDR0Jsb2cnLCAkaW5zdGFsbGVkKTsKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0gY2F0Y2ggKEVycm9yICRlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ2hlY2sgaWYgTElTRSBtb2R1bGUgaXMgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIElzTElTRUF2YWlsYWJsZSgpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG1vZG9wcyA9IGNtc21zKCktPkdldE1vZHVsZU9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJGluc3RhbGxlZCA9ICRtb2RvcHMtPkdldEluc3RhbGxlZE1vZHVsZXMoKTsKICAgICAgICAgICAgcmV0dXJuIGluX2FycmF5KCdMSVNFJywgJGluc3RhbGxlZCk7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGNhdGNoIChFcnJvciAkZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCBDR0Jsb2cgbW9kdWxlIGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRDR0Jsb2dNb2R1bGUoKQogICAgewogICAgICAgIGlmICghJHRoaXMtPklzQ0dCbG9nQXZhaWxhYmxlKCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjbXNtcygpLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ0dCbG9nJyk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IExJU0UgbW9kdWxlIGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRMSVNFTW9kdWxlKCkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5Jc0xJU0VBdmFpbGFibGUoKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNtc21zKCktPkdldE1vZHVsZUluc3RhbmNlKCdMSVNFJyk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IGxpc3Qgb2YgYXZhaWxhYmxlIExJU0UgaW5zdGFuY2VzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRMSVNFSW5zdGFuY2VzKCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoISR0aGlzLT5Jc0xJU0VBdmFpbGFibGUoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICRsaXNlID0gJHRoaXMtPkdldExJU0VNb2R1bGUoKTsKICAgICAgICAgICAgaWYgKCEkbGlzZSB8fCAhaXNfb2JqZWN0KCRsaXNlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICghbWV0aG9kX2V4aXN0cygkbGlzZSwgJ0xpc3RNb2R1bGVzJykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAkcmVzdWx0ID0gJGxpc2UtPkxpc3RNb2R1bGVzKCk7CiAgICAgICAgICAgIHJldHVybiBpc19hcnJheSgkcmVzdWx0KSA/ICRyZXN1bHQgOiBhcnJheSgpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9IGNhdGNoIChFcnJvciAkZSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCBDR0Jsb2cgc3RhdGlzdGljcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0Q0dCbG9nU3RhdHMoKQogICAgewogICAgICAgICRzdGF0cyA9IGFycmF5KAogICAgICAgICAgICAnYXJ0aWNsZXMnID0+IDAsCiAgICAgICAgICAgICdjYXRlZ29yaWVzJyA9PiAwLAogICAgICAgICAgICAnZmllbGRkZWZzJyA9PiAwLAogICAgICAgICAgICAnZmllbGR2YWxzJyA9PiAwCiAgICAgICAgKTsKICAgICAgICAKICAgICAgICBpZiAoISR0aGlzLT5Jc0NHQmxvZ0F2YWlsYWJsZSgpKSB7CiAgICAgICAgICAgIHJldHVybiAkc3RhdHM7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgICAgIGlmICghJGRiKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHN0YXRzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAkc3RhdHNbJ2FydGljbGVzJ10gPSAoaW50KSRkYi0+R2V0T25lKCdTRUxFQ1QgQ09VTlQoKikgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jZ2Jsb2cnKTsKICAgICAgICAgICAgJHN0YXRzWydjYXRlZ29yaWVzJ10gPSAoaW50KSRkYi0+R2V0T25lKCdTRUxFQ1QgQ09VTlQoKikgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jZ2Jsb2dfY2F0ZWdvcmllcycpOwogICAgICAgICAgICAkc3RhdHNbJ2ZpZWxkZGVmcyddID0gKGludCkkZGItPkdldE9uZSgnU0VMRUNUIENPVU5UKCopIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2dibG9nX2ZpZWxkZGVmcycpOwogICAgICAgICAgICAkc3RhdHNbJ2ZpZWxkdmFscyddID0gKGludCkkZGItPkdldE9uZSgnU0VMRUNUIENPVU5UKCopIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2dibG9nX2ZpZWxkdmFscycpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAvLyBSZXR1cm4gZW1wdHkgc3RhdHMgb24gZXJyb3IKICAgICAgICB9IGNhdGNoIChFcnJvciAkZSkgewogICAgICAgICAgICAvLyBSZXR1cm4gZW1wdHkgc3RhdHMgb24gZXJyb3IKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgLy8gUmV0dXJuIGVtcHR5IHN0YXRzIG9uIGVycm9yCiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkc3RhdHM7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogVmFsaWRhdGUgbWlncmF0aW9uIHByZXJlcXVpc2l0ZXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFZhbGlkYXRlTWlncmF0aW9uUHJlcmVxdWlzaXRlcygpCiAgICB7CiAgICAgICAgJGVycm9ycyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgaWYgKCEkdGhpcy0+SXNDR0Jsb2dBdmFpbGFibGUoKSkgewogICAgICAgICAgICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfY2dibG9nX25vdF9pbnN0YWxsZWQnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCEkdGhpcy0+SXNMSVNFQXZhaWxhYmxlKCkpIHsKICAgICAgICAgICAgJGVycm9yc1tdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2xpc2Vfbm90X2luc3RhbGxlZCcpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJGVycm9yczsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBTaG93IGRvbmF0aW9ucyB0YWIKICAgICAqLwogICAgZnVuY3Rpb24gU2hvd0RvbmF0aW9uc1RhYigpIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJoaWRlZG9uYXRpb25zdGFiIikgIT0gJHRoaXMtPkdldFZlcnNpb24oKSk7CiAgICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEluc3RhbGxhdGlvbiBNZXRob2QgZm9yIE1BU19DR0Jsb2dUb0xJU0UKICogQ29tcGF0aWJsZSB3aXRoIFBIUCA3LjQtOC42CiAqLwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIGV4aXQ7CgovLyBSZWdpc3RlciBhcyBwbHVnaW4gbW9kdWxlCiR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbih0cnVlKTsKCi8vIENyZWF0ZSBwZXJtaXNzaW9uCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdVc2UgTUFTX0NHQmxvZ1RvTElTRScsICdVc2UgTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbiBtb2R1bGUnKTsKCi8vIEdyYW50IHBlcm1pc3Npb24gdG8gQWRtaW4gZ3JvdXAgKGdyb3VwX2lkID0gMSkgYnkgZGVmYXVsdAokZGIgPSBjbXNtcygpLT5HZXREYigpOwokZ3JvdXBfaWQgPSAxOyAvLyBBZG1pbiBncm91cAokcGVybWlzc2lvbl9uYW1lID0gJ1VzZSBNQVNfQ0dCbG9nVG9MSVNFJzsKJHBlcm1faWQgPSAkZGItPkdldE9uZSgnU0VMRUNUIHBlcm1pc3Npb25faWQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdwZXJtaXNzaW9ucyBXSEVSRSBwZXJtaXNzaW9uX25hbWUgPSA/JywgYXJyYXkoJHBlcm1pc3Npb25fbmFtZSkpOwppZiAoJHBlcm1faWQpIHsKICAgICRleGlzdHMgPSAkZGItPkdldE9uZSgnU0VMRUNUIHBlcm1pc3Npb25faWQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdncm91cF9wZXJtcyBXSEVSRSBwZXJtaXNzaW9uX2lkID0gPyBBTkQgZ3JvdXBfaWQgPSA/JywgYXJyYXkoJHBlcm1faWQsICRncm91cF9pZCkpOwogICAgaWYgKCEkZXhpc3RzKSB7CiAgICAgICAgJGRiLT5FeGVjdXRlKCdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuICdncm91cF9wZXJtcyAoZ3JvdXBfaWQsIHBlcm1pc3Npb25faWQpIFZBTFVFUyAoPywgPyknLCBhcnJheSgkZ3JvdXBfaWQsICRwZXJtX2lkKSk7CiAgICB9Cn0KCi8vIENyZWF0ZSBsb2dzIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0CiRtb2R1bGVfcGF0aCA9ICR0aGlzLT5HZXRNb2R1bGVQYXRoKCk7CiRsb2dzX2RpciA9IGNtc19qb2luX3BhdGgoJG1vZHVsZV9wYXRoLCAnbG9ncycpOwppZiAoIWlzX2RpcigkbG9nc19kaXIpKSB7CiAgICBAbWtkaXIoJGxvZ3NfZGlyLCAwNzU1LCB0cnVlKTsKICAgIC8vIFNldCBjb3JyZWN0IG93bmVyc2hpcCBmb3IgbG9ncyBkaXJlY3RvcnkKICAgIEBjaG93bigkbG9nc19kaXIsICduZXdzdDM5MjInKTsKICAgIEBjaGdycCgkbG9nc19kaXIsICduZXdzdDM5MjInKTsKfQoKLy8gQXVkaXQgbG9nCiR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cgo/PgoK]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFVuaW5zdGFsbGF0aW9uIE1ldGhvZCBmb3IgTUFTX0NHQmxvZ1RvTElTRQogKiBDb21wYXRpYmxlIHdpdGggUEhQIDcuNC04LjYKICovCgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY21zbXMnKSkgZXhpdDsKCi8vIFJlbW92ZSBwZXJtaXNzaW9uCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdVc2UgTUFTX0NHQmxvZ1RvTElTRScpOwoKLy8gTm90ZTogV2Uga2VlcCBsb2dzIGluIGNhc2UgbW9kdWxlIGlzIHJlaW5zdGFsbGVkCi8vIElmIHlvdSB3YW50IHRvIGNvbXBsZXRlbHkgcmVtb3ZlIGV2ZXJ5dGhpbmcsIHVuY29tbWVudCB0aGUgZm9sbG93aW5nOgoKLy8gJG1vZHVsZV9wYXRoID0gJHRoaXMtPkdldE1vZHVsZVBhdGgoKTsKLy8gJGxvZ3NfZGlyID0gY21zX2pvaW5fcGF0aCgkbW9kdWxlX3BhdGgsICdsb2dzJyk7Ci8vIGlmIChpc19kaXIoJGxvZ3NfZGlyKSkgewovLyAgICAgJGZpbGVzID0gZ2xvYigkbG9nc19kaXIgLiAnLyonKTsKLy8gICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewovLyAgICAgICAgIGlmIChpc19maWxlKCRmaWxlKSkgewovLyAgICAgICAgICAgICBAdW5saW5rKCRmaWxlKTsKLy8gICAgICAgICB9Ci8vICAgICB9Ci8vICAgICBAcm1kaXIoJGxvZ3NfZGlyKTsKLy8gfQoKLy8gQXVkaXQgbG9nCiR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcpKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJNQVNfQ0dCbG9nVG9MSVNFIgp2ZXJzaW9uID0gIjEuMC4xIgphdXRob3IgPSAibWFzdGVyMzM5NSIKYXV0aG9yZW1haWwgPSAiaW5mb0BuZXdzdGFyZ2V0ZWQuY29tIgptaW5jbXN2ZXJzaW9uID0gIjIuMi4wIgpsYXp5bG9hZGFkbWluID0gMQpsYXp5bG9hZGZyb250ZW5kID0gMQo=]]></data>
	</file>
	<file>
	  <filename>/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBNQVMgQ0dCbG9nIHRvIExJU0UgTWlncmF0aW9uIE1vZHVsZQoKQSBwb3dlcmZ1bCBDTVMgTWFkZSBTaW1wbGUgbW9kdWxlIGZvciBtaWdyYXRpbmcgZGF0YSBmcm9tIHRoZSBDR0Jsb2cgbW9kdWxlIHRvIExJU0UgaW5zdGFuY2VzLgoKWyFbQ01TIE1hZGUgU2ltcGxlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NNU01TLTIuMi4wKy1ncmVlbi5zdmcpXShodHRwczovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy8pClshW1BIUCBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BIUC03LjQtLTguNi1ibHVlLnN2ZyldKGh0dHBzOi8vd3d3LnBocC5uZXQvKQpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtR1BMJTIwdjMtYmx1ZS5zdmcpXShMSUNFTlNFKQoKIyMgT3ZlcnZpZXcKCioqTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbioqIHNpbXBsaWZpZXMgdGhlIHByb2Nlc3Mgb2YgbWlncmF0aW5nIHlvdXIgYmxvZyBkYXRhIGZyb20gQ0dCbG9nIHRvIExJU0UgaW5zdGFuY2VzIGluIENNUyBNYWRlIFNpbXBsZS4gV2hldGhlciB5b3UncmUgdXBncmFkaW5nIHlvdXIgY29udGVudCBtYW5hZ2VtZW50IHN5c3RlbSBvciBjb25zb2xpZGF0aW5nIHlvdXIgZGF0YSwgdGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBzZWFtbGVzcyBtaWdyYXRpb24gZXhwZXJpZW5jZSB3aXRoIGNvbXByZWhlbnNpdmUgZGF0YSBtYXBwaW5nLCBwcmV2aWV3IGNhcGFiaWxpdGllcywgYW5kIGRldGFpbGVkIGxvZ2dpbmcuCgojIyBGZWF0dXJlcwoKLSDinKggKipDcmVhdGUgTmV3IEluc3RhbmNlcyoqOiBBdXRvbWF0aWNhbGx5IGNyZWF0ZSBuZXcgTElTRSBpbnN0YW5jZXMgZnJvbSBDR0Jsb2cgZGF0YQotIPCfk4sgKipVc2UgRXhpc3RpbmcgSW5zdGFuY2VzKio6IENvcHkgZGF0YSB0byBleGlzdGluZyBMSVNFIGluc3RhbmNlcwotIPCfjq8gKipTZWxlY3RpdmUgTWlncmF0aW9uKio6IENob29zZSB3aGljaCBkYXRhIHRvIG1pZ3JhdGUgKGFydGljbGVzLCBjYXRlZ29yaWVzLCBjdXN0b20gZmllbGRzKQotIPCfkYHvuI8gKipQcmV2aWV3Kio6IFByZXZpZXcgZGF0YSBiZWZvcmUgbWlncmF0aW9uIHRvIGVuc3VyZSBhY2N1cmFjeQotIPCflIQgKipDb21wcmVoZW5zaXZlIE1hcHBpbmcqKjogQXV0b21hdGljYWxseSBtYXBzIENHQmxvZyBkYXRhIHN0cnVjdHVyZXMgdG8gTElTRSBmb3JtYXQKLSDwn5uh77iPICoqRXJyb3IgSGFuZGxpbmcqKjogRGV0YWlsZWQgZXJyb3IgcmVwb3J0aW5nIGFuZCBsb2dnaW5nIHRvIENNU01TIEFkbWluIExvZwotIPCflJIgKipUcmFuc2FjdGlvbiBTdXBwb3J0Kio6IFJvbGxiYWNrIG9uIGZhaWx1cmUgZm9yIGRhdGEgc2FmZXR5Ci0g8J+TiiAqKlN0YXRpc3RpY3MqKjogVmlldyBtaWdyYXRpb24gc3RhdGlzdGljcyBhbmQgcmVzdWx0cwoKIyMgUmVxdWlyZW1lbnRzCgotIENNUyBNYWRlIFNpbXBsZSAyLjIuMCBvciBoaWdoZXIKLSBQSFAgNy40IHRvIDguNgotIENHQmxvZyBtb2R1bGUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkCi0gTElTRSBtb2R1bGUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkCgojIyBRdWljayBTdGFydAoKMS4gKipJbnN0YWxsIHRoZSBtb2R1bGUqKiAtIFNlZSBbSW5zdGFsbGF0aW9uIEd1aWRlXShkb2NzL0lOU1RBTExBVElPTi5tZCkKMi4gKipBY2Nlc3MgTW9kdWxlKiogLSBOYXZpZ2F0ZSB0byAqKkV4dGVuc2lvbnMg4oaSIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24qKgozLiAqKkNob29zZSBJbnN0YW5jZSoqIC0gU2VsZWN0IHRvIGNyZWF0ZSBhIG5ldyBMSVNFIGluc3RhbmNlIG9yIHVzZSBhbiBleGlzdGluZyBvbmUKNC4gKipTZWxlY3QgRGF0YSoqIC0gQ2hvb3NlIHdoaWNoIGRhdGEgdHlwZXMgdG8gbWlncmF0ZQo1LiAqKlByZXZpZXcqKiAtIFJldmlldyB3aGF0IHdpbGwgYmUgbWlncmF0ZWQKNi4gKipNaWdyYXRlKiogLSBTdGFydCB0aGUgbWlncmF0aW9uIHByb2Nlc3MKCkZvciBkZXRhaWxlZCBpbnN0cnVjdGlvbnMsIHNlZSB0aGUgW1VzYWdlIEd1aWRlXShkb2NzL1VTQUdFLm1kKS4KCiMjIEluc3RhbGxhdGlvbgoKIyMjIE1ldGhvZCAxOiBVc2luZyBNb2R1bGUgTWFuYWdlciAoUmVjb21tZW5kZWQpCgoxLiBEb3dubG9hZCB0aGUgbGF0ZXN0IHJlbGVhc2UgZnJvbSB0aGUgW1JlbGVhc2VzXShodHRwczovL2dpdGh1Yi5jb20vbWFzdGVyMzM5NS9NQVNfQ0dCbG9nVG9MSVNFL3JlbGVhc2VzKSBwYWdlCjIuIFVwbG9hZCB0aGUgYE1BU19DR0Jsb2dUb0xJU0UtMS4wLjAueG1sYCBmaWxlIHZpYSAqKkV4dGVuc2lvbnMg4oaSIE1vZHVsZSBNYW5hZ2VyIOKGkiBVcGxvYWQgTW9kdWxlKioKMy4gVGhlIG1vZHVsZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkCgojIyMgTWV0aG9kIDI6IE1hbnVhbCBJbnN0YWxsYXRpb24KCjEuIERvd25sb2FkIHRoZSBtb2R1bGUgWklQIGZpbGUgZnJvbSBbUmVsZWFzZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXN0ZXIzMzk1L01BU19DR0Jsb2dUb0xJU0UvcmVsZWFzZXMpCjIuIEV4dHJhY3QgdGhlIGNvbnRlbnRzIHRvIHlvdXIgQ01TTVMgYG1vZHVsZXMvYCBkaXJlY3RvcnkKMy4gRW5zdXJlIHRoZSBmb2xkZXIgaXMgbmFtZWQgYE1BU19DR0Jsb2dUb0xJU0VgCjQuIEdvIHRvICoqRXh0ZW5zaW9ucyDihpIgTW9kdWxlIE1hbmFnZXIqKiBhbmQgaW5zdGFsbCB0aGUgbW9kdWxlCgpGb3IgZGV0YWlsZWQgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucywgc2VlIHRoZSBbSW5zdGFsbGF0aW9uIEd1aWRlXShkb2NzL0lOU1RBTExBVElPTi5tZCkuCgojIyBEb2N1bWVudGF0aW9uCgpDb21wcmVoZW5zaXZlIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBgZG9jcy9gIGZvbGRlcjoKCi0gKipbSW5zdGFsbGF0aW9uIEd1aWRlXShkb2NzL0lOU1RBTExBVElPTi5tZCkqKiAtIERldGFpbGVkIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMKLSAqKltVc2FnZSBHdWlkZV0oZG9jcy9VU0FHRS5tZCkqKiAtIENvbXBsZXRlIHVzYWdlIGRvY3VtZW50YXRpb24KLSAqKltEYXRhIE1hcHBpbmcgR3VpZGVdKGRvY3MvREFUQV9NQVBQSU5HLm1kKSoqIC0gSG93IGRhdGEgaXMgbWFwcGVkIGZyb20gQ0dCbG9nIHRvIExJU0UKLSAqKltUcm91Ymxlc2hvb3RpbmcgR3VpZGVdKGRvY3MvVFJPVUJMRVNIT09USU5HLm1kKSoqIC0gQ29tbW9uIGlzc3VlcyBhbmQgc29sdXRpb25zCi0gKipbRG93bmxvYWQgSW5zdHJ1Y3Rpb25zXShkb2NzL0RPV05MT0FELm1kKSoqIC0gRG93bmxvYWQgbGlua3MgYW5kIGluc3RydWN0aW9ucwoKIyMgRGF0YSBNYXBwaW5nCgpUaGUgbW9kdWxlIGF1dG9tYXRpY2FsbHkgbWFwcyBkYXRhIHN0cnVjdHVyZXMgYmV0d2VlbiBDR0Jsb2cgYW5kIExJU0U6Cgp8IENHQmxvZyB8IExJU0UgfAp8LS0tLS0tLS18LS0tLS0tfAp8IEFydGljbGVzIHwgSXRlbXMgfAp8IENhdGVnb3JpZXMgfCBDYXRlZ29yaWVzIChoaWVyYXJjaHkgcHJlc2VydmVkKSB8CnwgQ3VzdG9tIEZpZWxkcyB8IEZpZWxkIERlZmluaXRpb25zIHwKfCBGaWVsZCBWYWx1ZXMgfCBJdGVtIEZpZWxkIFZhbHVlcyB8CgpGb3IgZGV0YWlsZWQgbWFwcGluZyBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbRGF0YSBNYXBwaW5nIEd1aWRlXShkb2NzL0RBVEFfTUFQUElORy5tZCkuCgojIyBJbXBvcnRhbnQgTm90ZXMKCiMjIyBCZWZvcmUgTWlncmF0aW9uCgrimqDvuI8gKipJbXBvcnRhbnQqKjoKCi0gKipCYWNrdXAgeW91ciBkYXRhYmFzZSoqIC0gTWlncmF0aW9uIGNhbm5vdCBiZSB1bmRvbmUgYXV0b21hdGljYWxseQotIFZlcmlmeSBDR0Jsb2cgYW5kIExJU0UgbW9kdWxlcyBhcmUgcHJvcGVybHkgaW5zdGFsbGVkCi0gVGVzdCBvbiBhIGRldmVsb3BtZW50IGVudmlyb25tZW50IGZpcnN0IGlmIHBvc3NpYmxlCgojIyMgRHVyaW5nIE1pZ3JhdGlvbgoK4pyFICoqV2hhdCdzIFByZXNlcnZlZCoqOgoKLSBDYXRlZ29yeSBoaWVyYXJjaGllcyBhcmUgcHJlc2VydmVkCi0gQXJ0aWNsZSBVUkxzIGFuZCBtZXRhZGF0YSBhcmUgbWFpbnRhaW5lZAotIEZpZWxkIHR5cGVzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZAotIEFsbCByZWxhdGlvbnNoaXBzIGFyZSBtYWludGFpbmVkCgojIyBUcm91Ymxlc2hvb3RpbmcKCkZvciBjb21tb24gaXNzdWVzIGFuZCBzb2x1dGlvbnMsIHNlZSB0aGUgW1Ryb3VibGVzaG9vdGluZyBHdWlkZV0oZG9jcy9UUk9VQkxFU0hPT1RJTkcubWQpLgoKIyMjIFF1aWNrIEhlbHAKCi0gKioiQ0dCbG9nIG1vZHVsZSBpcyBub3QgaW5zdGFsbGVkIioqIC0gRW5zdXJlIENHQmxvZyBtb2R1bGUgaXMgaW5zdGFsbGVkIGFuZCBhY3RpdmF0ZWQKLSAqKiJMSVNFIG1vZHVsZSBpcyBub3QgaW5zdGFsbGVkIioqIC0gRW5zdXJlIExJU0UgbW9kdWxlIGlzIGluc3RhbGxlZCBhbmQgYWN0aXZhdGVkCi0gKioiTm8gQ0dCbG9nIGRhdGEgZm91bmQgdG8gbWlncmF0ZSIqKiAtIFZlcmlmeSB5b3VyIENHQmxvZyBtb2R1bGUgY29udGFpbnMgYXJ0aWNsZXMgb3IgY2F0ZWdvcmllcwotICoqIkxJU0UgaW5zdGFuY2Ugd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMiKiogLSBDaG9vc2UgYSBkaWZmZXJlbnQgaW5zdGFuY2UgbmFtZSBvciB1c2UgYW4gZXhpc3RpbmcgaW5zdGFuY2UKCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSEgUGxlYXNlIHJlYWQgb3VyIFtDb250cmlidXRpbmcgR3VpZGVsaW5lc10oQ09OVFJJQlVUSU5HLm1kKSBiZWZvcmUgc3VibWl0dGluZyBwdWxsIHJlcXVlc3RzLgoKIyMgQ2hhbmdlbG9nCgpTZWUgW0NIQU5HRUxPRy5tZF0oQ0hBTkdFTE9HLm1kKSBmb3IgYSBkZXRhaWxlZCBsaXN0IG9mIGNoYW5nZXMuCgojIyMgVmVyc2lvbiAxLjAuMCAoMjAyNS0xMS0yOCkKCi0gSW5pdGlhbCByZWxlYXNlCi0gTWlncmF0ZSBhcnRpY2xlcyBmcm9tIENHQmxvZyB0byBMSVNFCi0gTWlncmF0ZSBjYXRlZ29yaWVzIHdpdGggaGllcmFyY2h5IHByZXNlcnZhdGlvbgotIE1pZ3JhdGUgY3VzdG9tIGZpZWxkIGRlZmluaXRpb25zIGFuZCB2YWx1ZXMKLSBDcmVhdGUgbmV3IExJU0UgaW5zdGFuY2VzIG9yIHVzZSBleGlzdGluZyBvbmVzCi0gUHJldmlldyBtaWdyYXRpb24gZGF0YSBiZWZvcmUgZXhlY3V0aW5nCi0gQ29tcHJlaGVuc2l2ZSBlcnJvciBoYW5kbGluZyBhbmQgbG9nZ2luZwotIEF1dG8tZ2VuZXJhdGlvbiBvZiBpbnN0YW5jZSBuYW1lcwotIENNU01TIEFkbWluIExvZyBpbnRlZ3JhdGlvbgoKIyMgTGljZW5zZQoKVGhpcyBtb2R1bGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFtHUEwgdjMgTGljZW5zZV0oTElDRU5TRSkuCgojIyBBdXRob3IKCiMjIyBtYXN0ZXIzMzk1CgotIEVtYWlsOiBbaW5mb0BuZXdzdGFyZ2V0ZWQuY29tXShtYWlsdG86aW5mb0BuZXdzdGFyZ2V0ZWQuY29tKQotIFdlYnNpdGU6IFtOZXdzIFRhcmdldGVkXShodHRwczovL25ld3N0YXJnZXRlZC5jb20pCgojIyBTdXBwb3J0CgpGb3IgaXNzdWVzLCBmZWF0dXJlIHJlcXVlc3RzLCBvciBxdWVzdGlvbnM6CgotIE9wZW4gYW4gaXNzdWUgb24gW0dpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL21hc3RlcjMzOTUvTUFTX0NHQmxvZ1RvTElTRS9pc3N1ZXMpCi0gQ29udGFjdDogW2luZm9AbmV3c3RhcmdldGVkLmNvbV0obWFpbHRvOmluZm9AbmV3c3RhcmdldGVkLmNvbSkKLSBDaGVjayB0aGUgW0RvY3VtZW50YXRpb25dKGRvY3MvKSBmb2xkZXIgZm9yIGRldGFpbGVkIGd1aWRlcwoKIyMgQWNrbm93bGVkZ21lbnRzCgojIyMgQ01TIE1hZGUgU2ltcGxlIENvbW11bml0eQoKQnVpbHQgZm9yIHRoZSBDTVMgTWFkZSBTaW1wbGUgY29tbXVuaXR5LiBUaGFuayB5b3UgZm9yIHVzaW5nIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24hCgotLS0KCiMjIyBNYWRlIHdpdGgg4p2k77iPIGZvciBDTVMgTWFkZSBTaW1wbGUK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/donations.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCBibGFjaztwYWRkaW5nOjEwcHg7Ij4KPHN0cm9uZz57JHNwb25zb3JzdGV4dH08L3N0cm9uZz4KPGJyLz4KPGEgaHJlZj0iaHR0cHM6Ly9uZXdzdGFyZ2V0ZWQuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPk5ld3MgVGFyZ2V0ZWQ8L2E+Cjxici8+CjwvZGl2Pgo8YnIvPgp7JGRvbmF0aW9uc3RleHR9Cjxici8+PGJyLz4KPGZvcm0gYWN0aW9uPSJodHRwczovL3BheXBhbC5tZS9LaW1CUz9sb2NhbGUueD1lbl9VUyZjb3VudHJ5Lng9Tk8iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSJfYmxhbmsiPgo8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9lbl9VUy9pL2J0bi9idG5fZG9uYXRlX0xHLmdpZiIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lISIgLz4KPC9mb3JtPgo8YnIvPjxici8+Cgp7JGZvcm1zdGFydH0KeyRoaWRlc3VibWl0fQp7JGZvcm1lbmR9Cg==]]></data>
	</file>
</module>
