<?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>AdvancedContent</name>
	<version>0.6.4</version>
  <mincmsversion>1.6.9</mincmsversion>
	<help><![CDATA[PGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJob3N0ZWRfYnV0dG9uX2lkIiB2YWx1ZT0iRkEyRDNGUExTVEFLSiIgLz4KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZW5fR0IvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lLiIgLz4KPGltZyBhbHQ9IiIgYm9yZGVyPSIwIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPgo8L2Zvcm0+PC9kaXY+PGJyIC8+CjxoMz5XYXMgbWFjaHQgZGllc2VzIE1vZHVsPzwvaDM+CjxwPkRpZXNlcyBNb2R1bCBiaWV0ZXQgZWluZW4gd2VpdGVyZW4gSW5oYWx0c3R5cGVuICJFcndlaXRlcnRlciBJbmhhbHQiLjxiciAvPgpNaXQgZGllc2VtIEluaGFsdHN0eXBlbiBrYW5uIGRpZSBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBmbGV4aWJlbCBnZXN0YWx0ZXQgd2VyZGVuLCBpbmRlbSBtYW4gaW0gU2VpdGVuLVRlbXBsYXRlIGRlbiBlaW56ZWxuZW4gSW5oYWx0c2JsJm91bWw7Y2tlbiB3ZWl0ZXJlIFBhcmFtZXRlciBoaW56dWYmdXVtbDtndC48YnIgLz4KSW5oYWx0c2JsJm91bWw7Y2tlIGsmb3VtbDtubmVuIGluIEZvcm0gdmVyc2NoaWVkZW5lciBJbnB1dC1GZWxkZXIgd2llIERyb3Bkb3ducywgTWVocmZhY2hhdXN3YWhsZmVsZGVyIG9kZXIgQ2hlY2tib3hlbiBkYXJnZXN0ZWxsdCB3ZXJkZW4uPGJyIC8+CkRpZSBJbnB1dC1GZWxkZXIgayZvdW1sO25uZW4gd2VpdGVyaGluIGluIGVpZ2VuZW4gVGFicyBhbmdlemVpZ3Qgb2RlciBpbiBHcnVwcGVuIHp1c2FtbWVuZ2VmYXNzdCB3ZXJkZW4uPGJyIC8+CkF1w59lcmRlbSBoYXQgbWFuIGRpZSBNJm91bWw7Z2xpY2hrZWl0LCBTZWl0ZW4gb2RlciBlaW56ZWxuZSBCbCZvdW1sO2NrZSBudXIgZiZ1dW1sO3IgYmVzdGltbXRlIEdydXBwZW4gZGVzIEZyb250RW5kVXNlcnMgTW9kdWxzIGZyZWl6dWdlYmVuLjxiciAvPgpEaWUgRWluc3RlbGx1bmdlbiBkZXMgQmVudXR6ZXJ6dWdyaWZmcyBzaW5kIGF1ZiB1bnRlcmdlb3JkbmV0ZSBTZWl0ZW4gdmVycmViYmFyLjwvcD4KPHA+RGllIFBhcmFtZXRlciBrJm91bWw7bm5lbiBhdcOfZXJkZW0gbWl0IEhpbGZlIHZvbiBlaW5mYWNoZW0gU21hcnR5LVN5bnRheCBkeW5hbWlzY2hlIFdlcnRlIGVudGhhbHRlbi48YnIgLz4KRC5oLiBtYW4ga2FubiB6LkIuIGRhcyBFcmdlYm5pcyBlaW5lcyBiZW51dHplcmRlZmluaWVydGVuIFRhZ3MsIGVpbmVzIFBsdWdpbnMsIGVpbmVzIE1vZHVscyBvZGVyIGVpbmZhY2ggbnVyIGVpbmVzIEdsb2JhbGVuIEluaGFsdHNibG9ja2VzIGFscyBXZXJ0IGYmdXVtbDtyIGVpbmVuIFBhcmFtZXRlciBlaW5zZXR6ZW4gbGFzc2VuLjwvcD4KPHA+PGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gSW4gbWFuY2hlbiBGJmF1bWw7bGxlbiBlbXBmaWVsdCBlcyBzaWNoLCBhbnN0ZWxsZSBkZXMgbm9ybWFsZW4ge2NvbnRlbnR9IFRhZ3MgZGVuIHtBZHZhbmNlZENvbnRlbnR9IFRhZyB6dSBiZW51dHplbi4gKEdyb8OfLSB1bmQgS2xlaW5zY2hyZWlidW5nIGJlYWNodGVuKTwvZW0+PC9wPgo8aDM+V2llIHdpcmQgZXMgdmVyd2VuZGV0PzwvaDM+CjxwPk5hY2ggZGVyIEluc3RhbGxhdGlvbiB3aXJkIGRlciBBZG1pbmlzdHJhdGlvbiBlaW4gd2VpdGVyZXIgTWVuJnV1bWw7cHVua3QgIkVyd2VpdGVydW5nZW4tJmd0O0Vyd2VpdGVydGVyIEluaGFsdCIgaGluenVnZWYmdXVtbDtndC48YnIgLz4KSGllciBrJm91bWw7bm5lbiB2ZXJzY2hpZWRlbmUgRWluc3RlbGx1bmdlbiB2b3JnZW5vbW1lbiB3ZXJkZW4uPGJyIC8+CkJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIHN0ZWh0IG51biBlaW4gd2VpdGVyZXIgSW5oYWx0c3R5cCAiRXJ3ZWl0ZXJ0ZXIgSW5oYWx0IiB6dXIgQXVzd2FobCwgZGVyIGRpZSBGdW5rdGlvbmVuIGRlcyBNb2R1bHMgYmVyZWl0c3RlbGx0LjwvcD4KPHA+TWl0IEhpbGZlIGZvbGdlbmRlciBQYXJhbWV0ZXIgYmVpbSBFcnN0ZWxsZW4gdm9uIEluaGFsdHNibCZvdW1sO2NrZW4gaW0gU2VpdGVuLVRlbXBsYXRlIGsmb3VtbDtubmUgZGllc2UgRnVua3Rpb25lbiB2ZXJ3ZW5kZXQgd2VyZGVuOjwvcD4KPGgzPldlbGNoZSBQYXJhbWV0ZXIgc2luZCB2ZXJmJnV1bWw7Z2Jhcj88L2gzPgo8cD5hbGxlIFBhcmFtZXRlciBzaW5kIG9wdGlvbmFsPC9wPgo8cD48c3Ryb25nPlN0YW5kYXJkIFBhcmFtYXRlcjo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9jazwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlFcm0mb3VtbDtnbGljaHQgZGFzIEhpbnp1ZiZ1dW1sO2dlbiBtZWhyZXJlciBJbmhhbHRzYmwmb3VtbDtja2UuIEJlaW0gQmVhcmJlaXRlbiBlaW5lciBTZWl0ZSB3aXJkIGYmdXVtbDtyIGplZGVuIEJsb2NrIGVpbiBlaWdlbmVzIElucHV0LUZlbGQgYW5nZXplaWd0LjxiciAvPgoJCQkJQnNwLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7WndlaXRlciBJbmhhbHRzYmxvY2smcXVvdDt9PC9jb2RlPjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gRGVyIE5hbWUgZGVzIEluaGFsdHNibG9ja3MgZGFyZiBudXIgQnVjaHN0YWJlbiwgWmFobGVuIHVuZCBVbnRlcnN0cmljaGUgZW50aGFsdGVuLiAoa2VpbmUgTGVlci0gb2RlciBTb25kZXJ6ZWljaGVuLCBVbWxhdXRlIGV0Yy4pLiBBbmRlcmVuZmFsbHMgd2lyZCBkZXIgQmxvY2tuYW1lICZhdW1sO2hubGljaCBkZW0gU2VpdGVuYWxpYXMgZW50cHJlY2hlbmQga29udmVydGllcnQuPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD53eXNpd3lnPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+V2VubiBkaWVzZXIgV2VydCBhdWYgZmFsc2UgZ2VzZXR6dCB3aXJkLCB3aXJkIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBrZWluIFdZU0lXWUcgRWRpdG9yIGYmdXVtbDtyIGRpZXNlbiBCbG9jayB2ZXJ3ZW5kZXQuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+V2VubiBkaWVzZXIgV2VydCBhdWYgZmFsc2UgZ2VzZXR6dCB3aXJkLCB3aXJkIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBudXIgZWluIGVpbmZhY2hlcyBlaW56ZWlsaWdlcyBUZXh0LUlucHV0LUZlbGQgYW5nZXplaWd0LjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+U3RhYmRhcmRpbmhhbHQgYmVpbSBFcnN0ZWxsZW4gbmV1ZXIgU2VpdGVuLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkRpZSBFaW5nYWJlYXVmZm9yZGVydW5nIGYmdXVtbDtyIGRlbiBJbmhhbHRzYmxvY2sgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuLiBXZW5uIGRpZXNlciBQYXJhbWV0ZXIgZmVobHQsIHdpcmQgZGVyIHVua29udmVydGllcnRlIFdlcnQgZGVzIFBhcmFtZXRlcnMgYmxvY2sgdmVyd2VuZGV0LjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YXNzaWduPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCVdlaXN0IGRlbiBJbmhhbHQgZGllc2VzIEJsb2NrcyBhdWYgZGVyIEludGVybmV0c2VpdGUgZWluZXIgU21hcnR5IFZhcmlhYmxlbiB6dS48YnIgLz4KCQkJCUJzcC46IDxjb2RlPntjb250ZW50IGFzc2lnbj0icGFnZWNvbnRlbnQifTxiciAvPgoJCQkJe3RhYmxlX29mX2NvbnRlbnRzIHRoZXBhZ2Vjb250ZW50PSZxdW90OyRwYWdlY29udGVudCZxdW90O308L2NvZGU+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+RXJ3ZWl0ZXJ0ZSBQYXJhbWV0ZXI6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdHlwZTwvdHQ+ICh0ZXh0LGNoZWNrYm94LGRyb3Bkb3duLHNlbGVjdF9tdWx0aXBsZSxkYXRlLG11bHRpX2lucHV0KSAKCQk8dWw+CgkJCTxsaT5HaWJ0IGFuLCBpbiB3ZWxjaGVyIEZvcm0gZGVyIEluaGFsdHNibG9jayBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gYW5nZXplaWd0IHdlcmRlbiBzb2xsLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cGFnZV90YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJTWl0IGRpZXNlbSBQYXJhbWV0ZXIgayZvdW1sO25uZW4gSW5oYWx0c2JsJm91bWw7Y2tlIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBpbiBiZXN0aW1tdGVuIFRhYnMgYW5nZXplaWd0IHdlcmRlbi48YnIgLz4KCQkJCU0mb3VtbDtnbGljaGUgV2VydGUgc2luZCB6LkIuICZxdW90O21haW4mcXVvdDsgKCA9IFRhYiAmcXVvdDtIYXVwdG1lbiZ1dW1sOyZxdW90OyksICZxdW90O29wdGlvbnMmcXVvdDsgKCA9IFRhYiAmcXVvdDtPcHRpb25lbiZxdW90OyksIG9kZXIgamVkZXIgYW5kZXJlIGJlbGllYmlnZSBXZXJ0IChlcnpldWd0IGF1dG9tYXRpc2NoIGVpbmVuIHdlaXRlcmVuIFRhYikuPGJyIC8+CgkJCQk8ZW0+TWFuIGthbm4gc29taXQgei5CLiBlaW5lIENoZWNrYm94IGltIFRhYiAiT3B0aW9uZW4iIGhpbnp1ZiZ1dW1sO2dlbiBvZGVyIGVpbmVuIGVpZ2VuZW4gVGFiIGVyc3RlbGxlbi48L2VtPi4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPk1pdCBkaWVzZW0gUGFyYW1ldGVyIGsmb3VtbDtubmVuIGRpZSBJbmhhbHRzYmwmb3VtbDtja2Ugbm9jaG1hbHMgaW4gd2VpdGVyZSAiVW50ZXJ0YWJzIiBpbm5lcmhhbGIgZGVyICJIYXVwdHRhYnMiIHVudGVydGVpbHQgd2VyZGVuLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfZ3JvdXA8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJTWl0IGRpZXNlbSBQYXJhbWV0ZXIga2FubiBtYW4gbWVocmVyZSBJbmhhbHRzYmwmb3VtbDtja2UgaW4gZWluZW0gRmllbGRzZXQgZ3J1cHBpZXJlbi48YnIgLz4KCQkJCURpZSBHcnVwcGVuIGsmb3VtbDtubmVuIGF1Y2ggYXVmIG1laHJlcmUgVGFicyB2ZXJ0ZWlsdCB3ZXJkZW4uCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWN0aXZlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIGlzdCBkZXIgQmxvY2sgZGVha3RpdmllcnQuPGJyIC8+CgkJCQlEZWFrdGl2aWVydGUgSW5oYWx0c2JsJm91bWw7Y2tlIHdlcmRlbiB3ZWRlciBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4sIG5vY2ggYXVmIGRlciBJbnRlcm5ldHNlaXRlIGFuZ2V6ZWlndC4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgaXN0ICZhdW1sO2hubGljaCBkZW4gIlp1cyZhdW1sO3R6bGljaGVuIEJlYXJiZWl0ZXJuIiBlaW5lciBTZWl0ZS4gRXIgZ2lsdCBhbGxlcmRpbmdzIG51ciBmJnV1bWw7ciBlaW56ZWxuZSBJbmhhbHRzYmwmb3VtbDtja2UuPGJyIC8+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgbnVyIHZvbiBiZXN0aW1tdGVuIEJlbnV0emVncnVwcGVuIGRlciBBZG1pbmlzdHJhdGlvbiBiZWFyYmVpdGV0IHdlcmRlbi48YnIgLz4KCQkJCShOYW1lIGRlciBCZW51dHplcmdydXBwZSBlaW50cmFnZW47IG1laHJlcmUgR3J1cHBlbiBtaXQgS29tbWEgZ2V0cmVubnQpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgaXN0ICZhdW1sO2hubGljaCBkZW4gIlp1cyZhdW1sO3R6bGljaGVuIEJlYXJiZWl0ZXJuIiBlaW5lciBTZWl0ZS4gRXIgZ2lsdCBhbGxlcmRpbmdzIG51ciBmJnV1bWw7ciBlaW56ZWxuZSBJbmhhbHRzYmwmb3VtbDtja2UuPGJyIC8+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgbnVyIHZvbiBiZXN0aW1tdGVuIEJlbnV0emVybiBkZXIgQWRtaW5pc3RyYXRpb24gYmVhcmJlaXRldCB3ZXJkZW4uPGJyIC8+CgkJCQkoTmFtZSBkZXMgQmVudXR6ZXJzIGVpbnRyYWdlbjsgbWVocmVyZSBCZW51dHplciBtaXQgS29tbWEgZ2V0cmVubnQpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiB3ZW5uIGRpZSBQYXJhbWV0ZXIgPHR0PmVkaXRvcl91c2VyczwvdHQ+IHVuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IG5pY2h0IHZlcndlbmRldCB3ZXJkZW4sIGsmb3VtbDtubmVuIGRpZSBCbCZvdW1sO2NrZSB2b24gamVkZW0gQmVudXR6ZXIgYmVhcmJlaXRldCB3ZXJkZW4uPGJyIC8+CglEaWUgV2VydGUgaGFiZW4ga2VpbmVuIEVpbmZsdXNzLCB3ZW5uIGRlciBCZW51dHplciBkZXIgR3J1cHBlICJBZG1pbiIgYW5nZWgmb3VtbDtydC48YnIgLz4KCVVtIGVpbmVtIEJlbnV0emVyIHp1IGVybGF1YmVuIGFsbGUgSW5oYWx0c2JsJm91bWw7Y2tlIHVuYWJoJmF1bWw7bmdpZyB2b24gZGVuIGJlaWRlbiBQYXJhbWV0ZXJuIHp1IGJlYXJiZWl0ZW4sIG11c3MgZGVyIEJlbnV0emVyIGVpbmVyIEdydXBwZSBhbmdlaCZvdW1sO3JlbiwgZGllIGRpZSBCZXJlY2h0aWd1bmcgIk1hbmFnZSBhbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyIgaGF0LjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+CgkJPHVsPgoJCQk8bGk+CgkJCQlEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZmVzdCwgd2VsY2hlIEJlbnV0emVyZ3J1cHBlbiBkZXMgRnJvbnRFbmRVc2VycyBNb2R1bHMgZGllc2VuIEJsb2NrIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZSBzZWhlbiBkJnV1bWw7cmZlbi48YnIgLz4KCQkJCShJRCBkZXIgQmVudXR6ZXJncnVwcGUgYW5nZWJlbjsgbWVocmVyZSBJRHMgbWl0IEtvbW1hIGdldHJlbm50KTxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgZ2lidCBhbiwgb2IgYW5zdGVsbGUgZGVzIEluaGFsdHNibG9ja3MgZGFzIExvZ2luLUZvcm11bGFyIGRlcyBGcm9udEVuZFVzZXJzIE1vZHVscyBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwsIHdlbm4gZGllc2VyIEJsb2NrIG51ciBmJnV1bWw7ciBiZXN0aW1tdGUgQmVudXR6ZXJncnVwcGVuIGZyZWlnZWdlYmVuIHVuZCBkZXIgQmVzdWNoZXIgbmljaHQgZWluZ2Vsb2dndCBpc3QuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBEYXMgRm9ybXVsYXIgd2lyZCBudXIgZWluIGVpbnppZ2VzIE1hbCBhbmdlemVpZ3QuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hbGxvd19ub25lPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+R2lidCBhbiwgb2IgZGVyIEJsb2NrIGxlZXIgc2VpbiBkYXJmIG9kZXIgbmljaHQuPGJyIC8+CgkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCB1bmQgZGVyIEluaGFsdCBkZXMgQmxvY2tzIGlzdCBsZWVyLCB3aXJkIGRlciBXZXJ0IGRlcyBQYXJhbWV0ZXJzIGRlZmF1bHQgdmVyd2VuZGV0LjxiciAvPgoJCQlXdXJkZSBkZXIgQmxvY2sgbWl0IGRlbSBQbHVnaW4ge2NvbnRlbnRfaW1hZ2V9IGVyc3RlbGx0LCBmZWhsdCBkaWUgT3B0aW9uICJOaWNodHMiIGltIEJpbGQtRHJvcGRvd24uPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zbWFydHk8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVNjaGFsdGV0IGRpZSBWZXJhcmJlaXR1bmcgZGVyIFBhcmFtZXRlcndlcnRlIG1pdCBIaWxmZSB2b24gU21hcnR5IGVpbi9hdXMuPGJyIC8+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiB0cnVlIGdlc2V0enQgd2lyZCwgd2lyZCBqZWRlciBQYXJhbWV0ZXIgbWl0IEhpbGZlIGRlciBTbWFydHkgVGVtcGxhdGUgRW5naW5lIHZlcmFyYmVpdGV0LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2VpczogPC9zdHJvbmc+IERpZSBXZXJ0ZSBtJnV1bWw7c3NlbiBhbHMgU21hcnR5LVN5bnRheCBnZWtlbm56ZWljaG5ldCB3ZXJkZW4uIEhpZXIgayZvdW1sO25uZW4gYWJlciBuaWNodCBTdGFuZGFyZCBTbWFydHktQmVncmVuemVyICh7Li4ufSkgdmVyd2VuZGV0IHdlcmRlbiwgZGEgZXMgenUgRmVobGVybiBhdWYgZGVyIEludGVybmV0c2VpdGUgZiZ1dW1sO2hydC48YnIgLz4KCQkJCURhaGVyIHdlcmRlbiBzdGF0dGRlc3NlbiBkaWUgWmVpY2hlbiA6OjogYWxzIEJlZ3JlbnplciB2ZXJ3ZW5kZXQuPGJyIC8+PC9lbT4KCQkJCUJzcC46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O0thdGVnb3JpZW4mcXVvdDsgbGFiZWw9JnF1b3Q7VyZhdW1sO2hsZW4gU2llIGVpbmUgS2F0ZWdvcmllJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDsgaXRlbXM9JnF1b3Q7Ojo6Z2xvYmFsX2NvbnRlbnQgbmFtZT0mIzAzOTtjYXRlZ29yeWxpc3QmIzAzOTs6OjomcXVvdDsgc21hcnR5PSZxdW90O3RydWUmcXVvdDt9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlc2NyaXB0aW9uPC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+RWluZSBkZXRhaWxpZXJ0ZXJlIEJlc2NocmVpYnVuZyBkZXMgSW5oYWx0c2Jsb2Nrcy48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlHaWJ0IGFuLCBvYiBlaW4gQmxvY2sgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGVpbi0gKHRydWUpIG9kZXIgYXVzZ2VrbGFwcHQgKGZhbHNlKSBzZWluIHNvbGwuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBpc3QgaW1tZXIgZmFsc2UsIHdlbm4gZGVyIGRlciBQYXJhbWV0ZXIgbm9fY29sbGFwc2U9dHJ1ZSB2ZXJ3ZW5kZXQgd2lyZC48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IGlzdCwga2FubiBkZXIgQmxvY2tlIG5pY2h0IHp1c2FtbWVuZ2VrbGFwcHQgd2VyZGVuLjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gd2VubiBkZXIgV2VydCBhdWYgdHJ1ZSBnZXNldHp0IGlzdCwgaXN0IGRlciBQYXJhbWV0ZXIgY29sbGFwc2UgYXV0b21hdGlzY2ggaW1tZXIgZmFsc2UuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5yZXF1aXJlZDwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJR2lidCBhbiwgb2IgZWluIEJsb2NrIGVpbiBQZmxpY2h0ZmVsZCBpc3QgKHRydWUpIG9kZXIgbmljaHQgKGZhbHNlKS48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgQ2hlY2tib3hlbjo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHRydWUvZmFsc2UpIAoJCTx1bD4KCQkJPGxpPgoJCQkJQWt0aXZpZXJ0L0RlYWt0aXZpZXJ0IGRpZSBDaGVja2JveCBhbHMgU3RhbmRhcmR3ZXJ0LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gJnF1b3Q7MSZxdW90OyA9IGFrdGl2aWVydDsgJnF1b3Q7MCZxdW90OyBkZWFrdGl2aWVydDxiciAvPjwvZW0+CgkJCQlCc3AuOiA8Y29kZT57Y29udGVudCBibG9ja190eXBlPSZxdW90O2NoZWNrYm94JnF1b3Q7IGRlZmF1bHQ9MX08L2NvZGU+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+UGFyYW1ldGVyIGYmdXVtbDtyIERyb3Bkb3ducy9NZWhyZmFjaGF1c3dhaGw6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aXRlbXM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkRpZSBCZXplaWNobnVuZyBkZXIgZWluemVsbmVuIEVpbnRyJmF1bWw7Z2UuIChtaXQgZWluZW0gYmVzdGltbXRlbiBaZWljaGVuIGdldHJlbm50IC0gU3RhbmRhcmQgaXN0IHwgKHBpcGUpKTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EaWUgV2VydGUgZGVyIGVpbnplbG5lbiBFaW50ciZhdW1sO2dlLiAobWl0IGVpbmVtIGJlc3RpbW10ZW4gWmVpY2hlbiBnZXRyZW5udCAtIFN0YW5kYXJkIGlzdCB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gd2VubiBlcyB3ZW5pZ2VyIFdlcnRlIGFscyBCZXplaWNobnVuZ2VuIGdpYnQsIHdlcmRlbiBkaWUgcmVzdGxpY2hlbiBCZXplaWNobnVuZ2VuIGFscyBXZXJ0ZSB2ZXJ3ZW5kZXQgKHVuZCB1bWdla2VocnQpLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlBdXNnZXcmYXVtbDtobHRlIFN0YW5kYXJkd2VydGUgKG1pdCBlaW5lbSBiZXN0aW1tdGVuIFplaWNoZW4gZ2V0cmVubnQgLSBTdGFuZGFyZCBpc3QgfCAocGlwZSkpPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBWZXJ3ZW5kZW4gU2llIG51ciBkaWUgV2VydGUgZGVyIEVpbnRyw6RnZSBhbHMgU3RhbmRhcmR3ZXJ0LCBuaWNodCBkaWUgQmV6ZWljaG51bmdlbiBkZXIgRWludHImYXVtbDtnZS48L2VtPjxiciAvPjxiciAvPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlbGltaXRlcjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+RGFzIFRyZW5uemVpY2hlbiBtaXQgZGVtIGRpZSBCZXplaWNobnVuZ2VuLCBXZXJ0ZSB1bmQgU3RhbmRhcmR3ZXJ0ZSB2b25laW5hbmRlciBnZXRyZW5udCB3ZXJkZW4uIChTdGFuZGFyZCBpc3QgfCAocGlwZSkpPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpCgkJPHVsPgoJCQk8bGk+RGllIEgmb3VtbDtoZSBkZXMgSW5wdXRmZWxkZXMsIHdlbm4gPGNvZGU+YmxvY2tfdHlwZT0mcXVvdDtzZWxlY3RfbXVsdGlwbGUmcXVvdDs8L2NvZGU+IHZlcndlbmRldCB3aXJkLjxlbT4oU3RhbmRhcmQgaXN0IGRpZSBBbnphaGwgZGVyIEVpbnRyJmF1bWw7Z2UpPC9lbT48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNvcnRhYmxlX2l0ZW1zPC90dD4gKHRydWUvZmFsc2UpIC0gbnVyIGJlaSBzZWxlY3RfbXVsdGlwbGUKCQk8dWw+CgkJCTxsaT4KCQkJCVdpcmQgZGllc2VyIFdlcnQgYXVmIHRydWUgZ2VzZXR6dCwgd2VyZGVuIGRpZSBFaW50ciZhdW1sO2dlIG5pY2h0IGFscyBNZWhyZmFjaGF1c3dhaGxmZWxkIGFuZ2V6ZWlndCwgc29uZGVybiBhbHMgZWluZSBMaXN0ZSBtaXQgQ2hlY2tib3hlbiwgZGllIG5ldSBzb3J0aWVydCB3ZXJkZW4ga2Fubi48YnIgLz5KZWRlIFplaWxlIGVpbnRoJmF1bWw7bHQgZGllIEJlemVpY2hudW5nIGRlcyBFaW50cmFncyB1bmQgZWluZSBDaGVja2JveCBtaXQgZGVtIFdlcnQgZGVzIEVpbnRyYWdzLjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gRXMgd2lyZCBudXIgZGllIFJlaWhlbmZvbGdlIGRlciA8c3Ryb25nPmF1c2dldyZhdW1sO2hsdGVuPC9zdHJvbmc+IEVpbnRyJmF1bWw7Z2UgZ2VzcGVpY2hlcnQuIEF1c2dldyZhdW1sO2hsdGUgRWludHImYXVtbDtnZSB3ZXJkZW4gaW1tZXIgYWxzIGVyc3RlcyBhbmdlemVpZ3QuPGJyIC8+CgkJCQlOaWNodCBhdXNnZXcmYXVtbDtobHRlIEVpbnRyJmF1bWw7Z2Ugc3RlaGVuIGRhcnVudGVyIGluIGRlciBSZWloZW5mb2xnZSwgd2llIHNpZSBpbSBUZW1wbGF0ZSBkZWZpbmllcnQgd3VyZGVuLjwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+UGFyYW1ldGVyIGYmdXVtbDtyIERhdHVtc2JsJm91bWw7Y2tlOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCVomYXVtbDtobHNjaHJpdHRlIGRlciBTdHVuZGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgMSkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlCZWdpbm4gZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAwKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVuZF9ob3VyPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlFbmRlIGRlciBTdHVuZGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgMTIgb2RlciAyMyAtIGFiaCZhdW1sO25naWcgdm9tIFBhcmFtZXRlciBzaG93MjRoKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3cyNGg8L3R0PiAodHJ1ZS9mYWxzZSkgCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIHdlcmRlbiBkaWUgU3R1bmRlbiBpbiAxMmggQW56ZWlnZSBtaXQgQU0vUE0gYW5nZXplaWd0LiAoU3RhbmRhcmQgaXMgdHJ1ZSkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwX21pbnV0ZXM8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCVomYXVtbDtobHNjaHJpdHRlIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpcyAxMCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9taW51dGU8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUJlZ2lubiBkZXIgTWludXRlbiBpbSBVaHJ6ZWl0LURyb3Bkb3duLiAoU3RhbmRhcmQgaXN0IDApCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX21pbnV0ZTwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJRW5kZSBkZXIgTWludXRlbiBpbSBVaHJ6ZWl0LURyb3Bkb3duLiAoU3RhbmRhcmQgaXN0IDU5KQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3dfY2xvY2s8L3R0PiAodHJ1ZS9mYWxzZSkgCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IGlzdCwgd2lyZCBrZWluIFVocnplaXQtRHJvcGRvd24gYW5nZXplaWd0LiAoU3RhbmRhcmQgaXN0IHRydWUpPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBCZWkgZmFsc2Ugd2lyZCBhbHMgVWhyemVpdCAwMDowMCBVaHIgZ2VzcGVpY2hlcnQ8L2VtPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRhdGVfZm9ybWF0PC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlEYXMgc3RyZnRpbWUgRGF0dW1zZm9ybWF0IGYmdXVtbDtyIGRpZSBBbnplaWdlIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZS4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgJnF1b3Q7bXVsdGlfaW5wdXQmcXVvdDs6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aW5wdXRzPC90dD4KCQk8dWw+CgkJCTxsaT4KCQkJCUVpbmUgTGlzdGUgdm9uIElucHV0LUlEcywgZGllIGluIGRlbiBNb2R1bGVpbnN0ZWxsdW5nZW4gZXJzdGVsbHQgd3VyZGVuLiAobWVocmVyZSBXZXJ0ZSBtaXQgS29tbWEgZ2V0cmVubnQpPGJyIC8+CgkJCQlFcyBrJm91bWw7bm5lbiBkaWVzZWxiZW4gSURzIG1laHJmYWNoIHZlcndlbmRldCB3ZXJkZW4uCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVfZGVsaW1pdGVyPC90dD4gKGFueSBzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPgoJCQkJRWluIFRyZW5uemVpY2hlbiBmJnV1bWw7ciBkaWUgZWluemVsbmVuIFdlcnRlIGRlcyBqZXdlaWxpZ2VuIE11bHRpSW5wdXRzLjxiciAvPgoJCQkJU3RhbmRhcmQgaXN0ICZxdW90OyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsbGltaXRlciAtLSZndDsmcXVvdDsKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dF9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlFaW4gVHJlbm56ZWljaGVuIGYmdXVtbDtyIGRpZSBlaW56ZWxuZW4gTXVsdGlJbnB1dHMuPGJyIC8+CgkJCQlEZWZhdWx0IGlzICZxdW90OyZsdDshLS0gbXVsdGlfaW5wdXRfZGVsbGltaXRlciAtLSZndDsmcXVvdDsKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8cD48c3Ryb25nPldhcyBpc3QgZWluIG11bHRpX2lucHV0Pzwvc3Ryb25nPjwvcD4KCQk8cD5FaW4gbXVsdGlfaW5wdXQgaXN0IGVpbiBCbG9jaywgZGVyIGF1cyBtZWhyZXJlbiBJbnB1dGZlbGRlcm4gYmVzdGVoZW4ga2Fubi48YnIgLz4KCQlEaWVzZSBrJm91bWw7bm5lbiBpbiBkZW4gTW9kdWxlaW5zdGVsbHVuZ2VuIGZlc3RnZWxlZ3Qgd2VyZGVuLiBEYWJlaSBnaWx0IGYmdXVtbDtyIGplZGVuIG11bHRpX2lucHV0IGRlcnNlbGJlIFN5bnRheCB3aWUgaW4gZWluZW0gU2VpdGVudGVtcGxhdGUgYmVpbSBFcnN0ZWxsZW4gZWluZXMgSW5oYWx0c2Jsb2Nrcy48YnIgLz4KCQlNdWx0aUlucHV0cyBrJm91bWw7bm5lbiB2ZXJ3ZW5kZXQgd2VyZGVuLCB1bSB2ZXJzY2hpZWRlbmUgV2VydGUgaW4gZWluZW0gZWluemlnZW4gSW5oYWx0c2Jsb2NrIHp1IHNwZWljaGVybiwgd29iZWkgZiZ1dW1sO3IgamVkZW4gV2VydCB1bnRlcnNjaGllZGxpY2hlIElucHV0ZmVsZGVyIHZlcndlbmRldCB3ZXJkZW4gayZvdW1sO25uZW4uPGJyIC8+CgkJRGllc2UgQmwmb3VtbDtja2Uga2FubiBtYW4gei5CLiB2ZXJ3ZW5kZW4sIHVtIGVpbmUgTGlzdGUgbWl0IE1vZHVsZW4gdW5kIHp1Z2VoJm91bWw7cmlnZW4gUGFyYW1ldGVybiBhbnp1emVpZ2VuLjxiciAvPgoJCUJlaXNwaWVsIGVpbmVzIE11bHRpSW5wdXRzIGltIFNlaXRlbnRlbXBsYXRlOjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSZxdW90OyBsYWJlbD0mcXVvdDtTZWl0ZW5tb2R1bGUmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDttdWx0aV9pbnB1dCZxdW90OyBpbnB1dHM9JnF1b3Q7bW9kdWxlLG1vZHVsZSxtb2R1bGUsbW9kdWxlJnF1b3Q7fQoJCTwvY29kZT4KCQk8L3ByZT4KCQk8cD5CZWlzcGllbCBmJnV1bWw7ciBlaW5lbiBNdWx0aUlucHV0IGRlciAmdXVtbDtiZXIgZGllIE1vZHVsZWluc3RlbGx1bmcgZXJzdGVsbHQgd2VyZGVuIGthbm4gKE5hbWU9JnF1b3Q7bW9kdWxlJnF1b3Q7KTo8L3A+CgkJPHByZT4KCQk8Y29kZT4KCQl7Y29udGVudCBibG9jaz0mcXVvdDttb2R1bGUgc2VsZWN0aW9uJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDsgaXRlbXM9JnF1b3Q7fE5ld3N8R2FsbGVyeXxNZW51JnF1b3Q7fQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBwYXJhbXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IG9uZWxpbmU9dHJ1ZX0KCQk8L2NvZGU+CgkJPC9wcmU+CgkJPHA+V2llIHNpZWh0IGRhcyBudW4gYmVpbSBCZWFyYmVpdGVuIGVpbmVyIFNlaXRlIGF1cz88L3A+CgkJPHA+RXMgd2lyZCBlaW4gRmllbGRzZXQgbWl0IGRlciBMZWdlbmRlICZxdW90O1NlaXRlbm1vZHVsZSZxdW90OyBhbmdlemVpZ3QuIDxiciAvPgoJCUluIGRpZXNlbSBGaWVsZHNldCB3aXJkIGRlciBNdWx0aUlucHV0ICZxdW90O21vZHVsZSZxdW90OyB2aWVybWFsIGFuZ2V6ZWlndC48YnIgLz4KCQlELmguIGVzIGdpYnQgdmllciBaZWlsZW4gbWl0IGplIHp3ZWkgSW5wdXRmZWxkZXJuLiBFaW4gRHJvcGRvd24gdW5kIGVpbiBlaW56ZWlsaWdlcyBUZXh0aW5wdXQuPC9wPgoJCTxwPldhcyB3aXJkIGdlc3BlaWNoZXJ0PzwvcD4KCQk8cD5EYXMgTW9kdWwgc3BlaWNoZXJ0IGRpZSBXZXJ0ZSBhbHMgZWluZW4gZWluemVsbmVuIEluaGFsdHNibG9jay4gRGFiZWkgd2VyZGVuIGRpZSBlaW56ZWxuZW4gSW5wdXRmZWxkZXIgbWl0IGRlbSBpbnB1dF9kZWxpbWl0ZXIgdm9uZWluYW5kZXIgZ2V0cmVubnQgdW5kIGRlcmVuIFdlcnQgbWl0IGRlbSBpbnB1dF92YWx1ZV9kZWxpbWl0ZXIuPGJyIC8+CgkJTmVobWVuIHdpciBtYWwgYW4sIGVzIHd1cmRlIGRhcyBOZXdzbW9kdWwgdmllcm1hbCBhdXNnZXcmYXVtbDtobHQsIGplZG9jaCBtaXQgdW50ZXJzY2hpZWRsaWNoZW4gUGFyYW1ldGVybiB3aWUgei5CLiBjYXRlZ29yeT0mcXVvdDsxJnF1b3Q7LCBjYXRlZ29yeT0mcXVvdDsyJnF1b3Q7LCBjYXRlZ29yeT0mcXVvdDszJnF1b3Q7LCBjYXRlZ29yeT0mcXVvdDs0JnF1b3Q7LjxiciAvPgoJCUluIGRlciBEYXRlbmJhbmsgd2lyZCBmb2xnZW5kZXMgZiZ1dW1sO3IgZGllc2VuIEJsb2NrIGdlc3BlaWNoZXJ0OjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCU5ld3MmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDtjYXRlZ29yeT0iMSImbHQ7IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLSZndDs8YnIgLz4KCQlOZXdzJmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7Y2F0ZWdvcnk9IjIiJmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7PGJyIC8+CgkJTmV3cyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmd0O2NhdGVnb3J5PSIzIiZsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmd0OzxiciAvPgoJCU5ld3MmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDtjYXRlZ29yeT0iNCIKCQk8L2NvZGU+CgkJPC9wcmU+CgkJPHA+SW0gU2VpdGVudGVtcGxhdGUga2FubiBtYW4gbnVuIGRlbiBJbmhhbHQgZGllc2VzIEJsb2NrcyBhbmhhbmQgZGVyIFRyZW5uemVpY2hlbiBhdWZ0ZWlsZW4gdW5kIGRpZSBhdXNnZXcmYXVtbDtobHRlbiBNb2R1bGUgaW5rbC4gaWhyZXIgamV3ZWlsaWdlbiBQYXJhbWV0ZXIgYXVmcnVmZW4uPC9wPgoJCTxwPktvbXBsZXR0ZXMgQmVpc3BpZWw6PC9wPgoJCTxwcmU+CgkJPGNvZGU+CgkJeyogSW5oYWx0c2Jsb2NrIGVyc3RlbGxlbiB1bmQgZGVyIFZhcmlhYmxlICRtb2R1bGVzIHp1d2Vpc2VuICp9CgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bWVpbmVfc2VpdGVubW9kdWxlJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7bXVsdGlfaW5wdXQmcXVvdDsgaW5wdXRzPSZxdW90O01vZHVsZSxNb2R1bGUsTW9kdWxlLE1vZHVsZSZxdW90OyBhc3NpZ249JnF1b3Q7bW9kdWxlcyZxdW90O30KCQkKCQl7KiBJbmhhbHQgZGVyIFZhcmlhYmxlICRtb2R1bGVzIGluIGVpbiBBcnJheSBhdWZ0ZWlsZW4gdW5kIGluIGRlciBWYXJpYWJsZSAkbW9kdWxlcyBzcGVpY2hlcm47IHNvbWl0IGhhYmVuIHdpciBkaWUgTXVsdGlJbnB1dHMgKn0KCQl7YXNzaWduIHZhcj1tb2R1bGVzIHZhbHVlPSZxdW90OyZsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmd0OyZxdW90O3xleHBsb2RlOiRtb2R1bGVzfQoJCQoJCXsqIGplZGVuIE11bHRpSW5wdXQgZHVyY2hnZWhlbiAqfQoJCXtmb3JlYWNoIGZyb209JG1vZHVsZXMgaXRlbT0mcXVvdDttb2R1bGUmcXVvdDt9CgkJCXtpZiAkbW9kdWxlICE9ICcnfQoJCQkKCQkJCXsqIGRpZSBXZXJ0ZSBkZXMgTXVsdGlJbnB1dHMgaW4gZWluIEFycmF5IGF1ZnRlaWxlbjsgc29taXQgaGFiZW4gd2lyIE1vZHVsbmFtZSB1bmQgUGFyYW1ldGVyICp9CgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9JnF1b3Q7Jmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7JnF1b3Q7fGV4cGxvZGU6JG1vZHVsZX0KCQkJCQoJCQkJe2lmICRtb2R1bGVfaXRlbXNbMF0gIT0gJiMwMzk7JiMwMzk7fQoJCQkJCgkJCQkJeyogTW9kdWwgYXVmcnVmZW4gKn0KCQkJCQl7aWYgaXNzZXQoJG1vZHVsZV9pdGVtc1sxXSl9CgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6J2Ntc19tb2R1bGUgbW9kdWxlPSInfGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDonIiAnfGNhdDokbW9kdWxlX2l0ZW1zWzFdfGNhdDokc21hcnR5LnJkZWxpbX0KCQkJCQl7ZWxzZX0KCQkJCQkJe2V2YWwgdmFyPSRzbWFydHkubGRlbGltfGNhdDonY21zX21vZHVsZSBtb2R1bGU9Iid8Y2F0OiRtb2R1bGVfaXRlbXNbMF18Y2F0OiciJ3xjYXQ6JHNtYXJ0eS5yZGVsaW19CgkJCQkJey9pZn0KCQkJCQkKCQkJCXsvaWZ9CgkJCQkKCQkJey9pZn0KCQkKCQl7L2ZvcmVhY2h9CgkJPC9jb2RlPgoJCTwvcHJlPgoJPC9saT4KPC91bD4KCjxoMz5TdXBwb3J0PC9oMz4KPHA+RGllc2VzIE1vZHVsIGJpZXRldCBrZWluZSBrb21tZXJ6aWVsbGUgVW50ZXJzdCZ1dW1sO3R6dW5nLiBFcyBnaWJ0IGplZG9jaCBlaW5pZ2UgTSZvdW1sO2dsaWNoa2VpdGVuLCBIaWxmZSB6dSBmaW5kZW46PC9wPgo8dWw+Cgk8bGk+RGllIEhvbXBhZ2UgZGVzIFByb2pla3RlcyBpc3QgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+Cgk8bGk+V2VpdGVyZSBEaXNrdXNzaW9uZW4gZ2lidCBlcyBhdcOfZXJkZW0gaW4gZGVuIENNUyBNYWRlIFNpbXBsZSBGb3Jlbjo8YnIgLz4KCTxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLmRlIj5odHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5kZTwvYT48YnIgLz4KCTxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnPC9hPjwvbGk+CjwvdWw+CjxiciAvPgo8cD5CaXR0ZSBtZWxkZW4gU2llIEZlaGxlciBvZGVyIFZlcmJlc3NlcnVuZ3N2b3JzY2hsJmF1bWw7Z2UgYXVmIGRlciBQcm9qZWN0IEhvbWVwYWdlLjwvcD4KPGgzPkNvcHlyaWdodCB1bmQgTGl6ZW56PC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLTIwMTEsIEdlb3JnIEJ1c2NoIChOYU4pIDxhIGhyZWY9Im1haWx0bzpnZW9yZy5idXNjaEBnbXgubmV0Ij4mbHQ7Z2VvcmcuYnVzY2hAZ214Lm5ldCZndDs8L2E+LiBBbGxlIFJlY2h0ZSB2b3JiZWhhbHRlbi48L3A+CjxwPkRpZXNlcyBNb2R1bCB3dXJkZSB1bnRlciBkZXIgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+IHZlciZvdW1sO2ZmZW50bGljaHQuIFNpZSBtJnV1bWw7c3NlbiBkaWVzZXIgTGl6ZW56IHp1c3RpbW1lbiwgYmV2b3IgU2llIGRhcyBNb2R1bCB2ZXJ3ZW5kZW4uPC9wPgo8cD4KCUxhdXQgZGVuIE51dHp1bmdzYmVzdGltbXVuZ2VuIGRlciBHUEwgd2lyZCBkaWVzZSBTb2Z0d2FyZSBzbyB2ZXImb3VtbDtmZmVudGxpY2h0IHdpZSBzaWUgaXN0LjxiciAvPgoJU2llIGVyaGVidCBrZWluZXJsZWkgQW5zcHJ1Y2ggYXVmIGVpbndhbmRmcmVpZSBGdW5rdGlvbi48YnIgLz4KCURhcyBNb2R1bCB3dXJkZSBlcnN0ZWxsdCwgaW4gZGVyIEhvZmZudW5nIG4mdXVtbDt0emxpY2ggenUgc2Vpbi48YnIgLz4KCUVzIGJlc3RlaHQga2VpbmVybGVpIEdhcmFudGllIGF1ZiBlaW5lbiBlaW53YW5kZnJlaWVuIE51dHplbi48YnIgLz4KCUJpdHRlIGxlc2VuIFNpZSBkaWUgTnV0enVuZ3NiZWRpbmd1bmdlbiBmJnV1bWw7ciBhdXNmJnV1bWw7aHJsaWNoZSBJbmZvcm1hdGlvbmVuLgo8L3A+CjxiciAvPjxoMz5QYXJhbWV0ZXI8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZGllIFNwcmFjaGUgZmVzdCwgZGllIHZvbSBNb2R1bCBmJnV1bWw7ciBkaWUgQXVzZ2FiZSBhdWYgZGVyIFdlYnNlaXRlIHZlcndlbmRldCB3aXJkLiBEaWVzIHdpcmQgamVkb2NoIG5pY2h0IHZvbiBhbGxlbiBNb2R1bGVuIHVudGVyc3QmdXVtbDt0enQgYnp3LiBiZW4mb3VtbDt0aWd0LjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IEdlb3JnIEJ1c2NoIChOYU4pPGJyIC8+PGJyIC8+VmVyc2lvbiA6IDAuNi40PGJyIC8+PGJyIC8+JkF1bWw7bmRlcnVuZ3N2ZXJsYXVmOjxiciAvPjxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0Ij48Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNtZCIgdmFsdWU9Il9zLXhjbGljayIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaG9zdGVkX2J1dHRvbl9pZCIgdmFsdWU9IkZBMkQzRlBMU1RBS0oiIC8+CjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2VuX0dCL2kvYnRuL2J0bl9kb25hdGVfTEcuZ2lmIiBib3JkZXI9IjAiIG5hbWU9InN1Ym1pdCIgYWx0PSJQYXlQYWwgLSBUaGUgc2FmZXIsIGVhc2llciB3YXkgdG8gcGF5IG9ubGluZS4iIC8+CjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2RlX0RFL2kvc2NyL3BpeGVsLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iMSIgLz4KPC9mb3JtPjwvZGl2PjxiciAvPgo8cD48c3Ryb25nPk1vZHVsZSByZWxlYXNlczwvc3Ryb25nPi4uLjwvcD4KPHVsPgoJPGxpPjxwPjxzdHJvbmc+MC42LjQgKE1hciAyMDExKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIFsjNjI0MV0gKElzc3VlIHdpdGggcGFyYW0gZGVmYXVsdCk8L3A+PC9saT4KCQkJCQk8bGk+PHA+ZmF0YWwgZXJyb3IgaW4gQWR2YW5jZWRDb250ZW50Lm1vZHVsZS5waHA8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuMyAoTWFyIDIwMTEpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gWyM1NzM0XSBQYXJhbWV0ZXIgYmxvY2tfZ3JvdXAgaXMgbm90IGtub3duIGJ5IG1vZHVsZSBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwMTRdIGhlYWRlciBwcm9ibGVtIHdpdGggbXVsdGktaW5wdXQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwMzhdIGNvbnRlbnRfaW1hZ2UgcmVzcGVjdGl2ZWx5IGJsb2NrX3R5cGU9ImltYWdlIiBkb2Vzbid0IHdvcms8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwMzldIHRlbXBsYXRlIGNhbid0IGJlIHN3aXRjaGVkPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gWyM2MDYxXSBpc3N1ZSB3aXRoIHRoZSByZWRpcmVjdCBmb3IgZmV1IG5vbiBtYXRjaDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjA5NV0gUGFyYW1ldGVyIHNvcnRhYmxlIGlzIG5vdCBrbm93biA8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgaXRlbSAjNTY1MSAocmVkaXJlY3QgaWYgZnJvbnRlbmQgdXNlciBoYXMgbm8gYWNjZXMgdG8gdGhhdCBwYWdlIGRpZCBub3Qgd29yayBwcm9wZXJseSk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjY2VzczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb248L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZXF1aXJlZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGNvbGxhcHNlPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gbm9fY29sbGFwc2U8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSB0aGlzIG1vZHVsZSBub3cgb25seSB3b3JrcyB3aXRoIENNU21zIDEuNi45IHVwIHRvIDEuOC4yPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC42LjIgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeCAoc2hvd2VkIHRhYnMgb2YgcHJldmlvdXMgdGVtcGxhdGUgd2hlbiB0ZW1wbGF0ZSB3YXMgY2hhbmdlZCk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuMSAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBibG9ja190eXBlIG11bHRpX2lucHV0PC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC42IChPY3QgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX2dyb3VwPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+TWlzYzo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gUmVtb3ZlZCBmaWxlIHBpY2tlciAoYW5kIGFzc29jaWF0ZWQgYmxvY2tfdHlwZXMgaW1hZ2UvZmlsZSkgLSB1c2UgR0JGaWxlUGlja2VyIGluc3RlYWQuPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC41IChTZXB0IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjkyIChtZW1vcnkgaXNzdWUpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjU0IChkaXNhYmxlIHd5c2l3eWcgbm90IHdvcmtpbmcpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzEwICh1cmxvbmx5IG5vdCB3b3JraW5nKTwvcD48L2xpPgoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMSAoaW1hZ2UgcGF0aHMgbm90IHN0b3JlZCAnY29ycmVjdGx5Jyk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI2MSAoQWRkIHNvcnQgdG8gaW1hZ2UgdHlwZSAtIG5vdGljZSB0aGUgY2hhbmdlIG9mIHBhcmFtIGZpbHRlcik8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgcGFyYW1zIGV4Y2x1ZGVfcHJlZml4LCBpbmNsdWRlX3ByZWZpeCwgZXhjbHVkZV9zdWZpeCwgaW5jbHVkZV9zdWZpeDwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNTMgKFRleHQgaW5wdXQgdG8gZGVmaW5lIGFkZCBwYXJhbXMgdG8gcmVkaXJlY3QgZnVuY3Rpb24pPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MCAoRGVmYXVsdCB2YWx1ZXMgb2YgQWR2YW5jZWRDb250ZW50IHBhZ2Ugb3B0aW9ucyk8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQxIChwdXQgRmV1QWNjZXNzIGluIEJsb2NrdGFiKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIGFyZSBzaG93biBpbiBzZXBhcmF0ZSB0YWI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBBZGRlZCBuZXcgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhlIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIHRhYjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW0gZmlsdGVyICh1c2UgbmV3IHBhcmFtcyBpbnN0ZWFkKTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHBhdGggdG8gZmlsZXMgYXJlIHN0b3JlZCByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBwYXJhbSBkaXIgb2YgYmxvY2sgdHlwZSBmaWxlL2ltYWdlIG5lZWRzIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpciBvbmx5ICh0aGVyZSBpcyBubyBpbWFnZSB1cGxvYWRzIGRpciB1c2VkIGFueW1vcmUpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC40LjEgKEF1Z3VzdCAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tICM1MTUxOiBmaXhlZCBzdHlsZXNoZWV0IGlzc3VlIHdpdGggZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbnMgb2YgY29udGVudCBibG9ja3MgaW4gSUUvU2FmYXJpLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MTYyOiBQSFAgd2FybmluZ3MgaWYgYmFja2VuZCB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gIk1hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyIgb3BlbiBhbiBhZHZhbmNlZCBjb250ZW50IHBhZ2UgYW5kIG11bHRpcGxlIGNvbnRlbnQgYmxvY2tzIG9mIHNhbWUgbmFtZSB3ZXJlIHVzZWQgaW4gdGVtcGxhdGUuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGV4dHJhIGZpZWxkcyBjb3VsZCBub3QgYmUgdXBkYXRlZC48L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZmV1IGFjY2VzcyBkaWQgbm90IHdvcmsuPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJkZWxldGUiIHRvIGxldCB1c2VycyBkZWxldGUgZmlsZXMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICJNb2RpZnkgRmlsZXMiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImNyZWF0ZV9kaXJzIiB0byBsZXQgdXNlcnMgY3JlYXRlX2RpcnMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICJNb2RpZnkgRmlsZXMiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgbmV3IGJsb2NrdHlwZSAibm90ZSIgdG8gY3JlYXRlIHNvbWUgc2luZ2xlIG5vdGVzIGZvciB5b3VyIGVkaXRvcnM8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSByZW1vdmVkIGRlcGVuZGVuY3kgb2YgRmlsZU1hbmFnZXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBibG9jayBvZiB0eXBlIGZpbGUgb3IgaW1hZ2Ugc3RvcmVzIHJlbGF0aXZlIHVybCBub3c8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBibG9jayB0eXBlIGltYWdlIHNob3dzIHRodW1ibmFpbCBpbiBiYWNrZW5kIHByZXZpZXcgaW5zdGVhZCBvZiBmdWxsIGltYWdlPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC40IChKdWx5IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5JbXBvcnRhbnQgbm90aWNlOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIHBhcmFtICJ0eXBlIiB0byAiYmxvY2tfdHlwZSIgc2luY2UgaXQgaW50ZXJmZXJlcyB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tICM1MTAxOiBwYWdlX3RhYiAib3B0aW9ucyIgd2FzIHNob3duIHRvIHVzZXJzIHdpdGggbm8gcGVybWlzc2lvbiB0byBlZGl0IHBhZ2Ugb3B0aW9ucyBpZiBhIGNvbnRlbnQgYmxvY2sgd2FzIGFzc2lnbmVkIHRvIHRoYXQgdGFiLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MDk3OiBsaW5rIHRvIG1pc3NpbmcgY3NzIHJlbW92ZWQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBtaW1lLXR5cGUgaXNzdWUgKGFkZGVkIHByZWZlcmVuY2UgdG8gdG9nZ2xlIG1pbWUtdHlwZSB1c2FnZSBvbi9vZmYpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgcGF0aCBpc3N1ZSB3aGVyZSB0aHVtYm5haWxzIHdlcmUgbm90IHNob3duPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgY29tcGF0aWJpbGl0eSB3aXRoIENNU21zIDEuODwvcD48L2xpPgoJCQkJCTxsaT48cD4tIG90aGVyIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIE1MRSBzdXBwb3J0PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gInNob3dfY2xvY2siIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSB0aW1lIGRyb3Bkb3duIG9mIGJsb2NrdHlwZXMgImRhdGUiIGluIGJhY2tlbmQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGF0ZV9mb3JtYXQiIHRvIGZvcm1hdCB0aW1lc3RhbXAgb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gZnJvbnRlbmQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGVzY3JpcHRpb24iPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgYnVsayBmdW5jdGlvbiB0byBzZXQgYWxsIHBhZ2VzIHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuMy40IChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gIzUwNDU6IFdoZW4gc3dpdGNoaW5nIGZyb20gQ29udGVudCAtPiBBZHZhbmNlZCBDb250ZW50IGxvdHMgb2YgUEhQIGVycm9yczwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MDU2OiBwYWdlX3RhYnMgbm90IHdvcmtpbmcgZm9yIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAiTWFuYWdlIEFsbCBDb250ZW50IjwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MDczOiBpbmNvcnJlY3QgZGlzcGxheSBvZiBmaWxlcyB3aGVuIG9wZW5pbmcgZmlsZXBpY2tlcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbm9yIGJ1ZyB3aGVyZSB0aGUgb3B0aW9uICJhbGxvd19ub25lIiBvZiBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGUgd2FzIG5vdCBzaG93biB3aGVuIHRlbXBsYXRlIGhhcyBiZWVuIGVkaXRlZDwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBmaWxlbWFuYWdlbWVudCBhbmQgdXBsb2FkIGZ1bmN0aW9ucyB0byBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGU8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBicmVhZGN1bWJzIHRvIGZpbGVwaWNrZXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZG1pbnMgbWF5IGJyb3dzZSB0aGUgZW50aXJlIGRpciB0cmVlIGluIGZpbGVwaWNrZXIgZmlsZSBicm93c2VyIHJlZ2FyZGxlc3Mgb2YgdGVtcGxhdGUgcGFyYW1zPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgbWltZSB0eXBlIGNoZWNraW5nIHRvIGdldCBmaWxlIHR5cGU8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCByYXd1cmxlbmNvZGUgaW4gc3JjIGF0dHJpYnMgdG8gZGlzcGxheSBpbWFnZXMgd2l0aCB3ZWlyZCBmaWxlbmFtZXMuPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+bWlzY2VsbGFuZW91czo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBPT1Agc3R1ZmYgKHByaXZhdGUvcHVibGljL3Byb3RlY3RlZCkgdG8gZ2FpbiBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBQSFA0PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBhamF4IGZ1bmN0aW9ucyB0byByZXR1cm4geG1sIHZhbHVlczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgdXNhZ2Ugb2YgSW1hZ2VNYW5hZ2VyIG9uY2UgYW5kIGZvciBhbGwuIChjYXVzZWQgb25seSB0cm91YmxlKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuMy4zIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4KCTx1bD4KCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQk8dWw+CgkJCQk8bGk+PHA+LSBhbGlhcyB3YXMgbm90IGFsd2F5cyBjb252ZXJ0ZWQgcHJvcGVybHk8L3A+PC9saT4KCQkJCTxsaT48cD4tIHVuc3VibWl0dGVkIGNvbnRlbnQgZ290IGxvc3QgaWYgc3dpdGNoaW5nIGZyb20gQ29udGVudCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4KCQkJPC91bD4KCQk8L2xpPgoJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCTx1bD4KCQkJCTxsaT48cD4tIGFkZGVkIHN0YXJ0L2VuZCBkYXRlPC9wPjwvbGk+CgkJCQk8bGk+PHA+LSByZW1vdmVkIHRpbWVwaWNrZXI7IHJlcGxhY2VkIGJ5IGEgc2ltcGxlIGRyb3Bkb3duPC9wPjwvbGk+CgkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfaW1hZ2V9PC9wPjwvbGk+CgkJCTwvdWw+CgkJPC9saT4KCTwvdWw+Cgk8bGk+PHA+PHN0cm9uZz4wLjMuMiAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgY2hhbmdpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgdHlwZSBvciBjaGFuZ2luZyB0ZW1wbGF0ZSBjYXVzZWQgZmF0YWwgZXJyb3JzPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggc21hcnR5IHByb2Nlc3Npbmcgd2hlbiBzYXZpbmcgYSBwYWdlPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcHJldmlldyB0YWI8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmUtYWRkZWQgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiB0byB0b2dnbGUgY29udGVudCBibG9ja3MgaW4gYmFja2VuZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbXMgZWRpdG9yX2dyb3Vwcy9lZGl0b3JfdXNlcnMgdG8gc3BlY2lmeSBjZXJ0YWluIHVzZXJzL2dyb3VwcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgY2VydGFpbiBibG9ja3M8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbXMgc2VsZWN0ZWQvY2hlY2tlZDsgdXNlIHBhcmFtIGRlZmF1bHQgaW5zdGVhZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBibG9jayBpZHMgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSBibG9jayBuYW1lIHVzaW5nIGNvcmUgZnVuY3Rpb24gbXVuZ2Vfc3RyaW5nX3RvX3VybCAodG8gcmVtb3ZlIHNwZWNpYWwgY2hhcnMsIHdoaXRlc3BhY2VzLCB1bWxhdXRzIGV0Yy4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyBvZiBibG9ja3R5cGUgZHJvcGRvd24vc2VsZWN0X211bHRpcGxlIHdoZXJlIGZpcnN0IGl0ZW0gaGFkIGFuIGVtcHR5IGxhYmVsIGlmIG9ubHkgdGhlIHBhcmFtICJ2YWx1ZXMiIGlzIHVzZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgc29tZSB0ZW1wbGF0ZSB2YXJzIG9mIHRoZSBmcm9udGVuZCB0byBiZSBhbHNvIGFjY2Vzc2libGUgaW4gYmFja2VuZCAoZS5nLjogJHBhZ2VfYWxpYXMpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJhbGxvd19ub25lIiB0byBhbGwgY29udGVudCBibG9jayB0eXBlcyB0byBzcGVjaWZ5IGlmIHRoZSBwcmVkZWZpbmVkIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkIGlmIG5vIHZhbHVlIGlzIGVudGVyZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGVtcHR5IHZhbHVlcyB3ZXJlIG5ldmVyIGJlIHN0b3JlZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZGVmYXVsdCB2YWx1ZSBpbiBmcm9udGVuZCB3YXMgaWdub3JlZCBpZiB0aGUgImFsbG93X25vbmUiIHBhcmFtIHdhcyBjaGFuZ2VkIGFmdGVyIGFuIGVtcHR5IHZhbHVlIGhhcyBiZWVuIHN0b3JlZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAic29ydGFibGVfaXRlbXMiIHRvIGNyZWF0ZSBhIHNvcnRhYmxlIG11bHRpcGxlIHNlbGVjdCBsaXN0IChzZWxlY3QgbGlzdCB3aWxsIHJlc3VsdCBpbiBhIHRhYmxlIHdpdGggY2hlY2tib3hlczsgb25seSBvcmRlciBvZiBzZWxlY3RlZCBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgc2hvd2VkIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3Q7IHVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgdGVtcGxhdGUpPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjMuMSAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIHJlb3JkZXJpbmcgc3R1ZmYgZm9yIG5vdyAoY2F1c2VzIHRyb3VibGUgYXQgdGhpcyB0aW1lKTwvcD48L2xpPgoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSBkYiBzdHVmZiAocGFyYW1zIG9mIGNvbnRlbnQgYmxvY2tzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGVtcGxhdGUgd29uJ3QgYmUgc2F2ZWQgaW4gbW9kdWxlIGRiIHRhYmxlIGFueW1vcmUgLT4gaG9wZWZ1bGx5IHNwZWVkIHVwIGxvYWRpbmcgdGltZSk8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBkdXBsaWNhdGUgY29udGVudCBibG9ja3M8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT4KCQk8cD48c3Ryb25nPkFkdmFuY2VkQ29udGVudCAwLjMgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSByZXdyaXRlIGNvZGU8L3A+PC9saT4KCQkJPGxpPjxwPi0gYnVnZml4ZXM8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVuYW1lZCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gdXNpbmcgc2VwYXJhdGUgbW9kdWxlIHRlbXBsYXRlIG5vdyB0byBkc3BsYXkgY29udGVudCBibG9ja3M8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYWdlIGFsaWFzIGluaGVyaXRhbmNlPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT48cD48c3Ryb25nPlhDb250ZW50IEJFVEEgMyAoQXByaWwgMjAxMCAtIGRpc2NvbnRpbnVlZCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gTWFqb3IgQnVnZml4IChtaXNzaW5nICI7IiBhbmQgc3RyYW5nZSBpbnZpc2libGUgaW52YWxpZCBjaGFycyk8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPlhDb250ZW50IEJFVEEgMiAoQXByaWwgMjAxMCAtIGRpc2NvbnRpbnVlZCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwYXJhbSAiZGVsaW1pdGVyIjwvcD48L2xpPgoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mICJTaG93IGxvZ2luIGZvcm0iPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIHBhZ2UgYWxpYXMgdG8gYWRkIGl0IGFzIHByZWZmaXg7IHNvIGlmIHlvdSBoYXZlIGEgcGFnZSBjYWxsZWQgIm1lbWJlcnMiIGFuZCBzZWxlY3QgZm9yIGVhY2ggY2hpbGQgcGFnZSAiaW5oZXJpdCBwYWdlIGFsaWFzIiBhbGwgY2hpbGQgcGFnZXMgYWxpYXNlcyB3aWxsIHN0YXJ0IHdpdGggIm1lbWJlcnNfIjsgbWFrZXMgZmlsdGVyaW5nIG9mIG1lbnUgZW50cmllcyB3aXRoIE1lbnVNYW5hZ2VyIHBhcmFtICJleGNsdWRlcHJlZmZpeCIgb3IgImluY2x1ZGVwcmVmZml4IiBlYXNpZXIuPC9wPjwvbGk+CgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+IAoJCTwvdWw+Cgk8L2xpPgoJPGxpPgoJCTxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAoQXByaWwgMjAxMCk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIGNvbnZlcnRlZCB0aGUgc2luZ2xlIGZpbGUgaW50byBhIG1vZHVsZTwvcD48L2xpPgoJCQk8bGk+PHA+LSByZW5hbWVkIHBhcmFtczsgc2VlIG1vZHVsZSBoZWxwIGZvciBtb3JlIGRldGFpbHM8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5TaW5nbGUgZmlsZSByZWxlYXNlcyAoZGlzY29udGludWVkKTwvc3Ryb25nPi4uLjwvcD4KPHVsPgoJPGxpPgoJCTxwPjxzdHJvbmc+MS40IChNYXJjaCAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBjbGVhbnVwIGNvZGUgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlcyAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHJlZGlyZWN0IHBhZ2UgaWYgZmV1IGlzIG5vdCBsb2dnZWQgaW4gLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBmZXVfYWNjZXNzIGFuZCByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjY2VzcyAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb24gLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfb25seSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHNtYXJ0eSBsb2dpYyBpbiBiYWNrZW5kIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHN0eWxlIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZpbHRlciAoZmlsdGVyaW5nIGltYWdlcyBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBJbWdNb2RlIChkcm9wZG93biBvciBJbWFnZU1hbmFnZXIpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHNtYXJ0eU9uIChmb3IgcHJvY2Vzc2luZyBzbWFydHkgdmFycyBvZiB0aGUgdGVtcGF0ZSBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MS4zIChBcHJpbCAyMDA5KTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBDTVNtcyAxLjYuKiByZWFkeSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIGZldSBhY2Nlc3Mgb3B0aW9uIC0gKE5hTik8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT4KCQk8cD48c3Ryb25nPjEuMiAoTWFyY2ggMjAwOSk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIEEgc2luZ2xlIGZpbGUgQ29udGVudDIuaW5jLnBocCB0aGF0IG5lZWRzIHRvIGJlIHBsYWNlZCBpbiBsaWIvY2xhc3Nlcy9jb250ZW50dHlwZXMuPC9wPjwvbGk+CgkJCTxsaT48cD4tIGxheW91dC9vcHRpb25zIG9mIGJhY2tlbmQgcGFuZWwgY2FuIGJlIGNvbnRyb2xlZCBieSBhZGRpdGlvbmFsIHNtYXJ0eSBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlOyBpbnRlZ3JhdGVkIHRoZSB7Y29udGVudF9pbWFnZX0gdGFnIC0gKG1vZCBieSBOYU4pPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+CjwvdWw+CjxiciAvPjxiciAvPg==]]></about>
	<description><![CDATA[--Add Me - module:AdvancedContent string:admindescription--]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PEZpbGVzICouKj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBvcmRlciBkZW55LGFsbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgZGVueSBmcm9tIGFsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L0ZpbGVzPgo=]]></data>
	</file>
	<file>
	  <filename>/action.addMultiInput.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNAojIEZpbGUgICA6IGFjdGlvbi5hZGRNdWx0aUlucHV0LnBocAojIFB1cnBvc2U6IGFkZHMgYSBtdWx0aSBpbnB1dCBibG9ja3R5cGUKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXRzJykpCnsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3JfcGVybWlzc2lvbnMnKSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkKewoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInPT4nbXVsdGlfaW5wdXQnKSk7Cn0KCiRlcnJvciA9IGZhbHNlOwokZXJyb3JtZXNzYWdlID0gJyc7CgokaW5wdXRfaWQgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snaW5wdXRfaWQnXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ2lucHV0X2lkJ10pKQp7CgkkaW5wdXRfaWQgPSBwcmVnX3JlcGxhY2UoJy8tKy8nLCdfJyxtdW5nZV9zdHJpbmdfdG9fdXJsKHRyaW0oJHBhcmFtc1snaW5wdXRfaWQnXSkpKTsKfQoKJGlucHV0X2ZpZWxkcyA9ICcnOwppZihpc3NldCgkcGFyYW1zWydpbnB1dF9maWVsZHMnXSkpCnsKCSRpbnB1dF9maWVsZHMgPSAkcGFyYW1zWydpbnB1dF9maWVsZHMnXTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snaW5wdXRfdHBsJ10pKQp7CgkkaW5wdXRfdHBsID0gJHBhcmFtc1snaW5wdXRfdHBsJ107Cn0KZWxzZQp7CgkkaW5wdXRfdHBsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfbXVsdGlfaW5wdXRfdHBsJywnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnKTsKfQoKIyMjIGRvIGFjdGlvbiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSAmJiAkcGFyYW1zWydzdWJtaXQnXT09dHJ1ZSkKewoJaWYoJGlucHV0X2lkID09ICcnKQoJewoJCSRlcnJvciA9IHRydWU7CgkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfaW5wdXRfaWQnKS4nPGJyIC8+JzsKCX0KCWlmKCRpbnB1dF9maWVsZHMgPT0gJycpCgl7CgkJJGVycm9yID0gdHJ1ZTsKCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl9pbnB1dF9maWVsZHMnKS4nPGJyIC8+JzsKCX0KCglpZigkZXJyb3I9PWZhbHNlKQoJewoJCWlmKCEkdGhpcy0+QWRkTXVsdGlJbnB1dCgkaW5wdXRfaWQsJGlucHV0X2ZpZWxkcykpCgkJewoJCQkkZXJyb3IgPSB0cnVlOwoJCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl9pbnB1dF9pZF9leGlzdHMnKS4nPGJyIC8+JzsKCQl9CgkJZWxzZSBpZighJHRoaXMtPkFkZFRwbEFzc29jKCdtdWx0aV9pbnB1dCcsJGlucHV0X2lkLCRpbnB1dF90cGwpKQoJCXsKCQkJJGVycm9yID0gdHJ1ZTsKCQkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfdXBkYXRpbmdfbXVsdGlfaW5wdXRfYXNzb2NzJykuJzxiciAvPic7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtZXNzYWdlJz0+J211bHRpX2lucHV0X2FkZGVkJywKCQkJCSdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0Jywnc3VibWl0Jz0+dHJ1ZSkpOwoJCX0KCX0KCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIHNtYXJ0eSBzdHVmZgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwKCSdhZGRNdWx0aUlucHV0JywgJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTskdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLAoJbGFuZygnc3VibWl0JykpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJyxsYW5nKCdjYW5jZWwnKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pZF90ZXh0JywkdGhpcy0+bGFuZygnaW5wdXRfaWQnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaWRfaW5wdXQnLAoJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2lkJywkaW5wdXRfaWQsNjQsMTI4KSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RwbF90ZXh0JywkdGhpcy0+bGFuZygnbXVsdGlfaW5wdXRfdHBsJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RwbF9pbnB1dCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaW5wdXRfdHBsJywgJHRoaXMtPkdldFRwbExpc3QoJ211bHRpX2lucHV0JyksICcnLCAkaW5wdXRfdHBsKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpZWxkc190ZXh0JywkdGhpcy0+bGFuZygnaW5wdXRfZmllbGRzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpZWxkc19pbnB1dCcsCgkkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsJGlkLCRpbnB1dF9maWVsZHMsJ2lucHV0X2ZpZWxkcycsJycsJ2lucHV0X2ZpZWxkcycpKTsKCmlmKCRlcnJvcm1lc3NhZ2UhPScnKQp7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Vycm9ybWVzc2FnZScsJGVycm9ybWVzc2FnZSk7Cn0KCiMgRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCmVjaG8gJHRoaXMtPl9wcC4kdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRNdWx0aUlucHV0LnRwbCcpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.addMultiInputTpl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNAojIEZpbGUgICA6IGFjdGlvbi5hZGRNdWx0aUlucHV0VHBsLnBocAojIFB1cnBvc2U6IGFkZHMgYSB0ZW1wbGF0ZSBmb3IgbXVsdGkgaW5wdXQgYmxvY2t0eXBlCiMgTGljZW5zZTogR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZighJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycpKQp7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX3Blcm1pc3Npb25zJykpOwp9CgppZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCnsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0X3RwbCcpKTsKfQoKJGVycm9yID0gZmFsc2U7CiRlcnJvcm1lc3NhZ2UgPSAnJzsKCiR0cGxfbmFtZSA9ICcnOwppZihpc3NldCgkcGFyYW1zWyd0cGxfbmFtZSddKSAmJiAhZW1wdHkoJHBhcmFtc1sndHBsX25hbWUnXSkpCnsKCSR0cGxfbmFtZSA9IHByZWdfcmVwbGFjZSgnLy0rLycsJ18nLG11bmdlX3N0cmluZ190b191cmwodHJpbSgkcGFyYW1zWyd0cGxfbmFtZSddKSkpOwp9CgokdGVtcGxhdGUgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpCnsKCSR0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7Cn0KCiMjIyBkbyBhY3Rpb24gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZihpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgJiYgJHBhcmFtc1snc3VibWl0J109PXRydWUpCnsKCWlmKCR0cGxfbmFtZSA9PSAnJykKCXsKCQkkZXJyb3IgPSB0cnVlOwoJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX3RwbF9uYW1lJykuJzxiciAvPic7Cgl9CglpZigkdGVtcGxhdGUgPT0gJycpCgl7CgkJJGVycm9yID0gdHJ1ZTsKCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl90ZW1wbGF0ZScpLic8YnIgLz4nOwoJfQoJaWYoJGVycm9yPT1mYWxzZSkKCXsKCQkkdGhpcy0+U2V0VGVtcGxhdGUoJ211bHRpX2lucHV0XycuJHRwbF9uYW1lLCAkdGVtcGxhdGUpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtZXNzYWdlJz0+J211bHRpX2lucHV0X3RwbF9hZGRlZCcsCgkJCSdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0X3RwbCcsJ3N1Ym1pdCc9PnRydWUpKTsKCX0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgc21hcnR5IHN0dWZmCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLAoJJ2FkZE11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsJ3Bvc3QnLCdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOyR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsCglsYW5nKCdzdWJtaXQnKSkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLGxhbmcoJ2NhbmNlbCcpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RwbF9uYW1lX3RleHQnLCR0aGlzLT5sYW5nKCd0cGxfbmFtZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0cGxfbmFtZV9pbnB1dCcsCgkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwndHBsX25hbWUnLCR0cGxfbmFtZSw2NCwxMjgpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfdGV4dCcsbGFuZygndGVtcGxhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfaW5wdXQnLAoJJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkdGVtcGxhdGUsJ3RlbXBsYXRlJywnJywndGVtcGxhdGUnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hlbHBfdGV4dCcsJHRoaXMtPmxhbmcoJ2hlbHBfdHBsX3ZhcnMnKSk7CgppZigkZXJyb3JtZXNzYWdlIT0nJykKewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlcnJvcm1lc3NhZ2UnLCRlcnJvcm1lc3NhZ2UpOwp9CgojIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQplY2hvICR0aGlzLT5fcHAuJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRkTXVsdGlJbnB1dFRwbC50cGwnKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjQKIyBGaWxlICAgOiBhY3Rpb24uZGVmYXVsdC5waHAKIyAgICAgICAgICBUaGlzIGZpbGUgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgcGx1Z2luIHtjb250ZW50fQojIFB1cnBvc2U6IHBlcmZvcm1zIHRoZSBkZWZhdWx0IGZyb250ZW5kIGFjdGlvbiBpZiB7QWR2YW5jZWRDb250ZW50fSBpcyB1c2VkLgojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZighaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRwYXJhbXNbJ2FjdGl2ZSddKSkgCnsKCXJldHVybjsgIyBkb24ndCBwcm9jZXNzIGluYWN0aXZlIGJsb2Nrcwp9CgokcGFnZWluZm8gPSYgJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXTsKJHJlc3VsdCAgID0gJyc7CgokYmxvY2sgPSAnY29udGVudF9lbic7CiRtYWluQ29udGVudCA9IHRydWU7CgojIE1MRSBzdXBwb3J0CiRtbGUgPSBmYWxzZTsKZ2xvYmFsICRobHMsICRtbGVibG9jaywgJG1sZWJsb2NrZmFsbGJhY2s7CmlmKGlzc2V0KCRobHMpKQp7CgkkbWxlID0gdHJ1ZTsKfQoKaWYoJG1sZSAmJiAkbWxlYmxvY2sgIT0gJycpCnsKCSRibG9jayA9ICdjb250ZW50Jy4kbWxlYmxvY2s7Cn0KIy0tLQoKaWYoaXNzZXQoJHBhcmFtc1snYmxvY2snXSkgJiYgJHBhcmFtc1snYmxvY2snXSAhPSAkYmxvY2spCnsKCSRtYWluQ29udGVudCA9IGZhbHNlOwoJJF9ibG9jayA9IHByZWdfcmVwbGFjZSgnLy0rLycsJ18nLG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snYmxvY2snXSkpOwoJJGJsb2NrID0gJF9ibG9jazsKCSMgTUxFIHN1cHBvcnQKCWlmKCRtbGUpIAoJewoJCSRibG9jayAuPSAkbWxlYmxvY2s7Cgl9CgkjLS0tCn0KCiRkZWZhdWx0VmFsdWUgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snZGVmYXVsdCddKSkKewoJJGRlZmF1bHRWYWx1ZSA9IHRyaW0oJHBhcmFtc1snZGVmYXVsdCddKTsKfQoKJGRvU21hcnR5ID0gZmFsc2U7CmlmKGlzc2V0KCRwYXJhbXNbJ3NtYXJ0eSddKSAmJiAkdGhpcy0+SXNUcnVlKCRwYXJhbXNbJ3NtYXJ0eSddKSAmJiAkZ0Ntcy0+R2V0U21hcnR5KCktPmdldF90ZW1wbGF0ZV92YXJzKCdjb250ZW50X29iaicpLT5UeXBlKCkgPT0gJ2NvbnRlbnQyJykKewoJJGRvU21hcnR5ID0gdHJ1ZTsKfQppZigkZG9TbWFydHkgJiYgJGdDbXMtPkdldFNtYXJ0eSgpLT5nZXRfdGVtcGxhdGVfdmFycygnY29udGVudF9vYmonKS0+VHlwZSgpID09ICdjb250ZW50MicpIAp7CgkkZGVmYXVsdFZhbHVlID0gJGdDbXMtPkdldFNtYXJ0eSgpLT5nZXRfdGVtcGxhdGVfdmFycygnY29udGVudF9vYmonKS0+RG9TbWFydHkoJGdDbXMtPkdldFNtYXJ0eSgpLT5nZXRfdGVtcGxhdGVfdmFycygnY29udGVudF9vYmonKS0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrXVsnZGVmYXVsdF92YWx1ZSddKTsKfQoKJGFsbG93Tm9uZSA9IHRydWU7CmlmKGlzc2V0KCRwYXJhbXNbJ2FsbG93X25vbmUnXSkgJiYgJHRoaXMtPklzRmFsc2UoJHBhcmFtc1snYWxsb3dfbm9uZSddKSkKewoJJGFsbG93Tm9uZSA9IGZhbHNlOwp9CgppZiAoaXNzZXQoJHBhZ2VpbmZvKSAmJiAkcGFnZWluZm8gIT09IEZBTFNFICYmIGlzc2V0KCRwYWdlaW5mby0+Y29udGVudF9pZCkgKQp7CgkkaWQgICAgICAgICA9ICcnOwoJJG1vZHVsZW5hbWUgPSAnJzsKCSRhY3Rpb24gICAgID0gJyc7CgkkaW5saW5lICAgICA9IGZhbHNlOwoJaWYgKGlzc2V0KCRfUkVRVUVTVFsnbW9kdWxlJ10pKQoJewoJCSRtb2R1bGVuYW1lID0gJF9SRVFVRVNUWydtb2R1bGUnXTsKCX0KCQoJaWYgKGlzc2V0KCRfUkVRVUVTVFsnaWQnXSkpIAoJewoJCSRpZCA9ICRfUkVRVUVTVFsnaWQnXTsKCX0KCWVsc2VpZiAoaXNzZXQoJF9SRVFVRVNUWydtYWN0J10pKSAKCXsKCQkkYXJ5ICAgICAgICA9IGV4cGxvZGUoJywnLCBjbXNfaHRtbGVudGl0aWVzKCRfUkVRVUVTVFsnbWFjdCddKSwgNCk7CgkJJG1vZHVsZW5hbWUgPSAoaXNzZXQoJGFyeVswXSk/JGFyeVswXTonJyk7CgkJJGlkICAgICAgICAgPSAoaXNzZXQoJGFyeVsxXSk/JGFyeVsxXTonJyk7CgkJJGFjdGlvbiAgICAgPSAoaXNzZXQoJGFyeVsyXSk/JGFyeVsyXTonJyk7CgkJJGlubGluZSAgICAgPSAoaXNzZXQoJGFyeVszXSkgJiYgJGFyeVszXSA9PSAxP3RydWU6ZmFsc2UpOwoJfQoJCglpZiAoaXNzZXQoJF9SRVFVRVNUWyRpZC4nYWN0aW9uJ10pKSAKCXsKCQkkYWN0aW9uID0gJF9SRVFVRVNUWyRpZC4nYWN0aW9uJ107Cgl9CgllbHNlIGlmIChpc3NldCgkX1JFUVVFU1RbJ2FjdGlvbiddKSkgCgl7CgkJJGFjdGlvbiA9ICRfUkVRVUVTVFsnYWN0aW9uJ107Cgl9CgkKCWlmICghaXNzZXQoJHBhcmFtc1snYmxvY2snXSkgJiYgKCRpZCA9PSAnY250bnQwMScgfHwgKCRpZCAhPSAnJyAmJiAkaW5saW5lID09IGZhbHNlKSkpIAoJewoJCSRjbXNtb2R1bGVzID0gJiRnQ21zLT5tb2R1bGVzOwoJCQoJCWlmIChpc3NldCgkY21zbW9kdWxlcykpIAoJCXsKCQkJZm9yZWFjaCAoJGNtc21vZHVsZXMgYXMgJGtleT0+JHZhbHVlKSAKCQkJewoJCQkJaWYgKHN0cnRvbG93ZXIoJG1vZHVsZW5hbWUpID09IHN0cnRvbG93ZXIoJGtleSkpIAoJCQkJewoJCQkJCSRtb2R1bGVuYW1lID0gJGtleTsgCgkJCQl9CgkJCX0KCQkJCgkJCWlmIChpc3NldCgkbW9kdWxlbmFtZSkpIAoJCQl7CgkJCQlpZiAoaXNzZXQoJGNtc21vZHVsZXNbJG1vZHVsZW5hbWVdKSkgCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCRjbXNtb2R1bGVzWyRtb2R1bGVuYW1lXVsnb2JqZWN0J10pCgkJCQkJCSYmICRjbXNtb2R1bGVzWyRtb2R1bGVuYW1lXVsnaW5zdGFsbGVkJ10gPT0gdHJ1ZQoJCQkJCQkmJiAkY21zbW9kdWxlc1skbW9kdWxlbmFtZV1bJ2FjdGl2ZSddID09IHRydWUKCQkJCQkJJiYgJGNtc21vZHVsZXNbJG1vZHVsZW5hbWVdWydvYmplY3QnXS0+SXNQbHVnaW5Nb2R1bGUoKSkKCQkJCQl7CgkJCQkJCUBvYl9zdGFydCgpOwoJCQkJCQlmb3JlYWNoKCR0aGlzLT5HZXRBbGxvd2VkUGFyYW1ldGVycygpIGFzICRrID0+ICR2KSB7CgkJCQkJCQl1bnNldCgkcGFyYW1zWyR2XSk7CgkJCQkJCX0KCQkJCQkJCgkJCQkJCSRwYXJhbXMgPSBhcnJheV9tZXJnZSgkcGFyYW1zLCBHZXRNb2R1bGVQYXJhbWV0ZXJzKCRpZCkpOwoJCQkJCQkKCQkJCQkJIyBjYWxndXkxMDAwIC4uLiBpbmNyZW1lbnQgdGhlIG1vZHVsZW51bQoJCQkJCQkjIGlmIHdlJ3JlIG5vdCBpbiBpbmxpbmVkIG1vZGUuCgkJCQkJCWlmKCAkaWQgIT0gJ2NudG50MDEnICkgCgkJCQkJCXsKCQkJCQkJCSsrJGdDbXMtPnZhcmlhYmxlc1sibW9kdWxlbnVtIl07CgkJCQkJCX0KCQkJCQkJCgkJCQkJCSRyZXR1cm5pZCA9ICcnOwoJCQkJCQlpZiAoaXNzZXQoJHBhcmFtc1sncmV0dXJuaWQnXSkpIAoJCQkJCQl7CgkJCQkJCQkkcmV0dXJuaWQgPSAkcGFyYW1zWydyZXR1cm5pZCddOwoJCQkJCQl9CgkJCQkJCWVsc2UgCgkJCQkJCXsKCQkJCQkJCSRyZXR1cm5pZCA9ICRwYWdlaW5mby0+Y29udGVudF9pZDsKCQkJCQkJfQoJCQkJCQkkcmVzdWx0ID0gJGNtc21vZHVsZXNbJG1vZHVsZW5hbWVdWydvYmplY3QnXS0+RG9BY3Rpb25CYXNlKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCQkJCQkJaWYgKCRyZXN1bHQgIT09IEZBTFNFKSAKCQkJCQkJewoJCQkJCQkJZWNobyAkcmVzdWx0OwoJCQkJCQl9CgkJCQkJCSRtb2RyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7CgkJCQkJCUBvYl9lbmRfY2xlYW4oKTsKCQkJCQkJJHJlc3VsdCA9ICRtb2RyZXN1bHQ7CgkJCQkJfQoJCQkJCWVsc2UgCgkJCQkJewoJCQkJCSAgJHJlc3VsdCA9ICI8IS0tIE5vdCBhIHRhZyBtb2R1bGUgLS0+XG4iOwoJCQkJCSAgQHRyaWdnZXJfZXJyb3IoJ0F0dGVtcHQgdG8gYWNjZXNzIG1vZHVsZSAnLiRrZXkuJyB3aGljaCBjb3VsZCBub3QgYmUgZm91bmUgKGlzIGl0IHByb3Blcmx5IGluc3RhbGxlZCBhbmQgY29uZmlndXJlZD8nKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9CgllbHNlIAoJewoJCSRvbGR2YWx1ZSAgICAgICAgICAgICAgICAgICA9ICRnQ21zLT5HZXRTbWFydHkoKS0+Y2FjaGluZzsKCQkkZ0Ntcy0+R2V0U21hcnR5KCktPmNhY2hpbmcgPSBmYWxzZTsKCQkkY29udGVudElkICAgICAgICAgICAgICAgICAgPSAkcGFnZWluZm8tPmNvbnRlbnRfaWQ7CgkJCgkJIyBNTEUgc3VwcG9ydAoJCWlmKCRtbGUpCgkJewoJCQkkY29udGVudElkIC49ICctJy4kaGxzOwoJCX0KCQkjLS0tCgkJCgkJJHJlc3VsdCA9ICRnQ21zLT5HZXRTbWFydHkoKS0+ZmV0Y2goc3RyX3JlcGxhY2UoJyAnLCAnXycsICdjb250ZW50OicgLiAkYmxvY2spLCAnJywgJGNvbnRlbnRJZCk7CgkJCgkJIyBNTEUgc3VwcG9ydAoJCWlmKCRtbGUKCQkJJiYgJHJlc3VsdCA9PSAnJyAmJiAkbWxlYmxvY2tmYWxsYmFjayAhPSAnJwoJCQkmJiAkbWxlYmxvY2tmYWxsYmFjayAhPSAkbWxlYmxvY2spCgkJewoJCQlpZigkYmxvY2sgIT0gJ2NvbnRlbnQnLiRtbGVibG9jaykgCgkJCXsKCQkJCSRibG9jayAgPSAkX2Jsb2NrIC4gJG1sZWJsb2NrZmFsbGJhY2s7CgkJCQkkcmVzdWx0ID0gJGdDbXMtPkdldFNtYXJ0eSgpLT5mZXRjaChzdHJfcmVwbGFjZSgnICcsICdfJywgJ2NvbnRlbnQ6JyAuICRibG9jayksICcnLCAkY29udGVudElkKTsKCQkJfQoJCQllbHNlIAoJCQl7CgkJCQkkYmxvY2sgID0gJ2NvbnRlbnQnIC4gJG1sZWJsb2NrZmFsbGJhY2s7CgkJCQkkcmVzdWx0ID0gJGdDbXMtPkdldFNtYXJ0eSgpLT5mZXRjaChzdHJfcmVwbGFjZSgnICcsICdfJywgJ2NvbnRlbnQ6JyAuICRibG9jayksICcnLCAkY29udGVudElkKTsKCQkJfQoJCX0KCQkjLS0tCgkJCgkJJGdDbXMtPkdldFNtYXJ0eSgpLT5jYWNoaW5nID0gJG9sZHZhbHVlOwoJCQoJCWlmKCRyZXN1bHQgPT0gJycgJiYgISRhbGxvd05vbmUpCgkJewoJCQkkcmVzdWx0ID0gJGRlZmF1bHRWYWx1ZTsKCQl9Cgl9CgllY2hvIHRyaW0oJHJlc3VsdCk7Cn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjQKIyBGaWxlICAgOiBhY3Rpb24uZGVmYXVsdGFkbWluLnBocAojIFB1cnBvc2U6IHBlcmZvcm1zIHRoZSBkZWZhdWx0IGJhY2tlbmQgYWN0aW9uIGlmICJFeHRlbnNpb25zLT5BZHZhbmNlZENvbnRlbnQiCiMgICAgICAgICAgaXMgc2VsZWN0ZWQKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IFByZWZlcmVuY2VzJykgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycpKQoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwkcmV0dXJuaWQsCSR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9ucycpKTsKCiRhY3RpdmVfdGFiID0gJ3ByZWZzJzsKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkKCSRhY3RpdmVfdGFiID0gJHBhcmFtc1snYWN0aXZlX3RhYiddOwoKJGVycm9ybWVzc2FnZSA9ICcnOwppZihpc3NldCgkcGFyYW1zWydlcnJvcm1lc3NhZ2UnXSkpCgkkZXJyb3JtZXNzYWdlIC49ICRwYXJhbXNbJ2Vycm9ybWVzc2FnZSddLic8YnIgLz4nOwoKJG1lc3NhZ2UgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSkKCSRtZXNzYWdlIC49ICRwYXJhbXNbJ21lc3NhZ2UnXS4nPGJyIC8+JzsKCiR0YWJzID0gYXJyYXkoKTsKCmlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnKSkKewoJJHRhYnNbJ3ByZWZzJ11bJ3RhYmhlYWRlciddID0gJHRoaXMtPlNldFRhYkhlYWRlcigncHJlZnMnLAoJCSR0aGlzLT5sYW5nKCdwcmVmcycpLAoJCSgkYWN0aXZlX3RhYj09J3ByZWZzJz90cnVlOicnKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsCgkJJ3NhdmVQcmVmcycsICRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbXBvcnRjb250ZW50X2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdpbXBvcnRwYWdlcycsICRyZXR1cm5pZCwKCQkJJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJycsJycsJycsJ3N5c3RlbWljb24nKSAuCgkJCScmbmJzcDsnIC4gJHRoaXMtPmxhbmcoJ2ltcG9ydHBhZ2VzJywgbGFuZygnY29udGVudCcpLCR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSksCgkJCWFycmF5KCdvbGRfdHlwZSc9Pidjb250ZW50JywnbmV3X3R5cGUnPT4nY29udGVudDInKSwKCQkJJycsCgkJCWZhbHNlLAoJCQlmYWxzZSwKCQkJJ2NsYXNzPSJBZHZhbmNlZENvbnRlbnRfQUpBWCIgb25jbGljaz0iaWYoY29uZmlybShcJycuCgkJCQkkdGhpcy0+bGFuZygnY29uZmlybWltcG9ydCcsbGFuZygnY29udGVudCcpLCR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSkgLgoJCQkJJ1wnKSkge0FkdmFuY2VkQ29udGVudC5pbXBvcnRQYWdlcyh0aGlzLmhyZWYpO30gcmV0dXJuIGZhbHNlOyInKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW1wb3J0Y29udGVudDJfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2ltcG9ydHBhZ2VzJywgJycsCgkJCSRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJykgLgoJCQknJm5ic3A7JyAuICR0aGlzLT5sYW5nKCdpbXBvcnRwYWdlcycsICR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSxsYW5nKCdjb250ZW50JykpLAoJCQlhcnJheSgnb2xkX3R5cGUnPT4nY29udGVudDInLCduZXdfdHlwZSc9Pidjb250ZW50JyksCgkJCScnLAoJCQlmYWxzZSwKCQkJZmFsc2UsCgkJCSdjbGFzcz0iQWR2YW5jZWRDb250ZW50X0FKQVgiIG9uY2xpY2s9ImlmKGNvbmZpcm0oXCcnLgoJCQkJJHRoaXMtPmxhbmcoJ2NvbmZpcm1pbXBvcnQnLCR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSxsYW5nKCdjb250ZW50JykpIC4KCQkJCSdcJykpIHtBZHZhbmNlZENvbnRlbnQuaW1wb3J0UGFnZXModGhpcy5ocmVmKTt9IHJldHVybiBmYWxzZTsiJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3VuaW5zdGFsbGFjdGlvbl90ZXh0JywgJHRoaXMtPmxhbmcoJ3VuaW5zdGFsbGFjdGlvbicpKTsKCQoJJGFjdGlvbnMgPSBhcnJheShsYW5nKCdub25lJyk9PicnLAoJCSR0aGlzLT5sYW5nKCdzZXRjb250ZW50MScpPT4yLAoJCSR0aGlzLT5sYW5nKCdzZXRjb250ZW50MicpPT4zLAoJCSR0aGlzLT5sYW5nKCdkZWxldGVwYWdlcycpPT4xKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd1bmluc3RhbGxhY3Rpb25faW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3VuaW5zdGFsbF9hY3Rpb24nLCAkYWN0aW9ucywgJycsCgkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1bmluc3RhbGxfYWN0aW9uJykpKTsKCQoJJGFjdGlvbnMgPSBhcnJheSgkdGhpcy0+bGFuZygncGVyX3BhZ2UnKT0+J2NvbnRlbnQnLAoJCSR0aGlzLT5sYW5nKCdwZXJfdGVtcGxhdGUnKT0+J3RlbXBsYXRlJywKCQkkdGhpcy0+bGFuZygnYm90aDEnKT0+J2JvdGgxJywKCQkkdGhpcy0+bGFuZygnYm90aDInKT0+J2JvdGgyJyk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignYmxvY2tfZGlzcGxheV9zZXR0aW5nc190ZXh0JywKCQkkdGhpcy0+bGFuZygnc2F2ZV9jb2xsYXBzZV9zdGF0dXMnLCAkdGhpcy0+bGFuZygnY29udGVudF9ibG9ja3MnKSkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdibG9ja19kaXNwbGF5X3NldHRpbmdzX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdibG9ja19kaXNwbGF5X3NldHRpbmdzJywgJGFjdGlvbnMsICcnLAoJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYmxvY2tfZGlzcGxheV9zZXR0aW5ncycpKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29sbGFwc2VfYmxvY2tfZGVmYXVsdF90ZXh0JywKCQkkdGhpcy0+bGFuZygnY29sbGFwc2VfZGVmYXVsdCcsJHRoaXMtPmxhbmcoJ2NvbnRlbnRfYmxvY2tzJykpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NvbGxhcHNlX2Jsb2NrX2RlZmF1bHRfaW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjb2xsYXBzZV9ibG9ja19kZWZhdWx0JywnMCcpIC4KCQkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnY29sbGFwc2VfYmxvY2tfZGVmYXVsdCcsICcxJywKCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ibG9ja19kZWZhdWx0JywxKSkpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc190ZXh0JywKCQkkdGhpcy0+bGFuZygnc2F2ZV9jb2xsYXBzZV9zdGF0dXMnLCAkdGhpcy0+bGFuZygnYmxvY2tfbWVzc2FnZScpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc19pbnB1dCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzJywgJGFjdGlvbnMsICcnLAoJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzJykpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdncm91cF9kaXNwbGF5X3NldHRpbmdzX3RleHQnLAoJCSR0aGlzLT5sYW5nKCdzYXZlX2NvbGxhcHNlX3N0YXR1cycsICR0aGlzLT5sYW5nKCdibG9ja19ncm91cHMnKSkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdncm91cF9kaXNwbGF5X3NldHRpbmdzX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdncm91cF9kaXNwbGF5X3NldHRpbmdzJywgJGFjdGlvbnMsICcnLAoJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZ3JvdXBfZGlzcGxheV9zZXR0aW5ncycpKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29sbGFwc2VfZ3JvdXBfZGVmYXVsdF90ZXh0JywKCQkkdGhpcy0+bGFuZygnY29sbGFwc2VfZGVmYXVsdCcsJHRoaXMtPmxhbmcoJ2Jsb2NrX2dyb3VwcycpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHRfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLCcwJykgLgoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLCAnMScsCgkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ncm91cF9kZWZhdWx0JywxKSkpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnNfdGV4dCcsCgkJJHRoaXMtPmxhbmcoJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnNfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnLCcwJykgLgoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnLCAnMScsCgkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJywxKSkpOwoJCgkjIENvbnRlbnQgc2V0dGluZ3MKCWlmKCAkZmV1c2VycyA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnICkpCgl7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb250ZW50c2V0dGluZ3NfdGV4dCcsICR0aGlzLT5sYW5nKCdjb250ZW50c2V0dGluZ3MnKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmZXVhY2Nlc3NfdGV4dCcsICR0aGlzLT5sYW5nKCdmcm9udGVuZGFjY2VzcycpKTsKCQkkZmV1QWNjZXNzID0gYXJyYXkoJHRoaXMtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKT0+LTEpOwoJCSRmZXVBY2Nlc3MgPSBhcnJheV9tZXJnZSgkZmV1QWNjZXNzLCRmZXVzZXJzLT5HZXRHcm91cExpc3QoKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmZXVhY2Nlc3NfaW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdmZXVfYWNjZXNzJywnJykuCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCdmZXVfYWNjZXNzW10nLCRmZXVBY2Nlc3MsCgkJCQkkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCc7JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmV1X2FjY2VzcycpKSksCgkJCWNvdW50KCRmZXVBY2Nlc3MpLCcnLDEpKTsKCQkKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlZGlyZWN0cGFnZV90ZXh0JywgJHRoaXMtPmxhbmcoJ3JlZGlyZWN0cGFnZScpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlZGlyZWN0cGFnZV9pbnB1dCcsCgkJCSR0aGlzLT5DcmVhdGVSZWRpcmVjdERyb3Bkb3duKCRpZCwncmVkaXJlY3RfcGFnZScsCgkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVkaXJlY3RfcGFnZScpKSk7CgkJCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdyZWRpcmVjdHBhcmFtc190ZXh0JywgJHRoaXMtPmxhbmcoJ3JlZGlyZWN0cGFyYW1zJykpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigncmVkaXJlY3RwYXJhbXNfaW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3JlZGlyZWN0X3BhcmFtcycsCgkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVkaXJlY3RfcGFyYW1zJyksIDMyLCAxMjgpKTsKCQkKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2V2YWx1YXRlc21hcnR5X3RleHQnLCAkdGhpcy0+bGFuZygnZXZhbHVhdGVzbWFydHknKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdldmFsdWF0ZXNtYXJ0eV9pbnB1dCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2V2YWx1YXRlX3NtYXJ0eScsJzAnKSAuCgkJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2V2YWx1YXRlX3NtYXJ0eScsICcxJywKCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdldmFsdWF0ZV9zbWFydHknKSkpOwoJCQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZmV1YWN0aW9uX3RleHQnLCAkdGhpcy0+bGFuZygnc2hvd2xvZ2luZm9ybScpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZldWFjdGlvbl9pbnB1dCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZmV1X2FjdGlvbicsCgkJCQlhcnJheSgkdGhpcy0+bGFuZygnbm8nKT0+JycsCgkJCQkJJHRoaXMtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKT0+LTEsCgkJCQkJJHRoaXMtPmxhbmcoJ3llcycpPT4xKSwKCQkJCTAsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZldV9hY3Rpb24nKSkpOwoJfQoJIy0tLQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfcHJlZnMnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0X3ByZWZzJywKCQlsYW5nKCdzdWJtaXQnKSwnb25jbGljaz0icmV0dXJuIEFkdmFuY2VkQ29udGVudC5zdWJtaXRGb3JtKHRoaXMsXCdBZHZhbmNlZENvbnRlbnRSZXN1bHRcJykiJykpOwoJCgkkdGFic1sncHJlZnMnXVsndGFiY29udGVudCddID0gJHRoaXMtPlN0YXJ0VGFiKCdwcmVmcycpIC4KCQkkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwcmVmc1RhYi50cGwnKSAuCgkJJHRoaXMtPkVuZFRhYigpOwp9CgppZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXRzJykpCnsKCSR0YWJzWydtdWx0aV9pbnB1dCddWyd0YWJoZWFkZXInXSA9ICR0aGlzLT5TZXRUYWJIZWFkZXIoJ211bHRpX2lucHV0JywKCQkkdGhpcy0+bGFuZygnbXVsdGlfaW5wdXQnKSwKCQkoJGFjdGl2ZV90YWI9PSdtdWx0aV9pbnB1dCc/dHJ1ZTonJykpOwoJCgkkbXVsdGlfaW5wdXRzID0gYXJyYXkoKTsKCWZvcmVhY2goJHRoaXMtPkdldE11bHRpSW5wdXRMaXN0KCkgYXMgJG11bHRpX2lucHV0KQoJewoJCSRtdWx0aV9pbnB1dHNbJG11bHRpX2lucHV0WydpbnB1dF9pZCddXVsnZWRpdF9saW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0TXVsdGlJbnB1dCcsICRyZXR1cm5pZCwKCQkJJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCdpbnB1dF9pZCc9PiRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXSkpOwoJCQoJCSRtdWx0aV9pbnB1dHNbJG11bHRpX2lucHV0WydpbnB1dF9pZCddXVsnbmFtZV9saW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0TXVsdGlJbnB1dCcsICRyZXR1cm5pZCwgJG11bHRpX2lucHV0WydpbnB1dF9pZCddLCBhcnJheSgnaW5wdXRfaWQnPT4kbXVsdGlfaW5wdXRbJ2lucHV0X2lkJ10pKTsKCQkKCQkkbXVsdGlfaW5wdXRzWyRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXV1bJ3RlbXBsYXRlJ10gPSBzdWJzdHIoJG11bHRpX2lucHV0Wyd0cGxfbmFtZSddLHN0cmxlbignbXVsdGlfaW5wdXRfJykpOwoJCQoJCSRtdWx0aV9pbnB1dHNbJG11bHRpX2lucHV0WydpbnB1dF9pZCddXVsnZGVsZXRlX2xpbmsnXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZU11bHRpSW5wdXQnLCAkcmV0dXJuaWQsCgkJCSRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyksCgkJCWFycmF5KCdpbnB1dF9pZCc9PiRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXSksJHRoaXMtPmxhbmcoJ2NvbmZpcm1fZGVsZXRlJykpOwoJCQoJCSRtdWx0aV9pbnB1dHNbJG11bHRpX2lucHV0WydpbnB1dF9pZCddXVsnY2hlY2tib3gnXSA9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwKCQkJIm11bHRpX2lucHV0LSIuJG11bHRpX2lucHV0WydpbnB1dF9pZCddLCAkbXVsdGlfaW5wdXRbJ2lucHV0X2lkJ10sICcnKTsKCX0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignc2VsZWN0YWxsJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ211bHRpX2lucHV0Jyx0cnVlLGZhbHNlLCAnaWQ9IicuJGlkLidtdWx0aV9pbnB1dCIgb25jbGljaz0iQWR2YW5jZWRDb250ZW50LnNlbGVjdEFsbCh0aGlzKSInKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ211bHRpX2lucHV0X2FycmF5JywkbXVsdGlfaW5wdXRzKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkX211bHRpX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRNdWx0aUlucHV0JywgJHJldHVybmlkLAoJCQkkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpIC4KCQkJJyZuYnNwOycgLiAkdGhpcy0+bGFuZygnYWRkX211bHRpX2lucHV0JykpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLAoJCSdkZWxldGVNdWx0aUlucHV0JywgJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0X2J1bGthY3Rpb24nLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0X2J1bGthY3Rpb24nLCR0aGlzLT5sYW5nKCdkZWxldGVfc2VsZWN0ZWQnKSwnJywnJywkdGhpcy0+bGFuZygnY29uZmlybV9kZWxldGVfc2VsZWN0ZWQnKSkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pZF90ZXh0JywgJHRoaXMtPmxhbmcoJ2lucHV0X2lkJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZV90ZXh0JywgbGFuZygndGVtcGxhdGUnKSk7CgkkdGFic1snbXVsdGlfaW5wdXQnXVsndGFiY29udGVudCddID0gJHRoaXMtPlN0YXJ0VGFiKCdtdWx0aV9pbnB1dCcpIC4KCQkkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdtdWx0aUlucHV0VGFiLnRwbCcpIC4KCQkkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKSkKewoJJHRhYnNbJ211bHRpX2lucHV0X3RwbCddWyd0YWJoZWFkZXInXSA9ICR0aGlzLT5TZXRUYWJIZWFkZXIoJ211bHRpX2lucHV0X3RwbCcsCgkJJHRoaXMtPmxhbmcoJ211bHRpX2lucHV0X3RwbCcpLAoJCSgkYWN0aXZlX3RhYj09J211bHRpX2lucHV0X3RwbCc/dHJ1ZTonJykpOwoJCgkkbXVsdGlfaW5wdXRfdHBscyA9IGFycmF5KCk7Cglmb3JlYWNoKCR0aGlzLT5HZXRUZW1wbGF0ZXMoJ211bHRpX2lucHV0JykgYXMgJHRwbCkKCXsKCQkkbXVsdGlfaW5wdXRfdHBsc1skdHBsWyd0cGxfaWQnXV1bJ2VkaXRfbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdE11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsCgkJCSRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpLAoJCQlhcnJheSgndHBsX2lkJz0+JHRwbFsndHBsX2lkJ10pKTsKCQkKCQkkbXVsdGlfaW5wdXRfdHBsc1skdHBsWyd0cGxfaWQnXV1bJ25hbWVfbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdE11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsCgkJCSR0cGxbJ3RwbF9uYW1lJ10sCgkJCWFycmF5KCd0cGxfaWQnPT4kdHBsWyd0cGxfaWQnXSkpOwoJCQoJCSRtdWx0aV9pbnB1dF90cGxzWyR0cGxbJ3RwbF9pZCddXVsnZGVsZXRlX2xpbmsnXSA9ICcmbmJzcDsnOwoJCSRtdWx0aV9pbnB1dF90cGxzWyR0cGxbJ3RwbF9pZCddXVsnY2hlY2tib3gnXSA9ICcmbmJzcCc7CgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfbXVsdGlfaW5wdXRfdHBsJywnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnKSAhPSAkdHBsWyd0cGxfaWQnXSAmJiAhJHRwbFsnaXNfdXNlZCddKQoJCXsKCQkJJG11bHRpX2lucHV0X3RwbHNbJHRwbFsndHBsX2lkJ11dWydkZWxldGVfbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLAoJCQkJJ2RlbGV0ZU11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyksCgkJCQlhcnJheSgndHBsX2lkJz0+JHRwbFsndHBsX2lkJ10pLCR0aGlzLT5sYW5nKCdjb25maXJtX2RlbGV0ZScpKTsKCQkJJG11bHRpX2lucHV0X3RwbHNbJHRwbFsndHBsX2lkJ11dWydjaGVja2JveCddID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLAoJCQkJIm11bHRpX2lucHV0X3RwbC0iLiR0cGxbJ3RwbF9pZCddLCAkdHBsWyd0cGxfaWQnXSwgJycpOwoJCX0KCQkKCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9tdWx0aV9pbnB1dF90cGwnLCdtdWx0aV9pbnB1dF9TYW1wbGVUZW1wbGF0ZScpICE9ICR0cGxbJ3RwbF9pZCddKQoJCXsKCQkJJG11bHRpX2lucHV0X3RwbHNbJHRwbFsndHBsX2lkJ11dWydzZXRfZGVmYXVsdF9saW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdzYXZlUHJlZnMnLCAkcmV0dXJuaWQsCgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyksCgkJCQlhcnJheSgnc2V0X2RlZmF1bHQnPT4nbXVsdGlfaW5wdXQnLCd0cGxfaWQnPT4kdHBsWyd0cGxfaWQnXSwnYWN0aXZlX3RhYic9PidtdWx0aV9pbnB1dF90cGwnKSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRtdWx0aV9pbnB1dF90cGxzWyR0cGxbJ3RwbF9pZCddXVsnc2V0X2RlZmF1bHRfbGluayddID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyk7CgkJfQoJCQoJfQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzZWxlY3RhbGwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnbXVsdGlfaW5wdXRfdHBsJyx0cnVlLGZhbHNlLCAnaWQ9IicuJGlkLidtdWx0aV9pbnB1dF90cGwiIG9uY2xpY2s9IkFkdmFuY2VkQ29udGVudC5zZWxlY3RBbGwodGhpcykiJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdtdWx0aV9pbnB1dF90cGxfYXJyYXknLCRtdWx0aV9pbnB1dF90cGxzKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkX211bHRpX2lucHV0X3RwbCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkTXVsdGlJbnB1dFRwbCcsICRyZXR1cm5pZCwKCQkJJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJycsJycsJycsJ3N5c3RlbWljb24nKSAuCgkJCScmbmJzcDsnIC4gJHRoaXMtPmxhbmcoJ2FkZF9tdWx0aV9pbnB1dF90cGwnKSkpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9idWxrYWN0aW9uJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdF9idWxrYWN0aW9uJywkdGhpcy0+bGFuZygnZGVsZXRlX3NlbGVjdGVkJyksJycsJycsJHRoaXMtPmxhbmcoJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJykpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfbmFtZV90ZXh0JywgbGFuZygndGVtcGxhdGUnKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLAoJCSdkZWxldGVNdWx0aUlucHV0VHBsJywgJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCQoJJHRhYnNbJ211bHRpX2lucHV0X3RwbCddWyd0YWJjb250ZW50J10gPSAkdGhpcy0+U3RhcnRUYWIoJ211bHRpX2lucHV0X3RwbCcpIC4KCQkkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdtdWx0aUlucHV0VHBsVGFiLnRwbCcpIC4KCQkkdGhpcy0+RW5kVGFiKCk7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3RhYnMnLCR0YWJzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF90YWJoZWFkZXJzJywkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF90YWJoZWFkZXJzJywkdGhpcy0+RW5kVGFiSGVhZGVycygpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF90YWJjb250ZW50JywkdGhpcy0+U3RhcnRUYWJDb250ZW50KCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF90YWJjb250ZW50JywkdGhpcy0+RW5kVGFiQ29udGVudCgpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiJywkdGhpcy0+RW5kVGFiKCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZUlkJywgJGlkKTsKCmlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkpCnsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZScsICR0aGlzLT5sYW5nKCRwYXJhbXNbJ21lc3NhZ2UnXSwgKGlzc2V0KCRwYXJhbXNbJ29sZF90eXBlJ10pICYmIGlzc2V0KCRwYXJhbXNbJ25ld190eXBlJ10pID8gJHRoaXMtPmxhbmcoJHBhcmFtc1snb2xkX3R5cGUnXSkgLiAnLCcgLiAkdGhpcy0+bGFuZygkcGFyYW1zWyduZXdfdHlwZSddKSA6ICcnKSkpOwp9CgppZihpc3NldCgkcGFyYW1zWydlcnJvcm1lc3NhZ2UnXSkpCnsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3JtZXNzYWdlJywgJHRoaXMtPmxhbmcoJHBhcmFtc1snZXJyb3JtZXNzYWdlJ10sIChpc3NldCgkcGFyYW1zWydvbGRfdHlwZSddKSAmJiBpc3NldCgkcGFyYW1zWyduZXdfdHlwZSddKSA/ICR0aGlzLT5sYW5nKCRwYXJhbXNbJ29sZF90eXBlJ10pIC4gJywnIC4gJHRoaXMtPmxhbmcoJHBhcmFtc1snbmV3X3R5cGUnXSkgOiAnJykpKTsKfQoKZWNobyAkdGhpcy0+X3BwIC4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGVmYXVsdGFkbWluLnRwbCcpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.editMultiInput.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNAojIEZpbGUgICA6IGFjdGlvbi5lZGl0TXVsdGlJbnB1dC5waHAKIyBQdXJwb3NlOiBlZGl0cyBhIG11bHRpIGlucHV0IGJsb2NrdHlwZQojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZighaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnKSkKewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9ucycpKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQp7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnYWN0aXZlX3RhYic9PidtdWx0aV9pbnB1dCcpKTsKfQoKJGVycm9yID0gZmFsc2U7CiRlcnJvcm1lc3NhZ2UgPSAnJzsKCiRpbnB1dF9pZCA9ICcnOwppZihpc3NldCgkcGFyYW1zWydpbnB1dF9pZCddKSAmJiAhZW1wdHkoJHBhcmFtc1snaW5wdXRfaWQnXSkpCnsKCSRpbnB1dF9pZCA9IHByZWdfcmVwbGFjZSgnLy0rLycsJ18nLG11bmdlX3N0cmluZ190b191cmwodHJpbSgkcGFyYW1zWydpbnB1dF9pZCddKSkpOwp9CgokbXVsdGlfaW5wdXQgPSAkdGhpcy0+R2V0TXVsdGlJbnB1dEZ1bGwoJGlucHV0X2lkKTsKCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2ZpZWxkcyddKSkKewoJJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ2lucHV0X2ZpZWxkcyddID0gdHJpbSgkcGFyYW1zWydpbnB1dF9maWVsZHMnXSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3RwbCddKSkKewoJJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ3RwbF9uYW1lJ10gPSAkcGFyYW1zWydpbnB1dF90cGwnXTsKfQoKIyMjIGRvIGFjdGlvbiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSAmJiAkcGFyYW1zWydzdWJtaXQnXT09dHJ1ZSkKewoJaWYoJGlucHV0X2lkID09ICcnKQoJewoJCSRlcnJvciA9IHRydWU7CgkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfaW5wdXRfaWQnKS4nPGJyIC8+JzsKCX0KCWlmKCRtdWx0aV9pbnB1dFskaW5wdXRfaWRdWydpbnB1dF9maWVsZHMnXSA9PSAnJykKCXsKCQkkZXJyb3IgPSB0cnVlOwoJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX2lucHV0X2ZpZWxkcycpLic8YnIgLz4nOwoJfQoKCWlmKCRlcnJvcj09ZmFsc2UpCgl7CgkJaWYoISR0aGlzLT5VcGRhdGVNdWx0aUlucHV0KCRpbnB1dF9pZCwkbXVsdGlfaW5wdXRbJGlucHV0X2lkXVsnaW5wdXRfZmllbGRzJ10pKQoJCXsKCQkJJGVycm9yID0gdHJ1ZTsKCQkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfdXBkYXRpbmdfbXVsdGlfaW5wdXQnKS4nPGJyIC8+JzsKCQl9CgkJZWxzZSBpZighJHRoaXMtPlVwZGF0ZVRwbEFzc29jKCdtdWx0aV9pbnB1dCcsJGlucHV0X2lkLCRtdWx0aV9pbnB1dFskaW5wdXRfaWRdWyd0cGxfbmFtZSddKSkKCQl7CgkJCSRlcnJvciA9IHRydWU7CgkJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX3VwZGF0aW5nX211bHRpX2lucHV0X2Fzc29jcycpLic8YnIgLz4nOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbWVzc2FnZSc9PidtdWx0aV9pbnB1dF91cGRhdGVkJywKCQkJCSdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0Jywnc3VibWl0Jz0+dHJ1ZSkpOwoJCX0KCX0KCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIHNtYXJ0eSBzdHVmZgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwKCSdlZGl0TXVsdGlJbnB1dCcsICRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7JHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywKCWxhbmcoJ3N1Ym1pdCcpKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywKCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsbGFuZygnY2FuY2VsJykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaWRfdGV4dCcsJHRoaXMtPmxhbmcoJ2lucHV0X2lkJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2lkX2lucHV0JywkaW5wdXRfaWQpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF90cGxfdGV4dCcsJHRoaXMtPmxhbmcoJ211bHRpX2lucHV0X3RwbCcpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF90cGxfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2lucHV0X3RwbCcsICR0aGlzLT5HZXRUcGxMaXN0KCdtdWx0aV9pbnB1dCcpLCAnJywgJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ3RwbF9uYW1lJ10pKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfZmllbGRzX3RleHQnLCR0aGlzLT5sYW5nKCdpbnB1dF9maWVsZHMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfZmllbGRzX2lucHV0JywKCSR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwkaWQsJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ2lucHV0X2ZpZWxkcyddLCdpbnB1dF9maWVsZHMnLCcnLCdpbnB1dF9maWVsZHMnKS4KCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdpbnB1dF9pZCcsJGlucHV0X2lkKSk7CgppZigkZXJyb3JtZXNzYWdlIT0nJykKewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlcnJvcm1lc3NhZ2UnLCRlcnJvcm1lc3NhZ2UpOwp9CgojIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQplY2hvICR0aGlzLT5fcHAuJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRkTXVsdGlJbnB1dC50cGwnKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.editMultiInputTpl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNAojIEZpbGUgICA6IGFjdGlvbi5hZGRNdWx0aUlucHV0VHBsLnBocAojIFB1cnBvc2U6IGVkaXRzIGEgdGVtcGxhdGUgZm9yIG11bHRpIGlucHV0IGJsb2NrdHlwZQojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZighaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKSkKewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9ucycpKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQp7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnYWN0aXZlX3RhYic9PidtdWx0aV9pbnB1dF90cGwnKSk7Cn0KCiRlcnJvciA9IGZhbHNlOwokZXJyb3JtZXNzYWdlID0gJyc7CgppZighaXNzZXQoJHBhcmFtc1sndHBsX2lkJ10pKQp7CglyZXR1cm47ICMgVG9EbzogZXJyb3JtZXNzYWdlPwp9CgokdHBsX2lkID0gJHBhcmFtc1sndHBsX2lkJ107CgokdGVtcGxhdGUgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpCnsKCSR0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7Cn0KZWxzZQp7CgkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRwbF9pZCk7Cn0KCiMjIyBkbyBhY3Rpb24gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZihpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgJiYgJHBhcmFtc1snc3VibWl0J109PXRydWUpCnsKCWlmKCR0ZW1wbGF0ZSA9PSAnJykKCXsKCQkkZXJyb3IgPSB0cnVlOwoJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX3RlbXBsYXRlJykuJzxiciAvPic7Cgl9CglpZigkZXJyb3I9PWZhbHNlKQoJewoJCSR0aGlzLT5TZXRUZW1wbGF0ZSgkdHBsX2lkLCAkdGVtcGxhdGUpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtZXNzYWdlJz0+J211bHRpX2lucHV0X3RwbF91cGRhdGVkJywKCQkJJ2FjdGl2ZV90YWInPT4nbXVsdGlfaW5wdXRfdHBsJywnc3VibWl0Jz0+dHJ1ZSkpOwoJfQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBzbWFydHkgc3R1ZmYKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsCgknZWRpdE11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsJ3Bvc3QnLCdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOyR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsCglsYW5nKCdzdWJtaXQnKSkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLGxhbmcoJ2NhbmNlbCcpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RwbF9uYW1lX3RleHQnLCR0aGlzLT5sYW5nKCd0cGxfbmFtZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0cGxfbmFtZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0cGxfaWQnLCAkdHBsX2lkKSAuIHN1YnN0cigkdHBsX2lkLHN0cmxlbignbXVsdGlfaW5wdXRfJykpLCA2NCwgMTI4KTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfdGV4dCcsbGFuZygndGVtcGxhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfaW5wdXQnLAoJJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkdGVtcGxhdGUsJ3RlbXBsYXRlJywnJywndGVtcGxhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaGVscF90ZXh0JywkdGhpcy0+bGFuZygnaGVscF90cGxfdmFycycpKTsKaWYoJGVycm9ybWVzc2FnZSE9JycpCnsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3JtZXNzYWdlJywkZXJyb3JtZXNzYWdlKTsKfQoKIyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKZWNobyAkdGhpcy0+X3BwLiR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZE11bHRpSW5wdXRUcGwudHBsJyk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.savePrefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjQKIyBGaWxlICAgOiBhY3Rpb24uc2F2ZVByZWZzLnBocAojIFB1cnBvc2U6IHNhdmVzIHRoZSBwcmVmZXJlbmNlcyBpbiB0aGUgZGF0YWJhc2UKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydzdWJtaXRfcHJlZnMnXSkpCnsKCWlmKGlzc2V0KCRwYXJhbXNbJ3VuaW5zdGFsbF9hY3Rpb24nXSkpCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VuaW5zdGFsbF9hY3Rpb24nLCAkcGFyYW1zWyd1bmluc3RhbGxfYWN0aW9uJ10pOwoJCglpZihpc3NldCgkcGFyYW1zWydmZXVfYWNjZXNzJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmZXVfYWNjZXNzJywgaW1wbG9kZSgnOycsJHRoaXMtPkNsZWFuQXJyYXkoJHBhcmFtc1snZmV1X2FjY2VzcyddKSkpOwoJCglpZihpc3NldCgkcGFyYW1zWydyZWRpcmVjdF9wYWdlJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZWRpcmVjdF9wYWdlJywgJHBhcmFtc1sncmVkaXJlY3RfcGFnZSddKTsKCQoJaWYoaXNzZXQoJHBhcmFtc1sncmVkaXJlY3RfcGFyYW1zJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZWRpcmVjdF9wYXJhbXMnLCAkcGFyYW1zWydyZWRpcmVjdF9wYXJhbXMnXSk7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2V2YWx1YXRlX3NtYXJ0eSddKSkKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZXZhbHVhdGVfc21hcnR5JywgJHBhcmFtc1snZXZhbHVhdGVfc21hcnR5J10pOwoJCglpZihpc3NldCgkcGFyYW1zWydmZXVfYWN0aW9uJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmZXVfYWN0aW9uJywgJHBhcmFtc1snZmV1X2FjdGlvbiddKTsKCQoJaWYoaXNzZXQoJHBhcmFtc1snYmxvY2tfZGlzcGxheV9zZXR0aW5ncyddKSkKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnYmxvY2tfZGlzcGxheV9zZXR0aW5ncycsICRwYXJhbXNbJ2Jsb2NrX2Rpc3BsYXlfc2V0dGluZ3MnXSk7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5ncyddKSkKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzJywgJHBhcmFtc1snbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzJ10pOwoJCglpZihpc3NldCgkcGFyYW1zWydncm91cF9kaXNwbGF5X3NldHRpbmdzJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdncm91cF9kaXNwbGF5X3NldHRpbmdzJywgJHBhcmFtc1snZ3JvdXBfZGlzcGxheV9zZXR0aW5ncyddKTsKCQoJaWYoaXNzZXQoJHBhcmFtc1snc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucyddKSkKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucycsICRwYXJhbXNbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSk7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnXSkpCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLCAkcGFyYW1zWydjb2xsYXBzZV9ncm91cF9kZWZhdWx0J10pOwoJCglpZihpc3NldCgkcGFyYW1zWydjb2xsYXBzZV9ibG9ja19kZWZhdWx0J10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ibG9ja19kZWZhdWx0JywgJHBhcmFtc1snY29sbGFwc2VfYmxvY2tfZGVmYXVsdCddKTsKCQp9CmlmKGlzc2V0KCRwYXJhbXNbJ2l0ZW1fdHlwZSddKSAmJiBpc3NldCgkcGFyYW1zWydpdGVtX2Rpc3BsYXknXSkpCnsKCSR0aGlzLT5TZXRJdGVtRGlzcGxheSgkcGFyYW1zWydpdGVtX3R5cGUnXSwgJHBhcmFtc1snaXRlbV9pZCddLCAkcGFyYW1zWydjb250ZW50X2lkJ10sICRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10sICRwYXJhbXNbJ2l0ZW1fZGlzcGxheSddKTsKfQppZihpc3NldCgkcGFyYW1zWydzZXRfZGVmYXVsdCddKSkKewoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfJy4kcGFyYW1zWydzZXRfZGVmYXVsdCddLidfdHBsJywgJHBhcmFtc1sndHBsX2lkJ10pOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ2FqYXgnXSkpCnsKCWVjaG8gJzxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj48cCBjbGFzcz0icGFnZW1lc3NhZ2UiPicuJHRoaXMtPmxhbmcoJ3ByZWZzdXBkYXRlZCcpLic8L3A+PC9kaXY+JzsKCWV4aXQ7Cn0KZWxzZQp7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbWVzc2FnZScgPT4gJ3ByZWZzdXBkYXRlZCcsICdzdWJtaXQnID0+IHRydWUpKTsKfQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/AdvancedContent.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjQKIyBGaWxlICAgOiBBZHZhbmNlZENvbnRlbnQubW9kdWxlLnBocAojIFB1cnBvc2U6IGluaXRpYWwgbW9kdWxlIGNsYXNzLiB0aGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIE1vZHVsZSBBUEkKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKY2xhc3MgQWR2YW5jZWRDb250ZW50IGV4dGVuZHMgQ01TTW9kdWxlCnsKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX2Rpc3BsYXlTZXR0aW5ncyA9IGFycmF5KCk7Cgl2YXIgJF9mZXVHcm91cHMgICAgICAgPSBmYWxzZTsKCXZhciAkX3BwID0gJzxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0Ij48Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNtZCIgdmFsdWU9Il9zLXhjbGljayIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaG9zdGVkX2J1dHRvbl9pZCIgdmFsdWU9IkZBMkQzRlBMU1RBS0oiIC8+CjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2VuX0dCL2kvYnRuL2J0bl9kb25hdGVfTEcuZ2lmIiBib3JkZXI9IjAiIG5hbWU9InN1Ym1pdCIgYWx0PSJQYXlQYWwgLSBUaGUgc2FmZXIsIGVhc2llciB3YXkgdG8gcGF5IG9ubGluZS4iIC8+CjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2RlX0RFL2kvc2NyL3BpeGVsLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iMSIgLz4KPC9mb3JtPjwvZGl2Pic7CgkKCWZ1bmN0aW9uIEFkdmFuY2VkQ29udGVudCgpCgl7CgkJcGFyZW50OjpDTVNNb2R1bGUoKTsKCQkkdGhpcy0+UmVnaXN0ZXJDb250ZW50VHlwZSgnQ29udGVudDInLCBkaXJuYW1lKF9fRklMRV9fKSAuCgkJCURJUkVDVE9SWV9TRVBBUkFUT1IgLiAnY29udGVudHR5cGUuQ29udGVudDIucGhwJywgJ0FkdmFuY2VkQ29udGVudCcpOwoJfQoJCglmdW5jdGlvbiBHZXROYW1lKCkKCXsKCQlyZXR1cm4gJ0FkdmFuY2VkQ29udGVudCc7Cgl9CgkKCWZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdBZHZhbmNlZENvbnRlbnQnKTsKCX0KCQoJZnVuY3Rpb24gR2V0VmVyc2lvbigpCgl7CgkJcmV0dXJuICcwLjYuNCc7Cgl9CgkKCWZ1bmN0aW9uIEdldEhlbHAoKQoJewoJCXJldHVybiAkdGhpcy0+X3BwLiR0aGlzLT5sYW5nKCdoZWxwJyk7Cgl9CgkKCWZ1bmN0aW9uIEdldEF1dGhvcigpCgl7CgkJcmV0dXJuICdHZW9yZyBCdXNjaCAoTmFOKSc7Cgl9CgkKCWZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKCXsKCQlyZXR1cm47Cgl9CgkKCWZ1bmN0aW9uIEdldENoYW5nZUxvZygpCgl7CgkJcmV0dXJuICR0aGlzLT5fcHAuJHRoaXMtPmxhbmcoJ2NoYW5nZWxvZycpOwoJfQoJCglmdW5jdGlvbiBIYXNDb250ZW50VHlwZSgpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgkKCWZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCQoJZnVuY3Rpb24gSGFzQWRtaW4oKQoJewoJCXJldHVybiB0cnVlOwoJfQoJCglmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQoJewoJCXJldHVybiAnZXh0ZW5zaW9ucyc7Cgl9CgkKCWZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKQoJewoJCXJldHVybiAkdGhpcy0+bGFuZygnYWRtaW5kZXNjcmlwdGlvbicpOwoJfQoJCglmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQoJewoJCXJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IFByZWZlcmVuY2VzJykgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKTsKCX0KCQoJZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQoJewoJCXJldHVybiAiMS42LjkiOwoJfQoJCglmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpCgl7CgkJcmV0dXJuICIxLjguMyI7Cgl9CgkKCWZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpOwoJfQoJCglmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJywgJHRoaXMtPkdldFZlcnNpb24oKSk7Cgl9CgkKCWZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygnY29uZmlybXVuaW5zdGFsbCcpOwoJfQoJCglmdW5jdGlvbiBIYW5kbGVzRXZlbnRzKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCQoJZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgPSAnJykKCXsKCQlzd2l0Y2goJGFjdGlvbikgewoJCQkKCQkJY2FzZSAnaW1wb3J0cGFnZXMnOgoJCQkJCgkJCQlpZihpc3NldCgkcGFyYW1zWydvbGRfdHlwZSddKSAmJiBpc3NldCgkcGFyYW1zWyduZXdfdHlwZSddKQoJCQkJJiYgJHBhcmFtc1snb2xkX3R5cGUnXSAhPSAnJyAmJiAkcGFyYW1zWyduZXdfdHlwZSddICE9ICcnCgkJCQkmJiAkcGFyYW1zWyduZXdfdHlwZSddICE9ICRwYXJhbXNbJ29sZF90eXBlJ10KCQkJCSYmICgkcGFyYW1zWyduZXdfdHlwZSddID09ICdjb250ZW50JyB8fCAkcGFyYW1zWyduZXdfdHlwZSddID09ICdjb250ZW50MicpCgkJCQkmJiAoJHBhcmFtc1snb2xkX3R5cGUnXSA9PSAnY29udGVudCcgfHwgJHBhcmFtc1snb2xkX3R5cGUnXSA9PSAnY29udGVudDInKSkKCQkJCXsKCQkJCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJCQkJJHF1ZXJ5ICAgID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4iY29udGVudCBTRVQgdHlwZSA9ID8gV0hFUkUgdHlwZSA9ID8iOwoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbJ25ld190eXBlJ10sJHBhcmFtc1snb2xkX3R5cGUnXSkpOwoJCQkJCWlmKCRkYnJlc3VsdCkKCQkJCQl7CgkJCQkJCSRtZXNzYWdlID0gJHRoaXMtPmxhbmcoJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnLCR0aGlzLT5sYW5nKCRwYXJhbXNbJ29sZF90eXBlJ10pLCAkdGhpcy0+bGFuZygkcGFyYW1zWyduZXdfdHlwZSddKSk7CgkJCQkJCSRfcGFyYW1zICA9IGFycmF5KAoJCQkJCQkJJ25ld190eXBlJyA9PiAkcGFyYW1zWyduZXdfdHlwZSddLAoJCQkJCQkJJ29sZF90eXBlJyA9PiAkcGFyYW1zWydvbGRfdHlwZSddLAoJCQkJCQkJJ21lc3NhZ2UnICA9PiAnc3VjY2Vzc19pbXBvcnRwYWdlcycpOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkX3BhcmFtcyA9IGFycmF5KAoJCQkJCQkJJ25ld190eXBlJyAgICAgPT4gJHBhcmFtc1snbmV3X3R5cGUnXSwKCQkJCQkJCSdvbGRfdHlwZScgICAgID0+ICRwYXJhbXNbJ29sZF90eXBlJ10sCgkJCQkJCQknZXJyb3JtZXNzYWdlJyA9PiAnZXJyb3JfaW1wb3J0cGFnZXMnKTsKCQkJCQkJJGVycm9ybWVzc2FnZSA9ICR0aGlzLT5sYW5nKCdlcnJvcl9pbXBvcnRwYWdlcycsJHRoaXMtPmxhbmcoJHBhcmFtc1snb2xkX3R5cGUnXSksICR0aGlzLT5sYW5nKCRwYXJhbXNbJ25ld190eXBlJ10pKTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJF9wYXJhbXMgICAgICA9IGFycmF5KCdlcnJvcm1lc3NhZ2UnID0+ICdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKCQkJCQkkZXJyb3JtZXNzYWdlID0gJHRoaXMtPmxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycsICduZXdfdHlwZSwgb2xkX3R5cGUnKTsKCQkJCX0KCQkJCQoJCQkJaWYoaXNzZXQoJHBhcmFtc1snYWpheCddKSkKCQkJCXsKCQkJCQlAb2JfZW5kX2NsZWFuKCk7CgkJCQkJQG9iX3N0YXJ0KCk7CgkJCQkJaWYoaXNzZXQoJGVycm9ybWVzc2FnZSkpCgkJCQkJewoJCQkJCQllY2hvICc8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPjx1bCBjbGFzcz0icGFnZWVycm9yIj48bGk+Jy4gJGVycm9ybWVzc2FnZSAuICc8L2xpPjwvdWw+PC9kaXY+JzsKCQkJCQl9CgkJCQkJaWYoaXNzZXQoJG1lc3NhZ2UpKQoJCQkJCXsKCQkJCQkJZWNobyAnPGRpdiBjbGFzcz0icGFnZW1jb250YWluZXIiPjxwIGNsYXNzPSJwYWdlbWVzc2FnZSI+Jy4kbWVzc2FnZS4nPC9wPjwvZGl2Pic7CgkJCQkJfQoJCQkJCW9iX2VuZF9mbHVzaCgpOwoJCQkJCWV4aXQ7CgkJCQl9CgkJCQkkX3BhcmFtc1snc3VibWl0J10gPSB0cnVlOwoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJF9wYXJhbXMpOwoJCQkJYnJlYWs7CgkJCQoJCQljYXNlICdkZWxldGVNdWx0aUlucHV0JzoKCQkJCSRpdGVtcyAgICAgICAgPSBhcnJheSgpOwoJCQkJJF9wYXJhbXMgICAgICA9IGFycmF5KCk7CgkJCQkkbWVzc2FnZSAgICAgID0gJyc7CgkJCQkkZXJyb3JtZXNzYWdlID0gJyc7CgkJCQlpZihpc3NldCgkcGFyYW1zWydpbnB1dF9pZCddKSkKCQkJCXsKCQkJCQkkaXRlbXNbXSA9ICRwYXJhbXNbJ2lucHV0X2lkJ107CgkJCQl9CgkJCQllbHNlIGlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdF9idWxrYWN0aW9uJ10pKQoJCQkJewoJCQkJCWZvcmVhY2goJHBhcmFtcyBhcyAkcGFyYW1fbmFtZSA9PiAkcGFyYW1fdmFsdWUpCgkJCQkJewoJCQkJCQlpZihzdGFydHN3aXRoKCRwYXJhbV9uYW1lLCdtdWx0aV9pbnB1dC0nKSkKCQkJCQkJewoJCQkJCQkJJGl0ZW1zW10gPSAkcGFyYW1fdmFsdWU7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQlpZigkdGhpcy0+RGVsZXRlTXVsdGlJbnB1dCgkaXRlbXMpKQoJCQkJewoJCQkJCSRfcGFyYW1zWydtZXNzYWdlJ10gPSAnbXVsdGlfaW5wdXRfZGVsZXRlZCc7CgkJCQkJJG1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ211bHRpX2lucHV0X2RlbGV0ZWQnKSAuICI8YnIgLz4iOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRfcGFyYW1zWydlcnJvcm1lc3NhZ2UnXSA9ICdlcnJvcl9kZWxldGVfbXVsdGlfaW5wdXQnOwoJCQkJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX2RlbGV0ZV9tdWx0aV9pbnB1dCcpIC4gIjxiciAvPiI7CgkJCQl9CgkJCQlpZighJHRoaXMtPkRlbGV0ZVRwbEFzc29jKCdtdWx0aV9pbnB1dCcsJGl0ZW1zKSkKCQkJCXsKCQkJCQkkX3BhcmFtc1snbWVzc2FnZSddID0gJ2Vycm9yX2RlbGV0ZV9tdWx0aV9pbnB1dF90cGxfYXNzb2NzJzsKCQkJCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl9kZWxldGVfbXVsdGlfaW5wdXRfdHBsX2Fzc29jcycpLiAiPGJyIC8+IjsKCQkJCX0KCQkJCSRfcGFyYW1zWydhY3RpdmVfdGFiJ10gPSAnbXVsdGlfaW5wdXQnOwoJCQkJCgkJCQlpZihpc3NldCgkcGFyYW1zWydhamF4J10pKQoJCQkJewoJCQkJCUBvYl9lbmRfY2xlYW4oKTsKCQkJCQlAb2Jfc3RhcnQoKTsKCQkJCQlpZigkZXJyb3JtZXNzYWdlKQoJCQkJCXsKCQkJCQkJZWNobyAnPGRpdiBjbGFzcz0icGFnZWVycm9yY29udGFpbmVyIj48dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPicuICRlcnJvcm1lc3NhZ2UgLiAnPC9saT48L3VsPjwvZGl2Pic7CgkJCQkJfQoJCQkJCWlmKCRtZXNzYWdlKQoJCQkJCXsKCQkJCQkJZWNobyAnPGRpdiBjbGFzcz0icGFnZW1jb250YWluZXIiPjxwIGNsYXNzPSJwYWdlbWVzc2FnZSI+Jy4kbWVzc2FnZS4nPC9wPjwvZGl2Pic7CgkJCQkJfQoJCQkJCW9iX2VuZF9mbHVzaCgpOwoJCQkJCWV4aXQ7CgkJCQl9CgkJCQkKCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRfcGFyYW1zKTsKCQkJCWJyZWFrOwoJCQkKCQkJY2FzZSAnZGVsZXRlTXVsdGlJbnB1dFRwbCc6CgkJCQkkX3BhcmFtcyA9IGFycmF5KCk7CgkJCQkkbWVzc2FnZSAgICAgID0gJyc7CgkJCQkkZXJyb3JtZXNzYWdlID0gJyc7CgkJCQlpZihpc3NldCgkcGFyYW1zWyd0cGxfaWQnXSkpCgkJCQl7CgkJCQkJJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCRwYXJhbXNbJ3RwbF9pZCddKTsKCQkJCQkkX3BhcmFtc1snbWVzc2FnZSddID0gJ211bHRpX2lucHV0X3RwbF9kZWxldGVkJzsKCQkJCQkkbWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnKSAuICI8YnIgLz4iOwoJCQkJfQoJCQkJZWxzZSBpZihpc3NldCgkcGFyYW1zWydzdWJtaXRfYnVsa2FjdGlvbiddKSkKCQkJCXsKCQkJCQlmb3JlYWNoKCRwYXJhbXMgYXMgJHBhcmFtX25hbWUgPT4gJHBhcmFtX3ZhbHVlKQoJCQkJCXsKCQkJCQkJaWYoc3RhcnRzd2l0aCgkcGFyYW1fbmFtZSwnbXVsdGlfaW5wdXRfdHBsLScpKQoJCQkJCQl7CgkJCQkJCQkkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJHBhcmFtX3ZhbHVlKTsKCQkJCQkJCSRfcGFyYW1zWydtZXNzYWdlJ10gPSAnbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnOwoJCQkJCQkJJG1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ211bHRpX2lucHV0X3RwbF9kZWxldGVkJykgLiAiPGJyIC8+IjsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCSRfcGFyYW1zWydhY3RpdmVfdGFiJ10gPSAnbXVsdGlfaW5wdXRfdHBsJzsKCQkJCWlmKGlzc2V0KCRwYXJhbXNbJ2FqYXgnXSkpCgkJCQl7CgkJCQkJQG9iX2VuZF9jbGVhbigpOwoJCQkJCUBvYl9zdGFydCgpOwoJCQkJCWlmKCRlcnJvcm1lc3NhZ2UpCgkJCQkJewoJCQkJCQllY2hvICc8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPjx1bCBjbGFzcz0icGFnZWVycm9yIj48bGk+Jy4gJGVycm9ybWVzc2FnZSAuICc8L2xpPjwvdWw+PC9kaXY+JzsKCQkJCQl9CgkJCQkJaWYoJG1lc3NhZ2UpCgkJCQkJewoJCQkJCQllY2hvICc8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+PHAgY2xhc3M9InBhZ2VtZXNzYWdlIj4nLiRtZXNzYWdlLic8L3A+PC9kaXY+JzsKCQkJCQl9CgkJCQkJb2JfZW5kX2ZsdXNoKCk7CgkJCQkJZXhpdDsKCQkJCX0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRfcGFyYW1zKTsKCQkJCWJyZWFrOwoJCQkJCgkJCWNhc2UgJ2RlZmF1bHQnOgoJCQljYXNlICdzYXZlUHJlZnMnOgoJCQljYXNlICdkZWZhdWx0YWRtaW4nOgoJCQljYXNlICdhZGRNdWx0aUlucHV0JzoKCQkJY2FzZSAnZWRpdE11bHRpSW5wdXQnOgoJCQljYXNlICdhZGRNdWx0aUlucHV0VHBsJzoKCQkJY2FzZSAnZWRpdE11bHRpSW5wdXRUcGwnOgoJCQkJcGFyZW50OjpEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7CgkJCQlicmVhazsKCQkJZGVmYXVsdDogYnJlYWs7CgkJfQoJfQoJCglmdW5jdGlvbiBEb0V2ZW50KCRvcmlnaW5hdG9yLCAkZXZlbnRuYW1lLCAmJHBhcmFtcykKCXsKCQlpZigkZXZlbnRuYW1lID09ICdDb250ZW50RWRpdFBvc3QnICYmIGJhc2VuYW1lKCRfU0VSVkVSWydQSFBfU0VMRiddKSA9PSAnY29weWNvbnRlbnQucGhwJyAmJiBpc3NldCgkcGFyYW1zWydjb250ZW50J10pICYmIGlzX29iamVjdCgkcGFyYW1zWydjb250ZW50J10pICYmICRwYXJhbXNbJ2NvbnRlbnQnXS0+VHlwZSgpID09ICdjb250ZW50MicpCgkJewoJCQlpZihpc3NldCgkX0dFVFsnY29udGVudF9pZCddKSkKCQkJewoJCQkJJG9sZF9jb250ZW50X2lkID0gJF9HRVRbJ2NvbnRlbnRfaWQnXTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRvbGRfY29udGVudF9pZCA9ICRwYXJhbXNbJ2NvbnRlbnQnXS0+SWQoKTsKCQkJfQoJCQlmb3JlYWNoKCRwYXJhbXNbJ2NvbnRlbnQnXS0+Z2V0X2NvbnRlbnRfYmxvY2tzKCkgYXMgJGJsb2NrSW5mbykKCQkJewoJCQkJJHRoaXMtPlNldEl0ZW1EaXNwbGF5KCdibG9jaycsICRibG9ja0luZm9bJ2lkJ10sICRwYXJhbXNbJ2NvbnRlbnQnXS0+SWQoKSwgJHBhcmFtc1snY29udGVudCddLT5UZW1wbGF0ZUlkKCksCgkJCQkJJHRoaXMtPkdldEl0ZW1EaXNwbGF5KCdibG9jaycsICRibG9ja0luZm9bJ2lkJ10sICRvbGRfY29udGVudF9pZCwgJHBhcmFtc1snY29udGVudCddLT5UZW1wbGF0ZUlkKCksICEkYmxvY2tJbmZvWydjb2xsYXBzZSddKSk7CgkJCX0KCQkJZm9yZWFjaCgkcGFyYW1zWydjb250ZW50J10tPmdldF9ibG9ja19ncm91cHMoKSBhcyAkZ3JvdXBJbmZvKQoJCQl7CgkJCQkkdGhpcy0+U2V0SXRlbURpc3BsYXkoJ2dyb3VwJywgJGdyb3VwSW5mb1snZ3JvdXBfaWQnXSwgJHBhcmFtc1snY29udGVudCddLT5JZCgpLCAkcGFyYW1zWydjb250ZW50J10tPlRlbXBsYXRlSWQoKSwKCQkJCQkkdGhpcy0+R2V0SXRlbURpc3BsYXkoJ2dyb3VwJywgJGdyb3VwSW5mb1snZ3JvdXBfaWQnXSwgJG9sZF9jb250ZW50X2lkLCAkcGFyYW1zWydjb250ZW50J10tPlRlbXBsYXRlSWQoKSwgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ncm91cF9kZWZhdWx0JywxKSkpOwoJCQl9CgkJfQoJCWVsc2UgaWYgKCRldmVudG5hbWUgPT0gJ0NvbnRlbnRQb3N0UmVuZGVyJykKCQl7CgkJCWdsb2JhbCAkZ0NtczsKCQkJJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsKCQkJJHJlZGlyZWN0ID0gZmFsc2U7CgkJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCQkJIyBnZXQgYWxsIGNvbnRlbnQgb2YgdHlwZSBhZHZhbmNlZCB0aGF0IG5lZWQgdG8gYmUgc2V0IHRvIGFjdGl2ZS9pbmFjdGl2ZQoJCQkkcXVlcnkgPSAiU0VMRUNUIEMuY29udGVudF9pZCwgQy5hY3RpdmUKCQkJCUZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50IEMKCQkJCUxFRlQgSk9JTiAiIC4gY21zX2RiX3ByZWZpeCgpIC4gImNvbnRlbnRfcHJvcHMgVVNFX0VYUAoJCQkJCU9OIFVTRV9FWFAuY29udGVudF9pZCA9IEMuY29udGVudF9pZAoJCQkJTEVGVCBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudF9wcm9wcyBTVEFSVF9EQVRFCgkJCQkJT04gU1RBUlRfREFURS5jb250ZW50X2lkID0gQy5jb250ZW50X2lkCgkJCQlMRUZUIEpPSU4gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50X3Byb3BzIEVORF9EQVRFCgkJCQkJT04gRU5EX0RBVEUuY29udGVudF9pZCA9IEMuY29udGVudF9pZAoJCQkJV0hFUkUKCQkJCQlDLnR5cGUgPSA/IEFORAoJCQkJCVVTRV9FWFAucHJvcF9uYW1lID0gPyBBTkQKCQkJCQlVU0VfRVhQLmNvbnRlbnQgPSA/IEFORCAoCgkJCQkJCSgKCQkJCQkJCVNUQVJUX0RBVEUucHJvcF9uYW1lID0gPyBBTkQKCQkJCQkJCVNUQVJUX0RBVEUuY29udGVudCA8PSA/IEFORAoJCQkJCQkJRU5EX0RBVEUucHJvcF9uYW1lID0gPyBBTkQKCQkJCQkJCUVORF9EQVRFLmNvbnRlbnQgPiA/IEFORAoJCQkJCQkJQy5hY3RpdmUgPSA/CgkJCQkJCSkKCQkJCQkJT1IKCQkJCQkJKAoJCQkJCQkJRU5EX0RBVEUucHJvcF9uYW1lID0gPyBBTkQKCQkJCQkJCUVORF9EQVRFLmNvbnRlbnQgPD0gPyBBTkQKCQkJCQkJCUMuYWN0aXZlID0gPwoJCQkJCQkpCgkJCQkJKQoJCQkJIjsKCQkJCQoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnY29udGVudDInLCAndXNlX2V4cGlyZV9kYXRlJywKCQkJCScxJywgJ3N0YXJ0X2RhdGUnLCB0aW1lKCksICdlbmRfZGF0ZScsIHRpbWUoKSwgMCwgJ2VuZF9kYXRlJywKCQkJCXRpbWUoKSwgMSkpOwoJCQkKCQkJJGNvbnRlbnRzID0gYXJyYXkoKTsKCQkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJCXsKCQkJCWlmKCRyb3dbJ2FjdGl2ZSddKQoJCQkJewoJCQkJCSRjb250ZW50c1skcm93Wydjb250ZW50X2lkJ11dID0gMDsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkY29udGVudHNbJHJvd1snY29udGVudF9pZCddXSA9IDE7CgkJCQl9CgkJCX0KCQkJaWYoY291bnQoJGNvbnRlbnRzKSkKCQkJewoJCQkJJGdDbXMtPkdldFNtYXJ0eSgpLT5jbGVhcl9hbGxfY2FjaGUoKTsKCQkJCWZvcmVhY2goJGNvbnRlbnRzIGFzICRjb250ZW50SWQ9PiRhY3RpdmUpCgkJCQl7CgkJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLiBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudAoJCQkJCQlTRVQgYWN0aXZlID0gPyBXSEVSRSBjb250ZW50X2lkID0gPyI7CgkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGFjdGl2ZSwgJGNvbnRlbnRJZCkpOwoJCQkJCWlmKCRjb250ZW50SWQgPT0gJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9pZCkKCQkJCQl7CgkJCQkJCSRyZWRpcmVjdCA9ICRjb250ZW50SWQ7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCWlmKCRyZWRpcmVjdCkKCQkJewoJCQkJJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmVkaXJlY3QpOwoJCQl9CgkJfQoJfQoJCglmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkKCXsKCQkkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsKCQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgkJZm9yZWFjaCgkdGhpcy0+R2V0QWxsb3dlZFBhcmFtZXRlcnMoKSBhcyAkayA9PiAkdikgewoJCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgkaywkdik7CgkJfQoJfQoJCglmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKCXsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZV9pZCcsICdtMV8nKTsKCQlyZXR1cm4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnaGVhZGVyLnRwbCcpOwoJfQoJCi8qKgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBOb3QgcGFydCBvZiB0aGUgQ01TbXMgbW9kdWxlIEFQSQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KCQoJcHJvdGVjdGVkIGZ1bmN0aW9uIEdldEFsbG93ZWRQYXJhbWV0ZXJzKCkgewoJCXJldHVybiBhcnJheSgKCQkJJ3VuaW5zdGFsbF9hY3Rpb24nPT5DTEVBTl9JTlQsCgkJCSdyZWRpcmVjdF9wYWdlJz0+Q0xFQU5fSU5ULAoJCQkncmVkaXJlY3RfcGFyYW1zJz0+Q0xFQU5fU1RSSU5HLAoJCQknZXZhbHVhdGVfc21hcnR5Jz0+Q0xFQU5fSU5ULAoJCQknaXRlbV9kaXNwbGF5Jz0+Q0xFQU5fSU5ULAoJCQknaXRlbV90eXBlJz0+Q0xFQU5fU1RSSU5HLAoJCQknaXRlbV9pZCc9PkNMRUFOX1NUUklORywKCQkJJ2Jsb2NrX2lkJz0+Q0xFQU5fU1RSSU5HLAoJCQknZ3JvdXBfaWQnPT5DTEVBTl9TVFJJTkcsCgkJCSd0ZW1wbGF0ZV9pZCc9PkNMRUFOX0lOVCwKCQkJJ2NvbnRlbnRfaWQnPT5DTEVBTl9JTlQsCgkJCSdhamF4Jz0+Q0xFQU5fSU5ULAoJCQknZmV1X2FjdGlvbic9PkNMRUFOX0lOVCwKCQkJJ2ZldV9hY2Nlc3MnPT5DTEVBTl9TVFJJTkcsCgkJCSdkcm9wZG93bic9PkNMRUFOX0lOVCwKCQkJJ2RlZmF1bHRfbW9kZSc9PkNMRUFOX0lOVCwKCQkJJ21lc3NhZ2UnPT5DTEVBTl9TVFJJTkcsCgkJCSdlcnJvcm1lc3NhZ2UnPT5DTEVBTl9TVFJJTkcsCgkJCSdzdWJtaXQnPT5DTEVBTl9TVFJJTkcsCgkJCSdlcnJvcm1lc3NhZ2UnPT5DTEVBTl9TVFJJTkcsCgkJCSdpbXBvcnRwYWdlcyc9PkNMRUFOX0lOVCwKCQkJJ2Fzc2lnbic9PkNMRUFOX1NUUklORywKCQkJJ3RleHQnPT5DTEVBTl9TVFJJTkcsCgkJCSd0aXRsZSc9PkNMRUFOX1NUUklORywKCQkJJ2FyZWEnPT5DTEVBTl9TVFJJTkcsCgkJCSdyZXR1cm5pZCc9PkNMRUFOX1NUUklORywKCQkJJ2xhYmVsJz0+Q0xFQU5fU1RSSU5HLAoJCQknY2xhc3MnPT5DTEVBTl9TVFJJTkcsCgkJCSdpZCc9PkNMRUFOX1NUUklORywKCQkJJ25hbWUnPT5DTEVBTl9TVFJJTkcsCgkJCSd3aWR0aCc9PkNMRUFOX1NUUklORywKCQkJJ2hlaWdodCc9PkNMRUFOX1NUUklORywKCQkJJ2FsdCc9PkNMRUFOX1NUUklORywKCQkJJ2Jsb2NrJz0+Q0xFQU5fU1RSSU5HLAoJCQknc21hcnR5Jz0+Q0xFQU5fU1RSSU5HLAoJCQkndHlwZSc9PkNMRUFOX1NUUklORywKCQkJJ2Jsb2NrX3R5cGUnPT5DTEVBTl9TVFJJTkcsCgkJCSdkZWZhdWx0Jz0+Q0xFQU5fU1RSSU5HLAoJCQknc3R5bGUnPT5DTEVBTl9TVFJJTkcsCgkJCSdzaXplJz0+Q0xFQU5fSU5ULAoJCQknYmxvY2tfdGFiJz0+Q0xFQU5fU1RSSU5HLAoJCQkncGFnZV90YWInPT5DTEVBTl9TVFJJTkcsCgkJCSdtYXhsZW5ndGgnPT5DTEVBTl9JTlQsCgkJCSd3eXNpd3lnJz0+Q0xFQU5fU1RSSU5HLAoJCQknb25lbGluZSc9PkNMRUFOX1NUUklORywKCQkJJ21vZGUnPT5DTEVBTl9TVFJJTkcsCgkJCSdzdGFydF90aW1lJz0+Q0xFQU5fSU5ULAoJCQknZW5kX3RpbWUnPT5DTEVBTl9JTlQsCgkJCSdkYXRlX2Zvcm1hdCc9PkNMRUFOX1NUUklORywKCQkJJ3N0YXJ0X2hvdXInPT5DTEVBTl9JTlQsCgkJCSdlbmRfaG91cic9PkNMRUFOX0lOVCwKCQkJJ3N0YXJ0X21pbnV0ZSc9PkNMRUFOX1NUUklORywKCQkJJ2VuZF9taW51dGUnPT5DTEVBTl9JTlQsCgkJCSdzdGFydF9zZWNvbmRzJz0+Q0xFQU5fSU5ULAoJCQknZW5kX3NlY29uZHMnPT5DTEVBTl9JTlQsCgkJCSdzaG93X2Nsb2NrJz0+Q0xFQU5fU1RSSU5HLAoJCQknc3RlcF9ob3Vycyc9PkNMRUFOX0lOVCwKCQkJJ3N0ZXBfbWludXRlcyc9PkNMRUFOX0lOVCwKCQkJJ3N0ZXBfc2Vjb25kcyc9PkNMRUFOX0lOVCwKCQkJJ3Nob3cyNGgnPT5DTEVBTl9TVFJJTkcsCgkJCSdhbGxvd19ub25lJz0+Q0xFQU5fU1RSSU5HLAoJCQknZGVsaW1pdGVyJz0+Q0xFQU5fU1RSSU5HLAoJCQknaXRlbXMnPT5DTEVBTl9TVFJJTkcsCgkJCSd2YWx1ZXMnPT5DTEVBTl9TVFJJTkcsCgkJCSdtb2R1bGUnPT5DTEVBTl9TVFJJTkcsCgkJCSd1cmxvbmx5Jz0+Q0xFQU5fU1RSSU5HLAoJCQknZWRpdG9yX2dyb3Vwcyc9PkNMRUFOX1NUUklORywKCQkJJ2VkaXRvcl91c2Vycyc9PkNMRUFOX1NUUklORywKCQkJJ2FjdGl2ZSc9PkNMRUFOX1NUUklORywKCQkJJ3RyYW5zbGF0ZV9sYWJlbHMnPT5DTEVBTl9TVFJJTkcsCgkJCSd0cmFuc2xhdGVfdmFsdWVzJz0+Q0xFQU5fU1RSSU5HLAoJCQknYmxvY2tfZGlzcGxheV9zZXR0aW5ncyc9PkNMRUFOX1NUUklORywKCQkJJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5ncyc9PkNMRUFOX1NUUklORywKCQkJJ2dyb3VwX2Rpc3BsYXlfc2V0dGluZ3MnPT5DTEVBTl9TVFJJTkcsCgkJCSdzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJz0+Q0xFQU5fSU5ULAoJCQknaW5wdXRfaWQnPT5DTEVBTl9TVFJJTkcsCgkJCSdpbnB1dF9maWVsZHMnPT5DTEVBTl9TVFJJTkcsCgkJCSdzdWJtaXRfYnVsa2FjdGlvbic9PkNMRUFOX0lOVCwKCQkJJ2Rlc2NyaXB0aW9uJz0+Q0xFQU5fU1RSSU5HLAoJCQknaW5wdXRzJz0+Q0xFQU5fU1RSSU5HLAoJCQknaW5wdXRfZGVsaW1pdGVyJz0+Q0xFQU5fU1RSSU5HLAoJCQkndmFsdWVfZGVsaW1pdGVyJz0+Q0xFQU5fU1RSSU5HLAoJCQknYmxvY2tfZ3JvdXAnPT5DTEVBTl9TVFJJTkcsCgkJCSdkaXInPT5DTEVBTl9TVFJJTkcsCgkJCSd1cGxvYWQnPT5DTEVBTl9TVFJJTkcsCgkJCSdzb3J0YWJsZSc9PkNMRUFOX1NUUklORywKCQkJJ3NvcnRhYmxlX2l0ZW1zJz0+Q0xFQU5fU1RSSU5HLAoJCQknZmV1X2FjY2Vzcyc9PkNMRUFOX1NUUklORywKCQkJJ2ZldV9hY3Rpb24nPT5DTEVBTl9JTlQsCgkJCSdwcmVmaXgnPT5DTEVBTl9TVFJJTkcsCgkJCSdleGNsdWRlJz0+Q0xFQU5fSU5UKTsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIElzVmFyRW1wdHkoJHZhciwgJHRyaW0sICR1bnNldEVtcHR5SW5kZXhlcykKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiBjaGVja3MgaWYgYSB2YXIgaXMgZW1wdHkuIGlmIHZhciBpcyBhbiBhcnJheSBpdCByZWN1cnNpdmxleSBjaGVja3MgYWxsIGVsZW1lbnRzCgkgKgoJICogQHBhcmFtIG1peGVkICR2YXIgLSB0aGUgdmFyIHRvIGNoZWNrIGZvciBlbXB0eSB2YWx1ZShzKQoJICogQHBhcmFtIGJvb2xlYW4gJHRyaW0gLSB0cnVlIHRvIHRyaW0gb2ZmIHNwYWNlcwoJICogQHBhcmFtIGJvb2xlYW4gJHVuc2V0RW1wdHlJbmRleGVzIC0gdHJ1ZSB0byBkZWxldGUgZW1wdHkgZWxlbWVudHMgZnJvbSBhcnJheQoJICogQHJldHVybiBib29sZWFuIC0gdHJ1ZSBpZiBlbXB0eSwgZmFsc2UgaWYgbm90CgkgKi8KCWZ1bmN0aW9uIElzVmFyRW1wdHkoJiR2YXIsICR0cmltID0gdHJ1ZSwgJHVuc2V0RW1wdHlJbmRleGVzID0gZmFsc2UpCgl7CgkJaWYgKGlzX2FycmF5KCR2YXIpKQoJCXsKCQkJZm9yZWFjaCAoJHZhciBhcyAkaz0+JHYpCgkJCXsKCQkJCWlmICghJHRoaXMtPklzVmFyRW1wdHkoJHYpKQoJCQkJewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlpZigkdW5zZXRFbXB0eUluZGV4ZXMpCgkJCQkJCXVuc2V0KCR2YXJbJGtdKTsKCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCQllbHNlIGlmKCR0cmltICYmIHRyaW0oJHZhcikgPT0gJycpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZWxzZSBpZigkdmFyID09ICcnKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIENsZWFuQXJyYXkoJGFycmF5KQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIHJlbW92ZXMgZW1wdHkgZWxlbWVudHMgZnJvbSBhbiBhcnJheQoJICogKGNhbiBiZSB1c2VmdWwgd2hlbiB1c2luZyBmdW5jdGlvbiBleHBsb2RlIHRvIGNyZWF0ZSB0aGUgYXJyYXkgb2YgYSBjc3YpCgkgKgoJICogQHBhcmFtIGFycmF5ICRhcnJheSAtIHRoZSBhcnJheSB0byBjbGVhbiB1cAoJICogQHJldHVybiBhcnJheSAtIGFuIGFycmF5IHdpdGhvdXQgZW1wdHkgZWxlbWVudHMgb3IgYW4gZW1wdHkgYXJyYXkKCSAqLwoJZnVuY3Rpb24gQ2xlYW5BcnJheSgkYXJyYXkpCgl7CgkJaWYgKGlzX2FycmF5KCRhcnJheSkpCgkJewoJCQlmb3JlYWNoICgkYXJyYXkgYXMgJGs9PiR2KQoJCQl7CgkJCQlpZiAoJHRoaXMtPklzVmFyRW1wdHkoJHYsdHJ1ZSx0cnVlKSkKCQkJCXsKCQkJCQl1bnNldCgkYXJyYXlbJGtdKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlpZihpc19hcnJheSgkdikpCgkJCQkJewoJCQkJCQkkdiA9ICR0aGlzLT5DbGVhbkFycmF5KCR2KTsKCQkJCQkJaWYoJHRoaXMtPklzVmFyRW1wdHkoJHYsdHJ1ZSx0cnVlKSkKCQkJCQkJCXVuc2V0KCRhcnJheVska10pOwoJCQkJCQllbHNlCgkJCQkJCQkkYXJyYXlbJGtdID0gJHY7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCXJldHVybiAkYXJyYXk7CgkJfQoJCXJldHVybiBhcnJheSgpOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gR2V0UGFnZXMoKQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIGdldHMgYWxsIHBhZ2VzIHRvIGxpc3QgaW4gYSBkcm9wZG93bgoJICoKCSAqIEByZXR1cm4gYXJyYXkgLSBhIHNldCBvZiBwYWdlcwoJICovCglmdW5jdGlvbiBHZXRQYWdlcygpCgl7CgkJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSA9ICJTRUxFQ1QgQy5hY3RpdmUsIEMudHlwZSwgQy5jb250ZW50X2lkLCBDLmhpZXJhcmNoeSwgQy5tZW51X3RleHQsIENQLmNvbnRlbnQgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gImNvbnRlbnQgQwoJCQlMRUZUIEpPSU4gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50X3Byb3BzIENQIE9OIENQLmNvbnRlbnRfaWQgPSBDLmNvbnRlbnRfaWQgQU5EIENQLnByb3BfbmFtZSA9ID8KCQkJT1JERVIgQlkgaGllcmFyY2h5IjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnZmV1X2FjY2VzcycpKTsKCQlpZighJHBhZ2VzID0gJGRicmVzdWx0LT5HZXRBcnJheSgpKQoJCQlyZXR1cm4gYXJyYXkoKTsKCQlyZXR1cm4gJHBhZ2VzOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gQ3JlYXRlUmVkaXJlY3REcm9wZG93bigpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogdGhpcyBjcmVhdGVzIGEgZHJvcGRvd24gb2YgcGFnZXMgaW5jbHVkaW5nIG9ubHkgcGFnZXMgb2YgdHlwZSBjb250ZW50IGJ1dAoJICogZXhjbHVkaW5nIHRoZSBjdXJyZW50IHBhZ2UgYW5kIHBhZ2VzIHRoYXQgbWF5IG9ubHkgYmUgYWNjZXNzZWQgYnkgZnJvbnRlbmQgdXNlcnMKCSAqCgkgKiBAcmV0dXJuIHN0cmluZyAtIEhUTUwgc2VsZWN0IGVsZW1lbnQgd2l0aCBvcHRpb25zCgkgKi8KCWZ1bmN0aW9uIENyZWF0ZVJlZGlyZWN0RHJvcGRvd24oJGlkID0gJycsICRuYW1lID0gJ3JlZGlyZWN0X3BhZ2UnLCAkc2VsZWN0ZWRQYWdlID0gJycsICRjdXJyZW50UGFnZSA9ICcnKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkcGFnZXMgICAgICA9ICR0aGlzLT5HZXRQYWdlcygpOwoJCSRkcm9wZG93biAgID0gJzxzZWxlY3QgbmFtZT0iJy4kaWQuJG5hbWUuJyIgPic7CgkJJGRyb3Bkb3duICAuPSAnPG9wdGlvbiB2YWx1ZT0iIicgLiAoJHNlbGVjdGVkUGFnZSA9PSAnJz8nIHNlbGVjdGVkPSJzZWxlY3RlZCInOicnKSAuICc+JyAuIGxhbmcoJ25vbmUnKSAuICc8L29wdGlvbj4nOwoJCSRkcm9wZG93biAgLj0gJzxvcHRpb24gdmFsdWU9Ii0xIicgLiAoJHNlbGVjdGVkUGFnZSA9PSAnLTEnPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpIC4gJz4nIC4gJHRoaXMtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKSAuICc8L29wdGlvbj4nOwoJCSRjb250ZW50b3BzID0mICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwoJCWZvcmVhY2goJHBhZ2VzIGFzICRwYWdlKQoJCXsKCQkJJGRpc2FibGVkID0gJyc7CgkJCSMgZG9uJ3QgcmVkaXJlY3QgdG8gcGFnZXMgd2l0aCBubyBwdWJsaWMgYWNjZXNzLCBpbnZhbGlkIGNvbnRlbnQgdHlwZSwgaW5hY3RpdmUgb3Igc2FtZSBjb250ZW50IGlkCgkJCWlmKCRwYWdlWydhY3RpdmUnXSAhPSAxIHx8ICRwYWdlWydjb250ZW50J10+MCB8fCAkcGFnZVsnY29udGVudF9pZCddID09ICRjdXJyZW50UGFnZSB8fCAoJHBhZ2VbJ3R5cGUnXSAhPSAnY29udGVudCcgJiYgJHBhZ2VbJ3R5cGUnXSAhPSAnY29udGVudDInKSkKCQkJCSRkaXNhYmxlZCA9ICcgZGlzYWJsZWQ9ImRpc2FibGVkIic7CgkJCQoJCQkkZHJvcGRvd24gLj0gJzxvcHRpb24nLiAkZGlzYWJsZWQgLicgdmFsdWU9IicgLiAkcGFnZVsnY29udGVudF9pZCddIC4gJyIgJyAuCgkJCQkoJHNlbGVjdGVkUGFnZSA9PSAkcGFnZVsnY29udGVudF9pZCddICYmICRkaXNhYmxlZCA9PSAnJz8nc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpIC4gJz4nIC4KCQkJCSRjb250ZW50b3BzLT5DcmVhdGVGcmllbmRseUhpZXJhcmNoeVBvc2l0aW9uKCRwYWdlWydoaWVyYXJjaHknXSkgLgoJCQkJJyAtICcgLiAkcGFnZVsnbWVudV90ZXh0J10gLiAoJGRpc2FibGVkICE9ICcnPycgKCcgLiAkdGhpcy0+bGFuZygnaW52YWxpZCcpIC4gJyknOicnKSAuICc8L29wdGlvbj4nOwoJCX0KCQkkZHJvcGRvd24gLj0gJzwvc2VsZWN0Pic7CgkJcmV0dXJuICRkcm9wZG93bjsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIElzVHJ1ZSgkdmFsdWUpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogY2hlY2tzIGlmIGEgdmFsdWUgaXMgbGl0ZXJhbGx5ICJ0cnVlIgoJICogY2FuIGJlIHVzZWZ1bGwgd2hlbiBjaGVja2luZyBzbWFydHkgcGFyYW1zIGZvciB0aGUgdmFsdWUgdHJ1ZQoJICoKCSAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgLSB0aGUgdmFsdWUgdG8gY2hlY2sKCSAqIEByZXR1cm4gYm9vbAoJICovCglmdW5jdGlvbiBJc1RydWUoJHZhbHVlKQoJewoJCXJldHVybiAoc3RydG9sb3dlcigkdmFsdWUpID09PSAndHJ1ZScgfHwgJHZhbHVlID09PSAxIHx8ICR2YWx1ZSA9PT0gJzEnIHx8ICR2YWx1ZSA9PT0gdHJ1ZSk7Cgl9CgkKCQoJLyoqCgkgKiBmdW5jdGlvbiBJc0ZhbHNlKCR2YWx1ZSkKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiBjaGVja3MgaWYgYSB2YWx1ZSBpcyBsaXRlcmFsbHkgImZhbHNlIgoJICogY2FuIGJlIHVzZWZ1bGwgd2hlbiBjaGVja2luZyBzbWFydHkgcGFyYW1zIGZvciB0aGUgdmFsdWUgZmFsc2UKCSAqCgkgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIC0gdGhlIHZhbHVlIHRvIGNoZWNrCgkgKiBAcmV0dXJuIGJvb2wKCSAqLwoJZnVuY3Rpb24gSXNGYWxzZSgkdmFsdWUpCgl7CgkJcmV0dXJuIChzdHJ0b2xvd2VyKCR2YWx1ZSkgPT09ICdmYWxzZScgfHwgJHZhbHVlID09PSAnMCcgfHwgJHZhbHVlID09PSAwIHx8ICR2YWx1ZSA9PT0gZmFsc2UgfHwgJHZhbHVlID09PSAnJyk7Cgl9CgkKCQoJLyoqCgkgKiBzYXZlcyB0aGUgZGlzcGxheSBzdGF0dXMgb2YgY29udGVudCBibG9ja3MsIGNvbnRlbnQgYmxvY2tzIG1lc3NhZ2VzIGFuZCBibG9jayBncm91cHMKCSAqCgkgKiBAcGFyYW0gaW50ICRjb250ZW50X2lkIC0gdGhlIGlkIG9mIHRoZSBjb250ZW50IHdoZXJlIHRvIHNldCB0aGUgZGlzcGxheSBzdGF0dXMKCSAqIEBwYXJhbSBpbnQgJHRlbXBsYXRlX2lkIC0gdGhlIGlkIG9mIHRoZSB0ZW1wbGF0ZSB3aGVyZSB0byBzZXQgdGhlIGRpc3BsYXkgc3RhdHVzCgkgKiBAcGFyYW0gc3RyaW5nICRibG9ja19pZCAtIHRoZSBjb250ZW50IGJsb2NrIHRvIHRvZ2dsZSB0aGUgYmxvY2sgaXRzZWxmIG9yIHRoZSBtZXNzYWdlL2dyb3VwCgkgKiBAcGFyYW0gaW50ICRkaXNwbGF5IC0gMCB0byBoaWRlLCAxIHRvIHNob3cKCSAqCgkgKi8KCWZ1bmN0aW9uIFNldEl0ZW1EaXNwbGF5KCRpdGVtX3R5cGUsICRpdGVtX2lkLCAkY29udGVudF9pZCwgJHRlbXBsYXRlX2lkLCAkZGlzcGxheSkKCXsKCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCBpdGVtX2Rpc3BsYXkgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiRpdGVtX3R5cGUuImRpc3BsYXkKCQkJV0hFUkUgdXNlcl9pZCA9ID8gQU5EIGl0ZW1faWQgPSA/IEFORCAiOwoJCQoJCSRxID0gYXJyYXkoKTsKCQkkcCA9IGFycmF5KGdldF91c2VyaWQoKSwgJGl0ZW1faWQpOwoJCQoJCWlmKCRjb250ZW50X2lkCgkJJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdjb250ZW50JwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMScKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDInKSkKCQl7CgkJCSRxW10gPSAiY29udGVudF9pZCA9ID8iOwoJCQkkcFtdID0gJGNvbnRlbnRfaWQ7CgkJfQoJCQoJCWlmKCR0ZW1wbGF0ZV9pZCA+IDAKCQkmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ3RlbXBsYXRlJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMScKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDInKSkKCQl7CgkJCSRxW10gPSAidGVtcGxhdGVfaWQgPSA/IjsKCQkJJHBbXSA9ICR0ZW1wbGF0ZV9pZDsKCQl9CgkJCgkJaWYoIWNvdW50KCRxKSkgewoJCQlyZXR1cm47CgkJfQoJCQoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMScpCgkJewoJCQkkcXVlcnkgLj0gIigiIC4gaW1wbG9kZSgiIE9SICIsJHEpIC4gIikiOwoJCX0KCQllbHNlIGlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpCgkJewoJCQkkcXVlcnkgLj0gIigiIC4gaW1wbG9kZSgiIEFORCAiLCRxKSAuICIpIjsKCQl9CgkJZWxzZQoJCXsKCQkJJHF1ZXJ5IC49ICRxWzBdOwoJCX0KCQkKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcCk7CgkJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKCQkJZWNobyAkZGlzcGxheTsKCQkJYXJyYXlfdW5zaGlmdCgkcCwkZGlzcGxheSk7CgkJCSRxdWVyeSA9ICJVUERBVEUgIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kaXRlbV90eXBlLiJkaXNwbGF5CgkJCQlTRVQgaXRlbV9kaXNwbGF5ID0gPyBXSEVSRSB1c2VyX2lkID0gPyBBTkQgaXRlbV9pZCA9ID8gQU5EICIuaW1wbG9kZSgnIEFORCAnLCRxKTsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHApOwoJCX0KCQllbHNlCgkJewoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4gY21zX2RiX3ByZWZpeCgpIC4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiRpdGVtX3R5cGUuImRpc3BsYXkKCQkJCSh1c2VyX2lkLCBjb250ZW50X2lkLCB0ZW1wbGF0ZV9pZCwgaXRlbV9pZCwgaXRlbV9kaXNwbGF5KSBWQUxVRVMgKD8sPyw/LD8sPykiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheShnZXRfdXNlcmlkKCksICRjb250ZW50X2lkLCAkdGVtcGxhdGVfaWQsICRpdGVtX2lkLCAkZGlzcGxheSkpOwoJCX0KCQkkdGhpcy0+X2Rpc3BsYXlTZXR0aW5nc1skaXRlbV90eXBlXVtpbXBsb2RlKCdfJyxhcnJheSgkY29udGVudF9pZCwkdGVtcGxhdGVfaWQpKV1bJGl0ZW1faWRdID0gJGRpc3BsYXk7Cgl9CgkKCQoJLyoqCgkgKiBnZXRzIHRoZSBkaXNwbGF5IHN0YXR1cyBvZiBjb250ZW50IGJsb2NrcywgY29udGVudCBibG9ja3MgbWVzc2FnZXMgb3IgYmxvY2sgZ3JvdXBzCgkgKgoJICogQHBhcmFtIGludCAkaXRlbV90eXBlIC0gdGhlIGlkIG9mIHRoZSBjb250ZW50L3RlbXBsYXRlIHRvIGdldCB0aGUgZGlzcGxheSBzdGF0dXMgZnJvbQoJICogQHBhcmFtIGludCAkdHBsX29yX2NvbnRlbnRfaWQgLSB0aGUgaWQgb2YgdGhlIGNvbnRlbnQvdGVtcGxhdGUgdG8gZ2V0IHRoZSBkaXNwbGF5IHN0YXR1cyBmcm9tCgkgKiBAcGFyYW0gc3RyaW5nICRibG9ja19pZCAtIHRoZSBjb250ZW50IGJsb2NrIHRvIGdldCB0aGUgZGlzcGxheSBzdGF0dXMgZnJvbQoJICogQHBhcmFtIGludCAkZGVmYXVsdF92YWx1ZSAtIHRoZSBkZWZhdWx0IHN0YXR1cyBpZiBub3RoaW5nIGlzIGZvdW5kCgkgKgoJICogQHJldHVybiBib29sZWFuIC0gMCA9IGhpZGRlbiwgMSA9IHNob3duCgkgKi8KCWZ1bmN0aW9uIEdldEl0ZW1EaXNwbGF5KCRpdGVtX3R5cGUsICRpdGVtX2lkLCAkY29udGVudF9pZCwgJHRlbXBsYXRlX2lkLCAkZGVmYXVsdF92YWx1ZSA9IDEpCgl7CgkJJGlkcyA9IGFycmF5KCk7CgkJCgkJaWYoJGNvbnRlbnRfaWQKCQkmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2NvbnRlbnQnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpKQoJCXsKCQkJJGlkc1tdID0gJGNvbnRlbnRfaWQ7CgkJfQoJCQoJCWlmKCR0ZW1wbGF0ZV9pZCA+IDAKCQkmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ3RlbXBsYXRlJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMScKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDInKSkKCQl7CgkJCSRpZHNbXSA9ICR0ZW1wbGF0ZV9pZDsKCQl9CgkJCgkJaWYoIWNvdW50KCRpZHMpKQoJCXsKCQkJcmV0dXJuICRkZWZhdWx0X3ZhbHVlOwoJCX0KCQkKCQlpZighaXNzZXQoJHRoaXMtPl9kaXNwbGF5U2V0dGluZ3NbJGl0ZW1fdHlwZV1baW1wbG9kZSgnXycsJGlkcyldKSkKCQl7CgkJCSR0aGlzLT5HZXRBbGxJdGVtc0Rpc3BsYXkoJGl0ZW1fdHlwZSwgJGNvbnRlbnRfaWQsICR0ZW1wbGF0ZV9pZCk7CgkJfQoJCWlmKCFpc3NldCgkdGhpcy0+X2Rpc3BsYXlTZXR0aW5nc1skaXRlbV90eXBlXVtpbXBsb2RlKCdfJywkaWRzKV1bJGl0ZW1faWRdKSkKCQl7CgkJCSR0aGlzLT5fZGlzcGxheVNldHRpbmdzWyRpdGVtX3R5cGVdW2ltcGxvZGUoJ18nLCRpZHMpXVskaXRlbV9pZF0gPSAkZGVmYXVsdF92YWx1ZTsKCQl9CgkJcmV0dXJuICR0aGlzLT5fZGlzcGxheVNldHRpbmdzWyRpdGVtX3R5cGVdW2ltcGxvZGUoJ18nLCRpZHMpXVskaXRlbV9pZF07Cgl9CgkKCQoJLyoqCgkgKiBnZXRzIHRoZSBkaXNwbGF5IHN0YXR1cyBvZiBhbGwgY29udGVudCBibG9ja3MsIGNvbnRlbnQgYmxvY2tzIG1lc3NhZ2VzIG9yIGJsb2NrIGdyb3VwcyBvZiBhIGdpdmVuIHRlbXBsYXRlIG9yIGNvbnRlbnQgaWQKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQGlnbm9yZQoJICovCglmdW5jdGlvbiBHZXRBbGxJdGVtc0Rpc3BsYXkoJGl0ZW1fdHlwZSwgJGNvbnRlbnRfaWQsICR0ZW1wbGF0ZV9pZCkKCXsKCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kaXRlbV90eXBlLiJkaXNwbGF5CgkJCVdIRVJFIHVzZXJfaWQgPSA/IEFORCAiOwoJCQoJCSRxID0gYXJyYXkoKTsKCQkkcCA9IGFycmF5KGdldF91c2VyaWQoKSk7CgkJCgkJaWYoJGNvbnRlbnRfaWQKCQkmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2NvbnRlbnQnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpKQoJCXsKCQkJJHFbXSA9ICJjb250ZW50X2lkID0gPyI7CgkJCSRwW10gPSAkY29udGVudF9pZDsKCQl9CgkJCgkJaWYoJHRlbXBsYXRlX2lkID4gMAoJCSYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAndGVtcGxhdGUnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpKQoJCXsKCQkJJHFbXSA9ICJ0ZW1wbGF0ZV9pZCA9ID8iOwoJCQkkcFtdID0gJHRlbXBsYXRlX2lkOwoJCX0KCQkKCQlpZighY291bnQoJHEpKQoJCXsKCQkJcmV0dXJuOwoJCX0KCQkKCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnKQoJCXsKCQkJJHF1ZXJ5IC49ICIoIiAuIGltcGxvZGUoIiBPUiAiLCRxKSAuICIpIjsKCQl9CgkJZWxzZSBpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDInKQoJCXsKCQkJJHF1ZXJ5IC49ICIoIiAuIGltcGxvZGUoIiBBTkQgIiwkcSkgLiAiKSI7CgkJfQoJCWVsc2UKCQl7CgkJCSRxdWVyeSAuPSAkcVswXTsKCQl9CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHApOwoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDInKQoJCQl7CgkJCQkkdGhpcy0+X2Rpc3BsYXlTZXR0aW5nc1skaXRlbV90eXBlXVskcm93Wydjb250ZW50X2lkJ10gLiAnXycgLiAkcm93Wyd0ZW1wbGF0ZV9pZCddXVskcm93WydpdGVtX2lkJ11dID0gJHJvd1snaXRlbV9kaXNwbGF5J107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+X2Rpc3BsYXlTZXR0aW5nc1skaXRlbV90eXBlXVskcm93WyR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpLidfaWQnXV1bJHJvd1snaXRlbV9pZCddXSA9ICRyb3dbJ2l0ZW1fZGlzcGxheSddOwoJCQl9CgkJfQoJfQoJCglmdW5jdGlvbiBHZXRNdWx0aUlucHV0RnVsbCgkaW5wdXRzID0gYXJyYXkoKSkKCXsKCQlpZighaXNfYXJyYXkoJGlucHV0cykpCgkJewoJCQkkaW5wdXRzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgiLCIsJGlucHV0cykpOwoJCX0KCQkkZGIgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCBNVUxUSV9JTlBVVC4qLCBUUExfQVNTT0NTLnRwbF9uYW1lIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIE1VTFRJX0lOUFVUCgkJCUxFRlQgT1VURVIgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dF90cGxfYXNzb2NzIFRQTF9BU1NPQ1MKCQkJT04gTVVMVElfSU5QVVQuaW5wdXRfaWQgPSBUUExfQVNTT0NTLmlucHV0X2lkIjsKCQkKCQkkcSAgICAgPSBhcnJheSgpOwoJCSRwICAgICA9IGFycmF5KCk7CgkJJHJldHVybl9hcnJheSA9IGFycmF5KCk7CgkJZm9yZWFjaCgkaW5wdXRzIGFzICRpbnB1dF9pZCkKCQl7CgkJCSRxWyRpbnB1dF9pZF0gPSAiTVVMVElfSU5QVVQuaW5wdXRfaWQgPSA/IjsKCQkJJHBbJGlucHV0X2lkXSA9ICRpbnB1dF9pZDsKCQl9CgkJaWYoY291bnQoJHApKQoJCXsKCQkJJHF1ZXJ5IC49ICIgV0hFUkUgIiAuIGltcGxvZGUoIiBPUiAiLCAkcSk7CgkJfQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwKTsKCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRyZXR1cm5fYXJyYXlbJHJvd1snaW5wdXRfaWQnXV0gPSAkcm93OwoJCX0KCQlyZXR1cm4gJHJldHVybl9hcnJheTsKCX0KCQoJZnVuY3Rpb24gR2V0TXVsdGlJbnB1dCgkaW5wdXRfaWQpCgl7CgkJJGRiICAgICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSAgICA9ICJTRUxFQ1QgaW5wdXRfZmllbGRzIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIFdIRVJFIGlucHV0X2lkID0gPyBMSU1JVCAxIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaW5wdXRfaWQpKTsKCQlpZigkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCXJldHVybiAkcm93WydpbnB1dF9maWVsZHMnXTsKCQl9Cgl9CgkKCWZ1bmN0aW9uIEdldE11bHRpSW5wdXRMaXN0KCkKCXsKCQkkZGIgICAgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ICAgID0gIlNFTEVDVCBBLmlucHV0X2lkLCBCLnRwbF9uYW1lIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIEEKCQkJTEVGVCBKT0lOICIuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0X3RwbF9hc3NvY3MgQgoJCQlPTiBBLmlucHV0X2lkID0gQi5pbnB1dF9pZCI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJJHJldHVybl9hcnJheSA9IGFycmF5KCk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkcmV0dXJuX2FycmF5W10gPSAkcm93OwoJCX0KCQlyZXR1cm4gJHJldHVybl9hcnJheTsKCX0KCQoJZnVuY3Rpb24gQWRkTXVsdGlJbnB1dCgkaW5wdXRfaWQsICRpbnB1dF9maWVsZHMpCgl7CgkJJGRiICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSA9ICJTRUxFQ1QgaW5wdXRfaWQgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMKCQkJV0hFUkUgaW5wdXRfaWQgPSA/IExJTUlUIDEiOwoJCQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpbnB1dF9pZCkpOwoJCWlmKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkKCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4gY21zX2RiX3ByZWZpeCgpIC4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMKCQkJKGlucHV0X2lkLCBpbnB1dF9maWVsZHMpIFZBTFVFUyAoPyw/KSI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlucHV0X2lkLCAkaW5wdXRfZmllbGRzKSk7CgkJcmV0dXJuICRkYnJlc3VsdDsKCX0KCQoJZnVuY3Rpb24gVXBkYXRlTXVsdGlJbnB1dCgkaW5wdXRfaWQsICRpbnB1dF9maWVsZHMpCgl7CgkJJGRiICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSA9ICJVUERBVEUgIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzCgkJCVNFVCBpbnB1dF9maWVsZHMgPSA/IFdIRVJFIGlucHV0X2lkID0gPyAiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpbnB1dF9maWVsZHMsICRpbnB1dF9pZCkpOwoJCXJldHVybiAkZGJyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIFVwZGF0ZVRwbEFzc29jKCR0cGxfdHlwZSwgJGlucHV0X2lkLCAkdHBsX25hbWUpCgl7CgkJJGRiICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSA9ICJVUERBVEUgIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kdHBsX3R5cGUuIl90cGxfYXNzb2NzCgkJCVNFVCB0cGxfbmFtZSA9ID8gV0hFUkUgaW5wdXRfaWQgPSA/ICI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRwbF9uYW1lLCAkaW5wdXRfaWQpKTsKCQlyZXR1cm4gJGRicmVzdWx0OwoJfQoJCglmdW5jdGlvbiBBZGRUcGxBc3NvYygkdHBsX3R5cGUsICRpbnB1dF9pZCwgJHRwbF9uYW1lKQoJewoJCSRkYiAgICA9JiAkdGhpcy0+R2V0RGIoKTsKCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4gY21zX2RiX3ByZWZpeCgpIC4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiR0cGxfdHlwZS4iX3RwbF9hc3NvY3MKCQkJKGlucHV0X2lkLCB0cGxfbmFtZSkgVkFMVUVTICg/LD8pIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaW5wdXRfaWQsICR0cGxfbmFtZSkpOwoJCXJldHVybiAkZGJyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIERlbGV0ZVRwbEFzc29jKCR0cGxfdHlwZSwkaW5wdXRfaWRzID0gYXJyYXkoKSkKCXsKCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJaWYoIWlzX2FycmF5KCRpbnB1dF9pZHMpKQoJCXsKCQkJJGlucHV0X2lkcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoIiwiLCRpbnB1dF9pZHMpKTsKCQl9CgkJaWYoIWNvdW50KCRpbnB1dF9pZHMpKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kdHBsX3R5cGUuIl90cGxfYXNzb2NzIFdIRVJFICI7CgkJJHEgPSBhcnJheSgpOwoJCWZvcmVhY2goJGlucHV0X2lkcyBhcyAkX2lkKQoJCXsKCQkJJHFbXSA9ICJpbnB1dF9pZCA9ID8iOwoJCX0KCQkkcXVlcnkgICAuPSAgaW1wbG9kZSgiIE9SICIsICRxKTsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkaW5wdXRfaWRzKTsKCQlyZXR1cm4gJGRicmVzdWx0OwoJfQoJCglmdW5jdGlvbiBEZWxldGVNdWx0aUlucHV0KCRpbnB1dF9pZHMgPSBhcnJheSgpKQoJewoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCQlpZighaXNfYXJyYXkoJGlucHV0X2lkcykpCgkJewoJCQkkaW5wdXRfaWRzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgiLCIsJGlucHV0X2lkcykpOwoJCX0KCQlpZighY291bnQoJGlucHV0X2lkcykpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMgV0hFUkUgIjsKCQkkcSA9IGFycmF5KCk7CgkJZm9yZWFjaCgkaW5wdXRfaWRzIGFzICRfaWQpCgkJewoJCQkkcVtdID0gImlucHV0X2lkID0gPyI7CgkJfQoJCQoJCSRxdWVyeSAgIC49ICBpbXBsb2RlKCIgT1IgIiwgJHEpOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRpbnB1dF9pZHMpOwoJCXJldHVybiAkZGJyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIEdldFRlbXBsYXRlcygkcHJlZml4KQoJewoJCSRkYiAgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ICA9ICJTRUxFQ1QgVFBMLnRlbXBsYXRlX25hbWUsIFRQTF9BU1NPQ1MuKiBGUk9NICIuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfdGVtcGxhdGVzIFRQTAoJCQlMRUZUIE9VVEVSIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kcHJlZml4LiJfdHBsX2Fzc29jcyBUUExfQVNTT0NTCgkJCU9OIFRQTC50ZW1wbGF0ZV9uYW1lID0gVFBMX0FTU09DUy50cGxfbmFtZQoJCQlXSEVSRSBUUEwubW9kdWxlX25hbWUgPSA/IEFORCBUUEwudGVtcGxhdGVfbmFtZSBMSUtFID8gIjsKCQkkcmV0dXJuX2FycmF5ID0gYXJyYXkoKTsKCQkkZGJyZXN1bHQgICAgID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRoaXMtPkdldE5hbWUoKSwkcHJlZml4LidfJScpKTsKCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCWlmKCFpc3NldCgkcmV0dXJuX2FycmF5WyRyb3dbJ3RlbXBsYXRlX25hbWUnXV0pKQoJCQl7CgkJCQkkcmV0dXJuX2FycmF5WyRyb3dbJ3RlbXBsYXRlX25hbWUnXV0gPSBhcnJheSgpOwoJCQl9CgkJCSRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXVsndHBsX25hbWUnXSA9IHN1YnN0cigkcm93Wyd0ZW1wbGF0ZV9uYW1lJ10sc3RybGVuKCRwcmVmaXguJ18nKSk7CgkJCSRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXVsndHBsX2lkJ10gICA9ICRyb3dbJ3RlbXBsYXRlX25hbWUnXTsKCQkJaWYoIWlzc2V0KCRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXVsndHBsX2Fzc29jcyddKSkKCQkJewoJCQkJJHJldHVybl9hcnJheVskcm93Wyd0ZW1wbGF0ZV9uYW1lJ11dWyd0cGxfYXNzb2NzJ10gPSBhcnJheSgpOwoJCQkJJHJldHVybl9hcnJheVskcm93Wyd0ZW1wbGF0ZV9uYW1lJ11dWydpc191c2VkJ10gPSBmYWxzZTsKCQkJfQoJCQlpZigkcm93WydpbnB1dF9pZCddKQoJCQl7CgkJCQkkcmV0dXJuX2FycmF5WyRyb3dbJ3RlbXBsYXRlX25hbWUnXV1bJ3RwbF9hc3NvY3MnXVtdID0gJHJvd1snaW5wdXRfaWQnXTsKCQkJCSRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXVsnaXNfdXNlZCddID0gdHJ1ZTsKCQkJfQoJCX0KCQlyZXR1cm4gJHJldHVybl9hcnJheTsKCX0KCQoJZnVuY3Rpb24gR2V0VHBsTGlzdCgkcHJlZml4KQoJewoJCSRwcmVmaXggPSB0cmltKCRwcmVmaXgsJ18nKSAuICdfJzsKCQkkZGIgICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSAgPSAiU0VMRUNUIHRlbXBsYXRlX25hbWUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3RlbXBsYXRlcwoJCQlXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIHRlbXBsYXRlX25hbWUgTElLRSA/ICI7CgkJJHJldHVybl9hcnJheSA9IGFycmF5KCk7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRoaXMtPkdldE5hbWUoKSwkcHJlZml4LiclJykpOwoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJHRwbF9uYW1lID0gc3Vic3RyKCRyb3dbJ3RlbXBsYXRlX25hbWUnXSxzdHJsZW4oJHByZWZpeCkpOwoJCQkkcmV0dXJuX2FycmF5WyR0cGxfbmFtZV0gPSAkcm93Wyd0ZW1wbGF0ZV9uYW1lJ107CgkJfQoJCXJldHVybiAkcmV0dXJuX2FycmF5OwoJfQoJCglmdW5jdGlvbiBJc1RwbFVzZWQoJHRwbF9uYW1lLCAkYXNzb2NfdHlwZSkKCXsKCQkkZGIgICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSAgPSAiU0VMRUNUIHRwbF9uYW1lIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kYXNzb2NfdHlwZS4iX3RwbF9hc3NvY3MKCQkJV0hFUkUgdGVtcGxhdGVfbmFtZSA9ID8gIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdHBsX25hbWUpKTsKCQlpZighJGRicmVzdWx0IHx8ICEkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlyZXR1cm4gdHJ1ZTsKCX0KfQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/contenttype.Content2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwCiMgICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjQKIyBGaWxlICAgOiBjb250ZW50dHlwZS5Db250ZW50Mi5waHAKIyAgICAgICAgICBUaGlzIGZpbGUgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICJDb250ZW50IgojIFB1cnBvc2U6IHRoZSBjb250ZW50IG9iamVjdAojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8qKgogKiB0aGlzIGlzIGp1c3QgYSBkdW1teSBjbGFzcyB0byBhY2Nlc3MgdGhlIG1vZHVsZSB3aXRob3V0IHVzaW5nIENNU21zIGludGVybmFscwogKi8KY2xhc3MgQWR2YW5jZWRDb250ZW50TW9kdWxlIGV4dGVuZHMgQWR2YW5jZWRDb250ZW50CnsKCWZ1bmN0aW9uIEFkdmFuY2VkQ29udGVudE1vZHVsZSgpCgl7CgkJcGFyZW50OjpBZHZhbmNlZENvbnRlbnQoKTsKCX0KfQoKY2xhc3MgQ29udGVudDIgZXh0ZW5kcyBDTVNNb2R1bGVDb250ZW50VHlwZQp7CgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRfc3R5bGVzaGVldDsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfY29udGVudEJsb2NrczsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYm9vbGVhbgoJICovCgl2YXIgJF9jb250ZW50QmxvY2tzTG9hZGVkOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF90YWJJZHM7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX3BhZ2VUYWJzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9ibG9ja1RhYnM7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX2Jsb2NrR3JvdXBzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF91c2VyR3JvdXBzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9kYXRlQmxvY2tzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9tdWx0aUlucHV0czsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYm9vbGVhbgoJICovCgl2YXIgJF9pc0FkbWluOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBib29sZWFuCgkgKi8KCXZhciAkX2ZldUFjdGlvbjsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfZmV1R3JvdXBzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9hbGxVc2VyczsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfYWxsR3JvdXBzOwoJCgkvKioKCSAqIE1MRSBzdXBwb3J0CgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBib29sZWFuCgkgKi8KCXZhciAkbWxlID0gZmFsc2U7CgkKCS8qKgoJICogTUxFIHN1cHBvcnQKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGxhbmc7CgkKCS8qKgoJICogTUxFIHN1cHBvcnQKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGJsb2NrTGFuZzsKCQoJLyoqCgkgKiBNTEUgc3VwcG9ydAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkZGVmYXVsdEJsb2NrTGFuZzsKCQoJCgkvKioKCSAqIENvbnN0cnVjdG9yCgkgKi8KCWZ1bmN0aW9uIENvbnRlbnQyKCkKCXsKCQlwYXJlbnQ6OkNvbnRlbnRCYXNlKCk7CgkJJHRoaXMtPl9jb250ZW50QmxvY2tzICAgICAgID0gYXJyYXkoKTsKCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NMb2FkZWQgPSBmYWxzZTsKCQkkdGhpcy0+X2ZldUFjdGlvbiAgICAgICAgICAgPSBmYWxzZTsKCQkkdGhpcy0+X2ZldUdyb3VwcyAgICAgICAgICAgPSBmYWxzZTsKCQkkdGhpcy0+X211bHRpSW5wdXRzICAgICAgICAgPSBhcnJheSgpOwoJCWdsb2JhbCAkZ0NtcywkQ01TX0FETUlOX1BBR0U7CgkJaWYoaXNzZXQoJENNU19BRE1JTl9QQUdFKSAmJiAkQ01TX0FETUlOX1BBR0UgPT0gMSkKCQl7CgkJCSRBZHZhbmNlZENvbnRlbnQgICAgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJCSR0aGlzLT5fdGFiSWRzICAgICAgPSBhcnJheSgpOwoJCQkkdGhpcy0+X2RhdGVCbG9ja3MgID0gYXJyYXkoKTsKCQkJJHRoaXMtPl9ibG9ja1RhYnMgICA9IGFycmF5KCk7CgkJCSR0aGlzLT5fYmxvY2tHcm91cHMgPSBhcnJheSgpOwoJCQkKCQkJJHRoaXMtPl9wYWdlVGFicyA9IGFycmF5KAoJCQkJJ21haW4nID0+IGFycmF5KAoJCQkJCSd0YWJfaWQnICAgICAgICAgPT4gJ21haW4nLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gbGFuZygnbWFpbicpLAoJCQkJCSdibG9ja190YWJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYmxvY2tfZ3JvdXBzJyAgID0+IGFycmF5KCksCgkJCQkJJ2NvbnRlbnRfYmxvY2tzJyA9PiBhcnJheSgpKSk7CgkJCSR0aGlzLT5fdGFiSWRzW10gPSAnbWFpbic7CgkJCQoJCQlpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWxsIENvbnRlbnQnKSApCgkJCXsKCQkJCSR0aGlzLT5fcGFnZVRhYnNbJ29wdGlvbnMnXSA9IGFycmF5KAoJCQkJCSd0YWJfaWQnICAgICAgICAgPT4gJ29wdGlvbnMnLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gbGFuZygnb3B0aW9ucycpLAoJCQkJCSdibG9ja190YWJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYmxvY2tfZ3JvdXBzJyAgID0+IGFycmF5KCksCgkJCQkJJ2NvbnRlbnRfYmxvY2tzJyA9PiBhcnJheSgpKTsKCQkJCSR0aGlzLT5fdGFiSWRzW10gPSAnb3B0aW9ucyc7CgkJCX0KCQkJCgkJCWlmKCBjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpICYmICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnLDEpICkKCQkJewoJCQkJJHRoaXMtPl9wYWdlVGFic1snQWR2YW5jZWRDb250ZW50J10gPSBhcnJheSgKCQkJCQkndGFiX2lkJyAgICAgICAgID0+ICdBZHZhbmNlZENvbnRlbnQnLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnKSwKCQkJCQknYmxvY2tfdGFicycgICAgID0+IGFycmF5KCksCgkJCQkJJ2Jsb2NrX2dyb3VwcycgICA9PiBhcnJheSgpLAoJCQkJCSdjb250ZW50X2Jsb2NrcycgPT4gYXJyYXkoKSk7CgkJCQkkdGhpcy0+X3RhYklkc1tdID0gJ0FkdmFuY2VkQ29udGVudCc7CgkJCX0KCQkJCgkJCSR0aGlzLT5fdXNlckdyb3VwcyA9ICR0aGlzLT5HZXRHcm91cHMoKTsKCQkJJHRoaXMtPl9pc0FkbWluICAgID0gJGdDbXMtPkdldFVzZXJPcGVyYXRpb25zKCktPlVzZXJJbkdyb3VwKGdldF91c2VyaWQoKSwxKTsKCQkJJHVzZXJvcHMgICAgICAgICAgPSYgJGdDbXMtPkdldFVzZXJPcGVyYXRpb25zKCk7CgkJCSRncm91cG9wcyAgICAgICAgID0mICRnQ21zLT5HZXRHcm91cE9wZXJhdGlvbnMoKTsKCQkJJHRoaXMtPl9hbGxVc2VycyAgPSYgJHVzZXJvcHMtPkxvYWRVc2VycygpOwoJCQkkdGhpcy0+X2FsbEdyb3VwcyA9ICRncm91cG9wcy0+TG9hZEdyb3VwcygpOwoJCX0KCQkKCQkjIE1MRSBzdXBwb3J0CgkJZ2xvYmFsICRobHMsICRtbGVibG9jaywgJG1sZWJsb2NrZmFsbGJhY2s7CgkJaWYoaXNzZXQoJGhscykpCgkJewoJCQkkdGhpcy0+bWxlICAgICAgICAgICAgICA9IHRydWU7CgkJCSR0aGlzLT5sYW5nICAgICAgICAgICAgID0gJGhsczsKCQkJJHRoaXMtPmJsb2NrTGFuZyAgICAgICAgPSAkbWxlYmxvY2s7CgkJCSR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nID0gJG1sZWJsb2NrZmFsbGJhY2s7CgkJfQoJCSMtLS0KCX0KCQoJZnVuY3Rpb24gTW9kdWxlTmFtZSgpCgl7CgkJcmV0dXJuICdBZHZhbmNlZENvbnRlbnQnOwoJfQoJCglmdW5jdGlvbiBJc0RlZmF1bHRQb3NzaWJsZSgpCgl7CgkJcmV0dXJuIFRSVUU7Cgl9CgkKCWZ1bmN0aW9uIElzQ29weWFibGUoKQoJewoJCXJldHVybiBUUlVFOwoJfQoJCglmdW5jdGlvbiBGcmllbmRseU5hbWUoKQoJewoJCWlmKGJhc2VuYW1lKCRfU0VSVkVSWydQSFBfU0VMRiddKSA9PSAnbGlzdGNvbnRlbnQucGhwJykKCQl7CgkJCSRhZGRUeHQgPSBhcnJheSgpOwoJCQlpZigkdGhpcy0+bUNhY2hhYmxlKQoJCQl7CgkJCQkkYWRkVHh0W10gPSAnLSZuYnNwOycubGFuZygnY2FjaGFibGUnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy5sYW5nKCdub25jYWNoYWJsZScpOwoJCQl9CgkJCWlmKGlzc2V0KCR0aGlzLT5tU2VjdXJlKSAmJiAkdGhpcy0+bVNlY3VyZSkKCQkJewoJCQkJJGFkZFR4dFtdID0gJy0mbmJzcDtTU0wnOwoJCQl9CgkJCWlmKCEkdGhpcy0+bVNob3dJbk1lbnUpCgkJCXsKCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy5sYW5nKCdoaWRlZnJvbW1lbnUnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy5sYW5nKCdzaG93aW5tZW51Jyk7CgkJCX0KCQkJaWYoJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50OjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQl7CgkJCQlpZihzdHJwb3MoJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSwnLCcpID09PSBGQUxTRSkKCQkJCXsKCQkJCQkkc2VsZWN0ZWRHcm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCc7JywgJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSkpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRzZWxlY3RlZEdyb3VwcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjY2VzcycpKSk7CgkJCQl9CgkJCQlpZihjb3VudCgkc2VsZWN0ZWRHcm91cHMpKQoJCQkJewoJCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy4kdGhpcy0+bGFuZygnZnJvbnRlbmRhY2Nlc3MnKS4nOiA8dWw+PGxpPicgLiBpbXBsb2RlKCc8L2xpPjxsaT4nLGFycmF5X2tleXMoYXJyYXlfaW50ZXJzZWN0KCRmZXVzZXJzLT5HZXRHcm91cExpc3QoKSwgJHNlbGVjdGVkR3JvdXBzKSkpLic8L2xpPjwvdWw+JzsKCQkJCX0KCQkJfQoJCQlpZihjb3VudCgkYWRkVHh0KSkKCQkJewoJCQkJcmV0dXJuICc8c3BhbiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlciIgb25tb3VzZW92ZXI9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnJy4kdGhpcy0+bUlkLidfaW5mb1wnKS5zdHlsZS5kaXNwbGF5ID0gXCdibG9ja1wnOyIgb25tb3VzZW91dD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCcnLiR0aGlzLT5tSWQuJ19pbmZvXCcpLnN0eWxlLmRpc3BsYXkgPSBcJ25vbmVcJzsiPicgLiAkdGhpcy0+bGFuZygnQWR2YW5jZWRDb250ZW50JykgLiAnPHNwYW4gaWQ9IicuJHRoaXMtPm1JZC4nX2luZm8iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO3Bvc2l0aW9uOmFic29sdXRlO3BhZGRpbmc6NXB4O2Rpc3BsYXk6bm9uZTstbW96LWJveC1zaGFkb3c6MXB4IDFweCAxMHB4ICM2NjY2NjY7LXdlYmtpdC1ib3gtc2hhZG93OjFweCAxcHggMTBweCAjNjY2NjY2O2JveC1zaGFkb3c6MXB4IDFweCAxMHB4ICM2NjY2NjY7ei1pbmRleDo5OTkiPicgLiBpbXBsb2RlKCc8YnIgLz4nLCRhZGRUeHQpIC4gJzwvc3Bhbj48L3NwYW4+JzsKCQkJfQoJCX0KCQlyZXR1cm4gJHRoaXMtPmxhbmcoJ0FkdmFuY2VkQ29udGVudCcpOwoJfQoJCglmdW5jdGlvbiBnZXRfY29udGVudF9ibG9ja3MoKQoJewoJCSR0aGlzLT5wYXJzZV9jb250ZW50X2Jsb2NrcygpOwoJCXJldHVybiAkdGhpcy0+X2NvbnRlbnRCbG9ja3M7Cgl9CgkKCWZ1bmN0aW9uIGdldF9ibG9ja19ncm91cHMoKQoJewoJCSR0aGlzLT5wYXJzZV9jb250ZW50X2Jsb2NrcygpOwoJCXJldHVybiAkdGhpcy0+X2Jsb2NrR3JvdXBzOwoJfQoJCglmdW5jdGlvbiBnZXRfbXVsdGlfaW5wdXRzKCkKCXsKCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCQlyZXR1cm4gJHRoaXMtPl9tdWx0aUlucHV0czsKCX0KCQoJZnVuY3Rpb24gX2dldF9ibG9ja19pbmZvKCR3aG9sZXRhZykKCXsKCQkkcGF0dGVybiAgID0gJy8oW1x3XSspPShbIl1bXiJdKlsiXXxbXCddW15cJ10qW1wnXXxbXlwnIlxzXSopLyc7CgkJJGJsb2NrSW5mbyA9IGFycmF5KCk7CgkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnQ6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkKCQkjIGdldCB0aGUgYXJndW1lbnRzLgoJCSRtYXRjaGVzID0gYXJyYXkoKTsKCQkkcmVzdWx0ICA9IHByZWdfbWF0Y2hfYWxsKCRwYXR0ZXJuLCAkd2hvbGV0YWcsICRtYXRjaGVzKTsKCQkKCQkka2V5dmFsID0gYXJyYXkoKTsKCQlmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkbWF0Y2hlc1sxXSk7ICRpKyspCgkJewoJCQlpZihzdGFydHN3aXRoKCRtYXRjaGVzWzJdWyRpXSwnXCcnKSkKCQkJewoJCQkJJG1hdGNoZXNbMl1bJGldID0gdHJpbSgkbWF0Y2hlc1syXVskaV0sJ1wnJyk7CgkJCX0KCQkJZWxzZSBpZihzdGFydHN3aXRoKCRtYXRjaGVzWzJdWyRpXSwnIicpKQoJCQl7CgkJCQkkbWF0Y2hlc1syXVskaV0gPSB0cmltKCRtYXRjaGVzWzJdWyRpXSwnIicpOwoJCQl9CgkJCQoJCQkka2V5dmFsW3N0cnRvbG93ZXIoJG1hdGNoZXNbMV1bJGldKV0gPSAkbWF0Y2hlc1syXVskaV07CgkJfQoJCQoJCSMgYmxvY2sgPSBhY3RpdmU/CgkJaWYoaXNzZXQoJGtleXZhbFsnYWN0aXZlJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRrZXl2YWxbJ2FjdGl2ZSddKSkKCQl7CgkJCXJldHVybiBmYWxzZTsgIyBkb24ndCBwcm9jZXNzIGluYWN0aXZlIGJsb2NrcwoJCX0KCQkKCQkjIGFkZGl0aW9uYWwgZWRpdG9ycwoJCSRibG9ja0luZm9bJ2VkaXRvcl9ncm91cHMnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2VkaXRvcl9ncm91cHMnXSkgJiYgJGtleXZhbFsnZWRpdG9yX2dyb3VwcyddICE9ICcnKQoJCXsKCQkJJGJsb2NrSW5mb1snZWRpdG9yX2dyb3VwcyddID0gdHJpbSgka2V5dmFsWydlZGl0b3JfZ3JvdXBzJ10pOwoJCX0KCQkkYmxvY2tJbmZvWydlZGl0b3JfdXNlcnMnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2VkaXRvcl91c2VycyddKSAmJiAka2V5dmFsWydlZGl0b3JfdXNlcnMnXSAhPSAnJykKCQl7CgkJCSRibG9ja0luZm9bJ2VkaXRvcl91c2VycyddID0gdHJpbSgka2V5dmFsWydlZGl0b3JfdXNlcnMnXSk7CgkJfQoJCQoJCSMgYmxvY2tuYW1lCgkJJGJsb2NrSW5mb1snbmFtZSddID0gJ2NvbnRlbnRfZW4nOwoJCSMgTUxFIHN1cHBvcnQKCQlpZigkdGhpcy0+bWxlICYmICR0aGlzLT5ibG9ja0xhbmcgIT0gJycpCgkJewoJCQkkYmxvY2tJbmZvWyduYW1lJ10gPSAnY29udGVudCcuJHRoaXMtPmJsb2NrTGFuZzsKCQl9CgkJIy0tLQoJCQoJCWlmKGlzc2V0KCRrZXl2YWxbJ2Jsb2NrJ10pICYmICRrZXl2YWxbJ2Jsb2NrJ10gIT0gJycpCgkJewoJCQkkYmxvY2tJbmZvWyduYW1lJ10gPSB0cmltKCRrZXl2YWxbJ2Jsb2NrJ10pOwoJCX0KCQkKCQkjIGJsb2NrIGlkCgkJJGJsb2NrSW5mb1snaWQnXSA9IHByZWdfcmVwbGFjZSgnLy0rLycsJ18nLG11bmdlX3N0cmluZ190b191cmwoJGJsb2NrSW5mb1snbmFtZSddKSk7CgkJCgkJZ2xvYmFsICRDTVNfQURNSU5fUEFHRTsKCQlpZihpc3NldCgkQ01TX0FETUlOX1BBR0UpICYmICRDTVNfQURNSU5fUEFHRSA9PSAxICYmICEkdGhpcy0+Q2hlY2tCbG9ja1Blcm1pc3Npb24oJGJsb2NrSW5mbykpCgkJewoJCQlyZXR1cm4gZmFsc2U7ICMgZG9uJ3QgcHJvY2VzcyBibG9ja3Mgd2l0aG91dCBwZXJtaXNzaW9uIHRvIGVkaXQKCQl9CgkJCgkJJGJsb2NrSW5mb1snbXVsdGlwbGUnXSAgPSBmYWxzZTsKCQkkYmxvY2tJbmZvWyduZXdfYmxvY2snXSA9IGZhbHNlOwoJCQoJCSMgYmxvY2t0eXBlCgkJJGJsb2NrSW5mb1snYmxvY2tfdHlwZSddID0gJGJsb2NrSW5mb1sndHlwZSddID0gJ3RleHQnOwoJCWlmKHN0YXJ0c3dpdGgoJHdob2xldGFnLCAnY29udGVudF9pbWFnZScpKQoJCXsKCQkJJGJsb2NrSW5mb1snYmxvY2tfdHlwZSddID0gJGJsb2NrSW5mb1sndHlwZSddID0gJ2ltYWdlJzsKCQl9CgkJZWxzZWlmKHN0YXJ0c3dpdGgoJHdob2xldGFnLCAnY29udGVudF9tb2R1bGUnKSkKCQl7CgkJCSRibG9ja0luZm9bJ2Jsb2NrX3R5cGUnXSA9ICRibG9ja0luZm9bJ3R5cGUnXSA9ICdtb2R1bGUnOwoJCX0KCQllbHNlaWYoaXNzZXQoJGtleXZhbFsnYmxvY2tfdHlwZSddKSAmJiAka2V5dmFsWydibG9ja190eXBlJ10gIT0gJycpCgkJewoJCQkkYmxvY2tJbmZvWydibG9ja190eXBlJ10gPSAkYmxvY2tJbmZvWyd0eXBlJ10gPSBzdHJ0b2xvd2VyKCRrZXl2YWxbJ2Jsb2NrX3R5cGUnXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ3NtYXJ0eSddID0gZmFsc2U7CgkJaWYoaXNzZXQoJGtleXZhbFsnc21hcnR5J10pICYmICR0aGlzLT5Jc1RydWUoJGtleXZhbFsnc21hcnR5J10pKQoJCXsKCQkJJGJsb2NrSW5mb1snc21hcnR5J10gPSB0cnVlOwoJCX0KCQkKCQkkYmxvY2tJbmZvWyd0cmFuc2xhdGVfbGFiZWxzJ10gPSBmYWxzZTsKCQlpZihpc3NldCgka2V5dmFsWyd0cmFuc2xhdGVfbGFiZWxzJ10pICYmICR0aGlzLT5Jc1RydWUoJGtleXZhbFsndHJhbnNsYXRlX2xhYmVscyddKSkKCQl7CgkJCSRibG9ja0luZm9bJ3RyYW5zbGF0ZV9sYWJlbHMnXSA9IHRydWU7CgkJfQoJCQoJCSRibG9ja0luZm9bJ3RyYW5zbGF0ZV92YWx1ZXMnXSA9IGZhbHNlOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ3RyYW5zbGF0ZV92YWx1ZXMnXSkgJiYgJHRoaXMtPklzVHJ1ZSgka2V5dmFsWyd0cmFuc2xhdGVfdmFsdWVzJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1sndHJhbnNsYXRlX3ZhbHVlcyddID0gdHJ1ZTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snbGFiZWwnXSA9IHVjd29yZHMoJGJsb2NrSW5mb1snbmFtZSddKTsKCQlpZihpc3NldCgka2V5dmFsWydsYWJlbCddKSAmJiAka2V5dmFsWydsYWJlbCddICE9ICcnKQoJCXsKCQkJJGJsb2NrSW5mb1snbGFiZWwnXSA9IHRyaW0oJGtleXZhbFsnbGFiZWwnXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ3JlcXVpcmVkJ10gPSBmYWxzZTsKCQlpZihpc3NldCgka2V5dmFsWydyZXF1aXJlZCddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ3JlcXVpcmVkJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1sncmVxdWlyZWQnXSA9IHRydWU7CgkJfQoJCQoJCSMgZGVmYXVsdCBjb250ZW50L3ZhbHVlCgkJJGJsb2NrSW5mb1snZGVmYXVsdCddIAk9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2RlZmF1bHQnXSkgJiYgJGtleXZhbFsnZGVmYXVsdCddICE9ICcnKQoJCXsKCQkJJGJsb2NrSW5mb1snZGVmYXVsdCddID0gJGtleXZhbFsnZGVmYXVsdCddOwoJCX0KCQkKCQkjIGJhY2tlbmQgc3R5bGUgKGUuZy4gdG8gbWFyayByZXF1aXJlZCBmaWVsZHMuLi4pCgkJIyBkZXByZWNhdGVkCgkJJGJsb2NrSW5mb1snc3R5bGUnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ3N0eWxlJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1snc3R5bGUnXSA9ICRrZXl2YWxbJ3N0eWxlJ107CgkJfQoJCQoJCSMgc2l6ZSBvZiB0aGUgaW5wdXQgZmllbGQKCQkkYmxvY2tJbmZvWydzaXplJ10gPSAnJzsKCQlpZihpc3NldCgka2V5dmFsWydzaXplJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1snc2l6ZSddID0gaW50dmFsKCRrZXl2YWxbJ3NpemUnXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ3BhZ2VfdGFiJ10gPSAnbWFpbic7CgkJaWYoaXNzZXQoJGtleXZhbFsncGFnZV90YWInXSkgJiYgdHJpbSgka2V5dmFsWydwYWdlX3RhYiddICE9ICcnKSkKCQl7CgkJCSRibG9ja0luZm9bJ3BhZ2VfdGFiJ10gPSB0cmltKCRrZXl2YWxbJ3BhZ2VfdGFiJ10pOwoJCX0KCQkKCQkkYmxvY2tJbmZvWydibG9ja190YWInXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2Jsb2NrX3RhYiddKSAmJiB0cmltKCRrZXl2YWxbJ2Jsb2NrX3RhYiddICE9ICcnKSkKCQl7CgkJCSRibG9ja0luZm9bJ2Jsb2NrX3RhYiddID0gdHJpbSgka2V5dmFsWydibG9ja190YWInXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ2Jsb2NrX2dyb3VwJ10gPSAnJzsKCQlpZihpc3NldCgka2V5dmFsWydibG9ja19ncm91cCddKSAmJiB0cmltKCRrZXl2YWxbJ2Jsb2NrX2dyb3VwJ10gIT0gJycpKQoJCXsKCQkJJGJsb2NrSW5mb1snYmxvY2tfZ3JvdXAnXSA9IHRyaW0oJGtleXZhbFsnYmxvY2tfZ3JvdXAnXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ2FsbG93X25vbmUnXSA9IHRydWU7CgkJaWYoaXNzZXQoJGtleXZhbFsnYWxsb3dfbm9uZSddKSAmJiAkdGhpcy0+SXNGYWxzZSgka2V5dmFsWydhbGxvd19ub25lJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1snYWxsb3dfbm9uZSddID0gZmFsc2U7CgkJfQoJCQoJCSRibG9ja0luZm9bJ2Rlc2NyaXB0aW9uJ10gPSAnJzsKCQlpZihpc3NldCgka2V5dmFsWydkZXNjcmlwdGlvbiddKSkKCQl7CgkJCSRibG9ja0luZm9bJ2Rlc2NyaXB0aW9uJ10gPSB0cmltKCRrZXl2YWxbJ2Rlc2NyaXB0aW9uJ10pOwoJCX0KCQkKCQkkYmxvY2tJbmZvWydjb2xsYXBzZSddID0gJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgnY29sbGFwc2VfYmxvY2tfZGVmYXVsdCcsMSk7CgkJaWYoaXNzZXQoJGtleXZhbFsnY29sbGFwc2UnXSkgJiYgKCR0aGlzLT5Jc1RydWUoJGtleXZhbFsnY29sbGFwc2UnXSkgfHwgJHRoaXMtPklzRmFsc2UoJGtleXZhbFsnY29sbGFwc2UnXSkpKQoJCXsKCQkJJGJsb2NrSW5mb1snY29sbGFwc2UnXSA9ICR0aGlzLT5Jc1RydWUoJGtleXZhbFsnY29sbGFwc2UnXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ25vX2NvbGxhcHNlJ10gPSBmYWxzZTsKCQlpZihpc3NldCgka2V5dmFsWydub19jb2xsYXBzZSddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ25vX2NvbGxhcHNlJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1snbm9fY29sbGFwc2UnXSA9IHRydWU7CgkJfQoJCQoJCSRibG9ja0luZm9bJ2ZldV9hY2Nlc3MnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2ZldV9hY2Nlc3MnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydmZXVfYWNjZXNzJ10gPSB0cmltKCRrZXl2YWxbJ2ZldV9hY2Nlc3MnXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ2ZldV9hY3Rpb24nXSA9IGZhbHNlOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2ZldV9hY3Rpb24nXSkgJiYgJHRoaXMtPklzVHJ1ZSgka2V5dmFsWydmZXVfYWN0aW9uJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1snZmV1X2FjdGlvbiddID0gdHJ1ZTsKCQl9CgkJCgkJaWYoJGJsb2NrSW5mb1sndHlwZSddID09ICd0ZXh0JykKCQl7CgkJCSRibG9ja0luZm9bJ21heGxlbmd0aCddID0gJyc7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ21heGxlbmd0aCddKSkKCQkJewoJCQkJJGJsb2NrSW5mb1snbWF4bGVuZ3RoJ10gPSAka2V5dmFsWydtYXhsZW5ndGgnXTsKCQkJfQoJCQkKCQkJJGJsb2NrSW5mb1sndXNld3lzaXd5ZyddID0gdHJ1ZTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnd3lzaXd5ZyddKSAmJiAkdGhpcy0+SXNGYWxzZSgka2V5dmFsWyd3eXNpd3lnJ10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWyd1c2V3eXNpd3lnJ10gPSBmYWxzZTsKCQkJfQoJCQkKCQkJJGJsb2NrSW5mb1snb25lbGluZSddID0gZmFsc2U7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ29uZWxpbmUnXSkgJiYgJHRoaXMtPklzVHJ1ZSgka2V5dmFsWydvbmVsaW5lJ10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydvbmVsaW5lJ10gPSB0cnVlOwoJCQl9CgkJfQoJCWVsc2UgaWYgKCRibG9ja0luZm9bJ3R5cGUnXSA9PSAnZGF0ZScpCgkJewoJCQkkdGhpcy0+X2RhdGVCbG9ja3NbXSA9ICRibG9ja0luZm9bJ2lkJ107CgkJCQoJCQkkc2hvd0Nsb2NrID0gdHJ1ZTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnc2hvd19jbG9jayddKSAmJiAkdGhpcy0+SXNURmFsc2UoJGtleXZhbFsnc2hvd19jbG9jayddKSkKCQkJewoJCQkJJHNob3dDbG9jayA9IGZhbHNlOwoJCQl9CgkJCQoJCQkkbW9kZSA9ICdjYWxlbmRhcic7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ21vZGUnXSkgJiYgc3RydG9sb3dlcigka2V5dmFsWydtb2RlJ10pID09ICdkcm9wZG93bicpCgkJCXsKCQkJCSRtb2RlID0gJ2Ryb3Bkb3duJzsKCQkJfQoJCQkKCQkJJHNob3cyNGggPSB0cnVlOwoJCQlpZihpc3NldCgka2V5dmFsWydzaG93MjRoJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRrZXl2YWxbJ3Nob3cyNGgnXSkpCgkJCXsKCQkJCSRzaG93MjRoID0gZmFsc2U7CgkJCX0KCQkJCgkJCSRzdGFydEhvdXIgPSAwOwoJCQkkZW5kSG91ciAgID0gMjM7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3N0YXJ0X2hvdXInXSkpCgkJCXsKCQkJCWlmKGVuZHN3aXRoKCRrZXl2YWxbJ3N0YXJ0X2hvdXInXSwncG0nKSkKCQkJCXsKCQkJCQkka2V5dmFsWydzdGFydF9ob3VyJ10gPSB0cmltKHN0cl9pcmVwbGFjZSgncG0nLCcnLCRrZXl2YWxbJ3N0YXJ0X2hvdXInXSkpICsgMTI7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJGtleXZhbFsnc3RhcnRfaG91ciddID0gdHJpbShzdHJfaXJlcGxhY2UoYXJyYXkoJ2FtJywncG0nKSwnJywka2V5dmFsWydzdGFydF9ob3VyJ10pKTsKCQkJCX0KCQkJCWlmKCRrZXl2YWxbJ3N0YXJ0X2hvdXInXSA+IDAgJiYgJGtleXZhbFsnc3RhcnRfaG91ciddIDw9ICRlbmRIb3VyKQoJCQkJewoJCQkJCSRzdGFydEhvdXIgPSB0cmltKCRrZXl2YWxbJ3N0YXJ0X2hvdXInXSk7CgkJCQl9CgkJCX0KCQkJaWYoaXNzZXQoJGtleXZhbFsnZW5kX2hvdXInXSkpCgkJCXsKCQkJCWlmKGVuZHN3aXRoKCRrZXl2YWxbJ2VuZF9ob3VyJ10sJ3BtJykpCgkJCQl7CgkJCQkJJGtleXZhbFsnZW5kX2hvdXInXSA9IHRyaW0oc3RyX2lyZXBsYWNlKCdwbScsJycsJGtleXZhbFsnZW5kX2hvdXInXSkpICsgMTI7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJGtleXZhbFsnZW5kX2hvdXInXSA9IHRyaW0oc3RyX2lyZXBsYWNlKGFycmF5KCdhbScsJ3BtJyksJycsJGtleXZhbFsnZW5kX2hvdXInXSkpOwoJCQkJfQoJCQkJaWYoJGtleXZhbFsnZW5kX2hvdXInXSA+PSAwICYmICRrZXl2YWxbJ2VuZF9ob3VyJ10gPCAkZW5kSG91cikKCQkJCXsKCQkJCQkkZW5kSG91ciA9IHRyaW0oJGtleXZhbFsnZW5kX2hvdXInXSk7CgkJCQl9CgkJCX0KCQkJaWYoJGVuZEhvdXIgPCAkc3RhcnRIb3VyKQoJCQl7CgkJCQkkZW5kSG91ciA9ICRzdGFydEhvdXI7CgkJCX0KCQkJJHN0YXJ0TWludXRlID0gMDsKCQkJaWYoaXNzZXQoJGtleXZhbFsnc3RhcnRfbWludXRlJ10pICYmICRrZXl2YWxbJ3N0YXJ0X21pbnV0ZSddID4gMCAmJiAka2V5dmFsWydzdGFydF9taW51dGUnXSA8PSA1OSkKCQkJewoJCQkJJHN0YXJ0TWludXRlID0gdHJpbSgka2V5dmFsWydzdGFydF9taW51dGUnXSk7CgkJCX0KCQkJJGVuZE1pbnV0ZSA9IDU5OwoJCQlpZihpc3NldCgka2V5dmFsWydlbmRfbWludXRlJ10pICYmICRrZXl2YWxbJ2VuZF9taW51dGUnXSA+PSAwICYmICRrZXl2YWxbJ2VuZF9taW51dGUnXSA8IDU5KQoJCQl7CgkJCQkkZW5kTWludXRlID0gdHJpbSgka2V5dmFsWydlbmRfbWludXRlJ10pOwoJCQl9CgkJCWlmKCRlbmRNaW51dGUgPCAkc3RhcnRNaW51dGUpCgkJCXsKCQkJCSRlbmRNaW51dGUgPSAkc3RhcnRNaW51dGU7CgkJCX0KCQkJJHN0YXJ0U2Vjb25kID0gMDsKCQkJaWYoaXNzZXQoJGtleXZhbFsnc3RhcnRfc2Vjb25kJ10pICYmICRrZXl2YWxbJ3N0YXJ0X3NlY29uZCddID4gMCAmJiAka2V5dmFsWydzdGFydF9zZWNvbmQnXSA8PSA1OSkKCQkJewoJCQkJJHN0YXJ0U2Vjb25kID0gdHJpbSgka2V5dmFsWydzdGFydF9zZWNvbmQnXSk7CgkJCX0KCQkJJGVuZFNlY29uZCA9IDU5OwoJCQlpZihpc3NldCgka2V5dmFsWydlbmRfc2Vjb25kJ10pICYmICRrZXl2YWxbJ2VuZF9zZWNvbmQnXSA+PSAwICYmICRrZXl2YWxbJ2VuZF9zZWNvbmQnXSA8IDU5KQoJCQl7CgkJCQkkZW5kU2Vjb25kID0gdHJpbSgka2V5dmFsWydlbmRfc2Vjb25kJ10pOwoJCQl9CgkJCWlmKCRlbmRTZWNvbmQgPCAkc3RhcnRTZWNvbmQpCgkJCXsKCQkJCSRlbmRTZWNvbmQgPSAkc3RhcnRTZWNvbmQ7CgkJCX0KCQkJJHN0ZXBIb3VycyA9IDE7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3N0ZXBfaG91cnMnXSkgJiYgJGtleXZhbFsnc3RlcF9ob3VycyddID4gMCAmJiAka2V5dmFsWydzdGVwX2hvdXJzJ10gPD0gKCRlbmRIb3VyLSRzdGFydEhvdXIpKQoJCQl7CgkJCQkkc3RlcEhvdXJzID0gdHJpbSgka2V5dmFsWydzdGVwX2hvdXJzJ10pOwoJCQl9CgkJCWVsc2UgaWYoaXNzZXQoJGtleXZhbFsnc3RlcF9ob3VycyddKSAmJiAka2V5dmFsWydzdGVwX2hvdXJzJ10gPiAwICYmICRrZXl2YWxbJ3N0ZXBfaG91cnMnXSA+PSAoJGVuZEhvdXItJHN0YXJ0SG91cikpCgkJCXsKCQkJCSRzdGVwSG91cnMgPSAkZW5kSG91ci0kc3RhcnRIb3VyOwoJCQl9CgkJCSRzdGVwTWludXRlcyA9IDEwOwoJCQlpZihpc3NldCgka2V5dmFsWydzdGVwX21pbnV0ZXMnXSkgJiYgJGtleXZhbFsnc3RlcF9taW51dGVzJ10gPiAwICYmICRrZXl2YWxbJ3N0ZXBfbWludXRlcyddIDw9ICgkZW5kTWludXRlLSRzdGFydE1pbnV0ZSkpCgkJCXsKCQkJCSRzdGVwTWludXRlcyA9IHRyaW0oJGtleXZhbFsnc3RlcF9taW51dGVzJ10pOwoJCQl9CgkJCWVsc2UgaWYoaXNzZXQoJGtleXZhbFsnc3RlcF9taW51dGVzJ10pICYmICRrZXl2YWxbJ3N0ZXBfbWludXRlcyddID4gMCAmJiAka2V5dmFsWydzdGVwX21pbnV0ZXMnXSA+PSAoJGVuZE1pbnV0ZS0kc3RhcnRNaW51dGUpKQoJCQl7CgkJCQkkc3RlcE1pbnV0ZXMgPSAkZW5kTWludXRlLSRzdGFydE1pbnV0ZTsKCQkJfQoJCQkkc3RlcFNlY29uZHMgPSAxOwoJCQlpZihpc3NldCgka2V5dmFsWydzdGVwX3NlY29uZHMnXSkgJiYgJGtleXZhbFsnc3RlcF9zZWNvbmRzJ10gPiAwICYmICRrZXl2YWxbJ3N0ZXBfc2Vjb25kcyddIDw9ICgkZW5kU2Vjb25kLSRzdGFydFNlY29uZHMpKQoJCQl7CgkJCQkkc3RlcFNlY29uZHMgPSB0cmltKCRrZXl2YWxbJ3N0ZXBfc2Vjb25kcyddKTsKCQkJfQoJCQllbHNlIGlmKGlzc2V0KCRrZXl2YWxbJ3N0ZXBfc2Vjb25kcyddKSAmJiAka2V5dmFsWydzdGVwX3NlY29uZHMnXSA+IDAgJiYgJGtleXZhbFsnc3RlcF9zZWNvbmRzJ10gPj0gKCRlbmRTZWNvbmQtJHN0YXJ0U2Vjb25kcykpCgkJCXsKCQkJCSRzdGVwU2Vjb25kcyA9ICRlbmRTZWNvbmQtJHN0YXJ0U2Vjb25kczsKCQkJfQoJCQkkYmxvY2tJbmZvWydzaG93MjRoJ10gICAgICA9ICRzaG93MjRoOwoJCQkkYmxvY2tJbmZvWydtb2RlJ10gICAgICAgICA9ICRtb2RlOwoJCQkkYmxvY2tJbmZvWydzdGFydF9ob3VyJ10gICA9ICRzdGFydEhvdXI7CgkJCSRibG9ja0luZm9bJ2VuZF9ob3VyJ10gICAgID0gJGVuZEhvdXI7CgkJCSRibG9ja0luZm9bJ3N0YXJ0X21pbnV0ZSddID0gJHN0YXJ0TWludXRlOwoJCQkkYmxvY2tJbmZvWydlbmRfbWludXRlJ10gICA9ICRlbmRNaW51dGU7CgkJCSRibG9ja0luZm9bJ3N0YXJ0X3NlY29uZCddID0gJHN0YXJ0U2Vjb25kOwoJCQkkYmxvY2tJbmZvWydlbmRfc2Vjb25kJ10gICA9ICRlbmRTZWNvbmQ7CgkJCSRibG9ja0luZm9bJ3N0ZXBfaG91cnMnXSAgID0gJHN0ZXBIb3VyczsKCQkJJGJsb2NrSW5mb1snc3RlcF9taW51dGVzJ10gPSAkc3RlcE1pbnV0ZXM7CgkJCSRibG9ja0luZm9bJ3N0ZXBfc2Vjb25kcyddID0gJHN0ZXBTZWNvbmRzOwoJCQkkYmxvY2tJbmZvWydzaG93X2Nsb2NrJ10gICA9ICRzaG93Q2xvY2s7CgkJfQoJCWVsc2UgaWYoJGJsb2NrSW5mb1sndHlwZSddID09ICdkcm9wZG93bicgfHwgJGJsb2NrSW5mb1sndHlwZSddID09ICdzZWxlY3RfbXVsdGlwbGUnKQoJCXsKCQkJaWYoJGJsb2NrSW5mb1sndHlwZSddID09ICdzZWxlY3RfbXVsdGlwbGUnKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydzb3J0YWJsZSddID0gZmFsc2U7CgkJCQkjIGRlcHJlY2F0ZWQKCQkJCWlmKGlzc2V0KCRrZXl2YWxbJ3NvcnRhYmxlX2l0ZW1zJ10pICYmICR0aGlzLT5Jc1RydWUoJGtleXZhbFsnc29ydGFibGVfaXRlbXMnXSkpCgkJCQl7CgkJCQkJJGJsb2NrSW5mb1snc29ydGFibGUnXSA9IHRydWU7CgkJCQl9CgkJCQlpZihpc3NldCgka2V5dmFsWydzb3J0YWJsZSddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ3NvcnRhYmxlJ10pKQoJCQkJewoJCQkJCSRibG9ja0luZm9bJ3NvcnRhYmxlJ10gPSB0cnVlOwoJCQkJfQoJCQl9CgkJCQoJCQkkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSA9ICd8JzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnZGVsaW1pdGVyJ10pICYmICRrZXl2YWxbJ2RlbGltaXRlciddICE9ICcnKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSA9ICRrZXl2YWxbJ2RlbGltaXRlciddOwoJCQl9CgkJCSRibG9ja0luZm9bJ2l0ZW1zJ10gPSAnJzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnaXRlbXMnXSkgJiYgJGtleXZhbFsnaXRlbXMnXSAhPSAnJykKCQkJewoJCQkJJGJsb2NrSW5mb1snaXRlbXMnXSA9IHRyaW0oJGtleXZhbFsnaXRlbXMnXSk7CgkJCX0KCQkJJGJsb2NrSW5mb1sndmFsdWVzJ10gPSAnJzsKCQkJaWYoaXNzZXQoJGtleXZhbFsndmFsdWVzJ10pICYmICRrZXl2YWxbJ3ZhbHVlcyddICE9ICcnKQoJCQl7CgkJCQkkYmxvY2tJbmZvWyd2YWx1ZXMnXSA9IHRyaW0oJGtleXZhbFsndmFsdWVzJ10pOwoJCQl9CgkJfQoJCWVsc2UgaWYoJGJsb2NrSW5mb1sndHlwZSddID09ICdtb2R1bGUnKQoJCXsKCQkJJGJsb2NrSW5mb1snbW9kdWxlJ10gPSAnJzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnbW9kdWxlJ10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydtb2R1bGUnXSA9IHRyaW0oJGtleXZhbFsnbW9kdWxlJ10pOwoJCQl9CgkJCSRibG9ja0luZm9bJ3BhcmFtcyddID0gJGtleXZhbDsKCQl9CgkJZWxzZSBpZigkYmxvY2tJbmZvWyd0eXBlJ10gPT0gJ2ltYWdlJykKCQl7CgkJCSRibG9ja0luZm9bJ3ByZWZpeCddID0gJ3RodW1iXyc7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3ByZWZpeCddKSkgewoJCQkJJGJsb2NrSW5mb1sncHJlZml4J10gPSAka2V5dmFsWydwcmVmaXgnXTsKCQkJfQoJCQkkYmxvY2tJbmZvWydleGNsdWRlJ10gPSB0cnVlOwoJCQlpZihpc3NldCgka2V5dmFsWydleGNsdWRlJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRrZXl2YWxbJ2V4Y2x1ZGUnXSkpIHsKCQkJCSRibG9ja0luZm9bJ2V4Y2x1ZGUnXSA9IGZhbHNlOwoJCQl9CgkJCSRibG9ja0luZm9bJ2RpciddID0gJyc7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ2RpciddKSkgewoJCQkJJGJsb2NrSW5mb1snZGlyJ10gPSAka2V5dmFsWydkaXInXTsKCQkJfQoJCX0KCQllbHNlIGlmKCRibG9ja0luZm9bJ3R5cGUnXSA9PSAnbXVsdGlfaW5wdXQnKQoJCXsKCQkJJGlucHV0cyA9ICcnOwoJCQlpZihpc3NldCgka2V5dmFsWydpbnB1dHMnXSkpCgkJCXsKCQkJCSRpbnB1dHMgPSB0cmltKCRrZXl2YWxbJ2lucHV0cyddKTsKCQkJfQoJCQkKCQkJJHZhbHVlRGVsaW0gPSAnPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+JzsKCQkJaWYoaXNzZXQoJGtleXZhbFsndmFsdWVfZGVsaW1pdGVyJ10pKQoJCQl7CgkJCQkkdmFsdWVEZWxpbSA9IHRyaW0oJGtleXZhbFsndmFsdWVfZGVsaW1pdGVyJ10pOwoJCQl9CgkJCQoJCQkkaW5wdXREZWxpbSA9ICc8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT4nOwoJCQlpZihpc3NldCgka2V5dmFsWydpbnB1dF9kZWxpbWl0ZXInXSkpCgkJCXsKCQkJCSRpbnB1dERlbGltID0gdHJpbSgka2V5dmFsWydpbnB1dF9kZWxpbWl0ZXInXSk7CgkJCX0KCQkJJGJsb2NrSW5mb1snaW5wdXRzJ10gICAgICAgICAgPSAkaW5wdXRzOwoJCQkkYmxvY2tJbmZvWyd2YWx1ZV9kZWxpbWl0ZXInXSA9ICR2YWx1ZURlbGltOwoJCQkkYmxvY2tJbmZvWydpbnB1dF9kZWxpbWl0ZXInXSA9ICRpbnB1dERlbGltOwoJCX0KCQlyZXR1cm4gYXJyYXlfbWVyZ2UoJGtleXZhbCwkYmxvY2tJbmZvKTsKCX0KCQoJZnVuY3Rpb24gcGFyc2VfY29udGVudF9ibG9ja3MoKQoJewoJCWlmKCR0aGlzLT5fY29udGVudEJsb2Nrc0xvYWRlZCkKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQkKCQlpZigkdGhpcy0+bVR5cGUgIT0gJ2NvbnRlbnQyJyAmJiAkdGhpcy0+bVR5cGUgIT0gJ2NvbnRlbnQnKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCQoJCSR0aGlzLT5fY29udGVudEJsb2NrcyA9IGFycmF5KCk7CgkJJEFkdmFuY2VkQ29udGVudCAgICA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQlnbG9iYWwgJGdDbXMsJENNU19BRE1JTl9QQUdFOwoJCWlmKGlzc2V0KCRDTVNfQURNSU5fUEFHRSkgJiYgJENNU19BRE1JTl9QQUdFID09IDEpCgkJewoJCQkkdGhpcy0+X3RhYklkcyAgICAgID0gYXJyYXkoKTsKCQkJJHRoaXMtPl9kYXRlQmxvY2tzICA9IGFycmF5KCk7CgkJCSR0aGlzLT5fYmxvY2tUYWJzICAgPSBhcnJheSgpOwoJCQkkdGhpcy0+X2Jsb2NrR3JvdXBzID0gYXJyYXkoKTsKCQkJIyR0aGlzLT5fbXVsdGlJbnB1dHMgPSBhcnJheSgpOwoJCQkKCQkJJHRoaXMtPl9wYWdlVGFicyA9IGFycmF5KAoJCQkJJ21haW4nID0+IGFycmF5KAoJCQkJCSd0YWJfaWQnICAgICAgICAgPT4gJ21haW4nLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gbGFuZygnbWFpbicpLAoJCQkJCSdibG9ja190YWJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYmxvY2tfZ3JvdXBzJyAgID0+IGFycmF5KCksCgkJCQkJJ2NvbnRlbnRfYmxvY2tzJyA9PiBhcnJheSgpKSk7CgkJCSR0aGlzLT5fdGFiSWRzW10gPSAnbWFpbic7CgkJCQoJCQlpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWxsIENvbnRlbnQnKSApCgkJCXsKCQkJCSR0aGlzLT5fcGFnZVRhYnNbJ29wdGlvbnMnXSA9IGFycmF5KAoJCQkJCSd0YWJfaWQnICAgICAgICAgPT4gJ29wdGlvbnMnLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gbGFuZygnb3B0aW9ucycpLAoJCQkJCSdibG9ja190YWJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYmxvY2tfZ3JvdXBzJyAgID0+IGFycmF5KCksCgkJCQkJJ2NvbnRlbnRfYmxvY2tzJyA9PiBhcnJheSgpKTsKCQkJCSR0aGlzLT5fdGFiSWRzW10gPSAnb3B0aW9ucyc7CgkJCX0KCQkJCgkJCWlmKCBjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpICYmICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnLDEpICkKCQkJewoJCQkJJHRoaXMtPl9wYWdlVGFic1snQWR2YW5jZWRDb250ZW50J10gPSBhcnJheSgKCQkJCQkndGFiX2lkJyAgICAgICAgID0+ICdBZHZhbmNlZENvbnRlbnQnLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnKSwKCQkJCQknYmxvY2tfdGFicycgICAgID0+IGFycmF5KCksCgkJCQkJJ2Jsb2NrX2dyb3VwcycgICA9PiBhcnJheSgpLAoJCQkJCSdjb250ZW50X2Jsb2NrcycgPT4gYXJyYXkoKSk7CgkJCQkkdGhpcy0+X3RhYklkc1tdID0gJ0FkdmFuY2VkQ29udGVudCc7CgkJCX0KCQl9CgkJZWxzZSBpZighJHRoaXMtPkNoZWNrRnJvbnRlbmRQYWdlQWNjZXNzKCkpCgkJewoJCQkkZ0Ntcy0+R2V0U21hcnR5KCktPmNsZWFyX2FsbF9jYWNoZSgpOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJCgkJJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsKCQkkdGVtcGxhdGVvcHMgPSYgJGdDbXMtPkdldFRlbXBsYXRlT3BlcmF0aW9ucygpOwoJCQoJCWlmICgkdGhpcy0+bVRlbXBsYXRlSWQgJiYgJHRoaXMtPm1UZW1wbGF0ZUlkID4gLTEpCgkJewoJCQkkdGVtcGxhdGUgPSAkdGVtcGxhdGVvcHMtPkxvYWRUZW1wbGF0ZUJ5SUQoJHRoaXMtPm1UZW1wbGF0ZUlkKTsKCQkJJHRoaXMtPl9zdHlsZXNoZWV0ID0gJy4uL3N0eWxlc2hlZXQucGhwP3RlbXBsYXRlaWQ9Jy4kdGhpcy0+bVRlbXBsYXRlSWQ7CgkJfQoJCWVsc2UKCQl7CgkJCSR0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZW9wcy0+TG9hZERlZmF1bHRUZW1wbGF0ZSgpOwoJCX0KCQkKCQlpZigkdGVtcGxhdGUgIT09IGZhbHNlKQoJCXsKCQkJIyByZWFkIGNvbnRlbnQgYmxvY2tzCgkJCSMgdGhpcyB3aWxsIHNlYXJjaCBmb3Ige2NvbnRlbnR9IHtjb250ZW50X2ltYWdlfSB7Y29udGVudF9tb2R1bGV9IGFuZCB7QWR2YW5jZWRDb250ZW50fSB3aXRoIG9yIHdpdGhvdXQgcGFyYW1zIChjYXNlIGluc2Vuc2l0aXZlKQoJCQkkcGF0dGVybiA9ICcveygoQWR2YW5jZWRDb250ZW50fGNvbnRlbnQoX2ltYWdlfF9tb2R1bGUpPykoKD8hXylbXn1dKikpfS9pJzsKCQkJCgkJCSRtYXRjaGVzID0gYXJyYXkoKTsKCQkJIyBnZXQgYWxsIHRoZSB0YWdzCgkJCSRyZXN1bHQgPSBwcmVnX21hdGNoX2FsbCgkcGF0dGVybiwgJHRlbXBsYXRlLT5jb250ZW50LCAkbWF0Y2hlcyk7CgkJCQoJCQlpZiAoJHJlc3VsdCAmJiBjb3VudCgkbWF0Y2hlc1sxXSkgPiAwKQoJCQl7CgkJCQkKCQkJCSMgZ2V0IHRoZSBiYXNpYyBjb250ZW50IHByb3BlcnRpZXMKCQkJCSRiYXNpY0F0dHJpYnMgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCggJHRoaXMtPl9hdHRyaWJ1dGVzIGFzICRvbmVBdHRyaWIgKQoJCQkJewoJCQkJCSRiYXNpY0F0dHJpYnNbXSA9ICRvbmVBdHRyaWJbMF07CgkJCQl9CgkJCQkKCQkJCSRqID0gMDsKCQkJCSMgZm9yZWFjaCB0YWcKCQkJCWZvcmVhY2ggKCRtYXRjaGVzWzFdIGFzICRrZXk9PiR3aG9sZXRhZykKCQkJCXsKCQkJCQkkaisrOwoJCQkJCQoJCQkJCWlmKCEkYmxvY2tJbmZvID0gJHRoaXMtPl9nZXRfYmxvY2tfaW5mbygkd2hvbGV0YWcpKQoJCQkJCXsKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJCQoJCQkJCSMgYmxvY2sgPSBhY3RpdmU/CgkJCQkJaWYoaXNzZXQoJGJsb2NrSW5mb1snYWN0aXZlJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRibG9ja0luZm9bJ2FjdGl2ZSddKSkKCQkJCQl7CgkJCQkJCWNvbnRpbnVlOyAjIGRvbid0IHByb2Nlc3MgaW5hY3RpdmUgYmxvY2tzCgkJCQkJfQoJCQkJCQoJCQkJCWlmKGlzc2V0KCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJbmZvWydpZCddXSkpCgkJCQkJewoJCQkJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSW5mb1snaWQnXV1bJ211bHRpcGxlJ10gPSB0cnVlOwoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJCgkJCQkJIyBpZiB0aGlzIGJsb2NrIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSBhZnRlciBwYWdlIGhhcyBiZWVuIGNyZWF0ZWQKCQkJCQlpZighaW5fYXJyYXkoJGJsb2NrSW5mb1snaWQnXSwkdGhpcy0+bVByb3BlcnRpZXMtPm1Qcm9wZXJ0eU5hbWVzKSkKCQkJCQl7CgkJCQkJCSRibG9ja0luZm9bJ25ld19ibG9jayddID0gdHJ1ZTsKCQkJCQl9CgkJCQkJCgkJCQkJJHBhZ2VUYWIgPSBwcmVnX3JlcGxhY2UoJy8tKy8nLCdfJyxtdW5nZV9zdHJpbmdfdG9fdXJsKHN0cnRvbG93ZXIodHJpbSgkYmxvY2tJbmZvWydwYWdlX3RhYiddKSkpKTsKCQkJCQlpZighaXNzZXQoJHRoaXMtPl9wYWdlVGFic1skcGFnZVRhYl0pKQoJCQkJCXsKCQkJCQkJJHRoaXMtPl9wYWdlVGFic1skcGFnZVRhYl1bJ3RhYl9pZCddICAgICAgID0gJHBhZ2VUYWI7CgkJCQkJCSR0aGlzLT5fcGFnZVRhYnNbJHBhZ2VUYWJdWyd0YWJfbmFtZSddICAgICA9ICRibG9ja0luZm9bJ3BhZ2VfdGFiJ107CgkJCQkJCSR0aGlzLT5fcGFnZVRhYnNbJHBhZ2VUYWJdWydibG9ja190YWJzJ10gICA9IGFycmF5KCk7CgkJCQkJCSR0aGlzLT5fcGFnZVRhYnNbJHBhZ2VUYWJdWydibG9ja19ncm91cHMnXSA9IGFycmF5KCk7CgkJCQkJCSRibG9ja0luZm9bJ3BhZ2VfdGFiJ10gPSAkcGFnZVRhYjsKCQkJCQl9CgkJCQkJJHRoaXMtPl9wYWdlVGFic1skcGFnZVRhYl1bJ2NvbnRlbnRfYmxvY2tzJ11bJGJsb2NrSW5mb1snaWQnXV0gPSAkYmxvY2tJbmZvWydpZCddOwoJCQkJCQoJCQkJCSRibG9ja1RhYiA9ICcnOwoJCQkJCWlmKCRibG9ja0luZm9bJ2Jsb2NrX3RhYiddICE9ICcnKQoJCQkJCXsKCQkJCQkJJGJsb2NrVGFiID0gJHBhZ2VUYWIgLiAnXycgLiBwcmVnX3JlcGxhY2UoJy8tKy8nLCdfJyxtdW5nZV9zdHJpbmdfdG9fdXJsKHN0cnRvbG93ZXIodHJpbSgkYmxvY2tJbmZvWydibG9ja190YWInXSkpKSk7CgkJCQkJCWlmKCFpc3NldCgkdGhpcy0+X2Jsb2NrVGFic1skYmxvY2tUYWJdKSkKCQkJCQkJewoJCQkJCQkJJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXVsndGFiX2lkJ10gICAgICAgPSAkYmxvY2tUYWI7CgkJCQkJCQkkdGhpcy0+X2Jsb2NrVGFic1skYmxvY2tUYWJdWyd0YWJfbmFtZSddICAgICA9ICRibG9ja0luZm9bJ2Jsb2NrX3RhYiddOwoJCQkJCQkJJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXVsnYmxvY2tfZ3JvdXBzJ10gPSBhcnJheSgpOwoJCQkJCQl9CgkJCQkJCSR0aGlzLT5fYmxvY2tUYWJzWyRibG9ja1RhYl1bJ2NvbnRlbnRfYmxvY2tzJ11bJGJsb2NrSW5mb1snaWQnXV0gPSAkYmxvY2tJbmZvWydpZCddOwoJCQkJCQkkdGhpcy0+X3BhZ2VUYWJzWyRwYWdlVGFiXVsnYmxvY2tfdGFicyddWyRibG9ja1RhYl0gICAgICAgICAgICAgID0gJGJsb2NrVGFiOwoJCQkJCQkkYmxvY2tJbmZvWydibG9ja190YWInXSA9ICRibG9ja1RhYjsKCQkJCQl9CgkJCQkJCgkJCQkJJGJsb2NrR3JvdXAgPSAnJzsKCQkJCQlpZigkYmxvY2tJbmZvWydibG9ja19ncm91cCddICE9ICcnKQoJCQkJCXsKCQkJCQkJJGJsb2NrR3JvdXAgPSAoJGJsb2NrVGFiPyRibG9ja1RhYjokcGFnZVRhYikgLiAnXycgLiBwcmVnX3JlcGxhY2UoJy8tKy8nLCdfJyxtdW5nZV9zdHJpbmdfdG9fdXJsKHN0cnRvbG93ZXIodHJpbSgkYmxvY2tJbmZvWydibG9ja19ncm91cCddKSkpKTsKCQkJCQkJaWYoIWlzc2V0KCR0aGlzLT5fYmxvY2tHcm91cHNbJGJsb2NrR3JvdXBdKSkKCQkJCQkJewoJCQkJCQkJJHRoaXMtPl9ibG9ja0dyb3Vwc1skYmxvY2tHcm91cF1bJ2dyb3VwX2lkJ10gICA9ICRibG9ja0dyb3VwOwoJCQkJCQkJJHRoaXMtPl9ibG9ja0dyb3Vwc1skYmxvY2tHcm91cF1bJ2dyb3VwX25hbWUnXSA9ICRibG9ja0luZm9bJ2Jsb2NrX2dyb3VwJ107CgkJCQkJCQkkdGhpcy0+X3BhZ2VUYWJzWyRwYWdlVGFiXVsnYmxvY2tfZ3JvdXBzJ11bJGJsb2NrR3JvdXBdID0gJGJsb2NrR3JvdXA7CgkJCQkJCX0KCQkJCQkJJHRoaXMtPl9ibG9ja0dyb3Vwc1skYmxvY2tHcm91cF1bJ2NvbnRlbnRfYmxvY2tzJ11bJGJsb2NrSW5mb1snaWQnXV0gPSAkYmxvY2tJbmZvWydpZCddOwoJCQkJCQl1bnNldCgkdGhpcy0+X2Jsb2NrVGFic1skYmxvY2tUYWJdWydjb250ZW50X2Jsb2NrcyddWyRibG9ja0luZm9bJ2lkJ11dKTsKCQkJCQkJaWYoJGJsb2NrVGFiKQoJCQkJCQl7CgkJCQkJCQkkdGhpcy0+X2Jsb2NrVGFic1skYmxvY2tUYWJdWydibG9ja19ncm91cHMnXVskYmxvY2tHcm91cF0gPSAkYmxvY2tHcm91cDsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCXVuc2V0KCR0aGlzLT5fYmxvY2tUYWJzWyRibG9ja1RhYl1bJ2Jsb2NrX2dyb3VwcyddWyRibG9ja0dyb3VwXSk7CgkJCQkJCX0KCQkJCQkJJGJsb2NrSW5mb1snYmxvY2tfZ3JvdXAnXSA9ICRibG9ja0dyb3VwOwoJCQkJCX0KCQkJCQkKCQkJCQkjIHRoaXMgd2lsbCBjcmVhdGUgYW4gaW52YWxpZCBibG9jayB0eXBlIHRvIHByaW50IG91dCBhCgkJCQkJIyBtZXNzYWdlIHdoZW4gdXNpbmcgYSBiYXNpYyBjb250ZW50IHByb3BlcnR5IGFzIGJsb2NrIG5hbWUKCQkJCQlpZihpbl9hcnJheSgkYmxvY2tJbmZvWydpZCddLCAkYmFzaWNBdHRyaWJzKQoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJGJsb2NrSW5mb1snaWQnXSAuICdfZmV1X2FjdGlvbicKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICRibG9ja0luZm9bJ2lkJ10gLiAnX2ZldV9hY3Rpb25bXScKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICRibG9ja0luZm9bJ2lkJ10gLiAnX2ZldV9hY2Nlc3MnCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAkYmxvY2tJbmZvWydpZCddIC4gJ19mZXVfYWNjZXNzW10nCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAnQWR2YW5jZWRDb250ZW50U3RhcnREYXRlJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJ0FkdmFuY2VkQ29udGVudEVuZERhdGUnCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAnQWR2YW5jZWRDb250ZW50U3RhcnRUaW1lJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJ0FkdmFuY2VkQ29udGVudEVuZFRpbWUnCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAnc3RhcnRfZGF0ZScKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICdlbmRfZGF0ZScKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICRibG9ja0luZm9bJ2lkJ10gLiAnX0FkdmFuY2VkQ29udGVudFRpbWUnCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAkYmxvY2tJbmZvWydpZCddIC4gJ19BZHZhbmNlZENvbnRlbnREYXRlJykKCQkJCQl7CgkJCQkJCSRibG9ja0luZm9bJ2lkJ10gPSBtZDUoJGJsb2NrSW5mb1snaWQnXSAuICRqKTsKCQkJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0luZm9bJ2lkJ11dID0gJGJsb2NrSW5mbzsKCQkJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0luZm9bJ2lkJ11dWydibG9ja190eXBlJ10gICAgPSAnJzsKCQkJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0luZm9bJ2lkJ11dWydkZWZhdWx0J10gPSAkdGhpcy0+bGFuZygnZXJyb3JfYmFzaWNhdHRyaWInLCAkYmxvY2tJbmZvWyduYW1lJ10pOwoJCQkJCQkKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJCQoJCQkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJbmZvWydpZCddXSA9ICRibG9ja0luZm87CgkJCQkJJHRoaXMtPkFkZEV4dHJhUHJvcGVydHkoJGJsb2NrSW5mb1snaWQnXSk7CgkJCQkJCgkJCQkJaWYoJGJsb2NrSW5mb1snYmxvY2tfdHlwZSddID09ICdtdWx0aV9pbnB1dCcgJiYgJGJsb2NrSW5mb1snaW5wdXRzJ10pCgkJCQkJewoJCQkJCQkjIGdldCBtdWx0aSBpbnB1dHMKCQkJCQkJJG11bHRpX2lucHV0X2lkcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRibG9ja0luZm9bJ2lucHV0cyddKSk7CgkJCQkJCWZvcmVhY2goJG11bHRpX2lucHV0X2lkcyBhcyAkazE9PiRtdWx0aV9pbnB1dF9pZCkKCQkJCQkJewoJCQkJCQkJaWYoIWlzc2V0KCR0aGlzLT5fbXVsdGlJbnB1dHNbJG11bHRpX2lucHV0X2lkXSkpCgkJCQkJCQl7CgkJCQkJCQkJJHRoaXMtPl9tdWx0aUlucHV0cyA9IGFycmF5X21lcmdlKCR0aGlzLT5fbXVsdGlJbnB1dHMsICRBZHZhbmNlZENvbnRlbnQtPkdldE11bHRpSW5wdXRGdWxsKCRtdWx0aV9pbnB1dF9pZHMpKTsKCQkJCQkJCQlpZighaXNzZXQoJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdKSkKCQkJCQkJCQl7CgkJCQkJCQkJCWNvbnRpbnVlOwoJCQkJCQkJCX0KCQkJCQkJCQkjJHRoaXMtPl9tdWx0aUlucHV0c1skaW5wdXRfaWRdWyd0ZW1wbGF0ZSddID0gJEFkdmFuY2VkQ29udGVudC0+R2V0VGVtcGxhdGUoJHRoaXMtPl9tdWx0aUlucHV0c1skaW5wdXRfaWRdWyd0cGxfbmFtZSddKTsKCQkJCQkJCQkkcGF0dGVybiA9ICcveygoQWR2YW5jZWRDb250ZW50fGNvbnRlbnQoX2ltYWdlfF9tb2R1bGUpPykoKD8hXylbXn1dKikpfS9pJzsKCQkJCQkJCQkkbWF0Y2hlcyA9IGFycmF5KCk7CgkJCQkJCQkJIyBnZXQgYWxsIHRoZSB0YWdzCgkJCQkJCQkJJHJlc3VsdCA9IHByZWdfbWF0Y2hfYWxsKCRwYXR0ZXJuLCAkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ2lucHV0X2ZpZWxkcyddLCAkbWF0Y2hlcyk7CgkJCQkJCQkJCgkJCQkJCQkJaWYgKCRyZXN1bHQgJiYgY291bnQoJG1hdGNoZXNbMV0pID4gMCkKCQkJCQkJCQl7CgkJCQkJCQkJCSMgZm9yZWFjaCB0YWcKCQkJCQkJCQkJZm9yZWFjaCAoJG1hdGNoZXNbMV0gYXMgJGsyPT4kd2hvbGV0YWcpCgkJCQkJCQkJCXsKCQkJCQkJCQkJCWlmKCEkaW5wdXRJbmZvID0gJHRoaXMtPl9nZXRfYmxvY2tfaW5mbygkd2hvbGV0YWcpKQoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCWNvbnRpbnVlOwoJCQkJCQkJCQkJfQoJCQkJCQkJCQkJaWYoJGlucHV0SW5mb1snYmxvY2tfdHlwZSddID09ICdtdWx0aV9pbnB1dCcpCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJY29udGludWU7ICMgVG9EbzogZGlzcGxheSBtZXNzYWdlPwoJCQkJCQkJCQkJfQoJCQkJCQkJCQkJIyRfaW5wdXRfaWQgPSAkaW5wdXRJbmZvWydpZCddOwoJCQkJCQkJCQkJIyRpbnB1dEluZm9bJ2lkJ10gPSAnbXVsdGlJbnB1dC0nIC4gJGJsb2NrSW5mb1snaWQnXSAuICctJyAuICRtdWx0aV9pbnB1dF9pZCAuICctJyAuICRrMSAuICctJyAuICRpbnB1dEluZm9bJ2lkJ107CgkJCQkJCQkJCQkkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ2VsZW1lbnRzJ11bJGsyXSA9ICRpbnB1dEluZm87CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJIyBmb3JjZSBhIGxvYWQKCQkJJHRoaXMtPm1Qcm9wZXJ0aWVzLT5Mb2FkKCR0aGlzLT5tSWQpOwoJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NMb2FkZWQgPSB0cnVlOwoJCX0KCQlyZXR1cm4gJHRoaXMtPl9jb250ZW50QmxvY2tzTG9hZGVkOwoJfQoJCglmdW5jdGlvbiBkaXNwbGF5X2NvbnRlbnRfYmxvY2soJGJsb2NrTmFtZSwmJGJsb2NrSW5mbywkdmFsdWUsJGFkZGluZyA9IGZhbHNlKQoJewoJCWlmKG1ldGhvZF9leGlzdHMoJHRoaXMsJ19kaXNwbGF5XycuJGJsb2NrSW5mb1snYmxvY2tfdHlwZSddLidfYmxvY2snKSkKCQl7CgkJCXJldHVybiBjYWxsX3VzZXJfZnVuYyhhcnJheSgkdGhpcywnX2Rpc3BsYXlfJy4kYmxvY2tJbmZvWydibG9ja190eXBlJ10uJ19ibG9jaycpLCAmJGJsb2NrSW5mbywgJHZhbHVlLCAkYWRkaW5nKTsKCQl9Cgl9CgkKCWZ1bmN0aW9uIFNldFByb3BlcnRpZXMoKQoJewoJCXBhcmVudDo6U2V0UHJvcGVydGllcygpOwoJCQoJCSR0aGlzLT5BZGRCYXNlUHJvcGVydHkoJ3RlbXBsYXRlJywgNCwgMCwgJ2ludCcpOwoJCSR0aGlzLT5BZGRCYXNlUHJvcGVydHkoJ3BhZ2VtZXRhZGF0YScsIDIwKTsKCQkKCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdzZWFyY2hhYmxlJywgOCwgMCwgJ2ludCcpOwoJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ3BhZ2VkYXRhJywgMjUpOwoJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ2Rpc2FibGVfd3lzaXd5ZycsIDYwLCAwLCAnaW50Jyk7CgkJCgkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnZmV1X2FjY2VzcycsIDk5KTsKCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdyZWRpcmVjdF9wYWdlJywgMTAwLCAwLCAnaW50Jyk7CgkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgncmVkaXJlY3RfcGFyYW1zJywgMTAxLCAwKTsKCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdldmFsdWF0ZV9zbWFydHknLCAxMDIsIDAsICdpbnQnKTsKCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdmZXVfYWN0aW9uJywgMTAzLCAwLCAnaW50Jyk7CgkJCgkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgndXNlX2V4cGlyZV9kYXRlJywgMTA0LCAwLCAnaW50Jyk7CgkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnc3RhcnRfZGF0ZScsIDEwNSwgMCwgJ2ludCcpOwoJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ2VuZF9kYXRlJywgMTA2LCAwLCAnaW50Jyk7CgkJCgkJJHRoaXMtPm1QcmV2aWV3ID0gdHJ1ZTsKCX0KCQoJZnVuY3Rpb24gUmVhZHlGb3JFZGl0KCkKCXsKCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCX0KCQoJZnVuY3Rpb24gU2hvdygkcGFyYW0gPSAnY29udGVudF9lbicpCgl7CgkJZ2xvYmFsICRnQ21zLCAkQ01TX0FETUlOX1BBR0U7CgkJaWYoIWlzc2V0KCRDTVNfQURNSU5fUEFHRSkgfHwgJENNU19BRE1JTl9QQUdFICE9PSAxKQoJCXsKCQkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnQ6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkJaWYoISR0aGlzLT5DaGVja0Zyb250ZW5kUGFnZUFjY2VzcygpKQoJCQl7CgkJCQkjJGdDbXMtPkdldFNtYXJ0eSgpLT5jbGVhcl9hbGxfY2FjaGUoKTsgIyA/Pz8KCQkJCXJldHVybiAkdGhpcy0+RG9Gcm9udGVuZFBhZ2VBY3Rpb24oKTsKCQkJfQoJCX0KCQkKCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCQkkcGFyYW0gPSBwcmVnX3JlcGxhY2UoJy8tKy8nLCdfJyxtdW5nZV9zdHJpbmdfdG9fdXJsKCRwYXJhbSkpOwoJCQoJCWlmKCFpc3NldCgkQ01TX0FETUlOX1BBR0UpIHx8ICRDTVNfQURNSU5fUEFHRSAhPT0gMSkKCQl7CgkJCWZvcmVhY2goJHRoaXMtPl9jb250ZW50QmxvY2tzIGFzICRibG9ja0luZm8pCgkJCXsKCQkJCWlmKCRmZXVzZXJzID0mIEFkdmFuY2VkQ29udGVudDo6R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKSkKCQkJCXsKCQkJCQlpZigkYmxvY2tJbmZvWydmZXVfYWNjZXNzJ10gJiYgISR0aGlzLT5DaGVja0Zyb250ZW5kQWNjZXNzKCRibG9ja0luZm9bJ2ZldV9hY2Nlc3MnXSkpCgkJCQkJewoJCQkJCQlpZigkYmxvY2tJbmZvWydmZXVfYWN0aW9uJ10gJiYgISR0aGlzLT5fZmV1QWN0aW9uKQoJCQkJCQl7CgkJCQkJCQkkdGhpcy0+X2ZldUFjdGlvbiA9IHRydWU7CgkJCQkJCQkkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkYmxvY2tJbmZvWydpZCddLCRmZXVzZXJzLT5Eb0FjdGlvbignZGVmYXVsdCcsICdjbnRudDAxJywgYXJyYXkoJ2Zvcm0nPT4nbG9naW4nKSwgJHRoaXMtPm1JZCkpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoJGJsb2NrSW5mb1snaWQnXSwnJyk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQlpZigkYmxvY2tJbmZvWydibG9ja190eXBlJ10gPT0gJ2RhdGUnICYmICRibG9ja0luZm9bJ2RhdGVfZm9ybWF0J10gIT0gJycpCgkJCQl7CgkJCQkJJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoJGJsb2NrSW5mb1snaWQnXSxzdHJmdGltZSgkYmxvY2tJbmZvWydkYXRlX2Zvcm1hdCddLCR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRibG9ja0luZm9bJ2lkJ10pKSk7CgkJCQl9CgkJCX0KCQl9CgkJCgkJIyBNTEUgc3VwcG9ydAoJCWlmKCR0aGlzLT5tbGUgJiYgJHRoaXMtPmJsb2NrTGFuZyAhPSAnJykKCQl7CgkJCWlmKCRwYXJhbSA9PSAnY29udGVudF9lbicpCgkJCXsKCQkJCSRwYXJhbSA9ICdjb250ZW50Jy4kdGhpcy0+YmxvY2tMYW5nOwoJCQl9CgkJCWVsc2UgaWYoIWVuZHN3aXRoKCRwYXJhbSwkdGhpcy0+YmxvY2tMYW5nKSkKCQkJewoJCQkJJHBhcmFtIC49ICR0aGlzLT5ibG9ja0xhbmc7CgkJCX0KCQl9CgkJIy0tLQoJCQoJCSRyZXN1bHQgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgkcGFyYW0pOwoJCQoJCSMgTUxFIHN1cHBvcnQKCQlpZigkdGhpcy0+bWxlICYmICR0aGlzLT5ibG9ja0xhbmcgIT0gJycpCgkJewoJCQlpZigkcmVzdWx0ID09ICcnICYmICR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nICE9ICcnICYmICR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nICE9ICR0aGlzLT5ibG9ja0xhbmcpCgkJCXsKCQkJCSRwYXJhbSA9IHN0cl9yZXBsYWNlKCR0aGlzLT5ibG9ja0xhbmcsICR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nLCAkcGFyYW0pOwoJCQkJJHJlc3VsdCA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRwYXJhbSk7CgkJCX0KCQl9CgkJIy0tLQoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJCglmdW5jdGlvbiBUYWJOYW1lcygpCgl7CgkJJHRhYnMgPSBhcnJheShsYW5nKCdtYWluJykpOwoJCWlmKCBjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwgJ01hbmFnZSBBbGwgQ29udGVudCcpICkKCQl7CgkJCSR0YWJzW10gPSBsYW5nKCdvcHRpb25zJyk7CgkJfQoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJaWYoIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJykgJiYgJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgnc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucycsMSkpCgkJewoJCQkkdGFic1tdID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnKTsKCQl9CgkJCgkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7CgkJCgkJZm9yZWFjaCgkdGhpcy0+X3BhZ2VUYWJzIGFzICR0YWIpCgkJewoJCQlpZighaW5fYXJyYXkoJHRhYlsndGFiX25hbWUnXSwgJHRhYnMpKQoJCQl7CgkJCQkkdGFic1tdID0gKCR0YWJbJ3RhYl9pZCddID09ICdvcHRpb25zJyA/IGxhbmcoJ29wdGlvbnMnKSA6ICR0YWJbJ3RhYl9uYW1lJ10pOwoJCQl9CgkJCWlmKCFpbl9hcnJheSgkdGFiWyd0YWJfaWQnXSwgJHRoaXMtPl90YWJJZHMpKQoJCQl7CgkJCQkkdGhpcy0+X3RhYklkc1tdID0gJHRhYlsndGFiX2lkJ107CgkJCX0KCQl9CgkJcmV0dXJuICR0YWJzOwoJfQoJCglmdW5jdGlvbiBGaWxsUGFyYW1zKCRwYXJhbXMpCgl7CgkJaWYoaXNzZXQoJHBhcmFtc1snY29udGVudF90eXBlJ10pKQoJCXsKCQkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkJCgkJCSRwYXJhbWV0ZXJzID0gYXJyYXkoJ3BhZ2VkYXRhJywgJ3NlYXJjaGFibGUnLCAnZGlzYWJsZV93eXNpd3lnJywgJ2ZldV9hY2Nlc3MnLCAncmVkaXJlY3RfcGFnZScsICdyZWRpcmVjdF9wYXJhbXMnLCAnZXZhbHVhdGVfc21hcnR5JywgJ2ZldV9hY3Rpb24nLCAnc3RhcnRfZGF0ZScsICdlbmRfZGF0ZScsICd1c2VfZXhwaXJlX2RhdGUnKTsKCQkJCgkJCSR0aGlzLT5fY29udGVudEJsb2Nrc0xvYWRlZCA9IGZhbHNlOwoJCQkjcGljayB1cCB0aGUgdGVtcGxhdGUgaWQgYmVmb3JlIHdlIGRvIHBhcmFtZXRlcnMKCQkJaWYgKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10pKQoJCQl7CgkJCQkjaWYoJHRoaXMtPm1UZW1wbGF0ZUlkICE9ICRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10pIHsKCQkJCSMJJHRoaXMtPl9jb250ZW50QmxvY2tzTG9hZGVkID0gZmFsc2U7CgkJCQkjfQoJCQkJJHRoaXMtPm1UZW1wbGF0ZUlkID0gJHBhcmFtc1sndGVtcGxhdGVfaWQnXTsKCQkJfQoJCQkjcGljayB1cCB0aGUgY29udGVudCB0eXBlIGJlZm9yZSB3ZSBkbyBwYXJhbWV0ZXJzCgkJCWlmIChpc3NldCgkcGFyYW1zWydjb250ZW50X3R5cGUnXSkpCgkJCXsKCQkJCSNpZigkdGhpcy0+bVR5cGUgIT0gJHBhcmFtc1snY29udGVudF90eXBlJ10pIHsKCQkJCSMJJHRoaXMtPl9jb250ZW50QmxvY2tzTG9hZGVkID0gZmFsc2U7CgkJCQkjfQoJCQkJJHRoaXMtPm1UeXBlID0gJHBhcmFtc1snY29udGVudF90eXBlJ107CgkJCX0KCQkJCgkJCWlmKCR0aGlzLT5tVHlwZSA9PSAnY29udGVudDInIHx8ICR0aGlzLT5tVHlwZSA9PSAnY29udGVudCcpCgkJCXsKCQkJCSMgYWRkIGNvbnRlbnQgYmxvY2tzCgkJCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCQkJCQoJCQkJIyBhZGRlZCBieSBOYU46CgkJCQkkcGFyZW50SWQgPSAtMTsKCQkJCWlmKGlzc2V0KCRwYXJhbXNbJ3BhcmVudF9pZCddKSkKCQkJCXsKCQkJCQkkcGFyZW50SWQgPSAkcGFyYW1zWydwYXJlbnRfaWQnXTsKCQkJCX0KCQkJCQoJCQkJaWYoY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSAmJiBpc3NldCgkcGFyYW1zWydmZXVfYWNjZXNzJ10pKQoJCQkJewoJCQkJCWlmKCFpc19hcnJheSgkcGFyYW1zWydmZXVfYWNjZXNzJ10pKQoJCQkJCXsKCQkJCQkJJGZldUFjY2VzcyA9IGFycmF5KCk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRmZXVBY2Nlc3MgPSAkcGFyYW1zWydmZXVfYWNjZXNzJ107CgkJCQkJfQoJCQkJCQoJCQkJCSMgaWYgcGFnZSBoYXMgbm8gcGFyZW50cyBidXQgd2FudHMgdG8gaW5oZXJpdCAtPiByZW1vdmUgaW5oZXJpdGFuY2UKCQkJCQlpZigkcGFyZW50SWQgPD0gMCAmJiBpbl9hcnJheSgnLTEnLCAkZmV1QWNjZXNzKSkKCQkJCQl7CgkJCQkJCWZvcmVhY2goJGZldUFjY2VzcyBhcyAkaz0+JHYpCgkJCQkJCXsKCQkJCQkJCWlmKCR2ID09ICctMScpCgkJCQkJCQl7CgkJCQkJCQkJdW5zZXQoJGZldUFjY2Vzc1ska10pOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJCQoJCQkJCSMgaWYgdGhlcmUgaXMgc3RpbGwgaW5oZXJpdGFuY2UgLT4gY2hlY2sgaWYgdGhlcmUgYWN0dWFsbHkgaXMgYW55IGZldSBncm91cCBzZWxlY3RlZCBieSBwYXJlbnRzCgkJCQkJJF9mZXVBY2Nlc3MgPSBhcnJheSgpOwoJCQkJCWlmKGluX2FycmF5KCctMScsICRmZXVBY2Nlc3MpKQoJCQkJCXsKCQkJCQkJIyAkX2ZldUFjY2VzcyBjb250YWlucyBhbGwgZmV1IGdyb3VwcyAob2YgY3VycmVudCBwYWdlIGFzIHdlbGwgYXMgb2YgYWxsIHBhcmVudCBwYWdlcykKCQkJCQkJJF9mZXVBY2Nlc3MgPSAkdGhpcy0+SW5oZXJpdFBhcmVudFByb3AoJHBhcmVudElkLCAnZmV1X2FjY2VzcycsICRmZXVBY2Nlc3MpOwoJCQkJCX0KCQkJCQkKCQkJCQkjIGlmIHdlIGhhdmUgc2VsZWN0ZWQgYW55IGZldSBncm91cCAtPiBkaXNhYmxlIGNhY2hpbmcgYW5kIHNlYXJjaAoJCQkJCWlmKGNvdW50KCRfZmV1QWNjZXNzKSB8fCAoY291bnQoJGZldUFjY2VzcykgJiYgIWluX2FycmF5KCctMScsICRmZXVBY2Nlc3MpKSkKCQkJCQl7CgkJCQkJCSRwYXJhbXNbJ2NhY2hhYmxlJ10gICA9IGZhbHNlOwoJCQkJCQkkdGhpcy0+bUNhY2hhYmxlICAgICAgPSBmYWxzZTsKCQkJCQkJJHBhcmFtc1snc2VhcmNoYWJsZSddID0gZmFsc2U7CgkJCQkJfQoJCQkJCQoJCQkJCSRwYXJhbXNbJ2ZldV9hY2Nlc3MnXSA9IGltcGxvZGUoJywnLCAkZmV1QWNjZXNzKTsKCQkJCQkKCQkJCQkkcmVkaXJlY3RQYWdlID0gJyc7CgkJCQkJaWYoaXNzZXQoJHBhcmFtc1sncmVkaXJlY3RfcGFnZSddKSkKCQkJCQl7CgkJCQkJCSRyZWRpcmVjdFBhZ2UgPSAkcGFyYW1zWydyZWRpcmVjdF9wYWdlJ107CgkJCQkJfQoJCQkJCSMgaWYgcGFnZSBoYXMgbm8gcGFyZW50cyBidXQgd2FudHMgdG8gaW5oZXJpdCAtPiByZW1vdmUgaW5oZXJpdGFuY2UKCQkJCQlpZigkcGFyZW50SWQgPD0gMCAmJiAkcmVkaXJlY3RQYWdlID09IC0xKQoJCQkJCXsKCQkJCQkJJHJlZGlyZWN0UGFnZSA9ICcnOwoJCQkJCX0KCQkJCQkKCQkJCQkkZmV1QWN0aW9uID0gJyc7CgkJCQkJaWYoaXNzZXQoJHBhcmFtc1snZmV1X2FjdGlvbiddKSkKCQkJCQl7CgkJCQkJCSRmZXVBY3Rpb24gPSAkcGFyYW1zWydmZXVfYWN0aW9uJ107CgkJCQkJfQoJCQkJCSMgaWYgcGFnZSBoYXMgbm8gcGFyZW50cyBidXQgd2FudHMgdG8gaW5oZXJpdCAtPiByZW1vdmUgaW5oZXJpdGFuY2UKCQkJCQlpZigkcGFyZW50SWQgPD0gMCAmJiAkZmV1QWN0aW9uID09IC0xKQoJCQkJCXsKCQkJCQkJJGZldUFjdGlvbiA9ICcnOwoJCQkJCX0KCQkJCQkkcGFyYW1zWydyZWRpcmVjdF9wYWdlJ10gPSAkcmVkaXJlY3RQYWdlOwoJCQkJCSRwYXJhbXNbJ2ZldV9hY3Rpb24nXSAgICA9ICRmZXVBY3Rpb247CgkJCQl9CgkJCQkKCQkJCSMgZG8gdGhlIGNvbnRlbnQgcHJvcGVydHkgcGFyYW1ldGVycwoJCQkJZm9yZWFjaCAoJHBhcmFtZXRlcnMgYXMgJG9uZXBhcmFtKQoJCQkJewoJCQkJCWlmKGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJykgJiYgJG9uZXBhcmFtID09ICdzdGFydF9kYXRlJyB8fCAkb25lcGFyYW0gPT0gJ2VuZF9kYXRlJykKCQkJCQl7CgkJCQkJCSRfc3RyaW5nICAgICAgICAgICA9IHVjZmlyc3Qoc3RyX3JlcGxhY2UoJ19kYXRlJywnJywkb25lcGFyYW0pKTsKCQkJCQkJJHBhcmFtc1skb25lcGFyYW1dID0gMDsKCQkJCQkJaWYoaXNzZXQoJHBhcmFtc1snQWR2YW5jZWRDb250ZW50Jy4kX3N0cmluZy4nVGltZSddKSAmJiBpc3NldCgkcGFyYW1zWydBZHZhbmNlZENvbnRlbnQnLiRfc3RyaW5nLidEYXRlJ10pKQoJCQkJCQl7CgkJCQkJCQkkcGFyYW1zWyRvbmVwYXJhbV0gPSAkcGFyYW1zWydBZHZhbmNlZENvbnRlbnQnLiRfc3RyaW5nLidUaW1lJ10gKyAkcGFyYW1zWydBZHZhbmNlZENvbnRlbnQnLiRfc3RyaW5nLidEYXRlJ107CgkJCQkJCX0KCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRwYXJhbXNbJG9uZXBhcmFtXSkpCgkJCQkJewoJCQkJCQkkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkb25lcGFyYW0sICRwYXJhbXNbJG9uZXBhcmFtXSk7CgkJCQkJfQoJCQkJfQoJCQkJCgkJCQlpZihjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpICYmIGlzc2V0KCRwYXJhbXNbJ3N0YXJ0X2RhdGUnXSkgJiYgaXNzZXQoJHBhcmFtc1sndXNlX2V4cGlyZV9kYXRlJ10pICYmICRwYXJhbXNbJ3VzZV9leHBpcmVfZGF0ZSddID09IDEgJiYgJHBhcmFtc1snc3RhcnRfZGF0ZSddID4gdGltZSgpKQoJCQkJewoJCQkJCSRwYXJhbXNbJ2FjdGl2ZSddID0gZmFsc2U7CgkJCQkJJHRoaXMtPm1BY3RpdmUgICAgPSBmYWxzZTsKCQkJCX0KCQkJCQoJCQkJIyBtZXRhZGF0YQoJCQkJaWYgKGlzc2V0KCRwYXJhbXNbJ21ldGFkYXRhJ10pKQoJCQkJewoJCQkJCSR0aGlzLT5tTWV0YWRhdGEgPSAkcGFyYW1zWydtZXRhZGF0YSddOwoJCQkJfQoJCQkJCgkJCQkjIGNvbnRlbnQgYmxvY2tzCgkJCQkkaSA9IDA7CgkJCQlmb3JlYWNoKCRwYXJhbXMgYXMgJHBhcmFtTmFtZSA9PiAkcGFyYW1WYWx1ZSkKCQkJCXsKCQkJCQkkcGFyYW1OYW1lID0gc3RyX3JlcGxhY2UoJ19BZHZhbmNlZENvbnRlbnREYXRlJywgJycsICRwYXJhbU5hbWUpOwoJCQkJCQoJCQkJCWlmKCFpc3NldCgkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV0pKQoJCQkJCXsKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJCQoJCQkJCSRpKys7CgkJCQkJJHZhbHVlID0gJyc7CgkJCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydibG9ja190eXBlJ10gPT0gJ3NlbGVjdF9tdWx0aXBsZScpCgkJCQkJewoJCQkJCQlpZihpc19hcnJheSgkcGFyYW1WYWx1ZSkpCgkJCQkJCXsKCQkJCQkJCSR2YWx1ZSA9IGltcGxvZGUoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydkZWxpbWl0ZXInXSwgJHBhcmFtVmFsdWUpOwoJCQkJCQl9CgkJCQkJCWVsc2UgaWYgKCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnc29ydGFibGUnXSkKCQkJCQkJewoJCQkJCQkJJGl0ZW1zID0gYXJyYXkoKTsKCQkJCQkJCWZvcmVhY2goJHBhcmFtcyBhcyAkaXRlbU5hbWUgPT4gJGl0ZW1WYWx1ZSkgIyBUb0RvOiBjcmVhdGUgZnVuY3Rpb24gdG8gbG9vcCBvbmx5IHRocm91Z2ggdGhlIGl0ZW1zIG5vdCB0aHJvdWdoIGFsbCBwYXJhbXMhCgkJCQkJCQl7CgkJCQkJCQkJaWYoc3RhcnRzd2l0aCgkaXRlbU5hbWUsJHBhcmFtTmFtZS4nX0FkdmFuY2VkQ29udGVudFNvcnRhYmxlSXRlbV8nKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRpdGVtc1tdID0gJGl0ZW1WYWx1ZTsKCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCQkkdmFsdWUgPSBpbXBsb2RlKCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnZGVsaW1pdGVyJ10sICRpdGVtcyk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJZWxzZSBpZigkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2Jsb2NrX3R5cGUnXSA9PSAnZGF0ZScKCQkJCQkmJiAkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ21vZGUnXSA9PSAnY2FsZW5kYXInCgkJCQkJJiYgaXNzZXQoJHBhcmFtc1skcGFyYW1OYW1lIC4gJ19BZHZhbmNlZENvbnRlbnREYXRlJ10pKQoJCQkJCXsKCQkJCQkJJHRpbWUgPSAwOwoJCQkJCQlpZihpc3NldCgkcGFyYW1zWyRwYXJhbU5hbWUgLiAnX0FkdmFuY2VkQ29udGVudFRpbWUnXSkpCgkJCQkJCXsKCQkJCQkJCSR0aW1lID0gJHBhcmFtc1skcGFyYW1OYW1lIC4gJ19BZHZhbmNlZENvbnRlbnRUaW1lJ107CgkJCQkJCX0KCQkJCQkJIyRfdG1wICAgICAgICAgPSBleHBsb2RlKCc6JywgJHBhcmFtc1skcGFyYW1OYW1lIC4gJ19BZHZhbmNlZENvbnRlbnRUaW1lJ10pOwoJCQkJCQkjJHRpbWVfc2Vjb25kcyA9ICgoJF90bXBbMF0gKiAzNjAwKSArICgkX3RtcFsxXSAqIDYwKSk7CgkJCQkJCSMkdmFsdWUgICAgICAgPSAkdGltZV9zZWNvbmRzICsgJHBhcmFtc1skcGFyYW1OYW1lIC4gJ19BZHZhbmNlZENvbnRlbnREYXRlJ107CgkJCQkJCSR2YWx1ZSAgICAgICAgPSAkdGltZSArICRwYXJhbXNbJHBhcmFtTmFtZSAuICdfQWR2YW5jZWRDb250ZW50RGF0ZSddOwoJCQkJCX0KCQkJCQllbHNlIGlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnYmxvY2tfdHlwZSddID09ICdtdWx0aV9pbnB1dCcpCgkJCQkJewoJCQkJCQkkbXVsdGlfaW5wdXRzID0gYXJyYXkoKTsKCQkJCQkJZm9yZWFjaCgkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCcsJywkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2lucHV0cyddKSkgYXMgJGsxPT4kbXVsdGlfaW5wdXRfaWQpCgkJCQkJCXsKCQkJCQkJCSRtdWx0aV9pbnB1dF92YWx1ZXMgPSBhcnJheSgpOwoJCQkJCQkJZm9yZWFjaCgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ2VsZW1lbnRzJ10gYXMgJGsyPT4kaW5wdXRJbmZvKQoJCQkJCQkJewoJCQkJCQkJCSRpbnB1dEluZm9bJ2lkJ10gPSAnbXVsdGlJbnB1dC0nIC4gJHBhcmFtTmFtZSAuICctJyAuICRtdWx0aV9pbnB1dF9pZCAuICctJyAuICRrMSAuICctJyAuICRpbnB1dEluZm9bJ2lkJ107CgkJCQkJCQkJaWYoaXNzZXQoJHBhcmFtc1skaW5wdXRJbmZvWydpZCddXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkbXVsdGlfaW5wdXRfdmFsdWVzW10gPSAkcGFyYW1zWyRpbnB1dEluZm9bJ2lkJ11dOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJCSNpZighJHRoaXMtPklzVmFyRW1wdHkoJG11bHRpX2lucHV0X3ZhbHVlcykpCgkJCQkJCQl7CgkJCQkJCQkJJG11bHRpX2lucHV0c1tdID0gaW1wbG9kZSgkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ3ZhbHVlX2RlbGltaXRlciddLCRtdWx0aV9pbnB1dF92YWx1ZXMpOwoJCQkJCQkJfQoJCQkJCQkJI2Vsc2UKCQkJCQkJCSN7CgkJCQkJCQkjCSRtdWx0aV9pbnB1dHNbXSA9ICcnOwoJCQkJCQkJI30KCQkJCQkJfQoJCQkJCQlpZighJHRoaXMtPklzVmFyRW1wdHkoJG11bHRpX2lucHV0cykpCgkJCQkJCXsKCQkJCQkJCSR2YWx1ZSA9IGltcGxvZGUoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydpbnB1dF9kZWxpbWl0ZXInXSwgJG11bHRpX2lucHV0cyk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHZhbHVlID0gdHJpbSgkcGFyYW1WYWx1ZSk7CgkJCQkJfQoJCQkJCWlmKCR2YWx1ZSA9PSAnJyAmJiAhJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydhbGxvd19ub25lJ10pCgkJCQkJewoJCQkJCQkkdmFsdWUgPSAkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2RlZmF1bHQnXTsKCQkJCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydzbWFydHknXSkKCQkJCQkJewoJCQkJCQkJJHZhbHVlID0gJHRoaXMtPkRvU21hcnR5KCR2YWx1ZSk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJCgkJCQkJIyBNTEUgc3VwcG9ydAoJCQkJCWlmKCR0aGlzLT5tbGUgJiYgJHRoaXMtPmJsb2NrTGFuZyAhPSAnJyAmJiAkcGFyYW1OYW1lICE9ICdjb250ZW50JyAuICR0aGlzLT5ibG9ja0xhbmcpCgkJCQkJewoJCQkJCQkkcGFyYW1OYW1lIC49ICR0aGlzLT5ibG9ja0xhbmc7CgkJCQkJfQoJCQkJCSMtLS0KCQkJCQkKCQkJCQkkdGhpcy0+QWRkRXh0cmFQcm9wZXJ0eSgkcGFyYW1OYW1lKTsKCQkJCQkkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkcGFyYW1OYW1lLCAkdmFsdWUpOwoJCQkJfQoJCQl9CgkJfQoJCXBhcmVudDo6RmlsbFBhcmFtcygkcGFyYW1zKTsKCX0KCQoJZnVuY3Rpb24gRWRpdEFzQXJyYXkoJGFkZGluZyA9IGZhbHNlLCAkdGFiID0gMCwgJHNob3dhZG1pbiA9IGZhbHNlKQoJewoJCSR0aGlzLT5wYXJzZV9jb250ZW50X2Jsb2NrcygpOwoJCSRyZXQgPSBhcnJheSgpOwoJCSR0bXAgPSBhcnJheSgpOwoJCWlmKGlzc2V0KCR0aGlzLT5fdGFiSWRzWyR0YWJdKSkKCQl7CgkJCSR0YWJfaWQgPSAkdGhpcy0+X3RhYklkc1skdGFiXTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoJCWlmKCR0YWJfaWQgPT0gJ21haW4nIHx8ICgkdGFiX2lkID09ICdvcHRpb25zJyAmJiBjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwgJ01hbmFnZSBBbGwgQ29udGVudCcpKSkKCQl7CgkJCSR0bXAgPSAkdGhpcy0+Q2xlYW5BcnJheSgkdGhpcy0+ZGlzcGxheV9hdHRyaWJ1dGVzKCRhZGRpbmcsICR0YWIpKTsKCQl9CgkJZWxzZSBpZigkdGFiX2lkID09ICdBZHZhbmNlZENvbnRlbnQnICYmIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJykpCgkJewoJCQkkdG1wID0gJHRoaXMtPkRpc3BsYXlBZHZhbmNlZE9wdGlvbnMoJGFkZGluZyk7CgkJfQoJCQoJCWZvcmVhY2goICR0bXAgYXMgJG9uZSApCgkJewoJCQkkcmV0W10gPSAkb25lOwoJCX0KCQkKCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCSRqID0gMDsKCQlmb3JlYWNoKCR0aGlzLT5fcGFnZVRhYnNbJHRhYl9pZF1bJ2Jsb2NrX2dyb3VwcyddIGFzICRibG9ja0dyb3VwKQoJCXsKCQkJJHRoaXMtPl9ibG9ja0dyb3Vwc1skYmxvY2tHcm91cF1bJ2Rpc3BsYXknXSA9ICRBZHZhbmNlZENvbnRlbnQtPkdldEl0ZW1EaXNwbGF5KCdncm91cCcsICRibG9ja0dyb3VwLCAkdGhpcy0+bUlkLCAkdGhpcy0+bVRlbXBsYXRlSWQsICEkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ncm91cF9kZWZhdWx0JywxKSk7CgkJCQkkdGhpcy0+X2Jsb2NrR3JvdXBzWyRibG9ja0dyb3VwXVsncHJlZl91cmwnXSA9IHN0cl9yZXBsYWNlKCcmYW1wOycsJyYnLAoJCQkJCSRBZHZhbmNlZENvbnRlbnQtPkNyZWF0ZUxpbmsoJ20xXycsICdzYXZlUHJlZnMnLCAnJywgJHRoaXMtPmxhbmcoJ3RvZ2dsZV9ncm91cCcpLAoJCQkJCQlhcnJheSgnaXRlbV90eXBlJz0+J2dyb3VwJywKCQkJCQkJCSdkaXNhYmxlX3RoZW1lJz0+dHJ1ZSwKCQkJCQkJCSdhamF4Jz0+dHJ1ZSwKCQkJCQkJCSdjb250ZW50X2lkJz0+JHRoaXMtPm1JZCwKCQkJCQkJCSd0ZW1wbGF0ZV9pZCc9PiR0aGlzLT5tVGVtcGxhdGVJZCwKCQkJCQkJCSdpdGVtX2lkJz0+JGJsb2NrR3JvdXApLAoJCQkJCQknJywgdHJ1ZSkpOwoJCX0KCQlmb3JlYWNoKCR0aGlzLT5fcGFnZVRhYnNbJHRhYl9pZF1bJ2NvbnRlbnRfYmxvY2tzJ10gYXMgJGJsb2NrSWQpCgkJewoJCQkkaisrOwoJCQkKCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfdHlwZSddICE9ICcnICYmICR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ3NtYXJ0eSddKQoJCQl7CgkJCQlmb3JlYWNoKCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF0gYXMgJHByb3BOYW1lPT4kcHJvcFZhbHVlKQoJCQkJewoJCQkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJHByb3BOYW1lXSA9ICR0aGlzLT5Eb1NtYXJ0eSgkcHJvcFZhbHVlKTsKCQkJCX0KCQkJfQoJCQkjIE1MRSBzdXBwb3J0CgkJCWlmKCR0aGlzLT5tbGUgJiYgJHRoaXMtPmJsb2NrTGFuZyAhPSAnJyAmJiAkYmxvY2tJZCAhPSAnY29udGVudCcgLiAkdGhpcy0+YmxvY2tMYW5nKQoJCQl7CgkJCQkkdmFsdWUgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgkYmxvY2tJZCAuICR0aGlzLT5ibG9ja0xhbmcpOwoJCQl9CgkJCWVsc2UgIy0tLQoJCQl7CgkJCQkkdmFsdWUgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgkYmxvY2tJZCk7CgkJCX0KCQkJIyBNTEUgc3VwcG9ydAoJCQlpZigkdGhpcy0+bWxlICYmICR2YWx1ZSA9PSAnJyAmJiAkdGhpcy0+ZGVmYXVsdEJsb2NrTGFuZyAhPSAnJyAmJiAkdGhpcy0+ZGVmYXVsdEJsb2NrTGFuZyAhPSAkdGhpcy0+YmxvY2tMYW5nKQoJCQl7CgkJCQlpZigkYmxvY2tJZCAhPSAnY29udGVudCcgLiAkdGhpcy0+YmxvY2tMYW5nKQoJCQkJewoJCQkJCSR2YWx1ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRibG9ja0lkIC4gJHRoaXMtPmRlZmF1bHRCbG9ja0xhbmcpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSR2YWx1ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdjb250ZW50JyAuICR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nKTsKCQkJCX0KCQkJfQoJCQkjLS0tCgkJCQoJCQlpZigoJGFkZGluZyAmJiAkdmFsdWUgPT0gJycpCgkJCXx8ICgkdmFsdWUgPT0gJycgJiYgISR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2FsbG93X25vbmUnXSkgfHwgJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnbmV3X2Jsb2NrJ10pCgkJCXsKCQkJCSR2YWx1ZSA9ICR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2RlZmF1bHQnXTsKCQkJfQoJCQkKCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnY29udGVudCddID0gY21zX2h0bWxlbnRpdGllcygkdmFsdWUsIEVOVF9OT1FVT1RFUywgZ2V0X2VuY29kaW5nKCcnKSk7CgkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2lucHV0J10gICA9ICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2ludmFsaWRfYmxvY2t0eXBlJywkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydibG9ja190eXBlJ10sJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnbmFtZSddKTsKCQkJCgkJCWlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2xhYmVsJ10gPT0gdWN3b3JkcygkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWyduYW1lJ10pCgkJCSYmICgkYmxvY2tJZCA9PSBtZDUoJ2NvbnRlbnRfZW4nLiRqKQoJCQl8fCAkYmxvY2tJZCA9PSAnY29udGVudF9lbicKCQkJfHwgKCR0aGlzLT5tbGUgJiYgJHRoaXMtPmJsb2NrTGFuZyAhPSAnJwoJCQkmJiAoJGJsb2NrSWQgPT0gJ2NvbnRlbnQnIC4gJHRoaXMtPmJsb2NrTGFuZwoJCQl8fCAkYmxvY2tJZCA9PSBtZDUoJ2NvbnRlbnQnIC4gJHRoaXMtPmJsb2NrTGFuZy4kaikpKSkpCgkJCXsKCQkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2xhYmVsJ10gPSBsYW5nKCdjb250ZW50Jyk7CgkJCX0KCQkJCgkJCWlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ3RyYW5zbGF0ZV9sYWJlbHMnXSkKCQkJewoJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnbGFiZWwnXSA9ICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnbGFiZWwnXSk7CgkJCX0KCQkJCgkJCSRibG9ja0Rpc3BsYXkgPSAkQWR2YW5jZWRDb250ZW50LT5HZXRJdGVtRGlzcGxheSgnYmxvY2snLCAkYmxvY2tJZCwgJHRoaXMtPm1JZCwgJHRoaXMtPm1UZW1wbGF0ZUlkLCAhJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnY29sbGFwc2UnXSk7CgkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2Rpc3BsYXknXSAgPSAkYmxvY2tEaXNwbGF5OwoJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydwcmVmX3VybCddID0gc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsCgkJCQkkQWR2YW5jZWRDb250ZW50LT5DcmVhdGVMaW5rKCdtMV8nLCAnc2F2ZVByZWZzJywgJycsICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ3RvZ2dsZV9ibG9jaycpLAoJCQkJCWFycmF5KCdpdGVtX3R5cGUnPT4nYmxvY2snLAoJCQkJCQknZGlzYWJsZV90aGVtZSc9PnRydWUsCgkJCQkJCSdhamF4Jz0+dHJ1ZSwKCQkJCQkJJ2NvbnRlbnRfaWQnPT4kdGhpcy0+bUlkLAoJCQkJCQkndGVtcGxhdGVfaWQnPT4kdGhpcy0+bVRlbXBsYXRlSWQsCgkJCQkJCSdpdGVtX2lkJz0+JGJsb2NrSWQpLAoJCQkJCScnLCB0cnVlKSk7CgkJCQoJCQlpZigkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydtdWx0aXBsZSddICYmICRBZHZhbmNlZENvbnRlbnQtPkdldEl0ZW1EaXNwbGF5KCdtZXNzYWdlJywgJGJsb2NrSWQsICR0aGlzLT5tSWQsICR0aGlzLT5tVGVtcGxhdGVJZCkpCgkJCXsKCQkJCSRoaWRlTGluayA9IHN0cl9yZXBsYWNlKCcmYW1wOycsJyYnLAoJCQkJCSRBZHZhbmNlZENvbnRlbnQtPkNyZWF0ZUxpbmsoJ20xXycsICdzYXZlUHJlZnMnLCAnJywgJEFkdmFuY2VkQ29udGVudC0+bGFuZygndG9nZ2xlX21lc3NhZ2UnKSwKCQkJCQkJYXJyYXkoJ2l0ZW1fdHlwZSc9PidtZXNzYWdlJywKCQkJCQkJCSdkaXNhYmxlX3RoZW1lJz0+dHJ1ZSwKCQkJCQkJCSdhamF4Jz0+dHJ1ZSwKCQkJCQkJCSdjb250ZW50X2lkJz0+JHRoaXMtPm1JZCwKCQkJCQkJCSd0ZW1wbGF0ZV9pZCc9PiR0aGlzLT5tVGVtcGxhdGVJZCwKCQkJCQkJCSdpdGVtX2lkJz0+JGJsb2NrSWQsCgkJCQkJCQknaXRlbV9kaXNwbGF5Jz0+MCksCgkJCQkJCScnLCBmYWxzZSwnJywnb25jbGljaz0ialF1ZXJ5LmdldCh0aGlzLmhyZWYpOyBqUXVlcnkodGhpcykucGFyZW50KCkudG9nZ2xlKFwnZmFzdFwnKTsgcmV0dXJuIGZhbHNlOyInKSk7CgkJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnZGVzY3JpcHRpb24nXSA9ICc8cD4nLiRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ25vdGljZV9kdXBsaWNhdGVjb250ZW50JywgJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnbmFtZSddKS4nICgnLiAkaGlkZUxpbmsgLicpPC9wPicuJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnZGVzY3JpcHRpb24nXTsKCQkJfQoJCQkKCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfdHlwZSddICE9ICcnICYmIG1ldGhvZF9leGlzdHMoJHRoaXMsJ19kaXNwbGF5XycuJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfdHlwZSddLidfYmxvY2snKSkKCQkJewoJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnaW5wdXQnXSA9IGNhbGxfdXNlcl9mdW5jKGFycmF5KCR0aGlzLCdfZGlzcGxheV8nLiR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2Jsb2NrX3R5cGUnXS4nX2Jsb2NrJyksICR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF0sICR2YWx1ZSwgJGFkZGluZyk7CgkJCX0KCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfdGFiJ10gIT0gJycgfHwgJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfZ3JvdXAnXSAhPSAnJykKCQkJewoJCQkJdW5zZXQoJHRoaXMtPl9wYWdlVGFic1skdGFiX2lkXVsnY29udGVudF9ibG9ja3MnXVskYmxvY2tJZF0pOwoJCQl9CgkJCWlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2Jsb2NrX3RhYiddICE9ICcnICYmICR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2Jsb2NrX2dyb3VwJ10gIT0gJycpCgkJCXsKCQkJCXVuc2V0KCR0aGlzLT5fcGFnZVRhYnNbJHRhYl9pZF1bJ2Jsb2NrX2dyb3VwcyddWyR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2Jsb2NrX2dyb3VwJ11dKTsKCQkJfQoJCX0KCQkKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbignbW9kdWxlX2lkJywgJ20xXycpOwoJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigncGFnZV90YWJfbnInLCAkdGFiKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3BhZ2VfdGFiX2lkJywgJHRhYl9pZCk7CgkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdwYWdlX3RhYnMnLCAkdGhpcy0+X3BhZ2VUYWJzKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2Jsb2NrX3RhYnMnLCAkdGhpcy0+X2Jsb2NrVGFicyk7CgkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdibG9ja19ncm91cHMnLCAkdGhpcy0+X2Jsb2NrR3JvdXBzKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2RhdGVfYmxvY2tzJywgJHRoaXMtPl9kYXRlQmxvY2tzKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2NvbnRlbnRfYmxvY2tzJywgJHRoaXMtPl9jb250ZW50QmxvY2tzKTsKCQkKCQlpZigkdGFiID09IDApCgkJewoJCQkjZGVidWdfYnVmZmVyKCR0aGlzLT5fdGFiSWRzLCdBZHZhbmNlZENvbnRlbnQgX3RhYklkcycpOwoJCQkjZGVidWdfYnVmZmVyKCR0aGlzLT5fcGFnZVRhYnMsJ0FkdmFuY2VkQ29udGVudCBfcGFnZVRhYnMnKTsKCQkJI2RlYnVnX2J1ZmZlcigkdGhpcy0+X2Jsb2NrVGFicywnQWR2YW5jZWRDb250ZW50IF9ibG9ja1RhYnMnKTsKCQkJI2RlYnVnX2J1ZmZlcigkdGhpcy0+X2Jsb2NrR3JvdXBzLCdBZHZhbmNlZENvbnRlbnQgX2Jsb2NrR3JvdXBzJyk7CgkJCSNkZWJ1Z19idWZmZXIoJHRoaXMtPl9jb250ZW50QmxvY2tzLCdBZHZhbmNlZENvbnRlbnQgX2NvbnRlbnRCbG9ja3MnKTsKCQkJCgkJCSMgdWdseSBoYWNrIQoJCQkkaGVhZGVyc19saXN0ID0gaGVhZGVyc19saXN0KCk7CgkJCSRvdXRwdXQgPSBzdHJfcmVwbGFjZSgnPC9oZWFkPicsICRBZHZhbmNlZENvbnRlbnQtPkdldEhlYWRlckhUTUwoKSAuICc8L2hlYWQ+Jywgb2JfZ2V0X2NvbnRlbnRzKCkpOwoJCQlAb2JfZW5kX2NsZWFuKCk7CgkJCUBvYl9zdGFydCgpOwoJCQlmb3JlYWNoKCRoZWFkZXJzX2xpc3QgYXMgJGhlYWRlcikKCQkJewoJCQkJaGVhZGVyKCRoZWFkZXIpOwoJCQl9CgkJCWVjaG8gJG91dHB1dDsKCQkJIy0tLSBidXQgd29ya3MgOkQKCQl9CgkJCgkJJHJldFtdID0gYXJyYXkoJycsICRBZHZhbmNlZENvbnRlbnQtPlByb2Nlc3NUZW1wbGF0ZSgnY29udGVudFR5cGUudHBsJykpOwoJCXJldHVybiAkcmV0OwoJfQoJCglmdW5jdGlvbiBfZGlzcGxheV90ZXh0X2Jsb2NrKCRibG9ja0luZm8sJHZhbHVlID0gJycsJGFkZGluZyA9IGZhbHNlKQoJewoJCSR1c2V3eXNpd3lnID0gISR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdkaXNhYmxlX3d5c2l3eWcnKTsKCQlpZighJHVzZXd5c2l3eWcpCgkJewoJCQkkYmxvY2tJbmZvWyd1c2V3eXNpd3lnJ10gPSBmYWxzZTsKCQl9CgkJaWYgKCRibG9ja0luZm9bJ29uZWxpbmUnXSA9PSBmYWxzZSkKCQl7CgkJCXJldHVybiBjcmVhdGVfdGV4dGFyZWEoJGJsb2NrSW5mb1sndXNld3lzaXd5ZyddLCAkdmFsdWUsICRibG9ja0luZm9bJ2lkJ10sICcnLCAkYmxvY2tJbmZvWydpZCddLCAnJywgJHRoaXMtPl9zdHlsZXNoZWV0KTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICc8aW5wdXQgdHlwZT0idGV4dCInIC4gKCRibG9ja0luZm9bJ3N0eWxlJ10gIT0gJyc/J3N0eWxlPSInIC4gJGJsb2NrSW5mb1snc3R5bGUnXSAuICcgIic6JycpIC4gKCRibG9ja0luZm9bJ21heGxlbmd0aCddICE9ICcnPycgbWF4bGVuZ3RoPSInIC4gJGJsb2NrSW5mb1snbWF4bGVuZ3RoJ10gLiAnICInOicnKSAuICgkYmxvY2tJbmZvWydzaXplJ10gIT0gJyc/JyBzaXplPSInIC4gJGJsb2NrSW5mb1snc2l6ZSddIC4gJyAiJzonJykgLiAnIG5hbWU9IicgLiAkYmxvY2tJbmZvWydpZCddIC4gJyIgdmFsdWU9IicgLiBodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSkgLiAnIiAvPic7CgkJfQoJfQoJCgkvKgoJICogcmV0dXJuIHRoZSBIVE1MIHRvIGNyZWF0ZSBhbiBpbWFnZSBkcm9wZG93biBpbiB0aGUgYWRtaW4gY29uc29sZS4KCSAqIGRvZXMgbm90IGluY2x1ZGUgYSBsYWJlbC4KCSAqIHRha2VuIGZyb20gZGVmYXVsdCBjb250ZW50dHlwZSAoYXV0aG9yOiBDYWxndXkpCgkgKi8KCWZ1bmN0aW9uIF9kaXNwbGF5X2ltYWdlX2Jsb2NrKCRibG9ja0luZm8sJHZhbHVlID0gJycsJGFkZGluZyA9IGZhbHNlKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkY29uZmlnID0gJGdDbXMtPkdldENvbmZpZygpOwoJCSRhZGRkaXIgPSBnZXRfc2l0ZV9wcmVmZXJlbmNlKCdjb250ZW50aW1hZ2VfcGF0aCcpOwoJCWlmKCAkYmxvY2tJbmZvWydkaXInXSAhPSAnJyApCgkJewoJCQkkYWRkZGlyID0gJGJsb2NrSW5mb1snZGlyJ107CgkJfQoJCSRkaXIgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCRhZGRkaXIpOwoJCSRvcHRwcmVmaXggPSAnJzsKCQkjJG9wdHByZWZpeCA9ICd1cGxvYWRzJzsKCQkjaWYoICFlbXB0eSgkYmxvY2tJbmZvWydkaXInXSkgKSAkb3B0cHJlZml4IC49ICcvJy4kYmxvY2tJbmZvWydkaXInXTsKCQkkaW5wdXRuYW1lID0gJGJsb2NrSW5mb1snaWQnXTsKCQlpZiggaXNzZXQoJGJsb2NrSW5mb1snaW5wdXRuYW1lJ10pICkKCQl7CgkJCSRpbnB1dG5hbWUgPSAkYmxvY2tJbmZvWydpbnB1dG5hbWUnXTsKCQl9CgkJIyBtb2QgYnkgTmFOIHRvIGZpbHRlciBmaWxlcyBieSBwcmVmaXggYW5kIHNldCAiYWxsb3cgbm9uZSIKCQkjJGRyb3Bkb3duID0gY3JlYXRlX2ZpbGVfZHJvcGRvd24oJGlucHV0bmFtZSwkZGlyLCR2YWx1ZSwnanBnLGpwZWcscG5nLGdpZicsJG9wdHByZWZpeCx0cnVlKTsKCQkkZHJvcGRvd24gPSBjcmVhdGVfZmlsZV9kcm9wZG93bigkaW5wdXRuYW1lLCRkaXIsJHZhbHVlLCdqcGcsanBlZyxwbmcsZ2lmJywkb3B0cHJlZml4LCRibG9ja0luZm9bJ2FsbG93X25vbmUnXSwnJywkYmxvY2tJbmZvWydwcmVmaXgnXSwkYmxvY2tJbmZvWydleGNsdWRlJ10pOwoJCQoJCWlmKCAkZHJvcGRvd24gPT09IGZhbHNlICkKCQl7CgkJCSRkcm9wZG93biA9IGxhbmcoJ2Vycm9yX3JldHJpZXZpbmdfZmlsZV9saXN0Jyk7CgkJfQoJCXJldHVybiAkZHJvcGRvd247Cgl9CgkKCWZ1bmN0aW9uIF9kaXNwbGF5X21vZHVsZV9ibG9jaygkYmxvY2tJbmZvLCR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCWlmKCRibG9ja0luZm9bJ21vZHVsZSddID09ICcnKQoJCXsKCQkJcmV0dXJuICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcycsJ21vZHVsZScsJGJsb2NrSW5mb1snbmFtZSddKTsKCQl9CgkJaWYoICEkbW9kdWxlID0mICRBZHZhbmNlZENvbnRlbnQtPkdldE1vZHVsZUluc3RhbmNlKCRibG9ja0luZm9bJ21vZHVsZSddKSkKCQl7CgkJCXJldHVybiAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdlcnJvcl9sb2FkaW5nX21vZHVsZScsJGJsb2NrSW5mb1snbW9kdWxlJ10sJGJsb2NrSW5mb1snbmFtZSddKTsKCQl9CgkJaWYoICEkbW9kdWxlLT5IYXNDYXBhYmlsaXR5KCdjb250ZW50YmxvY2tzJykgKQoJCXsKCQkJcmV0dXJuICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0JywkYmxvY2tJbmZvWydtb2R1bGUnXSwkYmxvY2tJbmZvWyduYW1lJ10pOwoJCX0KCQkKCQlyZXR1cm4gJG1vZHVsZS0+R2V0Q29udGVudEJsb2NrSW5wdXQoJGJsb2NrSW5mb1snaWQnXSwkdmFsdWUsJGJsb2NrSW5mb1sncGFyYW1zJ10sJGFkZGluZyk7Cgl9CgkKCWZ1bmN0aW9uIF9kaXNwbGF5X2RhdGVfYmxvY2soJGJsb2NrSW5mbywkdmFsdWUgPSAnJywkYWRkaW5nID0gZmFsc2UpCgl7CgkJaWYoISR2YWx1ZSkKCQl7CgkJCSR2YWx1ZSA9IHRpbWUoKTsKCQl9CgkJCgkJJGRhdGUgPSBzdHJmdGltZSgnJXgnLCBpbnR2YWwoJHZhbHVlKSk7CgkJJHRpbWUgPSAnMDowJzsKCQlpZigkYmxvY2tJbmZvWydzaG93X2Nsb2NrJ10pCgkJewoJCQkkdGltZSA9IHN0cmZ0aW1lKCclSDolTScsIGludHZhbCgkdmFsdWUpKTsKCQl9CgkJCgkJJF90bXAgICAgICAgID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnOicsJHRpbWUpKTsKCQkkdGltZVNlY29uZHMgPSAoKCRfdG1wWzBdICogMzYwMCkgKyAoJF90bXBbMV0gKiA2MCkpOwoJCSRkYXRlU2Vjb25kcyA9ICR2YWx1ZSAtICR0aW1lU2Vjb25kczsKCQkKCQkkZGF0ZUlucHV0ID0gJzxpbWcgaWQ9IicuJGJsb2NrSW5mb1snaWQnXS4nX0FkdmFuY2VkQ29udGVudERhdGVQaWNrZXJUcmlnZ2VyIiBzcmM9Ii4uL21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2ltYWdlcy9jYWxlbmRhci5wbmciIGNsYXNzPSJjYWxlbmRhclRyaWdnZXIiIC8+Jm5ic3A7CgkJCTxzcGFuIGlkPSInLiRibG9ja0luZm9bJ2lkJ10uJ19BZHZhbmNlZENvbnRlbnREYXRlUGlja2VyRGlzcGxheSI+Jy4kZGF0ZS4nPC9zcGFuPgoJCQk8aW5wdXQgaWQ9IicuJGJsb2NrSW5mb1snaWQnXS4nX0FkdmFuY2VkQ29udGVudERhdGUiIHR5cGU9ImhpZGRlbiIgbmFtZT0iJy4kYmxvY2tJbmZvWydpZCddLidfQWR2YW5jZWRDb250ZW50RGF0ZSIgdmFsdWU9IicuJGRhdGVTZWNvbmRzLiciIC8+JzsKCQkJCgkJJHN1ZmZpeCAgICA9ICcnOwoJCSR0aW1lSW5wdXQgPSAnJzsKCQlpZigkYmxvY2tJbmZvWydzaG93X2Nsb2NrJ10pCgkJewoJCQkkdGltZUlucHV0ID0gJyZuYnNwOyZuYnNwOy0mbmJzcDsmbmJzcDs8c2VsZWN0IG5hbWU9IicuJGJsb2NrSW5mb1snaWQnXS4nX0FkdmFuY2VkQ29udGVudFRpbWUiPic7CgkJCSRfaSAgICAgICAgPSAwOwoJCQlmb3IoJGk9JGJsb2NrSW5mb1snc3RhcnRfaG91ciddOyAkaTw9JGJsb2NrSW5mb1snZW5kX2hvdXInXTsgJGkgKz0gJGJsb2NrSW5mb1snc3RlcF9ob3VycyddKQoJCQl7CgkJCQlpZigkaTwxMiAmJiAhJGJsb2NrSW5mb1snc2hvdzI0aCddKQoJCQkJewoJCQkJCSRzdWZmaXggPSAnIGFtJzsKCQkJCX0KCQkJCWVsc2UgaWYoISRibG9ja0luZm9bJ3Nob3cyNGgnXSkKCQkJCXsKCQkJCQkkc3VmZml4ID0gJyBwbSc7CgkJCQl9CgkJCQlmb3IoJGo9JGJsb2NrSW5mb1snc3RhcnRfbWludXRlJ107ICRqPD0kYmxvY2tJbmZvWydlbmRfbWludXRlJ107ICRqICs9ICRibG9ja0luZm9bJ3N0ZXBfbWludXRlcyddKQoJCQkJewoJCQkJCSR2YWx1ZSA9ICgkaSozNjAwKSArICgkaio2MCk7CgkJCQkJaWYoKCRibG9ja0luZm9bJ2VuZF9ob3VyJ10gPCAyMyAmJiAkdmFsdWUgPD0gKCRibG9ja0luZm9bJ2VuZF9ob3VyJ10gKiAzNjAwKSkgfHwgJGJsb2NrSW5mb1snZW5kX2hvdXInXSA9PSAyMykKCQkJCQl7CgkJCQkJCSR0aW1lSW5wdXQgLj0gJzxvcHRpb24gdmFsdWU9IicuICR2YWx1ZSAuJyInLiAoJHZhbHVlID09ICR0aW1lU2Vjb25kcz8gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzonJykgLic+Jy4gKCRpPDEwPycwJy4kaTooISRibG9ja0luZm9bJ3Nob3cyNGgnXSAmJiAkaT4xMj8kaS0xMjokaSkpIC4nOicuICgkajwxMD8nMCcuJGo6JGopIC4gJHN1ZmZpeCAuICc8L29wdGlvbj4nOwoJCQkJCX0KCQkJCX0KCQkJCSRqID0gJGJsb2NrSW5mb1snc3RhcnRfbWludXRlJ107CgkJCX0KCQkJJHRpbWVJbnB1dCAuPSAnPC9zZWxlY3Q+JzsKCQl9CgkJCgkJcmV0dXJuICRkYXRlSW5wdXQuJHRpbWVJbnB1dDsKCX0KCQoJZnVuY3Rpb24gX2Rpc3BsYXlfY2hlY2tib3hfYmxvY2soJGJsb2NrSW5mbywkdmFsdWUgPSAnJywkYWRkaW5nID0gZmFsc2UpCgl7CgkJcmV0dXJuICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICciIHZhbHVlPSIwIiAvPgoJCQk8aW5wdXQgY2xhc3M9InBhZ2VjaGVja2JveCInIC4gKCRibG9ja0luZm9bJ3N0eWxlJ10gIT0gJyc/JyBzdHlsZT0iJyAuICRibG9ja0luZm9bJ3N0eWxlJ10gLiAnICInOicnKSAuICcgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICciJyAuICgkdmFsdWUgPT0gMSA/ICcgY2hlY2tlZD0iY2hlY2tlZCInOicnKSAuICcgLz4nOwoJfQoJCglmdW5jdGlvbiBfZGlzcGxheV9kcm9wZG93bl9ibG9jaygkYmxvY2tJbmZvLCR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCSRpdGVtcyA9IGFycmF5KCk7CgkJaWYoJGJsb2NrSW5mb1snaXRlbXMnXSAhPSAnJykKCQl7CgkJCWZvcmVhY2goZXhwbG9kZSgkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSwgJGJsb2NrSW5mb1snaXRlbXMnXSkgYXMgJGtleSA9PiAkdmFsKQoJCQl7CgkJCQkkaXRlbXNbJGtleV1bJ2xhYmVsJ10gPSB0cmltKCR2YWwpOwoJCQkJaWYoJGJsb2NrSW5mb1sndHJhbnNsYXRlX2xhYmVscyddKQoJCQkJewoJCQkJCSRpdGVtc1ska2V5XVsnbGFiZWwnXSA9ICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJGl0ZW1zWyRrZXldWydsYWJlbCddKTsKCQkJCX0KCQkJCQoJCQkJJGl0ZW1zWyRrZXldWyd2YWx1ZSddICAgID0gJGl0ZW1zWyRrZXldWydsYWJlbCddOwoJCQkJJGl0ZW1zWyRrZXldWydzZWxlY3RlZCddID0gKHRyaW0oJHZhbHVlKSA9PT0gJGl0ZW1zWyRrZXldWyd2YWx1ZSddKTsKCQkJCSNkZWJ1Z19idWZmZXIodHJpbSgkdmFsdWUpLCdBZHZhbmNlZENvbnRlbnQgdmFsdWUgb2YgJyAuICRibG9ja0luZm9bJ2lkJ10pOwoJCQkJI2RlYnVnX2J1ZmZlcigkaXRlbXNbJGtleV1bJ3ZhbHVlJ10sJ0FkdmFuY2VkQ29udGVudCBpdGVtIGxhYmVsIG9mICcgLiAkYmxvY2tJbmZvWydpZCddKTsKCQkJfQoJCX0KCQlpZigkYmxvY2tJbmZvWyd2YWx1ZXMnXSAhPSAnJykKCQl7CgkJCWZvcmVhY2goZXhwbG9kZSgkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSwgJGJsb2NrSW5mb1sndmFsdWVzJ10pIGFzICRrZXkgPT4gJHZhbCkKCQkJewoJCQkJJGl0ZW1zWyRrZXldWyd2YWx1ZSddID0gdHJpbSgkdmFsKTsKCQkJCWlmKCRibG9ja0luZm9bJ3RyYW5zbGF0ZV92YWx1ZXMnXSkKCQkJCXsKCQkJCQkkaXRlbXNbJGtleV1bJ3ZhbHVlJ10gPSAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCRpdGVtc1ska2V5XVsndmFsdWUnXSk7CgkJCQl9CgkJCQkKCQkJCSRpdGVtc1ska2V5XVsnc2VsZWN0ZWQnXSA9ICh0cmltKCR2YWx1ZSkgPT09ICRpdGVtc1ska2V5XVsndmFsdWUnXSk7CgkJCQkKCQkJCWlmKCFpc3NldCgkaXRlbXNbJGtleV1bJ2xhYmVsJ10pKQoJCQkJewoJCQkJCSRpdGVtc1ska2V5XVsnbGFiZWwnXSA9ICRpdGVtc1ska2V5XVsndmFsdWUnXTsKCQkJCX0KCQkJfQoJCX0KCQkKCQkkaW5wdXQgPSAnPHNlbGVjdCBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICciICcgLiAoJGJsb2NrSW5mb1snc3R5bGUnXSAhPSAnJz8nc3R5bGU9IicgLiAkYmxvY2tJbmZvWydzdHlsZSddIC4gJyAiJzonJykgLiAnID4nOwoJCWZvcmVhY2goJGl0ZW1zIGFzICRpdGVtKQoJCXsKCQkJJGlucHV0IC49ICc8b3B0aW9uIHZhbHVlPSInIC4gJGl0ZW1bJ3ZhbHVlJ10gLiAnIic7CgkJCWlmKCRpdGVtWydzZWxlY3RlZCddKQoJCQl7CgkJCQkkaW5wdXQgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsKCQkJfQoJCQkkaW5wdXQgLj0gJz4nIC4gJGl0ZW1bJ2xhYmVsJ10gLiAnPC9vcHRpb24+JzsKCQl9CgkJJGlucHV0IC49ICc8L3NlbGVjdD4nOwoJCSNkZWJ1Z19idWZmZXIoJGl0ZW1zLCdBZHZhbmNlZENvbnRlbnQgaXRlbXMgb2YgJyAuICRibG9ja0luZm9bJ2lkJ10pOwoJCXJldHVybiAkaW5wdXQ7Cgl9CgkKCWZ1bmN0aW9uIF9kaXNwbGF5X3NlbGVjdF9tdWx0aXBsZV9ibG9jaygkYmxvY2tJbmZvLCAkdmFsdWUgPSAnJywkYWRkaW5nID0gZmFsc2UpCgl7CgkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkkc2VsSXRlbXMgPSBhcnJheSgpOwoJCWZvcmVhY2goZXhwbG9kZSgkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSwgJHZhbHVlKSBhcyAka2V5ID0+ICR2YWwpCgkJewoJCQkkc2VsSXRlbXNbJGtleV0gPSB0cmltKCR2YWwpOwoJCX0KCQkkaXRlbXMgPSBhcnJheSgpOwoJCWlmKCRibG9ja0luZm9bJ2l0ZW1zJ10gIT0gJycpCgkJewoJCQlmb3JlYWNoKGV4cGxvZGUoJGJsb2NrSW5mb1snZGVsaW1pdGVyJ10sICRibG9ja0luZm9bJ2l0ZW1zJ10pIGFzICRrZXkgPT4gJHZhbCkKCQkJewoJCQkJJGl0ZW1zWyRrZXldWydsYWJlbCddID0gdHJpbSgkdmFsKTsKCQkJCWlmKCRibG9ja0luZm9bJ3RyYW5zbGF0ZV9sYWJlbHMnXSkKCQkJCXsKCQkJCQkkaXRlbXNbJGtleV1bJ2xhYmVsJ10gPSAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCRpdGVtc1ska2V5XVsnbGFiZWwnXSk7CgkJCQl9CgkJCQkKCQkJCSRpdGVtc1ska2V5XVsndmFsdWUnXSAgICA9ICRpdGVtc1ska2V5XVsnbGFiZWwnXTsKCQkJCSRpdGVtc1ska2V5XVsnc2VsZWN0ZWQnXSA9IGluX2FycmF5KCRpdGVtc1ska2V5XVsnbGFiZWwnXSwkc2VsSXRlbXMpOwoJCQl9CgkJfQoJCWlmKCRibG9ja0luZm9bJ3ZhbHVlcyddICE9ICcnKQoJCXsKCQkJZm9yZWFjaChleHBsb2RlKCRibG9ja0luZm9bJ2RlbGltaXRlciddLCAkYmxvY2tJbmZvWyd2YWx1ZXMnXSkgYXMgJGtleSA9PiAkdmFsKQoJCQl7CgkJCQkkaXRlbXNbJGtleV1bJ3ZhbHVlJ10gPSB0cmltKCR2YWwpOwoJCQkJaWYoJGJsb2NrSW5mb1sndHJhbnNsYXRlX3ZhbHVlcyddKQoJCQkJewoJCQkJCSRpdGVtc1ska2V5XVsndmFsdWUnXSA9ICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJGl0ZW1zWyRrZXldWyd2YWx1ZSddKTsKCQkJCX0KCQkJCQoJCQkJJGl0ZW1zWyRrZXldWydzZWxlY3RlZCddID0gaW5fYXJyYXkoJGl0ZW1zWyRrZXldWyd2YWx1ZSddLCRzZWxJdGVtcyk7CgkJCQlpZighaXNzZXQoJGl0ZW1zWyRrZXldWydsYWJlbCddKSkKCQkJCXsKCQkJCQkkaXRlbXNbJGtleV1bJ2xhYmVsJ10gPSAkaXRlbXNbJGtleV1bJ3ZhbHVlJ107CgkJCQl9CgkJCX0KCQl9CgkJCgkJJGlucHV0ID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIG5hbWU9IicgLiAkYmxvY2tJbmZvWydpZCddIC4gJyIgLz4nOwoJCQoJCWlmKCEkYmxvY2tJbmZvWydzb3J0YWJsZSddKQoJCXsKCQkJJHNpemUgPSBjb3VudCgkaXRlbXMpOwoJCQlpZihpc3NldCgkYmxvY2tJbmZvWydzaXplJ10pKQoJCQl7CgkJCQkkc2l6ZSA9ICRibG9ja0luZm9bJ3NpemUnXTsKCQkJfQoJCQkkaW5wdXQgLj0gJwoJCQkJPHNlbGVjdCBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICdbXSInIC4gKCRibG9ja0luZm9bJ3N0eWxlJ10gIT0gJyc/JyBzdHlsZT0iJyAuICRibG9ja0luZm9bJ3N0eWxlJ10gLiAnICInOicnKSAuICcgIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iJy4kc2l6ZS4nIj4nOwoJCQlmb3JlYWNoKCRpdGVtcyBhcyAkaXRlbSkKCQkJewoJCQkJJGlucHV0IC49ICc8b3B0aW9uIHZhbHVlPSInIC4gJGl0ZW1bJ3ZhbHVlJ10gLiAnIic7CgkJCQlpZigkaXRlbVsnc2VsZWN0ZWQnXSkKCQkJCXsKCQkJCQkkaW5wdXQgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsKCQkJCX0KCQkJCSRpbnB1dCAuPSAnPicgLiAkaXRlbVsnbGFiZWwnXSAuICc8L29wdGlvbj4nOwoJCQl9CgkJCSRpbnB1dCAuPSAnPC9zZWxlY3Q+JzsKCQl9CgkJZWxzZQoJCXsKCQkJIyBzb3J0IHRoZSBpdGVtcwoJCQkkX2l0ZW1zID0gYXJyYXkoKTsKCQkJZm9yZWFjaCgkc2VsSXRlbXMgYXMgJHNlbEtleSA9PiAkc2VsSXRlbSkKCQkJewoJCQkJcmVzZXQoJGl0ZW1zKTsKCQkJCWZvcmVhY2goJGl0ZW1zIGFzICRpdGVtS2V5ID0+ICRpdGVtKQoJCQkJewoJCQkJCWlmKCRpdGVtWyd2YWx1ZSddID09PSAkc2VsSXRlbSkKCQkJCQl7CgkJCQkJCSRfaXRlbXNbXSA9ICRpdGVtOwoJCQkJCQl1bnNldCgkaXRlbXNbJGl0ZW1LZXldKTsKCQkJCQkJdW5zZXQoJHNlbEl0ZW1zWyRzZWxLZXldKTsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCQoJCQkkaXRlbXMgPSBhcnJheV9tZXJnZSgkX2l0ZW1zLCRpdGVtcyk7CgkJCSRpbnB1dCAuPSAnPGRpdiBjbGFzcz0ic29ydGFibGVfd3JhcHBlciI+JzsKCQkJZm9yZWFjaCgkaXRlbXMgYXMgJGl0ZW0pCgkJCXsKCQkJCSRpbnB1dCAuPQoJCQkJJzxkaXYgY2xhc3M9InNvcnRhYmxlIj4KCQkJCQk8aW1nIGNsYXNzPSJzb3J0YWJsZV9oYW5kbGVyIiBzcmM9Ii4uL21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2ltYWdlcy9zb3J0LnBuZyIgLz4KCQkJCQk8aW5wdXQgY2xhc3M9InBhZ2VjaGVja2JveCInIC4gKCRibG9ja0luZm9bJ3N0eWxlJ10gIT0gJyc/JyBzdHlsZT0iJyAuICRibG9ja0luZm9bJ3N0eWxlJ10gLiAnICInOicnKSAuICcgdHlwZT0iY2hlY2tib3giIHZhbHVlPSInLiRpdGVtWyd2YWx1ZSddLiciIG5hbWU9IicgLiAkYmxvY2tJbmZvWydpZCddIC4gJ19BZHZhbmNlZENvbnRlbnRTb3J0YWJsZUl0ZW1fJyAuIG11bmdlX3N0cmluZ190b191cmwoJGl0ZW1bJ2xhYmVsJ10pIC4gJyInIC4gKCRpdGVtWydzZWxlY3RlZCddPyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzonJykgLiAnIC8+CgkJCQkJJy4kaXRlbVsnbGFiZWwnXS4nCgkJCQk8L2Rpdj4nOwoJCQl9CgkJCSRpbnB1dCAuPSAnPC9kaXY+JzsKCQl9CgkJcmV0dXJuICRpbnB1dDsKCX0KCQoJZnVuY3Rpb24gX2Rpc3BsYXlfbXVsdGlfaW5wdXRfYmxvY2soJGJsb2NrSW5mbywgJHZhbHVlID0gJycsJGFkZGluZyA9IGZhbHNlKQoJewoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJJG11bHRpX2lucHV0X2lkcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRibG9ja0luZm9bJ2lucHV0cyddKSk7CgkJJGlucHV0X3ZhbHVlcyAgICA9IGFycmF5KCk7CgkJJG11bHRpX2lucHV0ICAgICA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICciIC8+JzsKCQlmb3JlYWNoKGV4cGxvZGUoJGJsb2NrSW5mb1snaW5wdXRfZGVsaW1pdGVyJ10sJHZhbHVlKSBhcyAkaW5wdXRfZGF0YSkKCQl7CgkJCSRpbnB1dF92YWx1ZXNbXSA9IGV4cGxvZGUoJGJsb2NrSW5mb1sndmFsdWVfZGVsaW1pdGVyJ10sJGlucHV0X2RhdGEpOwoJCX0KCQlmb3JlYWNoKCRtdWx0aV9pbnB1dF9pZHMgYXMgJGsxPT4kbXVsdGlfaW5wdXRfaWQpCgkJewoJCQlpZihpc3NldCgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF0pKQoJCQl7CgkJCQlpZighaXNzZXQoJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdWyd0ZW1wbGF0ZSddKSkKCQkJCXsKCQkJCQkkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ3RlbXBsYXRlJ10gPSAkQWR2YW5jZWRDb250ZW50LT5HZXRUZW1wbGF0ZSgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ3RwbF9uYW1lJ10pOwoJCQkJfQoJCQkJJGlucHV0cyA9IGFycmF5KCk7CgkJCQkjIGZvcmVhY2ggdGFnCgkJCQlmb3JlYWNoICgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ2VsZW1lbnRzJ10gYXMgJGsyPT4kaW5wdXRJbmZvKQoJCQkJewoJCQkJCWlmKCRpbnB1dEluZm9bJ3NtYXJ0eSddKQoJCQkJCXsKCQkJCQkJZm9yZWFjaCgkaW5wdXRJbmZvIGFzICRwcm9wTmFtZT0+JHByb3BWYWx1ZSkKCQkJCQkJewoJCQkJCQkJJGlucHV0SW5mb1skcHJvcE5hbWVdID0gJHRoaXMtPkRvU21hcnR5KCRwcm9wVmFsdWUpOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRpbnB1dEluZm9bJ2lkJ10gPSAnbXVsdGlJbnB1dC0nIC4gJGJsb2NrSW5mb1snaWQnXSAuICctJyAuICRtdWx0aV9pbnB1dF9pZCAuICctJyAuICRrMSAuICctJyAuICRpbnB1dEluZm9bJ2lkJ107CgkJCQkJJGlucHV0c1skaW5wdXRJbmZvWydpZCddXSA9ICRpbnB1dEluZm87CgkJCQkJaWYobWV0aG9kX2V4aXN0cygkdGhpcywnX2Rpc3BsYXlfJy4kaW5wdXRJbmZvWydibG9ja190eXBlJ10uJ19ibG9jaycpKQoJCQkJCXsKCQkJCQkJJGlucHV0c1skaW5wdXRJbmZvWydpZCddXVsnaW5wdXQnXSA9IGNhbGxfdXNlcl9mdW5jKGFycmF5KCR0aGlzLCAnX2Rpc3BsYXlfJy4kaW5wdXRJbmZvWydibG9ja190eXBlJ10uJ19ibG9jaycpLCAkaW5wdXRJbmZvLCAoaXNzZXQoJGlucHV0X3ZhbHVlc1skazFdWyRrMl0pID8kaW5wdXRfdmFsdWVzWyRrMV1bJGsyXTonJyksICRhZGRpbmcpOwoJCQkJCX0KCQkJCX0KCQkJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaW5wdXRzJywgJGlucHV0cyk7CgkJCQkjJG11bHRpX2lucHV0IC49ICRBZHZhbmNlZENvbnRlbnQtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhQmFzZSgkdGhpcy0+X211bHRpSW5wdXRzWyRpbnB1dF9pZF1bJ3RwbF9uYW1lJ10pOwoJCQkJJG11bHRpX2lucHV0IC49ICRBZHZhbmNlZENvbnRlbnQtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aGlzLT5fbXVsdGlJbnB1dHNbJG11bHRpX2lucHV0X2lkXVsndGVtcGxhdGUnXSk7CgkJCX0KCQl9CgkJcmV0dXJuICRtdWx0aV9pbnB1dDsKCX0KCQoJZnVuY3Rpb24gVmFsaWRhdGVEYXRhKCkKCXsKCQkkZXJyb3JzID0gcGFyZW50OjpWYWxpZGF0ZURhdGEoKTsKCQlpZiggJGVycm9ycyA9PT0gRkFMU0UgKQoJCXsKCQkJJGVycm9ycyA9IGFycmF5KCk7CgkJfQoJCQoJCWlmICgkdGhpcy0+bVRlbXBsYXRlSWQgPD0gMCApCgkJewoJCQkkZXJyb3JzW10gPSBsYW5nKCdub2ZpZWxkZ2l2ZW4nLCBhcnJheShsYW5nKCd0ZW1wbGF0ZScpKSk7CgkJCSRyZXN1bHQgICA9IGZhbHNlOwoJCX0KCQkKCQlmb3JlYWNoKCR0aGlzLT5fY29udGVudEJsb2NrcyBhcyAkYmxvY2tJbmZvKQoJCXsKCQkJaWYoJGJsb2NrSW5mb1sncmVxdWlyZWQnXSAmJiAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgkYmxvY2tJbmZvWydpZCddKSA9PSAnJykKCQkJewoJCQkJJGVycm9yc1tdID0gbGFuZygnbm9maWVsZGdpdmVuJywgYXJyYXkoJGJsb2NrSW5mb1snbmFtZSddKSk7CgkJCQkkcmVzdWx0ICAgPSBmYWxzZTsKCQkJfQoJCX0KCQkKCQlpZiAoY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSAmJiAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgndXNlX2V4cGlyZV9kYXRlJykgPT0gJzEnICYmICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdlbmRfZGF0ZScpIDw9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdzdGFydF9kYXRlJykpCgkJewoJCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCQkkZXJyb3JzW10gPSAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdlcnJvcl9leHBpcmVkYXRlJyk7CgkJCSRyZXN1bHQgICA9IGZhbHNlOwoJCX0KCQlyZXR1cm4gKGNvdW50KCRlcnJvcnMpID4gMD8kZXJyb3JzOkZBTFNFKTsKCX0KCQoJZnVuY3Rpb24gQ29udGVudFByZVJlbmRlcigkdHBsU291cmNlKQoJewoJCSR0aGlzLT5wYXJzZV9jb250ZW50X2Jsb2NrcygpOwoJCXJldHVybiAkdHBsU291cmNlOwoJfQoJCglmdW5jdGlvbiBkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsICRhZGRpbmcpCgl7CgkJZ2xvYmFsICRnQ21zOwoJCXN3aXRjaCgkb25lKQoJCXsKCQkJY2FzZSAndGVtcGxhdGUnOgoJCQkJJHRlbXBsYXRlb3BzID0mICRnQ21zLT5HZXRUZW1wbGF0ZU9wZXJhdGlvbnMoKTsKCQkJCXJldHVybiBhcnJheShsYW5nKCd0ZW1wbGF0ZScpIC4gJzonLCAkdGVtcGxhdGVvcHMtPlRlbXBsYXRlRHJvcGRvd24oJ3RlbXBsYXRlX2lkJywgJHRoaXMtPm1UZW1wbGF0ZUlkLCAnb25jaGFuZ2U9ImRvY3VtZW50LmNvbnRlbnRmb3JtLnN1Ym1pdCgpIicpKTsKCQkJCgkJCWNhc2UgJ3BhZ2VtZXRhZGF0YSc6CgkJCQlyZXR1cm4gYXJyYXkobGFuZygncGFnZV9tZXRhZGF0YScpIC4gJzonLCBjcmVhdGVfdGV4dGFyZWEoZmFsc2UsICR0aGlzLT5NZXRhZGF0YSgpLCAnbWV0YWRhdGEnLCAncGFnZXNtYWxsdGV4dGFyZWEnLCAnbWV0YWRhdGEnLCAnJywgJycsICc4MCcsICc2JykpOwoJCQkKCQkJY2FzZSAncGFnZWRhdGEnOgoJCQkJcmV0dXJuIGFycmF5KGxhbmcoJ3BhZ2VkYXRhX2NvZGVibG9jaycpIC4gJzonLCBjcmVhdGVfdGV4dGFyZWEoZmFsc2UsICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdwYWdlZGF0YScpLCAncGFnZWRhdGEnLCAncGFnZXNtYWxsdGV4dGFyZWEnLCAncGFnZWRhdGEnLCAnJywgJycsICc4MCcsICc2JykpOwoJCQkKCQkJY2FzZSAnc2VhcmNoYWJsZSc6CgkJCQkkc2VhcmNoYWJsZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdzZWFyY2hhYmxlJyk7CgkJCQlpZiggJHNlYXJjaGFibGUgPT0gJycgKQoJCQkJewoJCQkJCSRzZWFyY2hhYmxlID0gMTsKCQkJCX0KCQkJCXJldHVybiBhcnJheShsYW5nKCdzZWFyY2hhYmxlJykgLiAnOicsCgkJCQkJJzxkaXYgY2xhc3M9ImhpZGRlbiIgPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlYXJjaGFibGUiIHZhbHVlPSIwIiAvPjwvZGl2PgoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2VhcmNoYWJsZSIgdmFsdWU9IjEiICcgLiAoJHNlYXJjaGFibGUgPT0gMT8nY2hlY2tlZD0iY2hlY2tlZCInOicnKSAuICcgLz4nKTsKCQkJCgkJCWNhc2UgJ2Rpc2FibGVfd3lzaXd5Zyc6CgkJCQkkZGlzYWJsZVd5c2l3eWcgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZGlzYWJsZV93eXNpd3lnJyk7CgkJCQlpZiggJGRpc2FibGVXeXNpd3lnID09ICcnICkKCQkJCXsKCQkJCQkkZGlzYWJsZVd5c2l3eWcgPSAwOwoJCQkJfQoJCQkJcmV0dXJuIGFycmF5KGxhbmcoJ2Rpc2FibGVfd3lzaXd5ZycpIC4gJzonLAoJCQkJCSc8ZGl2IGNsYXNzPSJoaWRkZW4iID48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXNhYmxlX3d5c2l3eWciIHZhbHVlPSIwIiAvPjwvZGl2PgoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZGlzYWJsZV93eXNpd3lnIiB2YWx1ZT0iMSIgICcgLiAoJGRpc2FibGVXeXNpd3lnID09IDE/J2NoZWNrZWQ9ImNoZWNrZWQiJzonJykgLiAnIG9uY2xpY2s9InRoaXMuZm9ybS5zdWJtaXQoKSIgLz4nKTsKCQkJCgkJCWRlZmF1bHQ6CgkJCQlpZigkb25lICE9ICdmZXVfYWNjZXNzJwoJCQkJJiYgJG9uZSAhPSAncmVkaXJlY3RfcGFnZScKCQkJCSYmICRvbmUgIT0gJ3JlZGlyZWN0X3BhcmFtcycKCQkJCSYmICRvbmUgIT0gJ2V2YWx1YXRlX3NtYXJ0eScKCQkJCSYmICRvbmUgIT0gJ2ZldV9hY3Rpb24nCgkJCQkmJiAkb25lICE9ICdzdGFydF9kYXRlJwoJCQkJJiYgJG9uZSAhPSAnZW5kX2RhdGUnCgkJCQkmJiAkb25lICE9ICd1c2VfZXhwaXJlX2RhdGUnKQoJCQkJewoJCQkJCXJldHVybiBwYXJlbnQ6OmRpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwgJGFkZGluZyk7CgkJCQl9CgkJCQlicmVhazsKCQl9Cgl9CgovKioKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogQ3VzdG9tIGZ1bmN0aW9ucwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KCS8qKgoJICogRGlzcGxheUFkdmFuY2VkT3B0aW9ucygkYWRkaW5nKQoJICoKCSAqIEBwYXJhbSBib29sZWFuICRhZGRpbmcgLSB0cnVlIGlmIHBhZ2UgaXMgYWRkZWQsIGZhbHNlIGlmIGVkaXRlZAoJICoKCSAqIEByZXR1cm4gYXJyYXkgLSBhcnJheShhcnJheShwcm9tcHQsaW1wdXQpKQoJICovCglmdW5jdGlvbiBEaXNwbGF5QWR2YW5jZWRPcHRpb25zKCRhZGRpbmcpCgl7CgkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkkcmV0ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCAkdGhpcy0+X2F0dHJpYnV0ZXMgYXMgJG9uZUF0dHJpYiApCgkJewoJCQlzd2l0Y2goJG9uZUF0dHJpYlswXSkKCQkJewoJCQkJY2FzZSAnZmV1X2FjY2Vzcyc6CgkJCQkJaWYoJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQkJCXsKCQkJCQkJaWYoJGFkZGluZykKCQkJCQkJewoJCQkJCQkJaWYoc3RycG9zKCRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ2ZldV9hY2Nlc3MnKSwnLCcpID09PSBGQUxTRSkKCQkJCQkJCXsKCQkJCQkJCQkkc2VsZWN0ZWRHcm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCc7JywkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdmZXVfYWNjZXNzJykpKTsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJCQkJCQkkc2VsZWN0ZWRHcm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCcsJywkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdmZXVfYWNjZXNzJykpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCWlmKHN0cnBvcygkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjY2VzcycpLCcsJykgPT09IEZBTFNFKQoJCQkJCQkJewoJCQkJCQkJCSRzZWxlY3RlZEdyb3VwcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJzsnLCAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjY2VzcycpKSk7CgkJCQkJCQl9CgkJCQkJCQllbHNlCgkJCQkJCQl7CgkJCQkJCQkJJHNlbGVjdGVkR3JvdXBzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnLCcsICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdmZXVfYWNjZXNzJykpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQkKCQkJCQkJJGZldUFjY2VzcyA9IGFycmF5KCRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKT0+LTEpOwoJCQkJCQkkZmV1QWNjZXNzID0gYXJyYXlfbWVyZ2UoJGZldUFjY2VzcywkZmV1c2Vycy0+R2V0R3JvdXBMaXN0KCkpOwoJCQkJCQkkcmV0W10gPSBhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdmcm9udGVuZGFjY2VzcycpLicgOiAnLAoJCQkJCQkJJzxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIG5hbWU9ImZldV9hY2Nlc3MiIC8+Jy4KCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgnJywnZmV1X2FjY2Vzc1tdJywkZmV1QWNjZXNzLCRzZWxlY3RlZEdyb3Vwcyxjb3VudCgkZmV1QWNjZXNzKSwnJywxKSk7CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJCgkJCQljYXNlICdyZWRpcmVjdF9wYWdlJzoKCQkJCQlpZigkZmV1c2VycyA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJykpCgkJCQkJewoJCQkJCQlpZigkYWRkaW5nKQoJCQkJCQl7CgkJCQkJCQkkc2VsZWN0ZWRQYWdlID0gJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgncmVkaXJlY3RfcGFnZScsJycpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHNlbGVjdGVkUGFnZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCJyZWRpcmVjdF9wYWdlIik7CgkJCQkJCX0KCQkJCQkJCgkJCQkJCSRyZXRbXSA9IGFycmF5KCRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ3JlZGlyZWN0cGFnZScpLicgOiAnLAoJCQkJCQkJJEFkdmFuY2VkQ29udGVudC0+Q3JlYXRlUmVkaXJlY3REcm9wZG93bignJywgJ3JlZGlyZWN0X3BhZ2UnLCRzZWxlY3RlZFBhZ2UsICR0aGlzLT5tSWQpKTsKCQkJCQl9CgkJCQkJYnJlYWs7CgkJCQkKCQkJCWNhc2UgJ3JlZGlyZWN0X3BhcmFtcyc6CgkJCQkJaWYoJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQkJCXsKCQkJCQkJaWYoJGFkZGluZykKCQkJCQkJewoJCQkJCQkJJHJlZGlyZWN0UGFyYW1zID0gJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgncmVkaXJlY3RfcGFyYW1zJywnJyk7CgkJCQkJCQkkZXZhbHVhdGVTbWFydHkgPSAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdldmFsdWF0ZV9zbWFydHknLCcnKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRyZWRpcmVjdFBhcmFtcyA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCJyZWRpcmVjdF9wYXJhbXMiKTsKCQkJCQkJCSRldmFsdWF0ZVNtYXJ0eSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCJldmFsdWF0ZV9zbWFydHkiKTsKCQkJCQkJfQoJCQkJCQkJCgkJCQkJCSRyZXRbXSA9IGFycmF5KCRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ3JlZGlyZWN0cGFyYW1zJykuJyA6ICcsCgkJCQkJCQknPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjMyIiBtYXhsZW5ndGg9IjEyOCIgbmFtZT0icmVkaXJlY3RfcGFyYW1zIiB2YWx1ZT0iJy4kcmVkaXJlY3RQYXJhbXMuJyIgLz4mbmJzcDs8ZW0+KHBhcmFtMT12YWx1ZTEgcGFyYW0yPXZhbHVlMiAuLi4pPC9lbT48YnIgLz4KCQkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImV2YWx1YXRlX3NtYXJ0eSIgdmFsdWU9IjAiIC8+Jy4KCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2V2YWx1YXRlc21hcnR5JykgLiAnOiZuYnNwOycuCgkJCQkJCQknPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJldmFsdWF0ZV9zbWFydHkiIHZhbHVlPSIxIiAgJyAuICgkZXZhbHVhdGVTbWFydHkgPT0gMT8nY2hlY2tlZD0iY2hlY2tlZCInOicnKSAuICcgLz4nKTsKCQkJCQl9CgkJCQkJYnJlYWs7CgkJCQkKCQkJCWNhc2UgJ2ZldV9hY3Rpb24nOgoJCQkJCWlmKCRmZXVzZXJzID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKSkKCQkJCQl7CgkJCQkJCWlmKCRhZGRpbmcpCgkJCQkJCXsKCQkJCQkJCSRmZXVBY3Rpb24gPSAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdmZXVfYWN0aW9uJywnJyk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkZmV1QWN0aW9uID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY3Rpb24nKTsKCQkJCQkJfQoJCQkJCQkkcmV0W10gPSBhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdzaG93bG9naW5mb3JtJykuJyA6ICcsCgkJCQkJCQkkQWR2YW5jZWRDb250ZW50LT5DcmVhdGVJbnB1dERyb3Bkb3duKCcnLCdmZXVfYWN0aW9uJywKCQkJCQkJCQlhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdubycpPT4nJywKCQkJCQkJCQkJJEFkdmFuY2VkQ29udGVudC0+bGFuZygnaW5oZXJpdF9mcm9tX3BhcmVudCcpPT4tMSwKCQkJCQkJCQkJJEFkdmFuY2VkQ29udGVudC0+bGFuZygneWVzJyk9PjEpCgkJCQkJCQkJLDAsJGZldUFjdGlvbikpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAnc3RhcnRfZGF0ZSc6CgkJCQkJJHN0YXJ0RGF0ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdzdGFydF9kYXRlJyk7CgkJCQkJaWYoISRzdGFydERhdGUpCgkJCQkJewoJCQkJCQkkc3RhcnREYXRlID0gdGltZSgpOwoJCQkJCX0KCQkJCQkKCQkJCQkkZGF0ZSAgICAgICAgPSBzdHJmdGltZSgnJXgnLCBpbnR2YWwoJHN0YXJ0RGF0ZSkpOwoJCQkJCSR0aW1lICAgICAgICA9IHN0cmZ0aW1lKCclSDolTScsIGludHZhbCgkc3RhcnREYXRlKSk7CgkJCQkJCgkJCQkJJF90bXAgICAgICAgID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnOicsJHRpbWUpKTsKCQkJCQkkdGltZVNlY29uZHMgPSAoKCRfdG1wWzBdICogMzYwMCkgKyAoJF90bXBbMV0gKiA2MCkpOwoJCQkJCSRkYXRlU2Vjb25kcyA9ICRzdGFydERhdGUgLSAkdGltZVNlY29uZHM7CgkJCQkJCgkJCQkJJHN0YXJ0RGF0ZUlucHV0ID0gJwoJCQkJCQk8aW1nIGlkPSJBZHZhbmNlZENvbnRlbnRTdGFydERhdGVQaWNrZXJUcmlnZ2VyIiBzcmM9Ii4uL21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2ltYWdlcy9jYWxlbmRhci5wbmciIGNsYXNzPSJjYWxlbmRhclRyaWdnZXIiIC8+Jm5ic3A7CgkJCQkJCTxzcGFuIGlkPSJBZHZhbmNlZENvbnRlbnRTdGFydERhdGVQaWNrZXJEaXNwbGF5Ij4nLiRkYXRlLic8L3NwYW4+Jm5ic3A7Jm5ic3A7LSZuYnNwOyZuYnNwOwoJCQkJCQk8aW5wdXQgaWQ9IkFkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJBZHZhbmNlZENvbnRlbnRTdGFydERhdGUiIHZhbHVlPSInLiRkYXRlU2Vjb25kcy4nIiAvPgoJCQkJCQk8c2VsZWN0IG5hbWU9IkFkdmFuY2VkQ29udGVudFN0YXJ0VGltZSI+JzsKCQkJCQkJCgkJCQkJZm9yKCRpPTA7ICRpPD0yMzsgJGkrKykKCQkJCQl7CgkJCQkJCWZvcigkaj0wOyAkajw9NTk7ICRqKyspCgkJCQkJCXsKCQkJCQkJCSR2YWx1ZSA9ICgkaSozNjAwKSArICgkaio2MCk7CgkJCQkJCQkkc3RhcnREYXRlSW5wdXQgLj0gJzxvcHRpb24gdmFsdWU9IicuICR2YWx1ZSAuJyInLiAoJHZhbHVlID09ICR0aW1lU2Vjb25kcz8gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzonJykgLic+Jy4gKCRpPDEwPycwJy4kaTokaSkgLic6Jy4gKCRqPDEwPycwJy4kajokaikgLic8L29wdGlvbj4nOwoJCQkJCQl9CgkJCQkJCSRqID0gMDsKCQkJCQl9CgkJCQkJJHN0YXJ0RGF0ZUlucHV0IC49ICc8L3NlbGVjdD4nOwoJCQkJCSRyZXRbXSA9IGFycmF5KCRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ3N0YXJ0ZGF0ZScpLicgOiAnLCAkc3RhcnREYXRlSW5wdXQpOwoJCQkJCWJyZWFrOwoJCQkJCgkJCQljYXNlICdlbmRfZGF0ZSc6CgkJCQkJJGVuZERhdGUgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZW5kX2RhdGUnKTsKCQkJCQlpZighJGVuZERhdGUpCgkJCQkJewoJCQkJCQkkZW5kRGF0ZSA9IHRpbWUoKTsKCQkJCQl9CgkJCQkJCgkJCQkJJGRhdGUgICAgICAgID0gc3RyZnRpbWUoJyV4JywgaW50dmFsKCRlbmREYXRlKSk7CgkJCQkJJHRpbWUgICAgICAgID0gc3RyZnRpbWUoJyVIOiVNJywgaW50dmFsKCRlbmREYXRlKSk7CgkJCQkJCgkJCQkJJF90bXAgICAgICAgID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnOicsJHRpbWUpKTsKCQkJCQkkdGltZVNlY29uZHMgPSAoKCRfdG1wWzBdICogMzYwMCkgKyAoJF90bXBbMV0gKiA2MCkpOwoJCQkJCSRkYXRlU2Vjb25kcyA9ICRlbmREYXRlIC0gJHRpbWVTZWNvbmRzOwoJCQkJCQoJCQkJCSRlbmREYXRlSW5wdXQgPSAnCgkJCQkJCTxpbWcgaWQ9IkFkdmFuY2VkQ29udGVudEVuZERhdGVQaWNrZXJUcmlnZ2VyIiBzcmM9Ii4uL21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2ltYWdlcy9jYWxlbmRhci5wbmciIGNsYXNzPSJjYWxlbmRhclRyaWdnZXIiIC8+Jm5ic3A7CgkJCQkJCTxzcGFuIGlkPSJBZHZhbmNlZENvbnRlbnRFbmREYXRlUGlja2VyRGlzcGxheSI+Jy4kZGF0ZS4nPC9zcGFuPiZuYnNwOyZuYnNwOy0mbmJzcDsmbmJzcDsKCQkJCQkJPGlucHV0IGlkPSJBZHZhbmNlZENvbnRlbnRFbmREYXRlIiB0eXBlPSJoaWRkZW4iIG5hbWU9IkFkdmFuY2VkQ29udGVudEVuZERhdGUiIHZhbHVlPSInLiRkYXRlU2Vjb25kcy4nIiAvPgoJCQkJCQk8c2VsZWN0IG5hbWU9IkFkdmFuY2VkQ29udGVudEVuZFRpbWUiPic7CgkJCQkJCQoJCQkJCWZvcigkaT0wOyAkaTw9MjM7ICRpKyspCgkJCQkJewoJCQkJCQlmb3IoJGo9MDsgJGo8PTU5OyAkaisrKQoJCQkJCQl7CgkJCQkJCQkkdmFsdWUgPSAoJGkqMzYwMCkgKyAoJGoqNjApOwoJCQkJCQkJJGVuZERhdGVJbnB1dCAuPSAnPG9wdGlvbiB2YWx1ZT0iJy4gJHZhbHVlIC4nIicuICgkdmFsdWUgPT0gJHRpbWVTZWNvbmRzPyAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOicnKSAuJz4nLiAoJGk8MTA/JzAnLiRpOiRpKSAuJzonLiAoJGo8MTA/JzAnLiRqOiRqKSAuJzwvb3B0aW9uPic7CgkJCQkJCX0KCQkJCQkJJGogPSAwOwoJCQkJCX0KCQkJCQkkZW5kRGF0ZUlucHV0IC49ICc8L3NlbGVjdD4nOwoJCQkJCSRyZXRbXSA9IGFycmF5KCRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2VuZGRhdGUnKS4nIDogJywgJGVuZERhdGVJbnB1dCk7CgkJCQkJYnJlYWs7CgkJCQkKCQkJCWNhc2UgJ3VzZV9leHBpcmVfZGF0ZSc6CgkJCQkJJHVzZUV4cCA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCd1c2VfZXhwaXJlX2RhdGUnKTsKCQkJCQlpZiggJHVzZUV4cCA9PSAnJyApCgkJCQkJewoJCQkJCQkkdXNlRXhwID0gMDsKCQkJCQl9CgkJCQkJJHJldFtdID0gYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygndXNlZXhwaXJlZGF0ZScpIC4gJzonLAoJCQkJCQknPGRpdiBjbGFzcz0iaGlkZGVuIiA+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idXNlX2V4cGlyZV9kYXRlIiB2YWx1ZT0iMCIgLz48L2Rpdj4KCQkJCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1c2VfZXhwaXJlX2RhdGUiIHZhbHVlPSIxIiAgJyAuICgkdXNlRXhwID09IDE/J2NoZWNrZWQ9ImNoZWNrZWQiJzonJykgLiAnIC8+Jyk7CgkJCQkJYnJlYWs7CgkJCQkKCQkJCWRlZmF1bHQ6YnJlYWs7CgkJCX0KCQl9CgkJcmV0dXJuICRyZXQ7Cgl9CgkKCQoJLyoqCgkgKiBmdW5jdGlvbiBEb1NtYXJ0eSgkZGF0YSkKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiB0aGlzIGlzIGp1c3QgYSB3cmFwcGVyIHRvIHByb2Nlc3MgYSB0ZW1wbGF0ZSBmcm9tIGRhdGEKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhIC0gVGhlIHRlbXBsYXRlIGNvbnRlbnQgdG8gcHJvY2VzcwoJICoKCSAqIEByZXR1cm4gc3RyaW5nIC0gVGhlIHByb2Nlc3NlZCB0ZW1wbGF0ZSBkYXRhCgkgKi8KCWZ1bmN0aW9uIERvU21hcnR5KCRkYXRhKQoJewoJCWlmKGlzX2FycmF5KCRkYXRhKSkKCQl7CgkJCWZvcmVhY2goJGRhdGEgYXMgJGsgPT4gJHYpCgkJCXsKCQkJCSRkYXRhWyRrXSA9ICR0aGlzLT5Eb1NtYXJ0eSgkdik7CgkJCX0KCQl9CgkJZ2xvYmFsICRnQ21zOwoJCWlmKCFpc19hcnJheSgkZGF0YSkgJiYgIWlzX29iamVjdCgkZGF0YSkgJiYgcHJlZ19tYXRjaF9hbGwoJy86OjooW146XSspOjo6LycsICRkYXRhLCAkbWF0Y2hlcykpCgkJewoJCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCQlpZighaXNzZXQoJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9pZCkpCgkJCXsKCQkJCSMgZmFrZSBmcm9udGVuZCByZW5kZXJpbmcKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBzdGRDbGFzcygpOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9pZCAgICAgICAgICAgICAgICAgID0gJHRoaXMtPm1JZDsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfdGl0bGUgICAgICAgICAgICAgICA9ICR0aGlzLT5tTmFtZTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfYWxpYXMgICAgICAgICAgICAgICA9ICR0aGlzLT5tQWxpYXM7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X21lbnV0ZXh0ICAgICAgICAgICAgPSAkdGhpcy0+bU1lbnVUZXh0OwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF90aXRsZWF0dHJpYnV0ZSAgICAgID0gJHRoaXMtPm1UaXRsZUF0dHJpYnV0ZTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfaGllcmFyY2h5ICAgICAgICAgICA9ICR0aGlzLT5tSGllcmFyY2h5OwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9pZF9oaWVyYXJjaHkgICAgICAgID0gJHRoaXMtPm1JZEhpZXJhcmNoeTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfdHlwZSAgICAgICAgICAgICAgICA9ICR0aGlzLT5tVHlwZTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfcHJvcHMgICAgICAgICAgICAgICA9ICR0aGlzLT5tUHJvcGVydGllcy0+bVByb3BlcnR5TmFtZXM7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X21ldGFkYXRhICAgICAgICAgICAgPSAkdGhpcy0+bU1ldGFkYXRhOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9tb2RpZmllZF9kYXRlICAgICAgID0gJHRoaXMtPm1Nb2RpZmllZERhdGU7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X2NyZWF0ZWRfZGF0ZSAgICAgICAgPSAkdGhpcy0+bUNyZWF0aW9uRGF0ZTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfbGFzdF9tb2RpZmllZF9kYXRlICA9ICR0aGlzLT5tTW9kaWZpZWREYXRlOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9sYXN0X21vZGlmaWVkX2J5X2lkID0gJHRoaXMtPm1Pd25lcjsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPnRlbXBsYXRlX2lkICAgICAgICAgICAgICAgICA9ICR0aGlzLT5tVGVtcGxhdGVJZDsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPnRlbXBsYXRlX2VuY29kaW5nICAgICAgICAgICA9IGdldF9lbmNvZGluZygnJyk7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT50ZW1wbGF0ZV9tb2RpZmllZF9kYXRlICAgICAgPSB0aW1lKCk7ICMgPz8/CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jYWNoYWJsZSAgICAgICAgICAgICAgICAgICAgPSAkdGhpcy0+bUNhY2hhYmxlOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9oaWVyYXJjaHlfcGF0aCAgICAgID0gJHRoaXMtPm1IaWVyYXJjaHlQYXRoOwoJCQkJCgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydjb250ZW50X2lkJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkdGhpcy0+bUlkOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJHRoaXMtPm1BbGlhczsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VfaWQnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICR0aGlzLT5tQWxpYXM7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlX2FsaWFzJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkdGhpcy0+bUFsaWFzOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1snY29udGVudF9hbGlhcyddICAgICAgICAgICAgICAgICAgICAgICAgID0gJHRoaXMtPm1BbGlhczsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VfbmFtZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICR0aGlzLT5tQWxpYXM7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwb3NpdGlvbiddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkdGhpcy0+bUhpZXJhcmNoeTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ2ZyaWVuZGx5X3Bvc2l0aW9uJ10gICAgICAgICAgICAgICAgICAgICA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5DcmVhdGVGcmllbmRseUhpZXJhcmNoeVBvc2l0aW9uKCR0aGlzLT5tSGllcmFyY2h5KTsKCQkJfQoJCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2NvbnRlbnRfb2JqJywgJHRoaXMpOwoJCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2NvbnRlbnRfaWQnLCAkdGhpcy0+bUlkKTsKCQkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdjb250ZW50X2FsaWFzJywgJHRoaXMtPm1BbGlhcyk7CgkJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigncGFnZScsICR0aGlzLT5tQWxpYXMpOwoJCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3BhZ2VfaWQnLCAkdGhpcy0+bUFsaWFzKTsKCQkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdwYWdlX2FsaWFzJywgJHRoaXMtPm1BbGlhcyk7CgkJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigncGFnZV9uYW1lJywgJHRoaXMtPm1BbGlhcyk7CgkJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigncG9zaXRpb24nLCAkdGhpcy0+bUhpZXJhcmNoeSk7CgkJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduKCdmcmllbmRseV9wb3NpdGlvbicsICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5DcmVhdGVGcmllbmRseUhpZXJhcmNoeVBvc2l0aW9uKCR0aGlzLT5tSGllcmFyY2h5KSk7CgkJCSRkYXRhID0gJEFkdmFuY2VkQ29udGVudC0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEocHJlZ19yZXBsYWNlKCcvOjo6KFteOl0rKTo6Oi8nLCAneyQxfScsICRkYXRhKSk7CgkJfQoJCXJldHVybiAkZGF0YTsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIEluaGVyaXRQYXJlbnRQcm9wKCRwYXJlbnRJZCwgJHByb3BOYW1lLCAkY3VycmVudFByb3ApCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogaW5oZXJpdHMgYSBwcm9wZXJ0eSBvZiBhIHBhcmVudCBwYWdlOwoJICogaWYgcGFyZW50IHBhZ2UgaGFzIGFsc28gc2VsZWN0ZWQgaW5oZXJpdGFuY2UgZm9yIHRoYXQgcHJvcGVydHkgLT4gZG8gcmVjdXJzaW9uCgkgKgoJICogQHBhcmFtIGludCAkcGFyZW50SWQgLSBUaGUgaWQgb2YgdGhlIHBhcmVudCBwYWdlCgkgKiBAcGFyYW0gc3RyaW5nICRwcm9wTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBpbmhlcml0CgkgKiBAcGFyYW0gYXJyYXkgJGN1cnJlbnRQcm9wIChvcHRpb25hbCkgLSBJZiBwcm9wIGlzIGFuIGFycmF5IHRoaXMgd2lsbCBiZSB0aGUgaXRlbXMgb2YgdGhlIGN1cnJlbnQgcGFnZTsgU28gcmV0dXJuIGFycmF5IHdpbGwgY29udGFpbiBhbGwgaXRlbXMgb2YgdGhlIGN1cnJlbnQgcGFnZSBhbmQgcGFyZW50IHBhZ2VzOyBvdGhlcndpc2Ugb25seSB0aGUgcGFyZW50cyBpdGVtcyB3aWxsIGJlIHJldHVybmVkCgkgKgoJICogQHJldHVybiBhcnJheXxzdHJpbmcgLSBUaGUgcHJvcCBvZiB0aGUgbGFzdCBmb3VuZCBwYXJlbnQgdGhhdCBoYXMgbm8gaW5oZXJpdGFuY2Ugb3IgYW4gYXJyYXkgb2YgaXRlbXMgb2YgYWxsIHBhcmVudHMgdGhhdCBoYXZlIGluaGVyaXRhbmNlCgkgKi8KCWZ1bmN0aW9uIEluaGVyaXRQYXJlbnRQcm9wKCRwYXJlbnRJZCwgJHByb3BOYW1lLCAkY3VycmVudFByb3AgPSBhcnJheSgpKQoJewoJCWlmKCRwcm9wTmFtZSA9PSAnZmV1X2FjY2VzcycpCgkJewoJCQkkcHJvcCA9IGFycmF5KCk7CgkJCWZvcmVhY2goJGN1cnJlbnRQcm9wIGFzICRrPT4kdikKCQkJewoJCQkJaWYoJHYgIT0gJy0xJykKCQkJCXsKCQkJCQkkcHJvcFtdID0gJHY7CgkJCQl9CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJJHByb3AgPSAnJzsKCQl9CgkJCgkJd2hpbGUoICRwYXJlbnRJZCA+IDAgKQoJCXsKCQkJJGNvbnRlbnQgPSAkdGhpcy0+R2V0Q29udGVudFByb3AoJHBhcmVudElkLCAkcHJvcE5hbWUsICdjb250ZW50MicpOwoJCQlpZighJGNvbnRlbnQpCgkJCXsKCQkJCXJldHVybiAkcHJvcDsKCQkJfQoJCQkkcGFyZW50SWQgID0gJGNvbnRlbnRbJ3BhcmVudF9pZCddOwoJCQkkcHJvcFZhbHVlID0gJGNvbnRlbnRbJ3Byb3BfdmFsdWUnXTsKCQkJaWYoJHByb3BOYW1lID09ICdmZXVfYWNjZXNzJykKCQkJewoJCQkJaWYoc3RycG9zKCRwcm9wVmFsdWUsJywnKSA9PT0gRkFMU0UpCgkJCQl7CgkJCQkJJF9wcm9wID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgiOyIsICRwcm9wVmFsdWUpKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkX3Byb3AgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCIsIiwgJHByb3BWYWx1ZSkpOwoJCQkJfQoJCQkJZm9yZWFjaCgkX3Byb3AgYXMgJF9wKQoJCQkJewoJCQkJCWlmKCFpbl9hcnJheSgkX3AsICRwcm9wKSAmJiAkX3AgIT0gJy0xJyAmJiAkX3AgIT0gJycpCgkJCQkJewoJCQkJCQkkcHJvcFtdID0gJF9wOwoJCQkJCX0KCQkJCX0KCQkJCWlmKCFpbl9hcnJheSgnLTEnLCAkX3Byb3ApIHx8ICgkcGFyZW50SWQgPD0gMCAmJiBpbl9hcnJheSgnLTEnLCAkX3Byb3ApKSkKCQkJCXsKCQkJCQlyZXR1cm4gJHByb3A7CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpZigkcGFyZW50SWQgPD0gMCAmJiAkcHJvcFZhbHVlID09ICctMScpCgkJCQl7CgkJCQkJcmV0dXJuOwoJCQkJfQoJCQkJZWxzZSBpZigkcHJvcGVydHlWYWx1ZSAhPSAnLTEnKQoJCQkJewoJCQkJCXJldHVybiAkcHJvcFZhbHVlOwoJCQkJfQoJCQl9CgkJfQoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gR2V0Q29udGVudFByb3AoJGNvbnRlbnRJZCwgJHByb3BOYW1lLCAkY29udGVudFR5cGUpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogZ2V0cyBhIHByb3BlcnR5IG9mIGEgY29udGVudCBwYWdlCgkgKgoJICogQHBhcmFtIGludCAkY29udGVudElkIC0gVGhlIGlkIG9mIHRoZSBjb250ZW50IHRvIGdldCB0aGUgcHJvcGVydHkgZnJvbQoJICogQHBhcmFtIHN0cmluZyAkcHJvcE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tCgkgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50VHlwZSAob3B0aW9uYWwpIC0gVGhlIHR5cGUgb2YgdGhlIGNvbnRlbnQKCSAqCgkgKiBAcmV0dXJuIG1peGVkIC0gRmFsc2UgaWYgbm90IGV4aXN0cyBvciBhcnJheSgncGFyZW50X2lkJywncHJvcF92YWx1ZScpCgkgKgoJICovCglmdW5jdGlvbiBHZXRDb250ZW50UHJvcCgkY29udGVudElkLCAkcHJvcE5hbWUsICRjb250ZW50VHlwZSA9ICcnKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkZGIgPSYgJGdDbXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCBDUC5jb250ZW50LCBDLnBhcmVudF9pZCwgQy5jb250ZW50X2FsaWFzIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50X3Byb3BzIENQCgkJCUxFRlQgSk9JTiAiIC4gY21zX2RiX3ByZWZpeCgpIC4gImNvbnRlbnQgQyBPTiBDLmNvbnRlbnRfaWQgPSBDUC5jb250ZW50X2lkCgkJCVdIRVJFIENQLmNvbnRlbnRfaWQgPSA/IEFORCBDUC5wcm9wX25hbWUgPSA/IjsKCQkkcCA9IGFycmF5KCRjb250ZW50SWQsICRwcm9wTmFtZSk7CgkJaWYoJGNvbnRlbnRUeXBlICE9ICcnKQoJCXsKCQkJJHF1ZXJ5IC49ICIgQU5EIEMudHlwZSA9ID8iOwoJCQkkcFtdICAgID0gJGNvbnRlbnRUeXBlOwoJCX0KCQkkcXVlcnkgLj0gIiBMSU1JVCAxIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcCk7CgkJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQlyZXR1cm4gYXJyYXkoJ3BhcmVudF9pZCc9PiRyb3dbJ3BhcmVudF9pZCddLCAncHJvcF92YWx1ZSc9PiRyb3dbJ2NvbnRlbnQnXSk7CgkJfQoJCQoJCXJldHVybiBmYWxzZTsKCX0KCQoJZnVuY3Rpb24gR2V0R3JvdXBzKCkKCXsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0mICRnQ21zLT5HZXREYigpOwoJCSRncm91cHMgPSBhcnJheSgpOwoJCSRxdWVyeSA9ICJTRUxFQ1QgZ3JvdXBfaWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4idXNlcl9ncm91cHMgV0hFUkUgdXNlcl9pZCA9ID8iOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KGdldF91c2VyaWQoKSkpOwoJCXdoaWxlKCAkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApCgkJewoJCQkkZ3JvdXBzW10gPSAkcm93Wydncm91cF9pZCddICogLTE7CgkJfQoJCXJldHVybiAkZ3JvdXBzOwoJfQoJCglmdW5jdGlvbiBDaGVja0Jsb2NrUGVybWlzc2lvbigmJGJsb2NrSW5mbykKCXsKCQkkYWRkdF9lZGl0b3JzID0gYXJyYXkoKTsKCQkjIGNoZWNrIGlmIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gZWRpdCB0aGlzIGJsb2NrCgkJaWYoKCRibG9ja0luZm9bJ2VkaXRvcl91c2VycyddICE9ICcnIHx8ICRibG9ja0luZm9bJ2VkaXRvcl9ncm91cHMnXSAhPSAnJykKCQkmJiAhY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWxsIEFkdmFuY2VkQ29udGVudCBCbG9ja3MnKSkKCQl7CgkJCSRlZGl0b3JHcm91cHMgPSAgJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnLCcsJGJsb2NrSW5mb1snZWRpdG9yX2dyb3VwcyddKSk7CgkJCSRlZGl0b3JVc2VycyAgPSAgJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnLCcsJGJsb2NrSW5mb1snZWRpdG9yX3VzZXJzJ10pKTsKCQkJZm9yZWFjaCAoJHRoaXMtPl9hbGxHcm91cHMgYXMgJG9uZUdyb3VwKQoJCQl7CgkJCQlpZihpbl9hcnJheSgkb25lR3JvdXAtPm5hbWUsJGVkaXRvckdyb3VwcykpCgkJCQl7CgkJCQkJJGFkZHRfZWRpdG9yc1tdID0gJG9uZUdyb3VwLT5pZCotMTsKCQkJCX0KCQkJfQoJCQkKCQkJZm9yZWFjaCAoJHRoaXMtPl9hbGxVc2VycyBhcyAkb25lVXNlcikKCQkJewoJCQkJaWYoaW5fYXJyYXkoJG9uZVVzZXItPnVzZXJuYW1lLCRlZGl0b3JVc2VycykpCgkJCQl7CgkJCQkJJGFkZHRfZWRpdG9yc1tdID0gJG9uZVVzZXItPmlkOwoJCQkJfQoJCQl9CgkJCQoJCQlpZighaW5fYXJyYXkoZ2V0X3VzZXJpZCgpLCRhZGR0X2VkaXRvcnMpCgkJCSYmICFjb3VudChhcnJheV9pbnRlcnNlY3QoJHRoaXMtPl91c2VyR3JvdXBzLCRhZGR0X2VkaXRvcnMpKSkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXJldHVybiB0cnVlOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gSXNWYXJFbXB0eSgkdmFyLCAkdHJpbSwgJHVuc2V0RW1wdHlJbmRleGVzKQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIGNoZWNrcyBpZiBhIHZhciBpcyBlbXB0eS4gaWYgdmFyIGlzIGFuIGFycmF5IGl0IHJlY3Vyc2l2bGV5IGNoZWNrcyBhbGwgZWxlbWVudHMKCSAqCgkgKiBAcGFyYW0gbWl4ZWQgJHZhciAtIHRoZSB2YXIgdG8gY2hlY2sgZm9yIGVtcHR5IHZhbHVlKHMpCgkgKiBAcGFyYW0gYm9vbGVhbiAkdHJpbSAtIHRydWUgdG8gdHJpbSBvZmYgc3BhY2VzCgkgKiBAcGFyYW0gYm9vbGVhbiAkdW5zZXRFbXB0eUluZGV4ZXMgLSB0cnVlIHRvIGRlbGV0ZSBlbXB0eSBlbGVtZW50cyBmcm9tIGFycmF5CgkgKiBAcmV0dXJuIGJvb2xlYW4gLSB0cnVlIGlmIGVtcHR5LCBmYWxzZSBpZiBub3QKCSAqLwoJZnVuY3Rpb24gSXNWYXJFbXB0eSgmJHZhciwgJHRyaW0gPSB0cnVlLCAkdW5zZXRFbXB0eUluZGV4ZXMgPSBmYWxzZSkKCXsKCQlpZiAoaXNfYXJyYXkoJHZhcikpCgkJewoJCQlmb3JlYWNoICgkdmFyIGFzICRrPT4kdikKCQkJewoJCQkJaWYgKCEkdGhpcy0+SXNWYXJFbXB0eSgkdikpCgkJCQl7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWlmKCR1bnNldEVtcHR5SW5kZXhlcykKCQkJCQl7CgkJCQkJCXVuc2V0KCR2YXJbJGtdKTsKCQkJCQl9CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9CgkJCX0KCQl9CgkJZWxzZSBpZigkdHJpbSAmJiB0cmltKCR2YXIpID09ICcnKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCWVsc2UgaWYoJHZhciA9PSAnJykKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCQoJLyoqCgkgKiBmdW5jdGlvbiBDbGVhbkFycmF5KCRhcnJheSkKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiByZW1vdmVzIGVtcHR5IGVsZW1lbnRzIGZyb20gYW4gYXJyYXkKCSAqIChjYW4gYmUgdXNlZnVsIHdoZW4gdXNpbmcgZnVuY3Rpb24gZXhwbG9kZSB0byBjcmVhdGUgdGhlIGFycmF5IG9mIGEgY3N2KQoJICoKCSAqIEBwYXJhbSBhcnJheSAkYXJyYXkgLSB0aGUgYXJyYXkgdG8gY2xlYW4gdXAKCSAqIEByZXR1cm4gYXJyYXkgLSBhbiBhcnJheSB3aXRob3V0IGVtcHR5IGVsZW1lbnRzIG9yIGFuIGVtcHR5IGFycmF5CgkgKi8KCWZ1bmN0aW9uIENsZWFuQXJyYXkoJGFycmF5KQoJewoJCWlmIChpc19hcnJheSgkYXJyYXkpKQoJCXsKCQkJZm9yZWFjaCAoJGFycmF5IGFzICRrPT4kdikKCQkJewoJCQkJaWYgKCR0aGlzLT5Jc1ZhckVtcHR5KCR2LHRydWUsdHJ1ZSkpCgkJCQl7CgkJCQkJdW5zZXQoJGFycmF5WyRrXSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJaWYoaXNfYXJyYXkoJHYpKQoJCQkJCXsKCQkJCQkJJHYgPSAkdGhpcy0+Q2xlYW5BcnJheSgkdik7CgkJCQkJCWlmKCR0aGlzLT5Jc1ZhckVtcHR5KCR2LHRydWUsdHJ1ZSkpCgkJCQkJCXsKCQkJCQkJCXVuc2V0KCRhcnJheVska10pOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGFycmF5WyRrXSA9ICR2OwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJCXJldHVybiAkYXJyYXk7CgkJfQoJCXJldHVybiBhcnJheSgpOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gSXNUcnVlKCR2YWx1ZSkKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiBjaGVja3MgaWYgYSB2YWx1ZSBpcyBsaXRlcmFsbHkgInRydWUiCgkgKgoJICogQHBhcmFtIG1peGVkICR2YWx1ZSAtIHRoZSB2YWx1ZSB0byBjaGVjawoJICogQHJldHVybiBib29sCgkgKi8KCWZ1bmN0aW9uIElzVHJ1ZSgkdmFsdWUpCgl7CgkJcmV0dXJuIChzdHJ0b2xvd2VyKCR2YWx1ZSkgPT09ICd0cnVlJyB8fCAkdmFsdWUgPT09IDEgfHwgJHZhbHVlID09PSAnMScgfHwgJHZhbHVlID09PSB0cnVlKTsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIElzRmFsc2UoJHZhbHVlKQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIGNoZWNrcyBpZiBhIHZhbHVlIGlzIGxpdGVyYWxseSAiZmFsc2UiCgkgKgoJICogQHBhcmFtIG1peGVkICR2YWx1ZSAtIHRoZSB2YWx1ZSB0byBjaGVjawoJICogQHJldHVybiBib29sCgkgKi8KCWZ1bmN0aW9uIElzRmFsc2UoJHZhbHVlKQoJewoJCXJldHVybiAoc3RydG9sb3dlcigkdmFsdWUpID09PSAnZmFsc2UnIHx8ICR2YWx1ZSA9PT0gJzAnIHx8ICR2YWx1ZSA9PT0gMCB8fCAkdmFsdWUgPT09IGZhbHNlIHx8ICR2YWx1ZSA9PT0gJycpOwoJfQoJCglmdW5jdGlvbiBDaGVja0Zyb250ZW5kQWNjZXNzKCRmZXVfZ3JvdXBzKQoJewoJCSRhY2Nlc3MgPSB0cnVlOwoJCWlmKCFpc19hcnJheSgkZmV1X2dyb3VwcykpCgkJewoJCQkkZmV1X2dyb3VwcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRmZXVfZ3JvdXBzKSk7CgkJfQoJCWlmKCAkZmV1c2VycyA9JiBBZHZhbmNlZENvbnRlbnQ6OkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJykgJiYgIWVtcHR5KCRmZXVfZ3JvdXBzKSkKCQl7CgkJCSMgLi4uIGRlbnkgYWNjZXNzIGJ5IGRlZmF1bHQgbm93IC4uLgoJCQkkYWNjZXNzID0gZmFsc2U7CgkJCSMgLi4uIGNoZWNrIGlmIHVzZXIgaXMgbG9nZ2VkIGluIGFuZCBiZWxvbmdzIHRvIGEgZ3JvdXAgLi4uCgkJCSR1c2VyaWQgPSAkZmV1c2Vycy0+TG9nZ2VkSW5JZCgpOwoJCQlpZigkdXNlcmlkICYmICRncm91cHMgPSYgJHRoaXMtPkdldEZldUdyb3VwcygkdXNlcmlkKSkKCQkJewoJCQkJIyBjb21wYXJlIHVzZXJzIGdyb3VwcyB3aXRoIHNlbGVjdGVkIG9uZXMKCQkJCWZvcmVhY2goJGdyb3VwcyBhcyAkb25lZ3JvdXApCgkJCQl7CgkJCQkJaWYoaW5fYXJyYXkoJG9uZWdyb3VwWydncm91cGlkJ10sJGZldV9ncm91cHMpIHx8IGluX2FycmF5KCRvbmVncm91cFsnZ3JvdXBuYW1lJ10sJGZldV9ncm91cHMpKQoJCQkJCXsKCQkJCQkJIyBpZiBtYXRjaCAtPiBncmFudCBhY2Nlc3MKCQkJCQkJJGFjY2VzcyA9IHRydWU7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gJGFjY2VzczsKCX0KCQoJZnVuY3Rpb24gJkdldEZldUdyb3VwcygkdXNlcmlkKQoJewoJCWlmKCEkdXNlcmlkKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlpZiggJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50OjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpICYmICEkdGhpcy0+X2ZldUdyb3VwcykKCQl7CgkJCSR0aGlzLT5fZmV1R3JvdXBzID0gJGZldXNlcnMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1c2VyaWQpOwoJCX0KCQlyZXR1cm4gJHRoaXMtPl9mZXVHcm91cHM7Cgl9CgkKCWZ1bmN0aW9uIENoZWNrRnJvbnRlbmRQYWdlQWNjZXNzKCRwYWdlX2lkID0gJycpCgl7CgkJZ2xvYmFsICRnQ21zOwoJCWlmKCRwYWdlX2lkID4gMCAmJiAkcGFnZV9pZCAhPSAkdGhpcy0+SWQoKSkKCQl7CgkJCSRtYW5hZ2VyICAgID0mICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CgkJCSRub2RlICAgICAgID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkcGFnZV9pZCk7CgkJCSRjb250ZW50T2JqID0mICRub2RlLT5HZXRDb250ZW50KCk7CgkJfQoJCWVsc2UKCQl7CgkJCSRjb250ZW50T2JqID0mICR0aGlzOwoJCX0KCQkKCQkjaWYoIWlzX29iamVjdCgkY29udGVudE9iaikpCgkJI3sKCQkjCXJldHVybiBmYWxzZTsKCQkjfQoJCQoJCSRhY2Nlc3MgPSB0cnVlOwoJCWlmKCRjb250ZW50T2JqLT5UeXBlKCkgPT0gJ2NvbnRlbnQyJykKCQl7CgkJCWlmKHN0cnBvcygkY29udGVudE9iai0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjY2VzcycpLCcsJykgPT09IEZBTFNFKQoJCQl7CgkJCQkkZmV1X2dyb3VwcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJzsnLCRjb250ZW50T2JqLT5HZXRQcm9wZXJ0eVZhbHVlKCdmZXVfYWNjZXNzJykpKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRmZXVfZ3JvdXBzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnLCcsJGNvbnRlbnRPYmotPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSkpOwoJCQl9CgkJCQoJCQlpZighZW1wdHkoJGZldV9ncm91cHMpKQoJCQl7CgkJCQkjIGlmIHBhZ2UgaGFzIG5vIHBhcmVudHMgYnV0IGluaGVyaXRhbmNlIC0+IHJlbW92ZSBpbmhlcml0YW5jZSAoc2hvdWxkIG5ldmVyIGhhcHBlbiBidXQganVzdCBpbiBjYXNlKQoJCQkJaWYoJGNvbnRlbnRPYmotPlBhcmVudElkKCkgPD0gMCAmJiBpbl9hcnJheSgiLTEiLCRmZXVfZ3JvdXBzKSkKCQkJCXsKCQkJCQlmb3JlYWNoKCRmZXVfZ3JvdXBzIGFzICRrPT4kdikKCQkJCQl7CgkJCQkJCWlmKCR2PT0nLTEnKQoJCQkJCQl7CgkJCQkJCQl1bnNldCgkZmV1X2dyb3Vwc1ska10pOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJCgkJCQkjIGlmIHRoZXJlIHN0aWxsIGlzIGluaGVyaXRhbmNlIC4uLgoJCQkJaWYoaW5fYXJyYXkoJy0xJywkZmV1X2dyb3VwcykpCgkJCQl7CgkJCQkJIyAuLi4gZmluYWxseSBpbmhlcml0CgkJCQkJJGZldV9ncm91cHMgPSAkY29udGVudE9iai0+SW5oZXJpdFBhcmVudFByb3AoJGNvbnRlbnRPYmotPlBhcmVudElkKCksJ2ZldV9hY2Nlc3MnLCRmZXVfZ3JvdXBzKTsKCQkJCX0KCQkJfQoJCQkkYWNjZXNzID0gJHRoaXMtPkNoZWNrRnJvbnRlbmRBY2Nlc3MoJGZldV9ncm91cHMpOwoJCX0KCQlyZXR1cm4gJGFjY2VzczsKCX0KCQoJZnVuY3Rpb24gRG9Gcm9udGVuZFBhZ2VBY3Rpb24oKQoJewoJCWdsb2JhbCAkZ0NtczsKCQlpZiggJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50OjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycgKSkKCQl7CgkJCSMgZ2V0IHRoZSBwYWdlIHRvIHJlZGlyZWN0IHRvCgkJCSRyZWRpcmVjdFBhZ2UgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgncmVkaXJlY3RfcGFnZScpOwoJCQlpZigkcmVkaXJlY3RQYWdlID09ICctMScpCgkJCXsKCQkJCSRyZWRpcmVjdFBhZ2UgPSAkdGhpcy0+SW5oZXJpdFBhcmVudFByb3AoJHRoaXMtPlBhcmVudElkKCksJ3JlZGlyZWN0X3BhZ2UnKTsKCQkJfQoJCQkKCQkJIyBkbyBub3QgcmVkaXJlY3QgdG8gY3VycmVudCBwYWdlIC0+IHdpbGwgcmVzdWx0IGluIGVuZGxlc3MgcmVjdXJzaXZlIHJlZGlyZWN0aW9uCgkJCWlmKCRyZWRpcmVjdFBhZ2UgPT0gJHRoaXMtPklkKCkgfHwgJHJlZGlyZWN0UGFnZSA9PSAkdGhpcy0+QWxpYXMoKSkKCQkJewoJCQkJJHJlZGlyZWN0UGFnZSA9ICcnOwoJCQl9CgkJCQoJCQkjIGdldCBmZXUgYWN0aW9uCgkJCSRmZXVBY3Rpb24gPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjdGlvbicpOwoJCQkKCQkJaWYoJGZldUFjdGlvbiA9PSAnLTEnKQoJCQl7CgkJCQkkZmV1QWN0aW9uID0gJHRoaXMtPkluaGVyaXRQYXJlbnRQcm9wKCR0aGlzLT5QYXJlbnRJZCgpLCdmZXVfYWN0aW9uJyk7CgkJCX0KCQkJCgkJCSMgaWYgd2Ugc3RpbGwgZG9uJ3QgaGF2ZSBhIHJlZGlyZWN0IHBhZ2UgLT4gZG8gZmV1IGFjdGlvbiBpbiBjdXJyZW50IHBhZ2UKCQkJaWYoJHJlZGlyZWN0UGFnZSA9PSAnJykKCQkJewoJCQkJIyBpZiB3ZSB3YW50IGFuIGFjdGlvbiAoYW5kIHdlIGhhdmUgbm90IGRvbmUgdGhpcyBiZWZvcmUpIC4uLgoJCQkJaWYoJGZldUFjdGlvbiAmJiAhJHRoaXMtPl9mZXVBY3Rpb24pCgkJCQl7CgkJCQkJIyAuLi4gc2V0IGEgZmxhZyB0aGF0IHdlIGFscmVhZHkgaGF2ZSBhIGxvZ2luIGZvcm0gbm93IChqdXN0IHRvIHByZXZlbnQgdG8gZGlzcGxheSBpdCBhZ2FpbiBmb3Igb3RoZXIgY29udGVudCBibG9ja3MpIC4uLgoJCQkJCSR0aGlzLT5fZmV1QWN0aW9uID0gdHJ1ZTsKCQkJCQkjIC4uLiBhbmQgZmluYWxseSBkbyBmZXUgYWN0aW9uCgkJCQkJcmV0dXJuICRmZXVzZXJzLT5Eb0FjdGlvbignZGVmYXVsdCcsICdjbnRudDAxJywgYXJyYXkoJ2Zvcm0nPT4nbG9naW4nKSwgJHRoaXMtPklkKCkpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSMgLi4uIG90aGVyd2lzZSBqdXN0IHJldHVybiBub3RoaW5nCgkJCQkJcmV0dXJuOwoJCQkJfQoJCQkJCgkJCX0KCQkJIyBlbHNlIGlmIHdlIGhhdmUgYSByZWRpcmVjdCBwYWdlIC4uLgoJCQllbHNlCgkJCXsKCQkJCSMgZ2V0IHRoZSByZWRpcmVjdCBwYXJhbXMKCQkJCSRwYXR0ZXJuICAgICAgICA9ICcvKFtcd10rKT0oWyJdW14iXSpbIl18W1wnXVteXCddKltcJ118W15cJyJcc10qKS8nOwoJCQkJJHJlZGlyZWN0UGFyYW1zID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ3JlZGlyZWN0X3BhcmFtcycpOwoJCQkJJGV2YWx1YXRlU21hcnR5ID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2V2YWx1YXRlX3NtYXJ0eScpOwoJCQkJaWYoJGV2YWx1YXRlU21hcnR5KQoJCQkJewoJCQkJCSRyZWRpcmVjdFBhcmFtcyA9ICRmZXVzZXJzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkcmVkaXJlY3RQYXJhbXMpOwoJCQkJfQoJCQkJCgkJCQkkbWF0Y2hlcyAgPSBhcnJheSgpOwoJCQkJJHJlc3VsdCAgID0gcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sICRyZWRpcmVjdFBhcmFtcywgJG1hdGNoZXMpOwoJCQkJJF9wYXJhbXMxID0gYXJyYXkoKTsKCQkJCSRfcGFyYW1zMiA9IGFycmF5KCk7CgkJCQlmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkbWF0Y2hlc1sxXSk7ICRpKyspCgkJCQl7CgkJCQkJaWYoc3RhcnRzd2l0aCgkbWF0Y2hlc1syXVskaV0sJ1wnJykpCgkJCQkJewoJCQkJCQkkbWF0Y2hlc1syXVskaV0gPSB0cmltKCRtYXRjaGVzWzJdWyRpXSwnXCcnKTsKCQkJCQl9CgkJCQkJZWxzZSBpZihzdGFydHN3aXRoKCRtYXRjaGVzWzJdWyRpXSwnIicpKQoJCQkJCXsKCQkJCQkJJG1hdGNoZXNbMl1bJGldID0gdHJpbSgkbWF0Y2hlc1syXVskaV0sJyInKTsKCQkJCQl9CgkJCQkJJF9wYXJhbXMxWyRtYXRjaGVzWzFdWyRpXV0gPSAkbWF0Y2hlc1syXVskaV07CgkJCQkJJF9wYXJhbXMyW10gICAgICAgICAgICAgICAgPSAkbWF0Y2hlc1sxXVskaV0gLiAnPScgLiAkbWF0Y2hlc1syXVskaV07CgkJCQl9CgkJCQkjIGlmIHdlIHdhbnQgYW4gYWN0aW9uIC4uLgoJCQkJaWYoJGZldUFjdGlvbikKCQkJCXsKCQkJCQkjIC4uLiByZWRpcmVjdCB0byB0aGUgc3BlY2lmaWVkIHBhZ2UgYW5kIGRvIGZldSBhY3Rpb24KCQkJCQlyZXR1cm4gJGZldXNlcnMtPlJlZGlyZWN0Rm9yRnJvbnRFbmQoJ2NudG50MDEnLCAkcmVkaXJlY3RQYWdlLCAnZGVmYXVsdCcsICRfcGFyYW1zMSwgZmFsc2UpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSMgLi4uIG90aGVyd2lzZSBqdXN0IHJlZGlyZWN0IC0gVG9EbzogQ2hlY2sgZm9yIFNTTCBTdHVmZgoJCQkJCSRtYW5hZ2VyID0mICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CgkJCQkJJG5vZGUgICAgPSAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUFsaWFzKCRyZWRpcmVjdFBhZ2UpOwoJCQkJCSRjb250ZW50ID0mICRub2RlLT5HZXRDb250ZW50KCk7CgkJCQkJaWYgKGlzc2V0KCRjb250ZW50KSAmJiAkdXJsID0gJGNvbnRlbnQtPkdldFVSTCgpKQoJCQkJCXsKCQkJCQkJJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsKCQkJCQkJJHVybCA9IHRyaW0oc3RyX3JlcGxhY2UoCgkJCQkJCQlhcnJheSgkY29uZmlnWydyb290X3VybCddIC4gJy9pbmRleC5waHAnLAoJCQkJCQkJCSRjb25maWdbJ3NzbF91cmwnXSAuICcvaW5kZXgucGhwJywKCQkJCQkJCQkkY29uZmlnWydyb290X3VybCddLAoJCQkJCQkJCSRjb25maWdbJ3NzbF91cmwnXSksCgkJCQkJCQknJywgJHVybCksJy8/Jyk7CgkJCQkJCQoJCQkJCQlpZighZW1wdHkoJF9wYXJhbXMxKSAmJiAhZW1wdHkoJF9wYXJhbXMyKSkKCQkJCQkJewoJCQkJCQkJaWYoJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddID09ICdub25lJykKCQkJCQkJCXsKCQkJCQkJCQlpZihtZXRob2RfZXhpc3RzKCRjb250ZW50LCdTZWN1cmUnKSAmJiAkY29udGVudC0+U2VjdXJlKCkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdXJsID0gJGNvbmZpZ1snc3NsX3VybCddIC4gJy9pbmRleC5waHA/JyAuIGltcGxvZGUoJyYnLCRfcGFyYW1zMikgLiAnJicgLiAkdXJsOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkdXJsID0gJGNvbmZpZ1sncm9vdF91cmwnXSAuICcvaW5kZXgucGhwPycgLiBpbXBsb2RlKCcmJywkX3BhcmFtczIpIC4gJyYnIC4gJHVybDsKCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCQllbHNlIGlmKCRjb25maWdbJ3VybF9yZXdyaXRpbmcnXSA9PSAnaW50ZXJuYWwnKQoJCQkJCQkJewoJCQkJCQkJCWlmKG1ldGhvZF9leGlzdHMoJGNvbnRlbnQsJ1NlY3VyZScpICYmICRjb250ZW50LT5TZWN1cmUoKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSR1cmwgPSAkY29uZmlnWydzc2xfdXJsJ10gLiAnL2luZGV4LnBocC8nIC4gaW1wbG9kZSgnLycsJF9wYXJhbXMxKSAuICcvJyAuICR1cmw7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCSR1cmwgPSAkY29uZmlnWydyb290X3VybCddIC4gJy9pbmRleC5waHAvJyAuIGltcGxvZGUoJy8nLCRfcGFyYW1zMSkgLiAnLycgLiAkdXJsOwoJCQkJCQkJCX0KCQkJCQkJCQlpZigkY29udGVudC0+RGVmYXVsdENvbnRlbnQoKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSR1cmwgLj0gJGNvbnRlbnQtPkFsaWFzKCkgLiAkY29uZmlnWydwYWdlX2V4dGVuc2lvbiddOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJCWVsc2UgaWYoJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddID09ICdtb2RfcmV3cml0ZScpCgkJCQkJCQl7CgkJCQkJCQkJaWYobWV0aG9kX2V4aXN0cygkY29udGVudCwnU2VjdXJlJykgJiYgJGNvbnRlbnQtPlNlY3VyZSgpKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHVybCA9ICRjb25maWdbJ3NzbF91cmwnXSAuICcvJyAuIGltcGxvZGUoJy8nLCRfcGFyYW1zMSkgLiAnLycgLiAkdXJsOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkdXJsID0gJGNvbmZpZ1sncm9vdF91cmwnXSAuICcvJyAuIGltcGxvZGUoJy8nLCRfcGFyYW1zMSkgLiAnLycgLiAkdXJsOwoJCQkJCQkJCX0KCQkJCQkJCQlpZigkY29udGVudC0+RGVmYXVsdENvbnRlbnQoKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSR1cmwgLj0gJGNvbnRlbnQtPkFsaWFzKCkgLiAkY29uZmlnWydwYWdlX2V4dGVuc2lvbiddOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlyZXR1cm4gcmVkaXJlY3QoJHVybCk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQp9Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PEZpbGVzICouY3NzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIG9yZGVyIGRlbnksYWxsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBhbGxvdyBmcm9tIGFsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L0ZpbGVzPgo=]]></data>
	</file>
	<file>
	  <filename>/css/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/css/style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNvcnRhYmxlX2hhbmRsZXI6aG92ZXIgewoJY3Vyc29yIDogbW92ZTsKfQoKLnNvcnRhYmxlX2hhbmRsZXIgewoJbWFyZ2luOjAgNXB4IDAgMDsKCXZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDsKfQoKLnNvcnRhYmxlX3dyYXBwZXIgaW5wdXQgewoJbWFyZ2luOjAgNXB4IDAgMDsKfQoKLnNvcnRhYmxlIHsKCWxpbmUtaGVpZ2h0OiAyMDAlOwoJcGFkZGluZzogMCAwIDAgNXB4Owp9CgpkaXYucGFnZW92ZXJmbG93LkFkdmFuY2VkQ29udGVudF9Db250ZW50QmxvY2sgewoJd2lkdGg6IDEwMCU7Cn0KCmxlZ2VuZC5BZHZhbmNlZENvbnRlbnRfQ29udGVudEJsb2NrLApsZWdlbmQuQWR2YW5jZWRDb250ZW50X0Jsb2NrR3JvdXAgewoJcGFkZGluZy1ib3R0b206IDA7CglwYWRkaW5nLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IDA7CgltYXJnaW4tdG9wOiAwOwoJZm9udC1zaXplOiAxMDAlOwp9CgoKZGl2I3BhZ2VfdGFicyBkaXYuU3ViVGFiV3JhcHBlciB7CgliYWNrZ3JvdW5kOnRyYW5zcGFyZW50OwoJYm9yZGVyOm5vbmU7CgljdXJzb3I6YXV0bzsKCWZsb2F0Om5vbmU7CgltYXJnaW46MHB4OwoJcGFkZGluZzowcHg7Cn0KCi8qIENhbGVuZGFyICovCi5jYWxlbmRhclRyaWdnZXI6aG92ZXIgewoJY3Vyc29yOiBwb2ludGVyOwp9CgpkaXYuY2FsZW5kYXIKewogIGZvbnQtc2l6ZTogc21hbGxlcjsKICBjb2xvcjogIzNlM2UzZTsKfQoKZGl2LmNhbGVuZGFyLnBvcHVwCnsKICBtYXJnaW4tbGVmdDogLTQwcHg7CiAgbWFyZ2luLXRvcDogLTEwMHB4OwogIHotaW5kZXg6IDk5OTk7Cn0KCmRpdi5jYWxlbmRhciB0YWJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZTVlNWU1OwogIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7CiAgYm9yZGVyLXNwYWNpbmc6IDFweDsKfQoKZGl2LmNhbGVuZGFyIHRoZWFkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgpkaXYuY2FsZW5kYXIgdGQsCmRpdi5jYWxlbmRhciB0aAp7CiAgcGFkZGluZzogMnB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKZGl2LmNhbGVuZGFyIHRkLnRpdGxlCnsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogI2U4YTgwMDsKfQoKZGl2LmNhbGVuZGFyIHRoCnsKICBmb250LXdlaWdodDogYm9sZDsKfQoKZGl2LmNhbGVuZGFyIHRyLmRheXMgdGQgewogIHdpZHRoOiAyZW07CiAgY29sb3I6ICMzZDYwYmE7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJvcmRlcjogMXB4IHNvbGlkICNlNWU1ZTU7Cn0KCmRpdi5jYWxlbmRhciB0ci5kYXlzIHRkOmhvdmVyLApkaXYuY2FsZW5kYXIgdGQuYnV0dG9uOmhvdmVyCnsKICBib3JkZXItY29sb3I6ICNlOGE4MDA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KZGl2LmNhbGVuZGFyIHRyLmRheXMgdGQ6aG92ZXIKewogYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKfQoKZGl2LmNhbGVuZGFyIHRyLmRheXMgdGQ6YWN0aXZlCmRpdi5jYWxlbmRhciB0ZC5idXR0b246YWN0aXZlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RlOwp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC5zZWxlY3RlZAp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U4YTgwMDsKICBib3JkZXItY29sb3I6ICNlOGE4MDAgIWltcG9ydGFudDsKICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC53ZWVrZW5kIHsKCWNvbG9yOiAjN2Y5ZGU4Owp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC50b2RheQp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgYm9yZGVyLWNvbG9yOiAjM2Q2MGJhOwp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC5vdGhlckRheQp7CiAgYmFja2dyb3VuZDogI2U1ZTVlNTsKICBjb2xvcjogI2ZmZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/copyright.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIG1vZHVsZSB1c2VzIGV4dGVybmFsIGxpYmFyaWVzIGFuZCBjb2RlIHNuaXBwZXRzIHRoYXQgYXJlIGxpc3RlZCBiZWxvdzoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYxLjQuMgpodHRwOi8vanF1ZXJ5LmNvbS8KCkNvcHlyaWdodCAyMDEwLCBKb2huIFJlc2lnCkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgpodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCgpJbmNsdWRlcyBTaXp6bGUuanMKaHR0cDovL3NpenpsZWpzLmNvbS8KQ29weXJpZ2h0IDIwMTAsIFRoZSBEb2pvIEZvdW5kYXRpb24KUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgoKRGF0ZTogU2F0IEZlYiAxMyAyMjozMzo0OCAyMDEwIC0wNTAwCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKalF1ZXJ5IFVJIDEuOAoKQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KCmh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpqUXVlcnkgVUkgV2lkZ2V0IDEuOAoKQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KCmh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvV2lkZ2V0CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKalF1ZXJ5IFVJIE1vdXNlIDEuOAoKQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KCmh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvTW91c2UgIAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmpRdWVyeSBVSSBTb3J0YWJsZSAxLjgKCkNvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpCmFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuCgpodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1NvcnRhYmxlcwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCkNhbGVuZGFyVmlldyBmb3IgalF1ZXJ5CgpCYXNlZCBvbiBDYWxlbmRhclZpZXcgZm9yIFByb3RvdHlwZSBodHRwOi8vY2FsZW5kYXJ2aWV3Lm9yZy8gd2hpY2ggaXMgYmFzZWQKb24gRHluYXJjaCBESFRNTCBDYWxlbmRhciBodHRwOi8vd3d3LmR5bmFyY2guY29tL3Byb2plY3RzL2NhbGVuZGFyL29sZC8uCgpDYWxlbmRhclZpZXcgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgKExHUEwpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKRGF0ZS5mb3JtYXQoKQpzdHJpbmcgZm9ybWF0ICggc3RyaW5nIGZvcm1hdCApCkZvcm1hdHRpbmcgcnVsZXMgYWNjb3JkaW5nIHRvIGh0dHA6Ly9waHAubmV0L3N0cmZ0aW1lCgpDb3B5cmlnaHQgKEMpIDIwMDYgIERhbyBHb3R0d2FsZAoKQ29udGFjdCBpbmZvcm1hdGlvbjoKRGFvIEdvdHR3YWxkICA8ZGFvIGF0IGRlc2lnbi1ub2lyLmRlPgoKdmVyc2lvbiAgMC43CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKalF1ZXJ5IEZvcm0gUGx1Z2luCnZlcnNpb246IDIuNDMgKDEyLU1BUi0yMDEwKQoKRXhhbXBsZXMgYW5kIGRvY3VtZW50YXRpb24gYXQ6IGh0dHA6Ly9tYWxzdXAuY29tL2pxdWVyeS9mb3JtLwpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoKICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKClRoZSBmaWxlcGlja2VyIGlzIGJhc2VkIG9uIGEgcGx1Z2luIG9mIFRpbnlNQ0UgdGhhdCBjb21lcyBieSBkZWZhdWx0IHdpdGggQ01TbXMuIApJJ20gbm90IHN1cmUgd2hvIGFjdHVhbGx5IGlzIHRoZSBhdXRob3Igb2YgdGhlIGZpbGVwaWNrZXIuIApUaW55TUNFIGZvciBDTVNtcyBpcyBkZXZlbG9wZWQvbWFpbnRhaW5lZCBieSBTaW1vbiBCcm93biwgU3RlZmFuIFKabGxpbiBhbmQgTW9ydGVuIFBvdWxzZW4uCgo=]]></data>
	</file>
	<file>
	  <filename>/doc/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/doc/license.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5OTEKCiBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCgkJCSAgICBQcmVhbWJsZQoKICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyCmZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCkxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGZyZWUKc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFRoaXMKR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbidzIHNvZnR3YXJlIGFuZCB0byBhbnkgb3RoZXIgcHJvZ3JhbSB3aG9zZSBhdXRob3JzIGNvbW1pdCB0bwp1c2luZyBpdC4gIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5CnRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoMCgkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgoKICAwLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBvciBvdGhlciB3b3JrIHdoaWNoIGNvbnRhaW5zCmEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGUgIlByb2dyYW0iLCBiZWxvdywKcmVmZXJzIHRvIGFueSBzdWNoIHByb2dyYW0gb3Igd29yaywgYW5kIGEgIndvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0iCm1lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6CnRoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgUHJvZ3JhbSBvciBhIHBvcnRpb24gb2YgaXQsCmVpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyCmxhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KdGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKSAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgpBY3Rpdml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdApjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mCnJ1bm5pbmcgdGhlIFByb2dyYW0gaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0KaXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSAoaW5kZXBlbmRlbnQgb2YgaGF2aW5nIGJlZW4gbWFkZSBieSBydW5uaW5nIHRoZSBQcm9ncmFtKS4KV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBQcm9ncmFtIGRvZXMuCgogIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncwpzb3VyY2UgY29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UKY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZQpjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdCBhbGwgdGhlCm5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsKYW5kIGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZQphbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCnlvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3IgYSBmZWUuCgogIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24Kb2YgaXQsIHRodXMgZm9ybWluZyBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZApkaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDEKYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKCiAgICBhKSBZb3UgbXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYikgWW91IG11c3QgY2F1c2UgYW55IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBwdWJsaXNoLCB0aGF0IGluCiAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKICAgIHBhcnQgdGhlcmVvZiwgdG8gYmUgbGljZW5zZWQgYXMgYSB3aG9sZSBhdCBubyBjaGFyZ2UgdG8gYWxsIHRoaXJkCiAgICBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCgogICAgYykgSWYgdGhlIG1vZGlmaWVkIHByb2dyYW0gbm9ybWFsbHkgcmVhZHMgY29tbWFuZHMgaW50ZXJhY3RpdmVseQogICAgd2hlbiBydW4sIHlvdSBtdXN0IGNhdXNlIGl0LCB3aGVuIHN0YXJ0ZWQgcnVubmluZyBmb3Igc3VjaAogICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgogICAgYW5ub3VuY2VtZW50IGluY2x1ZGluZyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBhCiAgICBub3RpY2UgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSAob3IgZWxzZSwgc2F5aW5nIHRoYXQgeW91IHByb3ZpZGUKICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIKICAgIHRoZXNlIGNvbmRpdGlvbnMsIGFuZCB0ZWxsaW5nIHRoZSB1c2VyIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzCiAgICBMaWNlbnNlLiAgKEV4Y2VwdGlvbjogaWYgdGhlIFByb2dyYW0gaXRzZWxmIGlzIGludGVyYWN0aXZlIGJ1dAogICAgZG9lcyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgogICAgdGhlIFByb2dyYW0gaXMgbm90IHJlcXVpcmVkIHRvIHByaW50IGFuIGFubm91bmNlbWVudC4pCgwKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoMCiAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCmV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCnZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIKdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgoKICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCnByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCmFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCgogIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0bwp0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgpyZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCllvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCnRoaXMgTGljZW5zZS4KCiAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAppbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLApjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Cm1heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQphbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwpyZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgoKSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCmFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIKY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwp0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKaW1wb3NlIHRoYXQgY2hvaWNlLgoKVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCmJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgoMCiAgOC4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBQcm9ncmFtIGlzIHJlc3RyaWN0ZWQgaW4KY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCm9yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vuc2UKbWF5IGFkZCBhbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nCnRob3NlIGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3IgYW1vbmcKY291bnRyaWVzIG5vdCB0aHVzIGV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzCnRoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgoKICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucwpvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwKYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCmFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgUHJvZ3JhbQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQpsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zCmVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlClNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKdGhpcyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLgoKICAxMC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIFByb2dyYW0gaW50byBvdGhlciBmcmVlCnByb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IKdG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlClNvZnR3YXJlIEZvdW5kYXRpb24sIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdlIHNvbWV0aW1lcwptYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIgZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2FscwpvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCm9mIHByb21vdGluZyB0aGUgc2hhcmluZyBhbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5LgoKCQkJICAgIE5PIFdBUlJBTlRZCgogIDExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQpGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUwpQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRApPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgpNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTClRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUKUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsClJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCldJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWSBBTkQvT1IKUkVESVNUUklCVVRFIFRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywKSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCk9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQKVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZCllPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSClBST0dSQU1TKSwgRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRQpQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCgoJCSAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgwKCSAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgIG5hbWUgb2YgYXV0aG9yCiAgICBHbm9tb3Zpc2lvbiBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHRoZSBjb21tYW5kcyB5b3UgdXNlIG1heQpiZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNob3cgdycgYW5kIGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUKbW91c2UtY2xpY2tzIG9yIG1lbnUgaXRlbXMtLXdoYXRldmVyIHN1aXRzIHlvdXIgcHJvZ3JhbS4KCllvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCnNjaG9vbCwgaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmCm5lY2Vzc2FyeS4gIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKCiAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUgcHJvZ3JhbQogIGBHbm9tb3Zpc2lvbicgKHdoaWNoIG1ha2VzIHBhc3NlcyBhdCBjb21waWxlcnMpIHdyaXR0ZW4gYnkgSmFtZXMgSGFja2VyLgoKICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFwcmlsIDE5ODkKICBUeSBDb29uLCBQcmVzaWRlbnQgb2YgVmljZQoKVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBpbnRvCnByb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBsaWJyYXJ5LCB5b3UgbWF5CmNvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoIHRoZQpsaWJyYXJ5LiAgSWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwKUHVibGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UuCg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PEZpbGVzIH4gIlwuKGdpZnxqcGd8anBlZ3xwbmcpJCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgb3JkZXIgZGVueSxhbGxvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIGFsbG93IGZyb20gYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvRmlsZXM+Cg==]]></data>
	</file>
	<file>
	  <filename>/images/calendar.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPjSURBVHjaYvz//z8DMujunvX/zp2zDIqKBgwVFZmMDEQAmB4VFWOG0tI0FD0AAcQAsgAZnzlz5j8IQGkGYjA+PQABxAKyRKVz9f8/n94x/P3ykaFOR5Dhy5cvDLdu3WIIWLT3PzMPP17X49LDwifEcKc8lBEggFhgCvmMHRl+PbkDdM1GhmfPnoExt3YAA5uMMgPIz/9BJNBFjIwQNiMwZP8DiZ9oeriAetiBer7dvgg2FyCA4BYw/mFg+PftO8PZs2fBLvn8+TPDPyU3Bsa/UHkGaFwBKUaI6QxMIC6anv+KbmCzYAAggBAWAA1iZuZkCMwoZhD7/4XhyR92hlVfOBkY/oDdDrHiP9jtDBAv/QfTyHpeMfIwLH7PCXcUCAAEENwCkEGsghIMi1/8BDqSA+xSDgkJBqa/EIOhAcMAChtIkEEIkJ5Fz38CxTjAFrKLS4LNggGAAAJbkPTnLkN5VBBUSJ+BdICpp7NjPZgGCCC4D/7/+89ACwAQQEwwxj9gMKDjdevXM6ioqjBIy8gw1Dc0MLx7/x5F/vGTJwy+fn4Mp8+cwdALAwABxITsA2R8+dJlhkWLFjJ4e3szFBQUMFy8eIFh9uzZDH9+/2H4+eMnw80bNxmmTZ0KjGQmBjZWNgz9MAAQQPAg+vfvH4rXzl84z/Dz5y+G4qISBjExMYYvwCT47etXht+/fzPcuHGDoaa2hgGh9y+GfhgACCAkC1DjwMnRmcHM1IxBXFyC4fr160AfXGTQ1tYB5gEmBi0tbYYVy1cyXLt2jaGishxo6V8M/TAAEEBMuMokkKvl5RUYVq9exZCamszAw8PDkJaWzsDExAS0hJGBnZ2dgYWFBeyrv0AfoOuHAYAAwhlEoFxZUVHGcPLUSYaK8koGPz9/BjY2NhR1f//+Yfj67Ss4XnAFEUAA4UymoAjeu28fg4y0NDhSV6xYzsDBwcng5enFwM3NDcmbwKD58gVowZ8/OJM5QACxICdTGPj58ycw6Z1m+AZ03a3btxgqqyvA4kpKygx2dnYMnFxcEB8AgwakBl0/MgAIIKw+ACW7ObPm4cw8MLWGBkYM9+48xJtRAQIIYcF/1DC8cfMGOB7ExcUZbgBT0YsXLxjMzM3h8cPLy8vw6OFDBkEhIbCYqYkpVgsAAgjJAlQJdTUNOFtWRg6rZmQ1OEKIASCAwBZw83AyiIgJUrUMApkJAgABBLbg7JnzDMuWrKKqBSAzQQAggOBBpKioSJPSFCAAD2WwAgAIg1CY/v8t6mNnZEINZOJllz3/gbnGB05SIOpWfrzt5S3t9E4VUnIwyQRDNHkzWgjtb44AAwBrATqlndxPggAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/images/sort.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAoAAAAOCAYAAAAWo42rAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAG9JREFUeNpiYMAE+lCMAhjR+JZAnABlLwDi4zAJZhyKQMAAiN8C8RNkheiKMBQzQt2TxYAfTAMplIHqxAcuMFAdEG01C5AQBmJfAgofg4LnJTQIcJkKCvgzsHB8gkMxPHaQYwZdMUoUMhCbKAACDAAFXhb05ZeJ9wAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cg==]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PEZpbGVzICIqLmpzIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBvcmRlciBkZW55LGFsbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgYWxsb3cgZnJvbSBhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9GaWxlcz4K]]></data>
	</file>
	<file>
	  <filename>/js/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/js/jq.calendar.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENhbGVuZGFyVmlldyBmb3IgalF1ZXJ5CiAqCiAqIEJhc2VkIG9uIENhbGVuZGFyVmlldyBmb3IgUHJvdG90eXBlIGh0dHA6Ly9jYWxlbmRhcnZpZXcub3JnLyB3aGljaCBpcyBiYXNlZAogKiBvbiBEeW5hcmNoIERIVE1MIENhbGVuZGFyIGh0dHA6Ly93d3cuZHluYXJjaC5jb20vcHJvamVjdHMvY2FsZW5kYXIvb2xkLy4KICoKICogQ2FsZW5kYXJWaWV3IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsCiAqIFB1YmxpYyBMaWNlbnNlIChMR1BMKQogKgogKiBVc2FnZToKICogICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogKiAgICAgJCgnI2RhdGVfaW5wdXQnKS5jYWxlbmRhcigpOwogKiAgIH0KICoKICogICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogKiAgICAgJCgnI2RhdGVfaW5wdXQnKS5jYWxlbmRhcih7dHJpZ2dlckVsZW1lbnQ6ICcjZGF0ZV9pbnB1dF90cmlnZ2VyJ30pOwogKiAgIH0KICoKICogICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogKiAgICAgJCgnI2RhdGVfaW5wdXQnKS5jYWxlbmRhcih7cGFyZW50RWxlbWVudDogJyNjYWxlbmRhcl9jb250YWluZXInfSk7CiAqICAgfQogKgogKiBEZWZhdWx0IG9wdGlvbnM6CiAqICAgdHJpZ2dlckVsZW1lbnQ6IG51bGwsIC8vIFBvcHVwIGNhbGVuZGFyCiAqICAgcGFyZW50RWxlbWVudDogbnVsbCwgLy8gSW5saW5lIGNhbGVuZGFyCiAqICAgbWluWWVhcjogMTkwMCwKICogICBtYXhZZWFyOiAyMTAwLAogKiAgIGZpcnN0RGF5T2ZXZWVrOiAxLCAvLyBNb25kYXkKICogICB3ZWVrZW5kOiAiMCw2IiwgLy8gU3VuZGF5IGFuZCBTYXR1cmRheQogKiAgIGRhdGVGb3JtYXQ6ICclWS0lbS0lZCcsCiAqICAgc2VsZWN0SGFuZGxlcjogbnVsbCwgLy8gV2lsbCB1c2UgZGVmYXVsdCBzZWxlY3QgaGFuZGxlcgogKiAgIGNsb3NlSGFuZGxlcjogbnVsbCAvLyBXaWxsIHVzZSBkZWZhdWx0IGNsb3NlIGhhbmRsZXIKICovCjsoZnVuY3Rpb24oJCkgewoJdmFyIENhbGVuZGFyID0gZnVuY3Rpb24oKSB7CgkJdGhpcy5kYXRlID0gbmV3IERhdGUoKTsKCX07CgoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vIENvbnN0YW50cwoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglDYWxlbmRhci5WRVJTSU9OID0gJzEuMic7CglDYWxlbmRhci5UT0RBWSA9ICdUb2RheSc7CgoJQ2FsZW5kYXIuREFZX05BTUVTID0gbmV3IEFycmF5KAoJCSdTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheScKCSk7CgoJQ2FsZW5kYXIuU0hPUlRfREFZX05BTUVTID0gbmV3IEFycmF5KCdTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYScpOwoKCUNhbGVuZGFyLk1PTlRIX05BTUVTID0gbmV3IEFycmF5KAoJCSdKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywKCQknU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInCgkpOwoKCUNhbGVuZGFyLlNIT1JUX01PTlRIX05BTUVTID0gbmV3IEFycmF5KAoJCSdKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYycKCSk7CgoJQ2FsZW5kYXIuTkFWX1BSRVZJT1VTX1lFQVIgID0gLTI7CglDYWxlbmRhci5OQVZfUFJFVklPVVNfTU9OVEggPSAtMTsKCUNhbGVuZGFyLk5BVl9UT0RBWSAgICAgICAgICA9ICAwOwoJQ2FsZW5kYXIuTkFWX05FWFRfTU9OVEggICAgID0gIDE7CglDYWxlbmRhci5OQVZfTkVYVF9ZRUFSICAgICAgPSAgMjsKCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gU3RhdGljIE1ldGhvZHMKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJLyoqCgkgKiBUaGlzIGdldHMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBhIG1vdXNlIGJ1dHRvbiBhbnl3aGVyZSBpbiB0aGUKCSAqIGRvY3VtZW50LCBpZiB0aGUgY2FsZW5kYXIgaXMgc2hvd24uIElmIHRoZSBjbGljayB3YXMgb3V0c2lkZSB0aGUgb3BlbgoJICogY2FsZW5kYXIgdGhpcyBmdW5jdGlvbiBjbG9zZXMgaXQuCgkgKgoJICogQHBhcmFtIGV2ZW50CgkgKi8KCUNhbGVuZGFyLl9jaGVja0NhbGVuZGFyID0gZnVuY3Rpb24oZXZlbnQpIHsKCQlpZiAoIXdpbmRvdy5fcG9wdXBDYWxlbmRhcikgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoJChldmVudC50YXJnZXQpLnBhcmVudHMoKS5pbmRleCgkKHdpbmRvdy5fcG9wdXBDYWxlbmRhci5jb250YWluZXIpKSA+PSAwKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXdpbmRvdy5fcG9wdXBDYWxlbmRhci5jYWxsQ2xvc2VIYW5kbGVyKCk7CgkJcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cgl9CgoJLyoqCgkgKiBFdmVudCBIYW5kbGVycwoJICogQHBhcmFtIGV2ZW50CgkgKi8KCUNhbGVuZGFyLmhhbmRsZU1vdXNlRG93bkV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpewoJCSQoZG9jdW1lbnQpLm1vdXNldXAoQ2FsZW5kYXIuaGFuZGxlTW91c2VVcEV2ZW50KTsKCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoJfQoKCS8qKgoJICogQ2xpY2tzIG9mIGRpZmZlcmVudCBhY3Rpb25zCgkgKiBAcGFyYW0gZXZlbnQKCSAqLwoJQ2FsZW5kYXIuaGFuZGxlTW91c2VVcEV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgZWwgICAgICAgID0gZXZlbnQudGFyZ2V0OwoJCXZhciBjYWxlbmRhciAgPSBlbC5jYWxlbmRhcjsKCQl2YXIgaXNOZXdEYXRlID0gZmFsc2U7CgoJCS8vIElmIHRoZSBlbGVtZW50IHRoYXQgd2FzIGNsaWNrZWQgb24gZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIENhbGVuZGFyCgkJLy8gb2JqZWN0LCByZXR1cm4gYXMgd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgoJCWlmICghY2FsZW5kYXIpIHJldHVybiBmYWxzZQoKCQkvLyBDbGlja2VkIG9uIGEgZGF5CgkJaWYgKHR5cGVvZiBlbC5uYXZBY3Rpb24gPT0gJ3VuZGVmaW5lZCcpIHsKCQkJaWYgKGNhbGVuZGFyLmN1cnJlbnREYXRlRWxlbWVudCkgewoJCQkJY2FsZW5kYXIuY3VycmVudERhdGVFbGVtZW50LnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpOwoJCQkJJChlbCkuYWRkQ2xhc3MoJ3NlbGVjdGVkJyk7CgkJCQljYWxlbmRhci5zaG91bGRDbG9zZSA9IChjYWxlbmRhci5jdXJyZW50RGF0ZUVsZW1lbnQgPT0gJChlbCkpOwoJCQkJaWYgKCFjYWxlbmRhci5zaG91bGRDbG9zZSkgewoJCQkJCWNhbGVuZGFyLmN1cnJlbnREYXRlRWxlbWVudCA9ICQoZWwpOwoJCQkJfQoJCQl9CgkJCWNhbGVuZGFyLmRhdGUuc2V0RGF0ZU9ubHkoZWwuZGF0ZSk7CgkJCWlzTmV3RGF0ZSA9IHRydWU7CgkJCWNhbGVuZGFyLnNob3VsZENsb3NlID0gISQoZWwpLmhhc0NsYXNzKCdvdGhlckRheScpOwoJCQl2YXIgaXNPdGhlck1vbnRoICAgICA9ICFjYWxlbmRhci5zaG91bGRDbG9zZTsKCQkJaWYgKGlzT3RoZXJNb250aCkgewoJCQkJY2FsZW5kYXIudXBkYXRlKGNhbGVuZGFyLmRhdGUpOwoJCQl9CgkJfSBlbHNlIHsKCQkJLy8gQ2xpY2tlZCBvbiBhbiBhY3Rpb24gYnV0dG9uCgkJCXZhciBkYXRlID0gbmV3IERhdGUoY2FsZW5kYXIuZGF0ZSk7CgoJCQlpZiAoZWwubmF2QWN0aW9uID09IENhbGVuZGFyLk5BVl9UT0RBWSkgewoJCQkJZGF0ZS5zZXREYXRlT25seShuZXcgRGF0ZSgpKTsKCQkJfQoKCQkJdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7CgkJCXZhciBtb24gPSBkYXRlLmdldE1vbnRoKCk7CgkJCWZ1bmN0aW9uIHNldE1vbnRoKG0pIHsKCQkJCXZhciBkYXkgPSBkYXRlLmdldERhdGUoKTsKCQkJCXZhciBtYXggPSBkYXRlLmdldE1vbnRoRGF5cyhtKTsKCQkJCWlmIChkYXkgPiBtYXgpIGRhdGUuc2V0RGF0ZShtYXgpCgkJCQkJZGF0ZS5zZXRNb250aChtKTsKCQkJfQoJCQlzd2l0Y2ggKGVsLm5hdkFjdGlvbikgewoKCQkJCS8vIFByZXZpb3VzIFllYXIKCQkJCWNhc2UgQ2FsZW5kYXIuTkFWX1BSRVZJT1VTX1lFQVI6CgkJCQkJaWYgKHllYXIgPiBjYWxlbmRhci5taW5ZZWFyKQoJCQkJCQlkYXRlLnNldEZ1bGxZZWFyKHllYXIgLSAxKTsKCQkJCQlicmVhazsKCgkJCQkvLyBQcmV2aW91cyBNb250aAoJCQkJY2FzZSBDYWxlbmRhci5OQVZfUFJFVklPVVNfTU9OVEg6CgkJCQkJaWYgKG1vbiA+IDApIHsKCQkJCQkJc2V0TW9udGgobW9uIC0gMSk7CgkJCQkJfQoJCQkJCWVsc2UgaWYgKHllYXItLSA+IGNhbGVuZGFyLm1pblllYXIpIHsKCQkJCQkJZGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTsKCQkJCQkJc2V0TW9udGgoMTEpOwoJCQkJCX0KCQkJCQlicmVhazsKCgkJCQkvLyBUb2RheQoJCQkJY2FzZSBDYWxlbmRhci5OQVZfVE9EQVk6CgkJCQkJYnJlYWs7CgoJCQkJLy8gTmV4dCBNb250aAoJCQkJY2FzZSBDYWxlbmRhci5OQVZfTkVYVF9NT05USDoKCQkJCQlpZiAobW9uIDwgMTEpIHsKCQkJCQkJc2V0TW9udGgobW9uICsgMSk7CgkJCQkJfQoJCQkJCWVsc2UgaWYgKHllYXIgPCBjYWxlbmRhci5tYXhZZWFyKSB7CgkJCQkJCWRhdGUuc2V0RnVsbFllYXIoeWVhciArIDEpOwoJCQkJCQlzZXRNb250aCgwKTsKCQkJCQl9CgkJCQkJYnJlYWs7CgoJCQkJLy8gTmV4dCBZZWFyCgkJCQljYXNlIENhbGVuZGFyLk5BVl9ORVhUX1lFQVI6CgkJCQkJaWYgKHllYXIgPCBjYWxlbmRhci5tYXhZZWFyKQoJCQkJCQlkYXRlLnNldEZ1bGxZZWFyKHllYXIgKyAxKTsKCQkJCQlicmVhazsKCgkJCX0KCgkJCWlmICghZGF0ZS5lcXVhbHNUbyhjYWxlbmRhci5kYXRlKSkgewoJCQkJY2FsZW5kYXIuc2hvdWxkQ2xvc2UgPSBmYWxzZTsKCQkJCWNhbGVuZGFyLnNldERhdGUoZGF0ZSk7CgkJCQlpc05ld0RhdGUgPSB0cnVlOwoJCQl9IGVsc2UgaWYgKGVsLm5hdkFjdGlvbiA9PSAwKSB7CgkJCQlpc05ld0RhdGUgPSAoY2FsZW5kYXIuc2hvdWxkQ2xvc2UgPSB0cnVlKTsKCQkJfQoJCX0KCgkJaWYgKGlzTmV3RGF0ZSkgZXZlbnQgJiYgY2FsZW5kYXIuY2FsbFNlbGVjdEhhbmRsZXIoKTsKCQlpZiAoY2FsZW5kYXIuc2hvdWxkQ2xvc2UpIGV2ZW50ICYmIGNhbGVuZGFyLmNhbGxDbG9zZUhhbmRsZXIoKTsKCQkkKGRvY3VtZW50KS51bmJpbmQoJ21vdXNldXAnLCBDYWxlbmRhci5oYW5kbGVNb3VzZVVwRXZlbnQpOwoJCXJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoJfTsKCglDYWxlbmRhci5kZWZhdWx0U2VsZWN0SGFuZGxlciA9IGZ1bmN0aW9uKGNhbGVuZGFyKSB7CgkJaWYgKCFjYWxlbmRhci5kYXRlRmllbGQpIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gVXBkYXRlIGRhdGVGaWVsZCB2YWx1ZQoJCShjYWxlbmRhci5kYXRlRmllbGQuYXR0cigndGFnTmFtZScpID09ICdJTlBVVCcpCgkJCT8gY2FsZW5kYXIuZGF0ZUZpZWxkLnZhbChjYWxlbmRhci5kYXRlLnByaW50KGNhbGVuZGFyLmRhdGVGb3JtYXQpKQoJCQk6IGNhbGVuZGFyLmRhdGVGaWVsZC5odG1sKGNhbGVuZGFyLmRhdGUucHJpbnQoY2FsZW5kYXIuZGF0ZUZvcm1hdCkpOwoKCQkvLyBUcmlnZ2VyIHRoZSBvbmNoYW5nZSBjYWxsYmFjayBvbiB0aGUgZGF0ZUZpZWxkLCBpZiBvbmUgaGFzIGJlZW4gZGVmaW5lZAoJCWNhbGVuZGFyLmRhdGVGaWVsZC50cmlnZ2VyKCdjaGFuZ2UnKTsKCgkJLy8gQ2FsbCB0aGUgY2xvc2UgaGFuZGxlciwgaWYgbmVjZXNzYXJ5CgkJaWYgKGNhbGVuZGFyLnNob3VsZENsb3NlKSB7CgkJCWNhbGVuZGFyLmNhbGxDbG9zZUhhbmRsZXIoKTsKCQl9CgoJCXJldHVybiB0cnVlOwoJfQoKCUNhbGVuZGFyLmRlZmF1bHRDbG9zZUhhbmRsZXIgPSBmdW5jdGlvbihjYWxlbmRhcikgewoJCWNhbGVuZGFyLmhpZGUoKTsKCX0KCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gQ2FsZW5kYXIgSW5zdGFuY2UKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJQ2FsZW5kYXIucHJvdG90eXBlID0gewoJCS8vIFRoZSBIVE1MIENvbnRhaW5lciBFbGVtZW50CgkJY29udGFpbmVyOiBudWxsLAoKCQkvLyBEYXRlcwoJCWRhdGU6IG51bGwsCgkJY3VycmVudERhdGVFbGVtZW50OiBudWxsLAoKCQkvLyBTdGF0dXMKCQlzaG91bGRDbG9zZTogZmFsc2UsCgkJaXNQb3B1cDogdHJ1ZSwKCgkJLyoqCgkJICogVXBkYXRlIC8gKFJlKWluaXRpYWxpemUgQ2FsZW5kYXIKCQkgKiBAcGFyYW0gZGF0ZQoJCSAqLwoJCXVwZGF0ZTogZnVuY3Rpb24oZGF0ZSkgewoJCQl2YXIgY2FsZW5kYXIgICA9IHRoaXM7CgkJCXZhciB0b2RheSAgICAgID0gbmV3IERhdGUoKTsKCQkJdmFyIHRoaXNZZWFyICAgPSB0b2RheS5nZXRGdWxsWWVhcigpOwoJCQl2YXIgdGhpc01vbnRoICA9IHRvZGF5LmdldE1vbnRoKCk7CgkJCXZhciB0aGlzRGF5ICAgID0gdG9kYXkuZ2V0RGF0ZSgpOwoJCQl2YXIgbW9udGggICAgICA9IGRhdGUuZ2V0TW9udGgoKTsKCQkJdmFyIGRheU9mTW9udGggPSBkYXRlLmdldERhdGUoKTsKCgkJCS8vIEVuc3VyZSBkYXRlIGlzIHdpdGhpbiB0aGUgZGVmaW5lZCByYW5nZQoJCQlpZiAoZGF0ZS5nZXRGdWxsWWVhcigpIDwgdGhpcy5taW5ZZWFyKSB7CgkJCQlkYXRlLnNldEZ1bGxZZWFyKHRoaXMubWluWWVhcik7CgkJCX0gZWxzZSBpZiAoZGF0ZS5nZXRGdWxsWWVhcigpID4gdGhpcy5tYXhZZWFyKSB7CgkJCQlkYXRlLnNldEZ1bGxZZWFyKHRoaXMubWF4WWVhcik7CgkJCX0KCQkJdGhpcy5kYXRlID0gbmV3IERhdGUoZGF0ZSk7CgoJCQkvLyBDYWxjdWxhdGUgdGhlIGZpcnN0IGRheSB0byBkaXNwbGF5IChpbmNsdWRpbmcgdGhlIHByZXZpb3VzIG1vbnRoKQoJCQlkYXRlLnNldERhdGUoMSk7CgkJCXZhciBkYXkxID0gKGRhdGUuZ2V0RGF5KCkgLSB0aGlzLmZpcnN0RGF5T2ZXZWVrKSAlIDc7CgkJCWlmIChkYXkxIDwgMCkgZGF5MSArPSA3OwoJCQlkYXRlLnNldERhdGUoLWRheTEpOwoJCQlkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAxKTsKCgkJCS8vIEZpbGwgaW4gdGhlIGRheXMgb2YgdGhlIG1vbnRoCgkJCSQoJ3Rib2R5IHRyJywgdGhpcy5jb250YWluZXIpLmVhY2goZnVuY3Rpb24oKSB7CgkJCQl2YXIgcm93SGFzRGF5cyA9IGZhbHNlOwoJCQkJJCh0aGlzKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKSB7CgkJCQkJdmFyIGRheSAgICAgICAgICAgID0gZGF0ZS5nZXREYXRlKCk7CgkJCQkJdmFyIGRheU9mV2VlayAgICAgID0gZGF0ZS5nZXREYXkoKTsKCQkJCQl2YXIgaXNDdXJyZW50TW9udGggPSAoZGF0ZS5nZXRNb250aCgpID09IG1vbnRoKTsKCgkJCQkJLy8gUmVzZXQgY2xhc3NlcyBvbiB0aGUgY2VsbAoJCQkJCWNlbGwgPSAkKHRoaXMpOwoJCQkJCWNlbGwucmVtb3ZlQXR0cignY2xhc3MnKTsKCQkJCQljZWxsWzBdLmRhdGUgPSBuZXcgRGF0ZShkYXRlKTsKCQkJCQljZWxsLmh0bWwoZGF5KTsKCgkJCQkJLy8gQWNjb3VudCBmb3IgZGF5cyBvZiB0aGUgbW9udGggb3RoZXIgdGhhbiB0aGUgY3VycmVudCBtb250aAoJCQkJCWlmICghaXNDdXJyZW50TW9udGgpIHsKCQkJCQkJY2VsbC5hZGRDbGFzcygnb3RoZXJEYXknKTsKCQkJCQl9IGVsc2UgewoJCQkJCQlyb3dIYXNEYXlzID0gdHJ1ZTsKCQkJCQl9CgoJCQkJCS8vIEVuc3VyZSB0aGUgY3VycmVudCBkYXkgaXMgc2VsZWN0ZWQKCQkJCQlpZiAoaXNDdXJyZW50TW9udGggJiYgZGF5ID09IGRheU9mTW9udGgpIHsKCQkJCQkJY2VsbC5hZGRDbGFzcygnc2VsZWN0ZWQnKTsKCQkJCQkJY2FsZW5kYXIuY3VycmVudERhdGVFbGVtZW50ID0gY2VsbDsKCQkJCQl9CgoJCQkJCS8vIFRvZGF5CgkJCQkJaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSA9PSB0aGlzWWVhciAmJiBkYXRlLmdldE1vbnRoKCkgPT0gdGhpc01vbnRoICYmIGRheSA9PSB0aGlzRGF5KSB7CgkJCQkJCWNlbGwuYWRkQ2xhc3MoJ3RvZGF5Jyk7CgkJCQkJfQoKCQkJCQkvLyBXZWVrZW5kCgkJCQkJaWYgKGNhbGVuZGFyLndlZWtlbmQuaW5kZXhPZihkYXlPZldlZWsudG9TdHJpbmcoKSkgIT0gLTEpIHsKCQkJCQkJY2VsbC5hZGRDbGFzcygnd2Vla2VuZCcpOwoJCQkJCX0KCgkJCQkJLy8gU2V0IHRoZSBkYXRlIHRvIHRvbW1vcnJvdwoJCQkJCWRhdGUuc2V0RGF0ZShkYXkgKyAxKTsKCQkJCX0pOwoJCQkJLy8gSGlkZSB0aGUgZXh0cmEgcm93IGlmIGl0IGNvbnRhaW5zIG9ubHkgZGF5cyBmcm9tIGFub3RoZXIgbW9udGgKCQkJCSFyb3dIYXNEYXlzID8gJCh0aGlzKS5oaWRlKCkgOiAkKHRoaXMpLnNob3coKTsKCQkJfSk7CgoJCQkkKCd0ZC50aXRsZScsIHRoaXMuY29udGFpbmVyKS5odG1sKENhbGVuZGFyLk1PTlRIX05BTUVTW21vbnRoXSArICcgJyArIGNhbGVuZGFyLmRhdGUuZ2V0RnVsbFllYXIoKSk7CgkJfSwKCgkJY3JlYXRlOiBmdW5jdGlvbihwYXJlbnQpIHsKCgkJCS8vIElmIG5vIHBhcmVudCB3YXMgc3BlY2lmaWVkLCBhc3N1bWUgdGhhdCB3ZSBhcmUgY3JlYXRpbmcgYSBwb3B1cCBjYWxlbmRhci4KCQkJdGhpcy5pc1BvcHVwID0gZmFsc2U7CgkJCWlmICghcGFyZW50KSB7CgkJCQlwYXJlbnQgPSAkKCdib2R5Jyk7CgkJCQl0aGlzLmlzUG9wdXAgPSB0cnVlOwoJCQl9CgoJCQkvLyBDYWxlbmRhciBUYWJsZQoJCQl2YXIgdGFibGUgPSAkKCc8dGFibGUgLz4nKTsKCgkJCS8vIENhbGVuZGFyIEhlYWRlcgoJCQl2YXIgdGhlYWQgPSAkKCc8dGhlYWQgLz4nKTsKCQkJdGFibGUuYXBwZW5kKHRoZWFkKTsKCgkJCS8vIFRpdGxlIFBsYWNlaG9sZGVyCgkJCXZhciByb3cgID0gJCgnPHRyIC8+Jyk7CgkJCXZhciBjZWxsID0gJCgnPHRkIGNvbHNwYW49IjciIGNsYXNzPSJ0aXRsZSIgLz4nKTsKCQkJcm93LmFwcGVuZChjZWxsKTsKCQkJdGhlYWQuYXBwZW5kKHJvdyk7CgoJCQkvLyBDYWxlbmRhciBOYXZpZ2F0aW9uCgkJCXJvdyA9ICQoJzx0ciAvPicpOwoJCQl0aGlzLl9kcmF3QnV0dG9uQ2VsbChyb3csICcmI3gwMGFiOycsIDEsIENhbGVuZGFyLk5BVl9QUkVWSU9VU19ZRUFSKTsKCQkJdGhpcy5fZHJhd0J1dHRvbkNlbGwocm93LCAnJiN4MjAzOTsnLCAxLCBDYWxlbmRhci5OQVZfUFJFVklPVVNfTU9OVEgpOwoJCQl0aGlzLl9kcmF3QnV0dG9uQ2VsbChyb3csIENhbGVuZGFyLlRPREFZLCAgICAzLCBDYWxlbmRhci5OQVZfVE9EQVkpOwoJCQl0aGlzLl9kcmF3QnV0dG9uQ2VsbChyb3csICcmI3gyMDNhOycsIDEsIENhbGVuZGFyLk5BVl9ORVhUX01PTlRIKTsKCQkJdGhpcy5fZHJhd0J1dHRvbkNlbGwocm93LCAnJiN4MDBiYjsnLCAxLCBDYWxlbmRhci5OQVZfTkVYVF9ZRUFSKTsKCQkJdGhlYWQuYXBwZW5kKHJvdyk7CgoJCQkvLyBEYXkgTmFtZXMKCQkJcm93ID0gJCgnPHRyIC8+Jyk7CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgNzsgKytpKSB7CgkJCQl2YXIgcmVhbERheSA9IChpICsgdGhpcy5maXJzdERheU9mV2VlaykgJSA3OwoJCQkJY2VsbCA9ICQoJzx0aCAvPicpLmh0bWwoQ2FsZW5kYXIuU0hPUlRfREFZX05BTUVTW3JlYWxEYXldKTsKCQkJCWlmICh0aGlzLndlZWtlbmQuaW5kZXhPZihyZWFsRGF5LnRvU3RyaW5nKCkpICE9IC0xKQoJCQkJCWNlbGwuYWRkQ2xhc3MoJ3dlZWtlbmQnKTsKCQkJCXJvdy5hcHBlbmQoY2VsbCk7CgkJCX0KCQkJdGhlYWQuYXBwZW5kKHJvdyk7CgoJCQkvLyBDYWxlbmRhciBEYXlzCgkJCXZhciB0Ym9keSA9IHRhYmxlLmFwcGVuZCgkKCc8dGJvZHkgLz4nKSk7CgkJCWZvciAoaSA9IDY7IGkgPiAwOyAtLWkpIHsKCQkJCXJvdyA9ICQoJzx0ciAvPicpLmFkZENsYXNzKCdkYXlzJyk7CgkJCQl0Ym9keS5hcHBlbmQocm93KTsKCQkJCWZvciAodmFyIGogPSA3OyBqID4gMDsgLS1qKSB7CgkJCQkJY2VsbCA9ICQoJzx0ZCAvPicpOwoJCQkJCWNlbGxbMF0uY2FsZW5kYXIgPSB0aGlzOwoJCQkJCXJvdy5hcHBlbmQoY2VsbCk7CgkJCQl9CgkJCX0KCgkJCS8vIENhbGVuZGFyIENvbnRhaW5lciAoZGl2KQoJCQl0aGlzLmNvbnRhaW5lciA9ICQoJzxkaXYgLz4nKS5hZGRDbGFzcygnY2FsZW5kYXInKS5hcHBlbmQodGFibGUpOwoJCQlpZiAodGhpcy5pc1BvcHVwKSB7CgkJCQl0aGlzLmNvbnRhaW5lci5jc3MoewoJCQkJCXBvc2l0aW9uOiAnYWJzb2x1dGUnLAoJCQkJCWRpc3BsYXk6ICdub25lJwoJCQkJfSkuYWRkQ2xhc3MoJ3BvcHVwJyk7CgkJCX0KCgkJCS8vIEluaXRpYWxpemUgQ2FsZW5kYXIKCQkJdGhpcy51cGRhdGUodGhpcy5kYXRlKTsKCgkJCS8vIE9ic2VydmUgdGhlIGNvbnRhaW5lciBmb3IgbW91c2Vkb3duIGV2ZW50cwoJCQl0aGlzLmNvbnRhaW5lci5tb3VzZWRvd24oQ2FsZW5kYXIuaGFuZGxlTW91c2VEb3duRXZlbnQpOwoKCQkJLy8gQXBwZW5kIHRvIHBhcmVudCBlbGVtZW50CgkJCXBhcmVudC5hcHBlbmQodGhpcy5jb250YWluZXIpOwoJCX0sCgoJCV9kcmF3QnV0dG9uQ2VsbDogZnVuY3Rpb24ocGFyZW50LCB0ZXh0LCBjb2xTcGFuLCBuYXZBY3Rpb24pIHsKCQkJdmFyIGNlbGwgPSAkKCc8dGQgLz4nKTsKCQkJaWYgKGNvbFNwYW4gPiAxKSBjZWxsWzBdLmNvbFNwYW4gPSBjb2xTcGFuOyAvLyBJRSBpc3N1ZSBhdHRyKCkKCQkJY2VsbC5hZGRDbGFzcygnYnV0dG9uJykuaHRtbCh0ZXh0KS5hdHRyKCd1bnNlbGVjdGFibGUnLCAnb24nKTsgLy8gSUU7CgkJCWNlbGxbMF0uY2FsZW5kYXIgICAgID0gdGhpczsKCQkJY2VsbFswXS5uYXZBY3Rpb24gICAgPSBuYXZBY3Rpb247CgkJCXBhcmVudC5hcHBlbmQoY2VsbCk7CgkJCXJldHVybiBjZWxsOwoJCX0sCgoJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkJLy8gQ2FsbGJhY2tzCgkJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkJLyoqCgkJICogQ2FsbHMgdGhlIFNlbGVjdCBIYW5kbGVyIChpZiBkZWZpbmVkKQoJCSAqLwoJCWNhbGxTZWxlY3RIYW5kbGVyOiBmdW5jdGlvbigpIHsKCQkJaWYgKHRoaXMuc2VsZWN0SGFuZGxlcikgewoJCQkJdGhpcy5zZWxlY3RIYW5kbGVyKHRoaXMsIHRoaXMuZGF0ZS5wcmludCh0aGlzLmRhdGVGb3JtYXQpKTsKCQkJfQoJCX0sCgoJCS8qKgoJCSAqIENhbGxzIHRoZSBDbG9zZSBIYW5kbGVyIChpZiBkZWZpbmVkKQoJCSAqLwoJCWNhbGxDbG9zZUhhbmRsZXI6IGZ1bmN0aW9uKCkgewoJCQlpZiAodGhpcy5jbG9zZUhhbmRsZXIpIHsKCQkJCXRoaXMuY2xvc2VIYW5kbGVyKHRoaXMpOwoJCQl9CgkJfSwKCgkJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQkvLyBDYWxlbmRhciBEaXNwbGF5IEZ1bmN0aW9ucwoJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJCS8qKgoJCSAqIFNob3dzIHRoZSBDYWxlbmRhcgoJCSAqLwoJCXNob3c6IGZ1bmN0aW9uKCkgewoJCQl0aGlzLmNvbnRhaW5lci5zaG93KCk7CgkJCWlmICh0aGlzLmlzUG9wdXApIHsKCQkJCXdpbmRvdy5fcG9wdXBDYWxlbmRhciA9IHRoaXM7CgkJCQkkKHRoaXMpLm1vdXNlZG93bihDYWxlbmRhci5fY2hlY2tDYWxlbmRhcik7CgkJCX0KCQl9LAoKCQkvKioKCQkgKiBTaG93cyB0aGUgY2FsZW5kYXIgYXQgdGhlIGdpdmVuIGFic29sdXRlIHBvc2l0aW9uCgkJICogQHBhcmFtIHgKCQkgKiBAcGFyYW0geQoJCSAqLwoJCXNob3dBdDogZnVuY3Rpb24gKHgsIHkpIHsKCQkJdGhpcy5jb250YWluZXIuY3NzKHsKCQkJCWxlZnQ6IHggKyAncHgnLAoJCQkJdG9wOiB5ICsgJ3B4JwoJCQl9KQoJCQl0aGlzLnNob3coKTsKCQl9LAoKCQkvKioKCQkgKiBTaG93cyB0aGUgQ2FsZW5kYXIgYXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBwcm92aWRlZCBlbGVtZW50CgkJICogQHBhcmFtIGVsZW1lbnQKCQkgKi8KCQlzaG93QXRFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50KSB7CgkJCXZhciBvZmZzZXQgPSBlbGVtZW50Lm9mZnNldCgpOwoJCQl0aGlzLnNob3dBdChvZmZzZXQubGVmdCwgb2Zmc2V0LnRvcCk7CgkJfSwKCgkJLyoqCgkJICogSGlkZXMgdGhlIENhbGVuZGFyCgkJICovCgkJaGlkZTogZnVuY3Rpb24oKSB7CgkJCWlmICh0aGlzLmlzUG9wdXApIHsKCQkJCSQodGhpcykudW5iaW5kKCdtb3VzZWRvd24nLCBDYWxlbmRhci5fY2hlY2tDYWxlbmRhcik7CgkJCX0KCQkJdGhpcy5jb250YWluZXIuaGlkZSgpOwoJCX0sCgoJCS8qKgoJCSAqIFRyaWVzIHRvIGlkZW50aWZ5IHRoZSBkYXRlIHJlcHJlc2VudGVkIGluIGEgc3RyaW5nLiAgSWYgc3VjY2Vzc2Z1bCBpdCBhbHNvCgkJICogY2FsbHMgdGhpcy5zZXREYXRlIHdoaWNoIG1vdmVzIHRoZSBjYWxlbmRhciB0byB0aGUgZ2l2ZW4gZGF0ZS4KCQkgKiBAcGFyYW0gc3RyCgkJICogQHBhcmFtIGZvcm1hdAoJCSAqLwoJCXBhcnNlRGF0ZTogZnVuY3Rpb24oc3RyLCBmb3JtYXQpIHsKCQkJaWYgKCFmb3JtYXQpIHsKCQkJCWZvcm1hdCA9IHRoaXMuZGF0ZUZvcm1hdDsKCQkJfQoJCQl0aGlzLnNldERhdGUoRGF0ZS5wYXJzZURhdGUoc3RyLCBmb3JtYXQpKTsKCQl9LAoKCQlzZXREYXRlOiBmdW5jdGlvbihkYXRlKSB7CgkJCWlmICghZGF0ZS5lcXVhbHNUbyh0aGlzLmRhdGUpKQoJCQkJdGhpcy51cGRhdGUoZGF0ZSk7CgkJfSwKCgkJc2V0UmFuZ2U6IGZ1bmN0aW9uKG1pblllYXIsIG1heFllYXIpIHsKCQkJdGhpcy5taW5ZZWFyID0gbWluWWVhcjsKCQkJdGhpcy5tYXhZZWFyID0gbWF4WWVhcjsKCQl9Cgl9CgoJLy8gZ2xvYmFsIG9iamVjdCB0aGF0IHJlbWVtYmVycyB0aGUgY2FsZW5kYXIKCXdpbmRvdy5fcG9wdXBDYWxlbmRhciA9IG51bGw7CgoJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCS8vIERhdGUgT2JqZWN0IFBhdGNoZXMKCS8vIFRoaXMgaXMgcHJldHR5IG11Y2ggdW50b3VjaGVkIGZyb20gdGhlIG9yaWdpbmFsLgoJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCURhdGUuREFZU19JTl9NT05USCA9IG5ldyBBcnJheSgzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxKTsKCURhdGUuU0VDT05EICAgICAgICA9IDEwMDA7IC8qIG1pbGxpc2Vjb25kcyAqLwoJRGF0ZS5NSU5VVEUgICAgICAgID0gNjAgKiBEYXRlLlNFQ09ORDsKCURhdGUuSE9VUiAgICAgICAgICA9IDYwICogRGF0ZS5NSU5VVEU7CglEYXRlLkRBWSAgICAgICAgICAgPSAyNCAqIERhdGUuSE9VUjsKCURhdGUuV0VFSyAgICAgICAgICA9ICA3ICogRGF0ZS5EQVk7CgoJLy8gUGFyc2VzIERhdGUKCURhdGUucGFyc2VEYXRlID0gZnVuY3Rpb24oc3RyLCBmbXQpIHsKCQl2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpOwoJCXZhciB5ICAgICA9IDA7CgkJdmFyIG0gICAgID0gLTE7CgkJdmFyIGQgICAgID0gMDsKCQl2YXIgYSAgICAgPSBzdHIuc3BsaXQoL1xXKy8pOwoJCXZhciBiICAgICA9IGZtdC5tYXRjaCgvJS4vZyk7CgkJdmFyIGkgICAgID0gMCwgaiA9IDA7CgkJdmFyIGhyICAgID0gMDsKCQl2YXIgbWluICAgPSAwOwoKCQlmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgewoJCQlpZiAoIWFbaV0pIGNvbnRpbnVlOwoJCQlzd2l0Y2ggKGJbaV0pIHsKCQkJCWNhc2UgIiVkIjoKCQkJCWNhc2UgIiVlIjoKCQkJCQlkID0gcGFyc2VJbnQoYVtpXSwgMTApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJW0iOgoJCQkJCW0gPSBwYXJzZUludChhW2ldLCAxMCkgLSAxOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJVkiOgoJCQkJY2FzZSAiJXkiOgoJCQkJCXkgPSBwYXJzZUludChhW2ldLCAxMCk7CgkJCQkJKHkgPCAxMDApICYmICh5ICs9ICh5ID4gMjkpID8gMTkwMCA6IDIwMDApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJWIiOgoJCQkJY2FzZSAiJUIiOgoJCQkJCWZvciAoaiA9IDA7IGogPCAxMjsgKytqKSB7CgkJCQkJCWlmIChDYWxlbmRhci5NT05USF9OQU1FU1tqXS5zdWJzdHIoMCwgYVtpXS5sZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT0gYVtpXS50b0xvd2VyQ2FzZSgpKSB7CgkJCQkJCQltID0gajsKCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJUgiOgoJCQkJY2FzZSAiJUkiOgoJCQkJY2FzZSAiJWsiOgoJCQkJY2FzZSAiJWwiOgoJCQkJCWhyID0gcGFyc2VJbnQoYVtpXSwgMTApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJVAiOgoJCQkJY2FzZSAiJXAiOgoJCQkJCWlmICgvcG0vaS50ZXN0KGFbaV0pICYmIGhyIDwgMTIpCgkJCQkJCWhyICs9IDEyOwoJCQkJCWVsc2UgaWYgKC9hbS9pLnRlc3QoYVtpXSkgJiYgaHIgPj0gMTIpCgkJCQkJCWhyIC09IDEyOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJU0iOgoJCQkJCW1pbiA9IHBhcnNlSW50KGFbaV0sIDEwKTsKCQkJCQlicmVhazsKCQkJfQoJCX0KCQlpZiAoaXNOYU4oeSkpIHkgPSB0b2RheS5nZXRGdWxsWWVhcigpOwoJCWlmIChpc05hTihtKSkgbSA9IHRvZGF5LmdldE1vbnRoKCk7CgkJaWYgKGlzTmFOKGQpKSBkID0gdG9kYXkuZ2V0RGF0ZSgpOwoJCWlmIChpc05hTihocikpIGhyID0gdG9kYXkuZ2V0SG91cnMoKTsKCQlpZiAoaXNOYU4obWluKSkgbWluID0gdG9kYXkuZ2V0TWludXRlcygpOwoJCWlmICh5ICE9IDAgJiYgbSAhPSAtMSAmJiBkICE9IDApCgkJCXJldHVybiBuZXcgRGF0ZSh5LCBtLCBkLCBociwgbWluLCAwKTsKCQl5ID0gMDsgbSA9IC0xOyBkID0gMDsKCQlmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgewoJCQlpZiAoYVtpXS5zZWFyY2goL1thLXpBLVpdKy8pICE9IC0xKSB7CgkJCQl2YXIgdCA9IC0xOwoJCQkJZm9yIChqID0gMDsgaiA8IDEyOyArK2opIHsKCQkJCQlpZiAoQ2FsZW5kYXIuTU9OVEhfTkFNRVNbal0uc3Vic3RyKDAsIGFbaV0ubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09IGFbaV0udG9Mb3dlckNhc2UoKSkgewoJCQkJCQl0ID0gajsgYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQkJaWYgKHQgIT0gLTEpIHsKCQkJCQlpZiAobSAhPSAtMSkgewoJCQkJCQlkID0gbSsxOwoJCQkJCX0KCQkJCQltID0gdDsKCQkJCX0KCQkJfSBlbHNlIGlmIChwYXJzZUludChhW2ldLCAxMCkgPD0gMTIgJiYgbSA9PSAtMSkgewoJCQkJbSA9IGFbaV0tMTsKCQkJfSBlbHNlIGlmIChwYXJzZUludChhW2ldLCAxMCkgPiAzMSAmJiB5ID09IDApIHsKCQkJCXkgPSBwYXJzZUludChhW2ldLCAxMCk7CgkJCQkoeSA8IDEwMCkgJiYgKHkgKz0gKHkgPiAyOSkgPyAxOTAwIDogMjAwMCk7CgkJCX0gZWxzZSBpZiAoZCA9PSAwKSB7CgkJCQlkID0gYVtpXTsKCQkJfQoJCX0KCQlpZiAoeSA9PSAwKQoJCQl5ID0gdG9kYXkuZ2V0RnVsbFllYXIoKTsKCQlpZiAobSAhPSAtMSAmJiBkICE9IDApCgkJCXJldHVybiBuZXcgRGF0ZSh5LCBtLCBkLCBociwgbWluLCAwKTsKCQlyZXR1cm4gdG9kYXk7Cgl9OwoKCS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBjdXJyZW50IG1vbnRoCglEYXRlLnByb3RvdHlwZS5nZXRNb250aERheXMgPSBmdW5jdGlvbihtb250aCkgewoJCXZhciB5ZWFyID0gdGhpcy5nZXRGdWxsWWVhcigpCgkJaWYgKHR5cGVvZiBtb250aCA9PSAidW5kZWZpbmVkIikKCQkJbW9udGggPSB0aGlzLmdldE1vbnRoKCkKCQlpZiAoKCgwID09ICh5ZWFyICUgNCkpICYmICggKDAgIT0gKHllYXIgJSAxMDApKSB8fCAoMCA9PSAoeWVhciAlIDQwMCkpKSkgJiYgbW9udGggPT0gMSkKCQkJcmV0dXJuIDI5CgkJZWxzZQoJCQlyZXR1cm4gRGF0ZS5EQVlTX0lOX01PTlRIW21vbnRoXQoJfTsKCgkvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5IGluIHRoZSB5ZWFyCglEYXRlLnByb3RvdHlwZS5nZXREYXlPZlllYXIgPSBmdW5jdGlvbigpIHsKCQl2YXIgbm93ID0gbmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLCB0aGlzLmdldE1vbnRoKCksIHRoaXMuZ2V0RGF0ZSgpLCAwLCAwLCAwKTsKCQl2YXIgdGhlbiA9IG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwgMCwgMCwgMCwgMCwgMCk7CgkJdmFyIHRpbWUgPSBub3cgLSB0aGVuOwoJCXJldHVybiBNYXRoLmZsb29yKHRpbWUgLyBEYXRlLkRBWSk7Cgl9OwoKCS8qKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIHdlZWsgaW4geWVhciwgYXMgZGVmaW5lZCBpbiBJU08gODYwMS4gKi8KCURhdGUucHJvdG90eXBlLmdldFdlZWtOdW1iZXIgPSBmdW5jdGlvbigpIHsKCQl2YXIgZCA9IG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwgdGhpcy5nZXRNb250aCgpLCB0aGlzLmdldERhdGUoKSwgMCwgMCwgMCk7CgkJdmFyIERvVyA9IGQuZ2V0RGF5KCk7CgkJZC5zZXREYXRlKGQuZ2V0RGF0ZSgpIC0gKERvVyArIDYpICUgNyArIDMpOyAvLyBOZWFyZXN0IFRodQoJCXZhciBtcyA9IGQudmFsdWVPZigpOyAvLyBHTVQKCQlkLnNldE1vbnRoKDApOwoJCWQuc2V0RGF0ZSg0KTsgLy8gVGh1IGluIFdlZWsgMQoJCXJldHVybiBNYXRoLnJvdW5kKChtcyAtIGQudmFsdWVPZigpKSAvICg3ICogODY0ZTUpKSArIDE7Cgl9OwoKCS8qKiBDaGVja3MgZGF0ZSBhbmQgdGltZSBlcXVhbGl0eSAqLwoJRGF0ZS5wcm90b3R5cGUuZXF1YWxzVG8gPSBmdW5jdGlvbihkYXRlKSB7CgkJcmV0dXJuICgodGhpcy5nZXRGdWxsWWVhcigpID09IGRhdGUuZ2V0RnVsbFllYXIoKSkgJiYKCQkJKHRoaXMuZ2V0TW9udGgoKSA9PSBkYXRlLmdldE1vbnRoKCkpICYmCgkJCSh0aGlzLmdldERhdGUoKSA9PSBkYXRlLmdldERhdGUoKSkgJiYKCQkJKHRoaXMuZ2V0SG91cnMoKSA9PSBkYXRlLmdldEhvdXJzKCkpICYmCgkJCSh0aGlzLmdldE1pbnV0ZXMoKSA9PSBkYXRlLmdldE1pbnV0ZXMoKSkpOwoJfTsKCgkvKiogU2V0IG9ubHkgdGhlIHllYXIsIG1vbnRoLCBkYXRlIHBhcnRzIChrZWVwIGV4aXN0aW5nIHRpbWUpICovCglEYXRlLnByb3RvdHlwZS5zZXREYXRlT25seSA9IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgdG1wID0gbmV3IERhdGUoZGF0ZSk7CgkJdGhpcy5zZXREYXRlKDEpOwoJCXRoaXMuc2V0RnVsbFllYXIodG1wLmdldEZ1bGxZZWFyKCkpOwoJCXRoaXMuc2V0TW9udGgodG1wLmdldE1vbnRoKCkpOwoJCXRoaXMuc2V0RGF0ZSh0bXAuZ2V0RGF0ZSgpKTsKCX07CgovKiogQWRkZWQgYnkgTmFOOiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBEYXRlLmZvcm1hdCgpCiAqIHN0cmluZyBmb3JtYXQgKCBzdHJpbmcgZm9ybWF0ICkKICogRm9ybWF0dGluZyBydWxlcyBhY2NvcmRpbmcgdG8gaHR0cDovL3BocC5uZXQvc3RyZnRpbWUKICoKICogQ29weXJpZ2h0IChDKSAyMDA2ICBEYW8gR290dHdhbGQKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQogKgogKiBDb250YWN0IGluZm9ybWF0aW9uOgogKiAgIERhbyBHb3R0d2FsZCAgPGRhbyBhdCBkZXNpZ24tbm9pci5kZT4KICoKICogQHZlcnNpb24gIDAuNwogKiBAdG9kbyAgICAgJWcsICVHLCAlVSwgJVYsICVXLCAleiwgbW9yZS9iZXR0ZXIgbG9jYWxpemF0aW9uCiAqIEB1cmwgICAgICBodHRwOi8vZGVzaWduLW5vaXIuZGUvd2ViZGV2L0pTL0RhdGUuZm9ybWF0LwogKi8KCnZhciBfbGFuZyA9IChuYXZpZ2F0b3Iuc3lzdGVtTGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLnVzZXJMYW5ndWFnZSB8fCBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLmJyb3dzZXJMYW5ndWFnZSB8fCAnJykucmVwbGFjZSgvLS4qLywnJyk7CnN3aXRjaCAoX2xhbmcpIHsKCWNhc2UgJ2RlJzoKCQlEYXRlLl9sMTBuID0gewoJCQlkYXlzOiBbJ1Nvbm50YWcnLCdNb250YWcnLCdEaWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0YWcnLCdTYW1zdGFnJ10sCgkJCW1vbnRoczogWydKYW51YXInLCdGZWJydWFyJywnTVx1MDBFNHJ6JywnQXByaWwnLCdNYWknLCdKdW5pJywnSnVsaScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3ZlbWJlcicsJ0RlemVtYmVyJ10sCgkJCWRhdGU6ICclZS4lbS4lWScsCgkJCXRpbWU6ICclSDolTTolUyd9OwoJCWJyZWFrOwoJY2FzZSAnZXMnOgoJCURhdGUuX2wxMG4gPSB7CgkJCWRheXM6IFsnRG9taW5nbycsJ0x1bmVzJywnTWFydGVzJywnTWmOcmNvbGVzJywnSnVldmVzJywnVmllcm5lcycsJ1NcdTAwRTFiYWRvJ10sCgkJCW1vbnRoczogWydlbmVybycsJ2ZlYnJlcm8nLCdtYXJjaGEnLCdhYnJpbCcsJ3B1ZWRlJywnanVuaW8nLCdqdWxpbycsJ2Fnb3N0bycsJ3NlcHRpZW1icmUnLCdvY3R1YnJlJywnbm92aWVtYnJlJywnZGljaWVtYnJlJ10sCgkJCWRhdGU6ICclZS4lbS4lWScsCgkJCXRpbWU6ICclSDolTTolUyd9OwoJCWJyZWFrOwoJY2FzZSAnZnInOgoJCURhdGUuX2wxMG4gPSB7CgkJCWRheXM6IFsnZGltYW5jaGUnLCdsdW5kaScsJ21hcmRpJywnbWVyY3JlZGknLCdqZXVkaScsJ3ZlbmRyZWRpJywnc2FtZWRpJ10sCgkJCW1vbnRoczogWydqYW52aWVyJywnZlx1MDBFOXZyaWVyJywnbWFycycsJ2F2cmlsJywnbWFpJywnanVpbicsJ2p1aWxsZXQnLCdhb1x1MDBGQnQnLCdzZXB0ZW1icmUnLCdvY3RvYnJlJywnbm92ZW1icmUnLCdkZWNlbWJyZSddLAoJCQlkYXRlOiAnJWUvJW0vJVknLAoJCQl0aW1lOiAnJUg6JU06JVMnfTsKCQlicmVhazsKCWNhc2UgJ2l0JzoKCQlEYXRlLl9sMTBuID0gewoJCQlkYXlzOiBbJ2RvbWVuaWNhJywnbHVuZWRcdTAwRUMnLCdtYXJ0ZWRcdTAwRUMnLCdtZXJjb2xlZFx1MDBFQycsJ2dpb3ZlZFx1MDBFQycsJ3ZlbmVyZFx1MDBFQycsJ3NhYmF0byddLAoJCQltb250aHM6IFsnZ2VubmFpbycsJ2ZlYmJyYWlvJywnbWFyem8nLCdhcHJpbGUnLCdtYWdnaW8nLCdnaXVnbm8nLCdsdWdsaW8nLCdhZ29zdG8nLCdzZXR0ZW1icmUnLCdvdHRvYnJlJywnbm92ZW1icmUnLCdkaWNlbWJyZSddLAoJCQlkYXRlOiAnJWUvJW0vJXknLAoJCQl0aW1lOiAnJUguJU0uJVMnfTsKCQlicmVhazsKCWNhc2UgJ3B0JzoKCQlEYXRlLl9sMTBuID0gewoJCQlkYXlzOiBbJ0RvbWluZ28nLCdTZWd1bmRhLWZlaXJhJywnVGVyXHUwMEU3YS1mZWlyYScsJ1F1YXJ0YS1mZWlyYScsJ1F1aW50YS1mZWlyYScsJ1NleHRhLWZlaXJhJywnU1x1MDBFMWJhZG8nXSwKCQkJbW9udGhzOiBbJ0phbmVpcm8nLCdGZXZlcmVpcm8nLCdNYXJcdTAwRTdvJywnQWJyaWwnLCdNYWlvJywnSnVuaG8nLCdKdWxobycsJ0Fnb3N0bycsJ1NldGVtYnJvJywnT3V0dWJybycsJ05vdmVtYnJvJywnRGV6ZW1icm8nXSwKCQkJZGF0ZTogJyVlLyVtLyV5JywKCQkJdGltZTogJyVILiVNLiVTJ307CgkJYnJlYWs7CgljYXNlICdlbic6CglkZWZhdWx0OgoJCURhdGUuX2wxMG4gPSB7CgkJCWRheXM6IFsnU3VuZGF5JywnTW9uZGF5JywnVHVlc2RheScsJ1dlZG5lc2RheScsJ1RodXJzZGF5JywnRnJpZGF5JywnU2F0dXJkYXknXSwKCQkJbW9udGhzOiBbJ0phbnVhcnknLCdGZWJydWFyeScsJ01hcmNoJywnQXByaWwnLCdNYXknLCdKdW5lJywnSnVseScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09jdG9iZXInLCdOb3ZlbWJlcicsJ0RlY2VtYmVyJ10sCgkJCWRhdGU6ICclWS0lbS0lZScsCgkJCXRpbWU6ICclSDolTTolUyd9OwoJCWJyZWFrOwp9CkRhdGUuX3BhZCA9IGZ1bmN0aW9uKG51bSwgbGVuKSB7Cglmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykKCQlpZiAobnVtIDwgTWF0aC5wb3coMTAsIGkpKQoJCQlyZXR1cm4gbmV3IEFycmF5KGxlbi1pKzEpLmpvaW4oMCkgKyBudW07CglyZXR1cm4gbnVtOwp9OwpEYXRlLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbihmb3JtYXQpIHsKCWlmIChmb3JtYXQuaW5kZXhPZignJSUnKSA+IC0xKSB7IC8vIGEgbGl0ZXJhbCBgJScgY2hhcmFjdGVyCgkJZm9ybWF0ID0gZm9ybWF0LnNwbGl0KCclJScpOwoJCWZvciAodmFyIGkgPSAwOyBpIDwgZm9ybWF0Lmxlbmd0aDsgaSsrKQoJCQlmb3JtYXRbaV0gPSB0aGlzLmZvcm1hdChmb3JtYXRbaV0pOwoJCXJldHVybiBmb3JtYXQuam9pbignJScpOwoJfQoJZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoLyVEL2csICclbS8lZC8leScpOyAvLyBzYW1lIGFzICVtLyVkLyV5Cglmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgvJXIvZywgJyVJOiVNOiVTICVwJyk7IC8vIHRpbWUgaW4gYS5tLiBhbmQgcC5tLiBub3RhdGlvbgoJZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoLyVSL2csICclSDolTTolUycpOyAvLyB0aW1lIGluIDI0IGhvdXIgbm90YXRpb24KCWZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC8lVC9nLCAnJUg6JU06JVMnKTsgLy8gY3VycmVudCB0aW1lLCBlcXVhbCB0byAlSDolTTolUwoJZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoLyV4L2csIERhdGUuX2wxMG4uZGF0ZSk7IC8vIHByZWZlcnJlZCBkYXRlIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUgd2l0aG91dCB0aGUgdGltZQoJZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoLyVYL2csIERhdGUuX2wxMG4udGltZSk7IC8vIHByZWZlcnJlZCB0aW1lIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUgd2l0aG91dCB0aGUgZGF0ZQoJdmFyIGRhdGVPYmogPSB0aGlzOwoJcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC8lKFthQWJoQmNDZGVnR0hJam1NbnBTdHVVVld3eVl6Wl0pL2csIGZ1bmN0aW9uKG1hdGNoMCwgbWF0Y2gxKSB7CgkJcmV0dXJuIGRhdGVPYmouZm9ybWF0X2NhbGxiYWNrKG1hdGNoMCwgbWF0Y2gxKTsKCX0pOwp9CkRhdGUucHJvdG90eXBlLmZvcm1hdF9jYWxsYmFjayA9IGZ1bmN0aW9uKG1hdGNoMCwgbWF0Y2gxKSB7Cglzd2l0Y2ggKG1hdGNoMSkgewoJCWNhc2UgJ2EnOiAvLyBhYmJyZXZpYXRlZCB3ZWVrZGF5IG5hbWUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZQoJCQlyZXR1cm4gRGF0ZS5fbDEwbi5kYXlzW3RoaXMuZ2V0RGF5KCldLnN1YnN0cigwLDMpOwoJCWNhc2UgJ0EnOiAvLyBmdWxsIHdlZWtkYXkgbmFtZSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlCgkJCXJldHVybiBEYXRlLl9sMTBuLmRheXNbdGhpcy5nZXREYXkoKV07CgkJY2FzZSAnYic6CgkJY2FzZSAnaCc6IC8vIGFiYnJldmlhdGVkIG1vbnRoIG5hbWUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZQoJCQlyZXR1cm4gRGF0ZS5fbDEwbi5tb250aHNbdGhpcy5nZXRNb250aCgpXS5zdWJzdHIoMCwzKTsKCQljYXNlICdCJzogLy8gZnVsbCBtb250aCBuYW1lIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUKCQkJcmV0dXJuIERhdGUuX2wxMG4ubW9udGhzW3RoaXMuZ2V0TW9udGgoKV07CgkJY2FzZSAnYyc6IC8vIHByZWZlcnJlZCBkYXRlIGFuZCB0aW1lIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUKCQkJcmV0dXJuIHRoaXMudG9Mb2NhbGVTdHJpbmcoKTsKCQljYXNlICdDJzogLy8gY2VudHVyeSBudW1iZXIgKHRoZSB5ZWFyIGRpdmlkZWQgYnkgMTAwIGFuZCB0cnVuY2F0ZWQgdG8gYW4gaW50ZWdlciwgcmFuZ2UgMDAgdG8gOTkpCgkJCXJldHVybiBNYXRoLmZsb29yKHRoaXMuZ2V0RnVsbFllYXIoKSAvIDEwMCk7CgkJY2FzZSAnZCc6IC8vIGRheSBvZiB0aGUgbW9udGggYXMgYSBkZWNpbWFsIG51bWJlciAocmFuZ2UgMDEgdG8gMzEpCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXREYXRlKCksIDIpOwoJCWNhc2UgJ2UnOiAvLyBkYXkgb2YgdGhlIG1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIsIGEgc2luZ2xlIGRpZ2l0IGlzIHByZWNlZGVkIGJ5IGEgc3BhY2UgKHJhbmdlICcgMScgdG8gJzMxJykKCQkJcmV0dXJuIERhdGUuX3BhZCh0aGlzLmdldERhdGUoKSwgMik7CgkJLypjYXNlICdnJzogLy8gbGlrZSAlRywgYnV0IHdpdGhvdXQgdGhlIGNlbnR1cnkKCQkJcmV0dXJuIDsKCQljYXNlICdHJzogLy8gVGhlIDQtZGlnaXQgeWVhciBjb3JyZXNwb25kaW5nIHRvIHRoZSBJU08gd2VlayBudW1iZXIgKHNlZSAlVikuIFRoaXMgaGFzIHRoZSBzYW1lIGZvcm1hdCBhbmQgdmFsdWUgYXMgJVksIGV4Y2VwdCB0aGF0IGlmIHRoZSBJU08gd2VlayBudW1iZXIgYmVsb25ncyB0byB0aGUgcHJldmlvdXMgb3IgbmV4dCB5ZWFyLCB0aGF0IHllYXIgaXMgdXNlZCBpbnN0ZWFkCgkJCXJldHVybiA7Ki8KCQljYXNlICdIJzogLy8gaG91ciBhcyBhIGRlY2ltYWwgbnVtYmVyIHVzaW5nIGEgMjQtaG91ciBjbG9jayAocmFuZ2UgMDAgdG8gMjMpCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXRIb3VycygpLCAyKTsKCQljYXNlICdJJzogLy8gaG91ciBhcyBhIGRlY2ltYWwgbnVtYmVyIHVzaW5nIGEgMTItaG91ciBjbG9jayAocmFuZ2UgMDEgdG8gMTIpCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXRIb3VycygpICUgMTIsIDIpOwoJCWNhc2UgJ2onOiAvLyBkYXkgb2YgdGhlIHllYXIgYXMgYSBkZWNpbWFsIG51bWJlciAocmFuZ2UgMDAxIHRvIDM2NikKCQkJcmV0dXJuIERhdGUuX3BhZCh0aGlzLmdldE1vbnRoKCkgKiAzMCArIE1hdGguY2VpbCh0aGlzLmdldE1vbnRoKCkgLyAyKSArIHRoaXMuZ2V0RGF5KCkgLSAyICogKHRoaXMuZ2V0TW9udGgoKSA+IDEpICsgKCEodGhpcy5nZXRGdWxsWWVhcigpICUgNDAwKSB8fCAoISh0aGlzLmdldEZ1bGxZZWFyKCkgJSA0KSAmJiB0aGlzLmdldEZ1bGxZZWFyKCkgJSAxMDApKSwgMyk7CgkJY2FzZSAnbSc6IC8vIG1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIgKHJhbmdlIDAxIHRvIDEyKQoJCQlyZXR1cm4gRGF0ZS5fcGFkKHRoaXMuZ2V0TW9udGgoKSArIDEsIDIpOwoJCWNhc2UgJ00nOiAvLyBtaW51dGUgYXMgYSBkZWNpbWFsIG51bWJlcgoJCQlyZXR1cm4gRGF0ZS5fcGFkKHRoaXMuZ2V0TWludXRlcygpLCAyKTsKCQljYXNlICduJzogLy8gbmV3bGluZSBjaGFyYWN0ZXIKCQkJcmV0dXJuICdcbic7CgkJY2FzZSAncCc6IC8vIGVpdGhlciBgYW0nIG9yIGBwbScgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiB0aW1lIHZhbHVlLCBvciB0aGUgY29ycmVzcG9uZGluZyBzdHJpbmdzIGZvciB0aGUgY3VycmVudCBsb2NhbGUKCQkJcmV0dXJuIHRoaXMuZ2V0SG91cnMoKSA8IDEyID8gJ2FtJyA6ICdwbSc7CgkJY2FzZSAnUyc6IC8vIHNlY29uZCBhcyBhIGRlY2ltYWwgbnVtYmVyCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXRTZWNvbmRzKCksIDIpOwoJCWNhc2UgJ3QnOiAvLyB0YWIgY2hhcmFjdGVyCgkJCXJldHVybiAnXHQnOwoJCWNhc2UgJ3UnOiAvLyB3ZWVrZGF5IGFzIGEgZGVjaW1hbCBudW1iZXIgWzEsN10sIHdpdGggMSByZXByZXNlbnRpbmcgTW9uZGF5CgkJCXJldHVybiB0aGlzLmdldERheSgpIHx8IDc7CgkJLypjYXNlICdVJzogLy8gd2VlayBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhciBhcyBhIGRlY2ltYWwgbnVtYmVyLCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBTdW5kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgZmlyc3Qgd2VlawoJCQlyZXR1cm4gOwoJCWNhc2UgJ1YnOiAvLyBUaGUgSVNPIDg2MDE6MTk4OCB3ZWVrIG51bWJlciBvZiB0aGUgY3VycmVudCB5ZWFyIGFzIGEgZGVjaW1hbCBudW1iZXIsIHJhbmdlIDAxIHRvIDUzLCB3aGVyZSB3ZWVrIDEgaXMgdGhlIGZpcnN0IHdlZWsgdGhhdCBoYXMgYXQgbGVhc3QgNCBkYXlzIGluIHRoZSBjdXJyZW50IHllYXIsIGFuZCB3aXRoIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLiAoVXNlICVHIG9yICVnIGZvciB0aGUgeWVhciBjb21wb25lbnQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgd2VlayBudW1iZXIgZm9yIHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wLikKCQkJcmV0dXJuIDsKCQljYXNlICdXJzogLy8gd2VlayBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhciBhcyBhIGRlY2ltYWwgbnVtYmVyLCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBNb25kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgZmlyc3Qgd2VlawoJCQlyZXR1cm4gOyovCgkJY2FzZSAndyc6IC8vIGRheSBvZiB0aGUgd2VlayBhcyBhIGRlY2ltYWwsIFN1bmRheSBiZWluZyAwCgkJCXJldHVybiB0aGlzLmdldERheSgpOwoJCWNhc2UgJ3knOiAvLyB5ZWFyIGFzIGEgZGVjaW1hbCBudW1iZXIgd2l0aG91dCBhIGNlbnR1cnkgKHJhbmdlIDAwIHRvIDk5KQoJCQlyZXR1cm4gdGhpcy5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkuc3Vic3RyKDIpOwoJCWNhc2UgJ1knOiAvLyB5ZWFyIGFzIGEgZGVjaW1hbCBudW1iZXIgaW5jbHVkaW5nIHRoZSBjZW50dXJ5CgkJCXJldHVybiB0aGlzLmdldEZ1bGxZZWFyKCk7CgkJLypjYXNlICd6JzoKCQljYXNlICdaJzogLy8gdGltZSB6b25lIG9yIG5hbWUgb3IgYWJicmV2aWF0aW9uCgkJCXJldHVybiA7Ki8KCQlkZWZhdWx0OgoJCQlyZXR1cm4gbWF0Y2gwOwoJfQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8qKiBQcmludHMgdGhlIGRhdGUgaW4gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmb3JtYXQuICovCglEYXRlLnByb3RvdHlwZS5wcmludCA9IGZ1bmN0aW9uIChzdHIpIHsKCQlyZXR1cm4gdGhpcy5mb3JtYXQoc3RyKTsKCQkvKgoJCXZhciBtID0gdGhpcy5nZXRNb250aCgpOwoJCXZhciBkID0gdGhpcy5nZXREYXRlKCk7CgkJdmFyIHkgPSB0aGlzLmdldEZ1bGxZZWFyKCk7CgkJdmFyIHduID0gdGhpcy5nZXRXZWVrTnVtYmVyKCk7CgkJdmFyIHcgPSB0aGlzLmdldERheSgpOwoJCXZhciBzID0ge307CgkJdmFyIGhyID0gdGhpcy5nZXRIb3VycygpOwoJCXZhciBwbSA9IChociA+PSAxMik7CgkJdmFyIGlyID0gKHBtKSA/IChociAtIDEyKSA6IGhyOwoJCXZhciBkeSA9IHRoaXMuZ2V0RGF5T2ZZZWFyKCk7CgkJaWYgKGlyID09IDApCgkJCWlyID0gMTI7CgkJdmFyIG1pbiA9IHRoaXMuZ2V0TWludXRlcygpOwoJCXZhciBzZWMgPSB0aGlzLmdldFNlY29uZHMoKTsKCQlzWyIlYSJdID0gQ2FsZW5kYXIuU0hPUlRfREFZX05BTUVTW3ddOyAvLyBhYmJyZXZpYXRlZCB3ZWVrZGF5IG5hbWUgW0ZJWE1FOiBJMThOXQoJCXNbIiVBIl0gPSBDYWxlbmRhci5EQVlfTkFNRVNbd107IC8vIGZ1bGwgd2Vla2RheSBuYW1lCgkJc1siJWIiXSA9IENhbGVuZGFyLlNIT1JUX01PTlRIX05BTUVTW21dOyAvLyBhYmJyZXZpYXRlZCBtb250aCBuYW1lIFtGSVhNRTogSTE4Tl0KCQlzWyIlQiJdID0gQ2FsZW5kYXIuTU9OVEhfTkFNRVNbbV07IC8vIGZ1bGwgbW9udGggbmFtZQoJCS8vIEZJWE1FOiAlYyA6IHByZWZlcnJlZCBkYXRlIGFuZCB0aW1lIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUKCQlzWyIlQyJdID0gMSArIE1hdGguZmxvb3IoeSAvIDEwMCk7IC8vIHRoZSBjZW50dXJ5IG51bWJlcgoJCXNbIiVkIl0gPSAoZCA8IDEwKSA/ICgiMCIgKyBkKSA6IGQ7IC8vIHRoZSBkYXkgb2YgdGhlIG1vbnRoIChyYW5nZSAwMSB0byAzMSkKCQlzWyIlZSJdID0gZDsgLy8gdGhlIGRheSBvZiB0aGUgbW9udGggKHJhbmdlIDEgdG8gMzEpCgkJLy8gRklYTUU6ICVEIDogYW1lcmljYW4gZGF0ZSBzdHlsZTogJW0vJWQvJXkKCQkvLyBGSVhNRTogJUUsICVGLCAlRywgJWcsICVoIChtYW4gc3RyZnRpbWUpCgkJc1siJUgiXSA9IChociA8IDEwKSA/ICgiMCIgKyBocikgOiBocjsgLy8gaG91ciwgcmFuZ2UgMDAgdG8gMjMgKDI0aCBmb3JtYXQpCgkJc1siJUkiXSA9IChpciA8IDEwKSA/ICgiMCIgKyBpcikgOiBpcjsgLy8gaG91ciwgcmFuZ2UgMDEgdG8gMTIgKDEyaCBmb3JtYXQpCgkJc1siJWoiXSA9IChkeSA8IDEwMCkgPyAoKGR5IDwgMTApID8gKCIwMCIgKyBkeSkgOiAoIjAiICsgZHkpKSA6IGR5OyAvLyBkYXkgb2YgdGhlIHllYXIgKHJhbmdlIDAwMSB0byAzNjYpCgkJc1siJWsiXSA9IGhyOyAgIC8vIGhvdXIsIHJhbmdlIDAgdG8gMjMgKDI0aCBmb3JtYXQpCgkJc1siJWwiXSA9IGlyOyAgIC8vIGhvdXIsIHJhbmdlIDEgdG8gMTIgKDEyaCBmb3JtYXQpCgkJc1siJW0iXSA9IChtIDwgOSkgPyAoIjAiICsgKDErbSkpIDogKDErbSk7IC8vIG1vbnRoLCByYW5nZSAwMSB0byAxMgoJCXNbIiVNIl0gPSAobWluIDwgMTApID8gKCIwIiArIG1pbikgOiBtaW47IC8vIG1pbnV0ZSwgcmFuZ2UgMDAgdG8gNTkKCQlzWyIlbiJdID0gIlxuIjsgICAvLyBhIG5ld2xpbmUgY2hhcmFjdGVyCgkJc1siJXAiXSA9IHBtID8gIlBNIiA6ICJBTSI7CgkJc1siJVAiXSA9IHBtID8gInBtIiA6ICJhbSI7CgkJLy8gRklYTUU6ICVyIDogdGhlIHRpbWUgaW4gYW0vcG0gbm90YXRpb24gJUk6JU06JVMgJXAKCQkvLyBGSVhNRTogJVIgOiB0aGUgdGltZSBpbiAyNC1ob3VyIG5vdGF0aW9uICVIOiVNCgkJc1siJXMiXSA9IE1hdGguZmxvb3IodGhpcy5nZXRUaW1lKCkgLyAxMDAwKTsKCQlzWyIlUyJdID0gKHNlYyA8IDEwKSA/ICgiMCIgKyBzZWMpIDogc2VjOyAvLyBzZWNvbmRzLCByYW5nZSAwMCB0byA1OQoJCXNbIiV0Il0gPSAiXHQiOyAgIC8vIGEgdGFiIGNoYXJhY3RlcgoJCS8vIEZJWE1FOiAlVCA6IHRoZSB0aW1lIGluIDI0LWhvdXIgbm90YXRpb24gKCVIOiVNOiVTKQoJCXNbIiVVIl0gPSBzWyIlVyJdID0gc1siJVYiXSA9ICh3biA8IDEwKSA/ICgiMCIgKyB3bikgOiB3bjsKCQlzWyIldSJdID0gdyArIDE7ICAvLyB0aGUgZGF5IG9mIHRoZSB3ZWVrIChyYW5nZSAxIHRvIDcsIDEgPSBNT04pCgkJc1siJXciXSA9IHc7ICAgIC8vIHRoZSBkYXkgb2YgdGhlIHdlZWsgKHJhbmdlIDAgdG8gNiwgMCA9IFNVTikKCQkvLyBGSVhNRTogJXggOiBwcmVmZXJyZWQgZGF0ZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIHdpdGhvdXQgdGhlIHRpbWUKCQkvLyBGSVhNRTogJVggOiBwcmVmZXJyZWQgdGltZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIHdpdGhvdXQgdGhlIGRhdGUKCQlzWyIleSJdID0gKCcnICsgeSkuc3Vic3RyKDIsIDIpOyAvLyB5ZWFyIHdpdGhvdXQgdGhlIGNlbnR1cnkgKHJhbmdlIDAwIHRvIDk5KQoJCXNbIiVZIl0gPSB5OyAgICAvLyB5ZWFyIHdpdGggdGhlIGNlbnR1cnkKCQlzWyIlJSJdID0gIiUiOyAgICAvLyBhIGxpdGVyYWwgJyUnIGNoYXJhY3RlcgoKCQl2YXIgcmUgPSAvJS4vZzsKCQl2YXIgYSA9IHN0ci5tYXRjaChyZSk7CgkJZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CgkJCXZhciB0bXAgPSBzW2FbaV1dOwoJCQlpZiAodG1wKSB7CgkJCQlyZSA9IG5ldyBSZWdFeHAoYVtpXSwgJ2cnKTsKCQkJCXN0ciA9IHN0ci5yZXBsYWNlKHJlLCB0bXApOwoJCQl9CgkJfQoKCQlyZXR1cm4gc3RyOwoJCSovCgl9OwoKCURhdGUucHJvdG90eXBlLl9fbXNoX29sZFNldEZ1bGxZZWFyID0gRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXI7CglEYXRlLnByb3RvdHlwZS5zZXRGdWxsWWVhciA9IGZ1bmN0aW9uKHkpIHsKCQl2YXIgZCA9IG5ldyBEYXRlKHRoaXMpOwoJCWQuX19tc2hfb2xkU2V0RnVsbFllYXIoeSk7CgkJaWYgKGQuZ2V0TW9udGgoKSAhPSB0aGlzLmdldE1vbnRoKCkpCgkJCXRoaXMuc2V0RGF0ZSgyOCk7CgkJdGhpcy5fX21zaF9vbGRTZXRGdWxsWWVhcih5KTsKCX0KCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gVGhlIGpRdWVyeSBwbHVnaW4gZnVuY3Rpb24KCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkkLmZuLmNhbGVuZGFyID0gZnVuY3Rpb24ob3B0aW9ucykgewoJCXZhciBkZWZhdWx0cyA9IHsKCQkJdHJpZ2dlckVsZW1lbnQ6IG51bGwsIC8vIFBvcHVwIGNhbGVuZGFyCgkJCXBhcmVudEVsZW1lbnQ6IG51bGwsIC8vIElubGluZSBjYWxlbmRhcgoJCQltaW5ZZWFyOiAxOTAwLAoJCQltYXhZZWFyOiAyMTAwLAoJCQlmaXJzdERheU9mV2VlazogMSwgLy8gTW9uZGF5CgkJCXdlZWtlbmQ6ICIwLDYiLCAvLyBTdW5kYXkgYW5kIFNhdHVyZGF5CgkJCWRhdGVGb3JtYXQ6ICclWS0lbS0lZCcsCgkJCWRhdGVGaWVsZDogbnVsbCwKCQkJc2VsZWN0SGFuZGxlcjogbnVsbCwKCQkJY2xvc2VIYW5kbGVyOiBudWxsCgkJfTsKCQl2YXIgc2V0dGluZ3MgPSAkLmV4dGVuZCh7fSwgZGVmYXVsdHMsIG9wdGlvbnMpOwoKCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxmID0gJCh0aGlzKTsKCQkJdmFyIGNhbGVuZGFyID0gbmV3IENhbGVuZGFyKCk7CgoJCQljYWxlbmRhci5taW5ZZWFyID0gc2V0dGluZ3MubWluWWVhcjsKCQkJY2FsZW5kYXIubWF4WWVhciA9IHNldHRpbmdzLm1heFllYXI7CgoJCQljYWxlbmRhci5maXJzdERheU9mV2VlayA9IHNldHRpbmdzLmZpcnN0RGF5T2ZXZWVrOwoJCQljYWxlbmRhci53ZWVrZW5kID0gc2V0dGluZ3Mud2Vla2VuZDsKCQkJY2FsZW5kYXIuZGF0ZUZvcm1hdCA9IHNldHRpbmdzLmRhdGVGb3JtYXQ7CgkJCWNhbGVuZGFyLmRhdGVGaWVsZCA9IChzZXR0aW5ncy5kYXRlRmllbGQgfHwgc2VsZik7CgoJCQljYWxlbmRhci5zZWxlY3RIYW5kbGVyID0gKHNldHRpbmdzLnNlbGVjdEhhbmRsZXIgfHwgQ2FsZW5kYXIuZGVmYXVsdFNlbGVjdEhhbmRsZXIpOwoKCQkJLy8gSW5saW5lIENhbGVuZGFyCgkJCXZhciBzZWxmRGF0ZSA9IHNlbGYuaHRtbCgpIHx8IHNlbGYudmFsKCk7CgkJCWlmIChzZXR0aW5ncy5wYXJlbnRFbGVtZW50KSB7CgkJCQljYWxlbmRhci5jcmVhdGUoJChzZXR0aW5ncy5wYXJlbnRFbGVtZW50KSk7CgkJCQlpZiAoc2VsZkRhdGUpIGNhbGVuZGFyLnBhcnNlRGF0ZShzZWxmRGF0ZSk7CgkJCQljYWxlbmRhci5zaG93KCk7CgkJCX0gZWxzZSB7CgkJCQkvLyBQb3B1cCBDYWxlbmRhcgoJCQkJY2FsZW5kYXIuY3JlYXRlKCk7CgkJCQlpZiAoc2VsZkRhdGUpIGNhbGVuZGFyLnBhcnNlRGF0ZShzZWxmRGF0ZSk7CgkJCQl2YXIgdHJpZ2dlckVsZW1lbnQgPSAkKHNldHRpbmdzLnRyaWdnZXJFbGVtZW50IHx8IHNlbGYpOwoJCQkJdHJpZ2dlckVsZW1lbnQuY2xpY2soZnVuY3Rpb24oKSB7CgkJCQkJY2FsZW5kYXIuY2xvc2VIYW5kbGVyID0gKHNldHRpbmdzLmNsb3NlSGFuZGxlciB8fCBDYWxlbmRhci5kZWZhdWx0Q2xvc2VIYW5kbGVyKTsKCQkJCQljYWxlbmRhci5zaG93QXRFbGVtZW50KHRyaWdnZXJFbGVtZW50KTsKCQkJCX0pOwoJCQl9CgkJfSk7CgoJCXJldHVybiB0aGlzOwoJfQoKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/js/jq.form.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBGb3JtIFBsdWdpbgogKiB2ZXJzaW9uOiAyLjQzICgxMi1NQVItMjAxMCkKICogQHJlcXVpcmVzIGpRdWVyeSB2MS4zLjIgb3IgbGF0ZXIKICoKICogRXhhbXBsZXMgYW5kIGRvY3VtZW50YXRpb24gYXQ6IGh0dHA6Ly9tYWxzdXAuY29tL2pxdWVyeS9mb3JtLwogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoKICogICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogKiAgIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbAogKi8KOyhmdW5jdGlvbigkKSB7CgovKgoJVXNhZ2UgTm90ZToKCS0tLS0tLS0tLS0tCglEbyBub3QgdXNlIGJvdGggYWpheFN1Ym1pdCBhbmQgYWpheEZvcm0gb24gdGhlIHNhbWUgZm9ybS4gIFRoZXNlCglmdW5jdGlvbnMgYXJlIGludGVuZGVkIHRvIGJlIGV4Y2x1c2l2ZS4gIFVzZSBhamF4U3VibWl0IGlmIHlvdSB3YW50Cgl0byBiaW5kIHlvdXIgb3duIHN1Ym1pdCBoYW5kbGVyIHRvIHRoZSBmb3JtLiAgRm9yIGV4YW1wbGUsCgoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJJCgnI215Rm9ybScpLmJpbmQoJ3N1Ym1pdCcsIGZ1bmN0aW9uKCkgewoJCQkkKHRoaXMpLmFqYXhTdWJtaXQoewoJCQkJdGFyZ2V0OiAnI291dHB1dCcKCQkJfSk7CgkJCXJldHVybiBmYWxzZTsgLy8gPC0tIGltcG9ydGFudCEKCQl9KTsKCX0pOwoKCVVzZSBhamF4Rm9ybSB3aGVuIHlvdSB3YW50IHRoZSBwbHVnaW4gdG8gbWFuYWdlIGFsbCB0aGUgZXZlbnQgYmluZGluZwoJZm9yIHlvdS4gIEZvciBleGFtcGxlLAoKCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCSQoJyNteUZvcm0nKS5hamF4Rm9ybSh7CgkJCXRhcmdldDogJyNvdXRwdXQnCgkJfSk7Cgl9KTsKCglXaGVuIHVzaW5nIGFqYXhGb3JtLCB0aGUgYWpheFN1Ym1pdCBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgZm9yIHlvdQoJYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuCiovCiQuZm4uYWpheFN1Ym1pdD1mdW5jdGlvbihvcHRpb25zKXtpZighdGhpcy5sZW5ndGgpe2xvZygnYWpheFN1Ym1pdDogc2tpcHBpbmcgc3VibWl0IHByb2Nlc3MgLSBubyBlbGVtZW50IHNlbGVjdGVkJyk7cmV0dXJuIHRoaXN9aWYodHlwZW9mIG9wdGlvbnM9PSdmdW5jdGlvbicpb3B0aW9ucz17c3VjY2VzczpvcHRpb25zfTt2YXIgdXJsPSQudHJpbSh0aGlzLmF0dHIoJ2FjdGlvbicpKTtpZih1cmwpe3VybD0odXJsLm1hdGNoKC9eKFteI10rKS8pfHxbXSlbMV19dXJsPXVybHx8d2luZG93LmxvY2F0aW9uLmhyZWZ8fCcnO29wdGlvbnM9JC5leHRlbmQoe3VybDp1cmwsdHlwZTp0aGlzLmF0dHIoJ21ldGhvZCcpfHwnR0VUJyxpZnJhbWVTcmM6L15odHRwcy9pLnRlc3Qod2luZG93LmxvY2F0aW9uLmhyZWZ8fCcnKT8namF2YXNjcmlwdDpmYWxzZSc6J2Fib3V0OmJsYW5rJ30sb3B0aW9uc3x8e30pO3ZhciB2ZXRvPXt9O3RoaXMudHJpZ2dlcignZm9ybS1wcmUtc2VyaWFsaXplJyxbdGhpcyxvcHRpb25zLHZldG9dKTtpZih2ZXRvLnZldG8pe2xvZygnYWpheFN1Ym1pdDogc3VibWl0IHZldG9lZCB2aWEgZm9ybS1wcmUtc2VyaWFsaXplIHRyaWdnZXInKTtyZXR1cm4gdGhpc31pZihvcHRpb25zLmJlZm9yZVNlcmlhbGl6ZSYmb3B0aW9ucy5iZWZvcmVTZXJpYWxpemUodGhpcyxvcHRpb25zKT09PWZhbHNlKXtsb2coJ2FqYXhTdWJtaXQ6IHN1Ym1pdCBhYm9ydGVkIHZpYSBiZWZvcmVTZXJpYWxpemUgY2FsbGJhY2snKTtyZXR1cm4gdGhpc312YXIgYT10aGlzLmZvcm1Ub0FycmF5KG9wdGlvbnMuc2VtYW50aWMpO2lmKG9wdGlvbnMuZGF0YSl7b3B0aW9ucy5leHRyYURhdGE9b3B0aW9ucy5kYXRhO2Zvcih2YXIgbiBpbiBvcHRpb25zLmRhdGEpe2lmKG9wdGlvbnMuZGF0YVtuXWluc3RhbmNlb2YgQXJyYXkpe2Zvcih2YXIgayBpbiBvcHRpb25zLmRhdGFbbl0pYS5wdXNoKHtuYW1lOm4sdmFsdWU6b3B0aW9ucy5kYXRhW25dW2tdfSl9ZWxzZSBhLnB1c2goe25hbWU6bix2YWx1ZTpvcHRpb25zLmRhdGFbbl19KX19aWYob3B0aW9ucy5iZWZvcmVTdWJtaXQmJm9wdGlvbnMuYmVmb3JlU3VibWl0KGEsdGhpcyxvcHRpb25zKT09PWZhbHNlKXtsb2coJ2FqYXhTdWJtaXQ6IHN1Ym1pdCBhYm9ydGVkIHZpYSBiZWZvcmVTdWJtaXQgY2FsbGJhY2snKTtyZXR1cm4gdGhpc310aGlzLnRyaWdnZXIoJ2Zvcm0tc3VibWl0LXZhbGlkYXRlJyxbYSx0aGlzLG9wdGlvbnMsdmV0b10pO2lmKHZldG8udmV0byl7bG9nKCdhamF4U3VibWl0OiBzdWJtaXQgdmV0b2VkIHZpYSBmb3JtLXN1Ym1pdC12YWxpZGF0ZSB0cmlnZ2VyJyk7cmV0dXJuIHRoaXN9dmFyIHE9JC5wYXJhbShhKTtpZihvcHRpb25zLnR5cGUudG9VcHBlckNhc2UoKT09J0dFVCcpe29wdGlvbnMudXJsKz0ob3B0aW9ucy51cmwuaW5kZXhPZignPycpPj0wPycmJzonPycpK3E7b3B0aW9ucy5kYXRhPW51bGx9ZWxzZSBvcHRpb25zLmRhdGE9cTt2YXIgJGZvcm09dGhpcyxjYWxsYmFja3M9W107aWYob3B0aW9ucy5yZXNldEZvcm0pY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oKXskZm9ybS5yZXNldEZvcm0oKX0pO2lmKG9wdGlvbnMuY2xlYXJGb3JtKWNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKCl7JGZvcm0uY2xlYXJGb3JtKCl9KTtpZighb3B0aW9ucy5kYXRhVHlwZSYmb3B0aW9ucy50YXJnZXQpe3ZhciBvbGRTdWNjZXNzPW9wdGlvbnMuc3VjY2Vzc3x8ZnVuY3Rpb24oKXt9O2NhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKGRhdGEpe3ZhciBmbj1vcHRpb25zLnJlcGxhY2VUYXJnZXQ/J3JlcGxhY2VXaXRoJzonaHRtbCc7JChvcHRpb25zLnRhcmdldClbZm5dKGRhdGEpLmVhY2gob2xkU3VjY2Vzcyxhcmd1bWVudHMpfSl9ZWxzZSBpZihvcHRpb25zLnN1Y2Nlc3MpY2FsbGJhY2tzLnB1c2gob3B0aW9ucy5zdWNjZXNzKTtvcHRpb25zLnN1Y2Nlc3M9ZnVuY3Rpb24oZGF0YSxzdGF0dXMseGhyKXtmb3IodmFyIGk9MCxtYXg9Y2FsbGJhY2tzLmxlbmd0aDtpPG1heDtpKyspY2FsbGJhY2tzW2ldLmFwcGx5KG9wdGlvbnMsW2RhdGEsc3RhdHVzLHhocnx8JGZvcm0sJGZvcm1dKX07dmFyIGZpbGVzPSQoJ2lucHV0OmZpbGUnLHRoaXMpLmZpZWxkVmFsdWUoKTt2YXIgZm91bmQ9ZmFsc2U7Zm9yKHZhciBqPTA7ajxmaWxlcy5sZW5ndGg7aisrKWlmKGZpbGVzW2pdKWZvdW5kPXRydWU7dmFyIG11bHRpcGFydD1mYWxzZTtpZigoZmlsZXMubGVuZ3RoJiZvcHRpb25zLmlmcmFtZSE9PWZhbHNlKXx8b3B0aW9ucy5pZnJhbWV8fGZvdW5kfHxtdWx0aXBhcnQpe2lmKG9wdGlvbnMuY2xvc2VLZWVwQWxpdmUpJC5nZXQob3B0aW9ucy5jbG9zZUtlZXBBbGl2ZSxmaWxlVXBsb2FkKTtlbHNlIGZpbGVVcGxvYWQoKX1lbHNlICQuYWpheChvcHRpb25zKTt0aGlzLnRyaWdnZXIoJ2Zvcm0tc3VibWl0LW5vdGlmeScsW3RoaXMsb3B0aW9uc10pO3JldHVybiB0aGlzO2Z1bmN0aW9uIGZpbGVVcGxvYWQoKXt2YXIgZm9ybT0kZm9ybVswXTtpZigkKCc6aW5wdXRbbmFtZT1zdWJtaXRdJyxmb3JtKS5sZW5ndGgpe2FsZXJ0KCdFcnJvcjogRm9ybSBlbGVtZW50cyBtdXN0IG5vdCBiZSBuYW1lZCAic3VibWl0Ii4nKTtyZXR1cm59dmFyIG9wdHM9JC5leHRlbmQoe30sJC5hamF4U2V0dGluZ3Msb3B0aW9ucyk7dmFyIHM9JC5leHRlbmQodHJ1ZSx7fSwkLmV4dGVuZCh0cnVlLHt9LCQuYWpheFNldHRpbmdzKSxvcHRzKTt2YXIgaWQ9J2pxRm9ybUlPJysobmV3IERhdGUoKS5nZXRUaW1lKCkpO3ZhciAkaW89JCgnPGlmcmFtZSBpZD0iJytpZCsnIiBuYW1lPSInK2lkKyciIHNyYz0iJytvcHRzLmlmcmFtZVNyYysnIiBvbmxvYWQ9IihqUXVlcnkodGhpcykuZGF0YShcJ2Zvcm0tcGx1Z2luLW9ubG9hZFwnKSkoKSIgLz4nKTt2YXIgaW89JGlvWzBdOyRpby5jc3Moe3Bvc2l0aW9uOidhYnNvbHV0ZScsdG9wOictMTAwMHB4JyxsZWZ0OictMTAwMHB4J30pO3ZhciB4aHI9e2Fib3J0ZWQ6MCxyZXNwb25zZVRleHQ6bnVsbCxyZXNwb25zZVhNTDpudWxsLHN0YXR1czowLHN0YXR1c1RleHQ6J24vYScsZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7fSxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbigpe30sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbigpe30sYWJvcnQ6ZnVuY3Rpb24oKXt0aGlzLmFib3J0ZWQ9MTskaW8uYXR0cignc3JjJyxvcHRzLmlmcmFtZVNyYyl9fTt2YXIgZz1vcHRzLmdsb2JhbDtpZihnJiYhJC5hY3RpdmUrKykkLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO2lmKGcpJC5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW3hocixvcHRzXSk7aWYocy5iZWZvcmVTZW5kJiZzLmJlZm9yZVNlbmQoeGhyLHMpPT09ZmFsc2Upe3MuZ2xvYmFsJiYkLmFjdGl2ZS0tO3JldHVybn1pZih4aHIuYWJvcnRlZClyZXR1cm47dmFyIGNiSW52b2tlZD1mYWxzZTt2YXIgdGltZWRPdXQ9MDt2YXIgc3ViPWZvcm0uY2xrO2lmKHN1Yil7dmFyIG49c3ViLm5hbWU7aWYobiYmIXN1Yi5kaXNhYmxlZCl7b3B0cy5leHRyYURhdGE9b3B0cy5leHRyYURhdGF8fHt9O29wdHMuZXh0cmFEYXRhW25dPXN1Yi52YWx1ZTtpZihzdWIudHlwZT09ImltYWdlIil7b3B0cy5leHRyYURhdGFbbisnLngnXT1mb3JtLmNsa194O29wdHMuZXh0cmFEYXRhW24rJy55J109Zm9ybS5jbGtfeX19fWZ1bmN0aW9uIGRvU3VibWl0KCl7dmFyIHQ9JGZvcm0uYXR0cigndGFyZ2V0JyksYT0kZm9ybS5hdHRyKCdhY3Rpb24nKTtmb3JtLnNldEF0dHJpYnV0ZSgndGFyZ2V0JyxpZCk7aWYoZm9ybS5nZXRBdHRyaWJ1dGUoJ21ldGhvZCcpIT0nUE9TVCcpZm9ybS5zZXRBdHRyaWJ1dGUoJ21ldGhvZCcsJ1BPU1QnKTtpZihmb3JtLmdldEF0dHJpYnV0ZSgnYWN0aW9uJykhPW9wdHMudXJsKWZvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLG9wdHMudXJsKTtpZighb3B0cy5za2lwRW5jb2RpbmdPdmVycmlkZSl7JGZvcm0uYXR0cih7ZW5jb2Rpbmc6J211bHRpcGFydC9mb3JtLWRhdGEnLGVuY3R5cGU6J211bHRpcGFydC9mb3JtLWRhdGEnfSl9aWYob3B0cy50aW1lb3V0KXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aW1lZE91dD10cnVlO2NiKCl9LG9wdHMudGltZW91dCk7dmFyIGV4dHJhSW5wdXRzPVtdO3RyeXtpZihvcHRzLmV4dHJhRGF0YSlmb3IodmFyIG4gaW4gb3B0cy5leHRyYURhdGEpZXh0cmFJbnB1dHMucHVzaCgkKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInK24rJyIgdmFsdWU9Iicrb3B0cy5leHRyYURhdGFbbl0rJyIgLz4nKS5hcHBlbmRUbyhmb3JtKVswXSk7JGlvLmFwcGVuZFRvKCdib2R5Jyk7JGlvLmRhdGEoJ2Zvcm0tcGx1Z2luLW9ubG9hZCcsY2IpO2Zvcm0uc3VibWl0KCl9ZmluYWxseXtmb3JtLnNldEF0dHJpYnV0ZSgnYWN0aW9uJyxhKTt0P2Zvcm0uc2V0QXR0cmlidXRlKCd0YXJnZXQnLHQpOiRmb3JtLnJlbW92ZUF0dHIoJ3RhcmdldCcpOyQoZXh0cmFJbnB1dHMpLnJlbW92ZSgpfX07aWYob3B0cy5mb3JjZVN5bmMpZG9TdWJtaXQoKTtlbHNlIHNldFRpbWVvdXQoZG9TdWJtaXQsMTApO3ZhciBkb21DaGVja0NvdW50PTEwMDtmdW5jdGlvbiBjYigpe2lmKGNiSW52b2tlZClyZXR1cm47dmFyIG9rPXRydWU7dHJ5e2lmKHRpbWVkT3V0KXRocm93J3RpbWVvdXQnO3ZhciBkYXRhLGRvYztkb2M9aW8uY29udGVudFdpbmRvdz9pby5jb250ZW50V2luZG93LmRvY3VtZW50OmlvLmNvbnRlbnREb2N1bWVudD9pby5jb250ZW50RG9jdW1lbnQ6aW8uZG9jdW1lbnQ7dmFyIGlzWG1sPW9wdHMuZGF0YVR5cGU9PSd4bWwnfHxkb2MuWE1MRG9jdW1lbnR8fCQuaXNYTUxEb2MoZG9jKTtsb2coJ2lzWG1sPScraXNYbWwpO2lmKCFpc1htbCYmKGRvYy5ib2R5PT1udWxsfHxkb2MuYm9keS5pbm5lckhUTUw9PScnKSl7aWYoLS1kb21DaGVja0NvdW50KXtsb2coJ3JlcXVlaW5nIG9uTG9hZCBjYWxsYmFjaywgRE9NIG5vdCBhdmFpbGFibGUnKTtzZXRUaW1lb3V0KGNiLDI1MCk7cmV0dXJufWxvZygnQ291bGQgbm90IGFjY2VzcyBpZnJhbWUgRE9NIGFmdGVyIDEwMCB0cmllcy4nKTtyZXR1cm59bG9nKCdyZXNwb25zZSBkZXRlY3RlZCcpO2NiSW52b2tlZD10cnVlO3hoci5yZXNwb25zZVRleHQ9ZG9jLmJvZHk/ZG9jLmJvZHkuaW5uZXJIVE1MOm51bGw7eGhyLnJlc3BvbnNlWE1MPWRvYy5YTUxEb2N1bWVudD9kb2MuWE1MRG9jdW1lbnQ6ZG9jO3hoci5nZXRSZXNwb25zZUhlYWRlcj1mdW5jdGlvbihoZWFkZXIpe3ZhciBoZWFkZXJzPXsnY29udGVudC10eXBlJzpvcHRzLmRhdGFUeXBlfTtyZXR1cm4gaGVhZGVyc1toZWFkZXJdfTtpZihvcHRzLmRhdGFUeXBlPT0nanNvbid8fG9wdHMuZGF0YVR5cGU9PSdzY3JpcHQnKXt2YXIgdGE9ZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZXh0YXJlYScpWzBdO2lmKHRhKXhoci5yZXNwb25zZVRleHQ9dGEudmFsdWU7ZWxzZXt2YXIgcHJlPWRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgncHJlJylbMF07aWYocHJlKXhoci5yZXNwb25zZVRleHQ9cHJlLmlubmVySFRNTH19ZWxzZSBpZihvcHRzLmRhdGFUeXBlPT0neG1sJyYmIXhoci5yZXNwb25zZVhNTCYmeGhyLnJlc3BvbnNlVGV4dCE9bnVsbCl7eGhyLnJlc3BvbnNlWE1MPXRvWG1sKHhoci5yZXNwb25zZVRleHQpfWRhdGE9JC5odHRwRGF0YSh4aHIsb3B0cy5kYXRhVHlwZSl9Y2F0Y2goZSl7bG9nKCdlcnJvciBjYXVnaHQ6JyxlKTtvaz1mYWxzZTt4aHIuZXJyb3I9ZTskLmhhbmRsZUVycm9yKG9wdHMseGhyLCdlcnJvcicsZSl9aWYob2spe29wdHMuc3VjY2VzcyhkYXRhLCdzdWNjZXNzJyk7aWYoZykkLmV2ZW50LnRyaWdnZXIoImFqYXhTdWNjZXNzIixbeGhyLG9wdHNdKX1pZihnKSQuZXZlbnQudHJpZ2dlcigiYWpheENvbXBsZXRlIixbeGhyLG9wdHNdKTtpZihnJiYhLS0kLmFjdGl2ZSkkLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIik7aWYob3B0cy5jb21wbGV0ZSlvcHRzLmNvbXBsZXRlKHhocixvaz8nc3VjY2Vzcyc6J2Vycm9yJyk7c2V0VGltZW91dChmdW5jdGlvbigpeyRpby5yZW1vdmVEYXRhKCdmb3JtLXBsdWdpbi1vbmxvYWQnKTskaW8ucmVtb3ZlKCk7eGhyLnJlc3BvbnNlWE1MPW51bGx9LDEwMCl9O2Z1bmN0aW9uIHRvWG1sKHMsZG9jKXtpZih3aW5kb3cuQWN0aXZlWE9iamVjdCl7ZG9jPW5ldyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MRE9NJyk7ZG9jLmFzeW5jPSdmYWxzZSc7ZG9jLmxvYWRYTUwocyl9ZWxzZSBkb2M9KG5ldyBET01QYXJzZXIoKSkucGFyc2VGcm9tU3RyaW5nKHMsJ3RleHQveG1sJyk7cmV0dXJuKGRvYyYmZG9jLmRvY3VtZW50RWxlbWVudCYmZG9jLmRvY3VtZW50RWxlbWVudC50YWdOYW1lIT0ncGFyc2VyZXJyb3InKT9kb2M6bnVsbH19fTskLmZuLmFqYXhGb3JtPWZ1bmN0aW9uKG9wdGlvbnMpe3JldHVybiB0aGlzLmFqYXhGb3JtVW5iaW5kKCkuYmluZCgnc3VibWl0LmZvcm0tcGx1Z2luJyxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7JCh0aGlzKS5hamF4U3VibWl0KG9wdGlvbnMpfSkuYmluZCgnY2xpY2suZm9ybS1wbHVnaW4nLGZ1bmN0aW9uKGUpe3ZhciB0YXJnZXQ9ZS50YXJnZXQ7dmFyICRlbD0kKHRhcmdldCk7aWYoISgkZWwuaXMoIjpzdWJtaXQsaW5wdXQ6aW1hZ2UiKSkpe3ZhciB0PSRlbC5jbG9zZXN0KCc6c3VibWl0Jyk7aWYodC5sZW5ndGg9PTApcmV0dXJuO3RhcmdldD10WzBdfXZhciBmb3JtPXRoaXM7Zm9ybS5jbGs9dGFyZ2V0O2lmKHRhcmdldC50eXBlPT0naW1hZ2UnKXtpZihlLm9mZnNldFghPXVuZGVmaW5lZCl7Zm9ybS5jbGtfeD1lLm9mZnNldFg7Zm9ybS5jbGtfeT1lLm9mZnNldFl9ZWxzZSBpZih0eXBlb2YgJC5mbi5vZmZzZXQ9PSdmdW5jdGlvbicpe3ZhciBvZmZzZXQ9JGVsLm9mZnNldCgpO2Zvcm0uY2xrX3g9ZS5wYWdlWC1vZmZzZXQubGVmdDtmb3JtLmNsa195PWUucGFnZVktb2Zmc2V0LnRvcH1lbHNle2Zvcm0uY2xrX3g9ZS5wYWdlWC10YXJnZXQub2Zmc2V0TGVmdDtmb3JtLmNsa195PWUucGFnZVktdGFyZ2V0Lm9mZnNldFRvcH19c2V0VGltZW91dChmdW5jdGlvbigpe2Zvcm0uY2xrPWZvcm0uY2xrX3g9Zm9ybS5jbGtfeT1udWxsfSwxMDApfSl9OyQuZm4uYWpheEZvcm1VbmJpbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmJpbmQoJ3N1Ym1pdC5mb3JtLXBsdWdpbiBjbGljay5mb3JtLXBsdWdpbicpfTskLmZuLmZvcm1Ub0FycmF5PWZ1bmN0aW9uKHNlbWFudGljKXt2YXIgYT1bXTtpZih0aGlzLmxlbmd0aD09MClyZXR1cm4gYTt2YXIgZm9ybT10aGlzWzBdO3ZhciBlbHM9c2VtYW50aWM/Zm9ybS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpOmZvcm0uZWxlbWVudHM7aWYoIWVscylyZXR1cm4gYTtmb3IodmFyIGk9MCxtYXg9ZWxzLmxlbmd0aDtpPG1heDtpKyspe3ZhciBlbD1lbHNbaV07dmFyIG49ZWwubmFtZTtpZighbiljb250aW51ZTtpZihzZW1hbnRpYyYmZm9ybS5jbGsmJmVsLnR5cGU9PSJpbWFnZSIpe2lmKCFlbC5kaXNhYmxlZCYmZm9ybS5jbGs9PWVsKXthLnB1c2goe25hbWU6bix2YWx1ZTokKGVsKS52YWwoKX0pO2EucHVzaCh7bmFtZTpuKycueCcsdmFsdWU6Zm9ybS5jbGtfeH0se25hbWU6bisnLnknLHZhbHVlOmZvcm0uY2xrX3l9KX1jb250aW51ZX12YXIgdj0kLmZpZWxkVmFsdWUoZWwsdHJ1ZSk7aWYodiYmdi5jb25zdHJ1Y3Rvcj09QXJyYXkpe2Zvcih2YXIgaj0wLGptYXg9di5sZW5ndGg7ajxqbWF4O2orKylhLnB1c2goe25hbWU6bix2YWx1ZTp2W2pdfSl9ZWxzZSBpZih2IT09bnVsbCYmdHlwZW9mIHYhPSd1bmRlZmluZWQnKWEucHVzaCh7bmFtZTpuLHZhbHVlOnZ9KX1pZighc2VtYW50aWMmJmZvcm0uY2xrKXt2YXIgJGlucHV0PSQoZm9ybS5jbGspLGlucHV0PSRpbnB1dFswXSxuPWlucHV0Lm5hbWU7aWYobiYmIWlucHV0LmRpc2FibGVkJiZpbnB1dC50eXBlPT0naW1hZ2UnKXthLnB1c2goe25hbWU6bix2YWx1ZTokaW5wdXQudmFsKCl9KTthLnB1c2goe25hbWU6bisnLngnLHZhbHVlOmZvcm0uY2xrX3h9LHtuYW1lOm4rJy55Jyx2YWx1ZTpmb3JtLmNsa195fSl9fXJldHVybiBhfTskLmZuLmZvcm1TZXJpYWxpemU9ZnVuY3Rpb24oc2VtYW50aWMpe3JldHVybiAkLnBhcmFtKHRoaXMuZm9ybVRvQXJyYXkoc2VtYW50aWMpKX07JC5mbi5maWVsZFNlcmlhbGl6ZT1mdW5jdGlvbihzdWNjZXNzZnVsKXt2YXIgYT1bXTt0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbj10aGlzLm5hbWU7aWYoIW4pcmV0dXJuO3ZhciB2PSQuZmllbGRWYWx1ZSh0aGlzLHN1Y2Nlc3NmdWwpO2lmKHYmJnYuY29uc3RydWN0b3I9PUFycmF5KXtmb3IodmFyIGk9MCxtYXg9di5sZW5ndGg7aTxtYXg7aSsrKWEucHVzaCh7bmFtZTpuLHZhbHVlOnZbaV19KX1lbHNlIGlmKHYhPT1udWxsJiZ0eXBlb2YgdiE9J3VuZGVmaW5lZCcpYS5wdXNoKHtuYW1lOnRoaXMubmFtZSx2YWx1ZTp2fSl9KTtyZXR1cm4gJC5wYXJhbShhKX07JC5mbi5maWVsZFZhbHVlPWZ1bmN0aW9uKHN1Y2Nlc3NmdWwpe2Zvcih2YXIgdmFsPVtdLGk9MCxtYXg9dGhpcy5sZW5ndGg7aTxtYXg7aSsrKXt2YXIgZWw9dGhpc1tpXTt2YXIgdj0kLmZpZWxkVmFsdWUoZWwsc3VjY2Vzc2Z1bCk7aWYodj09PW51bGx8fHR5cGVvZiB2PT0ndW5kZWZpbmVkJ3x8KHYuY29uc3RydWN0b3I9PUFycmF5JiYhdi5sZW5ndGgpKWNvbnRpbnVlO3YuY29uc3RydWN0b3I9PUFycmF5PyQubWVyZ2UodmFsLHYpOnZhbC5wdXNoKHYpfXJldHVybiB2YWx9OyQuZmllbGRWYWx1ZT1mdW5jdGlvbihlbCxzdWNjZXNzZnVsKXt2YXIgbj1lbC5uYW1lLHQ9ZWwudHlwZSx0YWc9ZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHR5cGVvZiBzdWNjZXNzZnVsPT0ndW5kZWZpbmVkJylzdWNjZXNzZnVsPXRydWU7aWYoc3VjY2Vzc2Z1bCYmKCFufHxlbC5kaXNhYmxlZHx8dD09J3Jlc2V0J3x8dD09J2J1dHRvbid8fCh0PT0nY2hlY2tib3gnfHx0PT0ncmFkaW8nKSYmIWVsLmNoZWNrZWR8fCh0PT0nc3VibWl0J3x8dD09J2ltYWdlJykmJmVsLmZvcm0mJmVsLmZvcm0uY2xrIT1lbHx8dGFnPT0nc2VsZWN0JyYmZWwuc2VsZWN0ZWRJbmRleD09LTEpKXJldHVybiBudWxsO2lmKHRhZz09J3NlbGVjdCcpe3ZhciBpbmRleD1lbC5zZWxlY3RlZEluZGV4O2lmKGluZGV4PDApcmV0dXJuIG51bGw7dmFyIGE9W10sb3BzPWVsLm9wdGlvbnM7dmFyIG9uZT0odD09J3NlbGVjdC1vbmUnKTt2YXIgbWF4PShvbmU/aW5kZXgrMTpvcHMubGVuZ3RoKTtmb3IodmFyIGk9KG9uZT9pbmRleDowKTtpPG1heDtpKyspe3ZhciBvcD1vcHNbaV07aWYob3Auc2VsZWN0ZWQpe3ZhciB2PW9wLnZhbHVlO2lmKCF2KXY9KG9wLmF0dHJpYnV0ZXMmJm9wLmF0dHJpYnV0ZXNbJ3ZhbHVlJ10mJiEob3AuYXR0cmlidXRlc1sndmFsdWUnXS5zcGVjaWZpZWQpKT9vcC50ZXh0Om9wLnZhbHVlO2lmKG9uZSlyZXR1cm4gdjthLnB1c2godil9fXJldHVybiBhfXJldHVybiBlbC52YWx1ZX07JC5mbi5jbGVhckZvcm09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7JCgnaW5wdXQsc2VsZWN0LHRleHRhcmVhJyx0aGlzKS5jbGVhckZpZWxkcygpfSl9OyQuZm4uY2xlYXJGaWVsZHM9JC5mbi5jbGVhcklucHV0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzLnR5cGUsdGFnPXRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHQ9PSd0ZXh0J3x8dD09J3Bhc3N3b3JkJ3x8dGFnPT0ndGV4dGFyZWEnKXRoaXMudmFsdWU9Jyc7ZWxzZSBpZih0PT0nY2hlY2tib3gnfHx0PT0ncmFkaW8nKXRoaXMuY2hlY2tlZD1mYWxzZTtlbHNlIGlmKHRhZz09J3NlbGVjdCcpdGhpcy5zZWxlY3RlZEluZGV4PS0xfSl9OyQuZm4ucmVzZXRGb3JtPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHR5cGVvZiB0aGlzLnJlc2V0PT0nZnVuY3Rpb24nfHwodHlwZW9mIHRoaXMucmVzZXQ9PSdvYmplY3QnJiYhdGhpcy5yZXNldC5ub2RlVHlwZSkpdGhpcy5yZXNldCgpfSl9OyQuZm4uZW5hYmxlPWZ1bmN0aW9uKGIpe2lmKGI9PXVuZGVmaW5lZCliPXRydWU7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWQ9IWJ9KX07JC5mbi5zZWxlY3RlZD1mdW5jdGlvbihzZWxlY3Qpe2lmKHNlbGVjdD09dW5kZWZpbmVkKXNlbGVjdD10cnVlO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzLnR5cGU7aWYodD09J2NoZWNrYm94J3x8dD09J3JhZGlvJyl0aGlzLmNoZWNrZWQ9c2VsZWN0O2Vsc2UgaWYodGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PSdvcHRpb24nKXt2YXIgJHNlbD0kKHRoaXMpLnBhcmVudCgnc2VsZWN0Jyk7aWYoc2VsZWN0JiYkc2VsWzBdJiYkc2VsWzBdLnR5cGU9PSdzZWxlY3Qtb25lJyl7JHNlbC5maW5kKCdvcHRpb24nKS5zZWxlY3RlZChmYWxzZSl9dGhpcy5zZWxlY3RlZD1zZWxlY3R9fSl9O2Z1bmN0aW9uIGxvZygpe2lmKCQuZm4uYWpheFN1Ym1pdC5kZWJ1Zyl7dmFyIG1zZz0nW2pxdWVyeS5mb3JtXSAnK0FycmF5LnByb3RvdHlwZS5qb2luLmNhbGwoYXJndW1lbnRzLCcnKTtpZih3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUubG9nKXdpbmRvdy5jb25zb2xlLmxvZyhtc2cpO2Vsc2UgaWYod2luZG93Lm9wZXJhJiZ3aW5kb3cub3BlcmEucG9zdEVycm9yKXdpbmRvdy5vcGVyYS5wb3N0RXJyb3IobXNnKX19fSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/js/jq.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuNS4xCiAqIGh0dHA6Ly9qcXVlcnkuY29tLwogKgogKiBDb3B5cmlnaHQgMjAxMSwgSm9obiBSZXNpZwogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBJbmNsdWRlcyBTaXp6bGUuanMKICogaHR0cDovL3NpenpsZWpzLmNvbS8KICogQ29weXJpZ2h0IDIwMTEsIFRoZSBEb2pvIEZvdW5kYXRpb24KICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgogKgogKiBEYXRlOiBXZWQgRmViIDIzIDEzOjU1OjI5IDIwMTEgLTA1MDAKICovCihmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGNnKGEpe3JldHVybiBkLmlzV2luZG93KGEpP2E6YS5ub2RlVHlwZT09PTk/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6ITF9ZnVuY3Rpb24gY2QoYSl7aWYoIWJaW2FdKXt2YXIgYj1kKCI8IithKyI+IikuYXBwZW5kVG8oImJvZHkiKSxjPWIuY3NzKCJkaXNwbGF5Iik7Yi5yZW1vdmUoKTtpZihjPT09Im5vbmUifHxjPT09IiIpYz0iYmxvY2siO2JaW2FdPWN9cmV0dXJuIGJaW2FdfWZ1bmN0aW9uIGNjKGEsYil7dmFyIGM9e307ZC5lYWNoKGNiLmNvbmNhdC5hcHBseShbXSxjYi5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2NbdGhpc109YX0pO3JldHVybiBjfWZ1bmN0aW9uIGJZKCl7dHJ5e3JldHVybiBuZXcgYS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGIpe319ZnVuY3Rpb24gYlgoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gYlcoKXtkKGEpLnVubG9hZChmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBiVSliVVthXSgwLDEpfSl9ZnVuY3Rpb24gYlEoYSxjKXthLmRhdGFGaWx0ZXImJihjPWEuZGF0YUZpbHRlcihjLGEuZGF0YVR5cGUpKTt2YXIgZT1hLmRhdGFUeXBlcyxmPXt9LGcsaCxpPWUubGVuZ3RoLGosaz1lWzBdLGwsbSxuLG8scDtmb3IoZz0xO2c8aTtnKyspe2lmKGc9PT0xKWZvcihoIGluIGEuY29udmVydGVycyl0eXBlb2YgaD09PSJzdHJpbmciJiYoZltoLnRvTG93ZXJDYXNlKCldPWEuY29udmVydGVyc1toXSk7bD1rLGs9ZVtnXTtpZihrPT09IioiKWs9bDtlbHNlIGlmKGwhPT0iKiImJmwhPT1rKXttPWwrIiAiK2ssbj1mW21dfHxmWyIqICIra107aWYoIW4pe3A9Yjtmb3IobyBpbiBmKXtqPW8uc3BsaXQoIiAiKTtpZihqWzBdPT09bHx8alswXT09PSIqIil7cD1mW2pbMV0rIiAiK2tdO2lmKHApe289ZltvXSxvPT09ITA/bj1wOnA9PT0hMCYmKG49byk7YnJlYWt9fX19IW4mJiFwJiZkLmVycm9yKCJObyBjb252ZXJzaW9uIGZyb20gIittLnJlcGxhY2UoIiAiLCIgdG8gIikpLG4hPT0hMCYmKGM9bj9uKGMpOnAobyhjKSkpfX1yZXR1cm4gY31mdW5jdGlvbiBiUChhLGMsZCl7dmFyIGU9YS5jb250ZW50cyxmPWEuZGF0YVR5cGVzLGc9YS5yZXNwb25zZUZpZWxkcyxoLGksaixrO2ZvcihpIGluIGcpaSBpbiBkJiYoY1tnW2ldXT1kW2ldKTt3aGlsZShmWzBdPT09IioiKWYuc2hpZnQoKSxoPT09YiYmKGg9YS5taW1lVHlwZXx8Yy5nZXRSZXNwb25zZUhlYWRlcigiY29udGVudC10eXBlIikpO2lmKGgpZm9yKGkgaW4gZSlpZihlW2ldJiZlW2ldLnRlc3QoaCkpe2YudW5zaGlmdChpKTticmVha31pZihmWzBdaW4gZClqPWZbMF07ZWxzZXtmb3IoaSBpbiBkKXtpZighZlswXXx8YS5jb252ZXJ0ZXJzW2krIiAiK2ZbMF1dKXtqPWk7YnJlYWt9a3x8KGs9aSl9aj1qfHxrfWlmKGope2ohPT1mWzBdJiZmLnVuc2hpZnQoaik7cmV0dXJuIGRbal19fWZ1bmN0aW9uIGJPKGEsYixjLGUpe2lmKGQuaXNBcnJheShiKSYmYi5sZW5ndGgpZC5lYWNoKGIsZnVuY3Rpb24oYixmKXtjfHxicS50ZXN0KGEpP2UoYSxmKTpiTyhhKyJbIisodHlwZW9mIGY9PT0ib2JqZWN0Inx8ZC5pc0FycmF5KGYpP2I6IiIpKyJdIixmLGMsZSl9KTtlbHNlIGlmKGN8fGI9PW51bGx8fHR5cGVvZiBiIT09Im9iamVjdCIpZShhLGIpO2Vsc2UgaWYoZC5pc0FycmF5KGIpfHxkLmlzRW1wdHlPYmplY3QoYikpZShhLCIiKTtlbHNlIGZvcih2YXIgZiBpbiBiKWJPKGErIlsiK2YrIl0iLGJbZl0sYyxlKX1mdW5jdGlvbiBiTihhLGMsZCxlLGYsZyl7Zj1mfHxjLmRhdGFUeXBlc1swXSxnPWd8fHt9LGdbZl09ITA7dmFyIGg9YVtmXSxpPTAsaj1oP2gubGVuZ3RoOjAsaz1hPT09YkgsbDtmb3IoO2k8aiYmKGt8fCFsKTtpKyspbD1oW2ldKGMsZCxlKSx0eXBlb2YgbD09PSJzdHJpbmciJiYoIWt8fGdbbF0/bD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGwpLGw9Yk4oYSxjLGQsZSxsLGcpKSk7KGt8fCFsKSYmIWdbIioiXSYmKGw9Yk4oYSxjLGQsZSwiKiIsZykpO3JldHVybiBsfWZ1bmN0aW9uIGJNKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT09InN0cmluZyImJihjPWIsYj0iKiIpO2lmKGQuaXNGdW5jdGlvbihjKSl7dmFyIGU9Yi50b0xvd2VyQ2FzZSgpLnNwbGl0KGJCKSxmPTAsZz1lLmxlbmd0aCxoLGksajtmb3IoO2Y8ZztmKyspaD1lW2ZdLGo9L15cKy8udGVzdChoKSxqJiYoaD1oLnN1YnN0cigxKXx8IioiKSxpPWFbaF09YVtoXXx8W10saVtqPyJ1bnNoaWZ0IjoicHVzaCJdKGMpfX19ZnVuY3Rpb24gYm8oYSxiLGMpe3ZhciBlPWI9PT0id2lkdGgiP2JpOmJqLGY9Yj09PSJ3aWR0aCI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodDtpZihjPT09ImJvcmRlciIpcmV0dXJuIGY7ZC5lYWNoKGUsZnVuY3Rpb24oKXtjfHwoZi09cGFyc2VGbG9hdChkLmNzcyhhLCJwYWRkaW5nIit0aGlzKSl8fDApLGM9PT0ibWFyZ2luIj9mKz1wYXJzZUZsb2F0KGQuY3NzKGEsIm1hcmdpbiIrdGhpcykpfHwwOmYtPXBhcnNlRmxvYXQoZC5jc3MoYSwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MH0pO3JldHVybiBmfWZ1bmN0aW9uIGJhKGEsYil7Yi5zcmM/ZC5hamF4KHt1cmw6Yi5zcmMsYXN5bmM6ITEsZGF0YVR5cGU6InNjcmlwdCJ9KTpkLmdsb2JhbEV2YWwoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpfWZ1bmN0aW9uIF8oYSl7cmV0dXJuImdldEVsZW1lbnRzQnlUYWdOYW1lImluIGE/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOiJxdWVyeVNlbGVjdG9yQWxsImluIGE/YS5xdWVyeVNlbGVjdG9yQWxsKCIqIik6W119ZnVuY3Rpb24gJChhLGIpe2lmKGIubm9kZVR5cGU9PT0xKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Yi5jbGVhckF0dHJpYnV0ZXMoKSxiLm1lcmdlQXR0cmlidXRlcyhhKTtpZihjPT09Im9iamVjdCIpYi5vdXRlckhUTUw9YS5vdXRlckhUTUw7ZWxzZSBpZihjIT09ImlucHV0Inx8YS50eXBlIT09ImNoZWNrYm94IiYmYS50eXBlIT09InJhZGlvIil7aWYoYz09PSJvcHRpb24iKWIuc2VsZWN0ZWQ9YS5kZWZhdWx0U2VsZWN0ZWQ7ZWxzZSBpZihjPT09ImlucHV0Inx8Yz09PSJ0ZXh0YXJlYSIpYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWV9ZWxzZSBhLmNoZWNrZWQmJihiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQpLGIudmFsdWUhPT1hLnZhbHVlJiYoYi52YWx1ZT1hLnZhbHVlKTtiLnJlbW92ZUF0dHJpYnV0ZShkLmV4cGFuZG8pfX1mdW5jdGlvbiBaKGEsYil7aWYoYi5ub2RlVHlwZT09PTEmJmQuaGFzRGF0YShhKSl7dmFyIGM9ZC5leHBhbmRvLGU9ZC5kYXRhKGEpLGY9ZC5kYXRhKGIsZSk7aWYoZT1lW2NdKXt2YXIgZz1lLmV2ZW50cztmPWZbY109ZC5leHRlbmQoe30sZSk7aWYoZyl7ZGVsZXRlIGYuaGFuZGxlLGYuZXZlbnRzPXt9O2Zvcih2YXIgaCBpbiBnKWZvcih2YXIgaT0wLGo9Z1toXS5sZW5ndGg7aTxqO2krKylkLmV2ZW50LmFkZChiLGgrKGdbaF1baV0ubmFtZXNwYWNlPyIuIjoiIikrZ1toXVtpXS5uYW1lc3BhY2UsZ1toXVtpXSxnW2hdW2ldLmRhdGEpfX19fWZ1bmN0aW9uIFkoYSxiKXtyZXR1cm4gZC5ub2RlTmFtZShhLCJ0YWJsZSIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24gTyhhLGIsYyl7aWYoZC5pc0Z1bmN0aW9uKGIpKXJldHVybiBkLmdyZXAoYSxmdW5jdGlvbihhLGQpe3ZhciBlPSEhYi5jYWxsKGEsZCxhKTtyZXR1cm4gZT09PWN9KTtpZihiLm5vZGVUeXBlKXJldHVybiBkLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiBhPT09Yj09PWN9KTtpZih0eXBlb2YgYj09PSJzdHJpbmciKXt2YXIgZT1kLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09PTF9KTtpZihKLnRlc3QoYikpcmV0dXJuIGQuZmlsdGVyKGIsZSwhYyk7Yj1kLmZpbHRlcihiLGUpfXJldHVybiBkLmdyZXAoYSxmdW5jdGlvbihhLGUpe3JldHVybiBkLmluQXJyYXkoYSxiKT49MD09PWN9KX1mdW5jdGlvbiBOKGEpe3JldHVybiFhfHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5jdGlvbiBGKGEsYil7cmV0dXJuKGEmJmEhPT0iKiI/YSsiLiI6IiIpK2IucmVwbGFjZShyLCJgIikucmVwbGFjZShzLCImIil9ZnVuY3Rpb24gRShhKXt2YXIgYixjLGUsZixnLGgsaSxqLGssbCxtLG4sbyxxPVtdLHI9W10scz1kLl9kYXRhKHRoaXMsImV2ZW50cyIpO2lmKGEubGl2ZUZpcmVkIT09dGhpcyYmcyYmcy5saXZlJiYhYS50YXJnZXQuZGlzYWJsZWQmJighYS5idXR0b258fGEudHlwZSE9PSJjbGljayIpKXthLm5hbWVzcGFjZSYmKG49bmV3IFJlZ0V4cCgiKF58XFwuKSIrYS5uYW1lc3BhY2Uuc3BsaXQoIi4iKS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58JCkiKSksYS5saXZlRmlyZWQ9dGhpczt2YXIgdD1zLmxpdmUuc2xpY2UoMCk7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylnPXRbaV0sZy5vcmlnVHlwZS5yZXBsYWNlKHAsIiIpPT09YS50eXBlP3IucHVzaChnLnNlbGVjdG9yKTp0LnNwbGljZShpLS0sMSk7Zj1kKGEudGFyZ2V0KS5jbG9zZXN0KHIsYS5jdXJyZW50VGFyZ2V0KTtmb3Ioaj0wLGs9Zi5sZW5ndGg7ajxrO2orKyl7bT1mW2pdO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspe2c9dFtpXTtpZihtLnNlbGVjdG9yPT09Zy5zZWxlY3RvciYmKCFufHxuLnRlc3QoZy5uYW1lc3BhY2UpKSYmIW0uZWxlbS5kaXNhYmxlZCl7aD1tLmVsZW0sZT1udWxsO2lmKGcucHJlVHlwZT09PSJtb3VzZWVudGVyInx8Zy5wcmVUeXBlPT09Im1vdXNlbGVhdmUiKWEudHlwZT1nLnByZVR5cGUsZT1kKGEucmVsYXRlZFRhcmdldCkuY2xvc2VzdChnLnNlbGVjdG9yKVswXTsoIWV8fGUhPT1oKSYmcS5wdXNoKHtlbGVtOmgsaGFuZGxlT2JqOmcsbGV2ZWw6bS5sZXZlbH0pfX19Zm9yKGo9MCxrPXEubGVuZ3RoO2o8aztqKyspe2Y9cVtqXTtpZihjJiZmLmxldmVsPmMpYnJlYWs7YS5jdXJyZW50VGFyZ2V0PWYuZWxlbSxhLmRhdGE9Zi5oYW5kbGVPYmouZGF0YSxhLmhhbmRsZU9iaj1mLmhhbmRsZU9iaixvPWYuaGFuZGxlT2JqLm9yaWdIYW5kbGVyLmFwcGx5KGYuZWxlbSxhcmd1bWVudHMpO2lmKG89PT0hMXx8YS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXtjPWYubGV2ZWwsbz09PSExJiYoYj0hMSk7aWYoYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX1yZXR1cm4gYn19ZnVuY3Rpb24gQyhhLGMsZSl7dmFyIGY9ZC5leHRlbmQoe30sZVswXSk7Zi50eXBlPWEsZi5vcmlnaW5hbEV2ZW50PXt9LGYubGl2ZUZpcmVkPWIsZC5ldmVudC5oYW5kbGUuY2FsbChjLGYpLGYuaXNEZWZhdWx0UHJldmVudGVkKCkmJmVbMF0ucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiB3KCl7cmV0dXJuITB9ZnVuY3Rpb24gdigpe3JldHVybiExfWZ1bmN0aW9uIGcoYSl7Zm9yKHZhciBiIGluIGEpaWYoYiE9PSJ0b0pTT04iKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGYoYSxjLGYpe2lmKGY9PT1iJiZhLm5vZGVUeXBlPT09MSl7Zj1hLmdldEF0dHJpYnV0ZSgiZGF0YS0iK2MpO2lmKHR5cGVvZiBmPT09InN0cmluZyIpe3RyeXtmPWY9PT0idHJ1ZSI/ITA6Zj09PSJmYWxzZSI/ITE6Zj09PSJudWxsIj9udWxsOmQuaXNOYU4oZik/ZS50ZXN0KGYpP2QucGFyc2VKU09OKGYpOmY6cGFyc2VGbG9hdChmKX1jYXRjaChnKXt9ZC5kYXRhKGEsYyxmKX1lbHNlIGY9Yn1yZXR1cm4gZn12YXIgYz1hLmRvY3VtZW50LGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBJKCl7aWYoIWQuaXNSZWFkeSl7dHJ5e2MuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7c2V0VGltZW91dChJLDEpO3JldHVybn1kLnJlYWR5KCl9fXZhciBkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBkLmZuLmluaXQoYSxiLGcpfSxlPWEualF1ZXJ5LGY9YS4kLGcsaD0vXig/OltePF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0rKSQpLyxpPS9cUy8saj0vXlxzKy8saz0vXHMrJC8sbD0vXGQvLG09L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxuPS9eW1xdLDp7fVxzXSokLyxvPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cscD0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2cscT0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHI9Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8scz0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8sdD0vKG1zaWUpIChbXHcuXSspLyx1PS8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8sdj1uYXZpZ2F0b3IudXNlckFnZW50LHcseD0hMSx5LHo9InRoZW4gZG9uZSBmYWlsIGlzUmVzb2x2ZWQgaXNSZWplY3RlZCBwcm9taXNlIi5zcGxpdCgiICIpLEEsQj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxEPUFycmF5LnByb3RvdHlwZS5wdXNoLEU9QXJyYXkucHJvdG90eXBlLnNsaWNlLEY9U3RyaW5nLnByb3RvdHlwZS50cmltLEc9QXJyYXkucHJvdG90eXBlLmluZGV4T2YsSD17fTtkLmZuPWQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpkLGluaXQ6ZnVuY3Rpb24oYSxlLGYpe3ZhciBnLGksaixrO2lmKCFhKXJldHVybiB0aGlzO2lmKGEubm9kZVR5cGUpe3RoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZihhPT09ImJvZHkiJiYhZSYmYy5ib2R5KXt0aGlzLmNvbnRleHQ9Yyx0aGlzWzBdPWMuYm9keSx0aGlzLnNlbGVjdG9yPSJib2R5Iix0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT09InN0cmluZyIpe2c9aC5leGVjKGEpO2lmKCFnfHwhZ1sxXSYmZSlyZXR1cm4hZXx8ZS5qcXVlcnk/KGV8fGYpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihlKS5maW5kKGEpO2lmKGdbMV0pe2U9ZSBpbnN0YW5jZW9mIGQ/ZVswXTplLGs9ZT9lLm93bmVyRG9jdW1lbnR8fGU6YyxqPW0uZXhlYyhhKSxqP2QuaXNQbGFpbk9iamVjdChlKT8oYT1bYy5jcmVhdGVFbGVtZW50KGpbMV0pXSxkLmZuLmF0dHIuY2FsbChhLGUsITApKTphPVtrLmNyZWF0ZUVsZW1lbnQoalsxXSldOihqPWQuYnVpbGRGcmFnbWVudChbZ1sxXV0sW2tdKSxhPShqLmNhY2hlYWJsZT9kLmNsb25lKGouZnJhZ21lbnQpOmouZnJhZ21lbnQpLmNoaWxkTm9kZXMpO3JldHVybiBkLm1lcmdlKHRoaXMsYSl9aT1jLmdldEVsZW1lbnRCeUlkKGdbMl0pO2lmKGkmJmkucGFyZW50Tm9kZSl7aWYoaS5pZCE9PWdbMl0pcmV0dXJuIGYuZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09aX10aGlzLmNvbnRleHQ9Yyx0aGlzLnNlbGVjdG9yPWE7cmV0dXJuIHRoaXN9aWYoZC5pc0Z1bmN0aW9uKGEpKXJldHVybiBmLnJlYWR5KGEpO2Euc2VsZWN0b3IhPT1iJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpO3JldHVybiBkLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNS4xIixsZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIEUuY2FsbCh0aGlzLDApfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/dGhpcy50b0FycmF5KCk6YTwwP3RoaXNbdGhpcy5sZW5ndGgrYV06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yKCk7ZC5pc0FycmF5KGEpP0QuYXBwbHkoZSxhKTpkLm1lcmdlKGUsYSksZS5wcmV2T2JqZWN0PXRoaXMsZS5jb250ZXh0PXRoaXMuY29udGV4dCxiPT09ImZpbmQiP2Uuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK2M6YiYmKGUuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrYisiKCIrYysiKSIpO3JldHVybiBlfSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGQuZWFjaCh0aGlzLGEsYil9LHJlYWR5OmZ1bmN0aW9uKGEpe2QuYmluZFJlYWR5KCkseS5kb25lKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLCthKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhFLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLEUuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOkQsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGQuZm4uaW5pdC5wcm90b3R5cGU9ZC5mbixkLmV4dGVuZD1kLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsZSxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT09ImJvb2xlYW4iJiYobD1pLGk9YXJndW1lbnRzWzFdfHx7fSxqPTIpLHR5cGVvZiBpIT09Im9iamVjdCImJiFkLmlzRnVuY3Rpb24oaSkmJihpPXt9KSxrPT09aiYmKGk9dGhpcywtLWopO2Zvcig7ajxrO2orKylpZigoYT1hcmd1bWVudHNbal0pIT1udWxsKWZvcihjIGluIGEpe2U9aVtjXSxmPWFbY107aWYoaT09PWYpY29udGludWU7bCYmZiYmKGQuaXNQbGFpbk9iamVjdChmKXx8KGc9ZC5pc0FycmF5KGYpKSk/KGc/KGc9ITEsaD1lJiZkLmlzQXJyYXkoZSk/ZTpbXSk6aD1lJiZkLmlzUGxhaW5PYmplY3QoZSk/ZTp7fSxpW2NdPWQuZXh0ZW5kKGwsaCxmKSk6ZiE9PWImJihpW2NdPWYpfXJldHVybiBpfSxkLmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlvbihiKXthLiQ9ZixiJiYoYS5qUXVlcnk9ZSk7cmV0dXJuIGR9LGlzUmVhZHk6ITEscmVhZHlXYWl0OjEscmVhZHk6ZnVuY3Rpb24oYSl7YT09PSEwJiZkLnJlYWR5V2FpdC0tO2lmKCFkLnJlYWR5V2FpdHx8YSE9PSEwJiYhZC5pc1JlYWR5KXtpZighYy5ib2R5KXJldHVybiBzZXRUaW1lb3V0KGQucmVhZHksMSk7ZC5pc1JlYWR5PSEwO2lmKGEhPT0hMCYmLS1kLnJlYWR5V2FpdD4wKXJldHVybjt5LnJlc29sdmVXaXRoKGMsW2RdKSxkLmZuLnRyaWdnZXImJmQoYykudHJpZ2dlcigicmVhZHkiKS51bmJpbmQoInJlYWR5Iil9fSxiaW5kUmVhZHk6ZnVuY3Rpb24oKXtpZigheCl7eD0hMDtpZihjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXJldHVybiBzZXRUaW1lb3V0KGQucmVhZHksMSk7aWYoYy5hZGRFdmVudExpc3RlbmVyKWMuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQSwhMSksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixkLnJlYWR5LCExKTtlbHNlIGlmKGMuYXR0YWNoRXZlbnQpe2MuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQSksYS5hdHRhY2hFdmVudCgib25sb2FkIixkLnJlYWR5KTt2YXIgYj0hMTt0cnl7Yj1hLmZyYW1lRWxlbWVudD09bnVsbH1jYXRjaChlKXt9Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmImJkkoKX19fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiBkLnR5cGUoYSk9PT0iZnVuY3Rpb24ifSxpc0FycmF5OkFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiBkLnR5cGUoYSk9PT0iYXJyYXkifSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gYSYmdHlwZW9mIGE9PT0ib2JqZWN0IiYmInNldEludGVydmFsImluIGF9LGlzTmFOOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsfHwhbC50ZXN0KGEpfHxpc05hTihhKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD9TdHJpbmcoYSk6SFtCLmNhbGwoYSldfHwib2JqZWN0In0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtpZighYXx8ZC50eXBlKGEpIT09Im9iamVjdCJ8fGEubm9kZVR5cGV8fGQuaXNXaW5kb3coYSkpcmV0dXJuITE7aWYoYS5jb25zdHJ1Y3RvciYmIUMuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhQy5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITE7dmFyIGM7Zm9yKGMgaW4gYSl7fXJldHVybiBjPT09Ynx8Qy5jYWxsKGEsYyl9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IGF9LHBhcnNlSlNPTjpmdW5jdGlvbihiKXtpZih0eXBlb2YgYiE9PSJzdHJpbmcifHwhYilyZXR1cm4gbnVsbDtiPWQudHJpbShiKTtpZihuLnRlc3QoYi5yZXBsYWNlKG8sIkAiKS5yZXBsYWNlKHAsIl0iKS5yZXBsYWNlKHEsIiIpKSlyZXR1cm4gYS5KU09OJiZhLkpTT04ucGFyc2U/YS5KU09OLnBhcnNlKGIpOihuZXcgRnVuY3Rpb24oInJldHVybiAiK2IpKSgpO2QuZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0scGFyc2VYTUw6ZnVuY3Rpb24oYixjLGUpe2EuRE9NUGFyc2VyPyhlPW5ldyBET01QYXJzZXIsYz1lLnBhcnNlRnJvbVN0cmluZyhiLCJ0ZXh0L3htbCIpKTooYz1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLGMuYXN5bmM9ImZhbHNlIixjLmxvYWRYTUwoYikpLGU9Yy5kb2N1bWVudEVsZW1lbnQsKCFlfHwhZS5ub2RlTmFtZXx8ZS5ub2RlTmFtZT09PSJwYXJzZXJlcnJvciIpJiZkLmVycm9yKCJJbnZhbGlkIFhNTDogIitiKTtyZXR1cm4gY30sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihhKXtpZihhJiZpLnRlc3QoYSkpe3ZhciBiPWMuaGVhZHx8Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxjLmRvY3VtZW50RWxlbWVudCxlPWMuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ZC5zdXBwb3J0LnNjcmlwdEV2YWwoKT9lLmFwcGVuZENoaWxkKGMuY3JlYXRlVGV4dE5vZGUoYSkpOmUudGV4dD1hLGIuaW5zZXJ0QmVmb3JlKGUsYi5maXJzdENoaWxkKSxiLnJlbW92ZUNoaWxkKGUpfX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT09Yi50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYyxlKXt2YXIgZixnPTAsaD1hLmxlbmd0aCxpPWg9PT1ifHxkLmlzRnVuY3Rpb24oYSk7aWYoZSl7aWYoaSl7Zm9yKGYgaW4gYSlpZihjLmFwcGx5KGFbZl0sZSk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmFwcGx5KGFbZysrXSxlKT09PSExKWJyZWFrfWVsc2UgaWYoaSl7Zm9yKGYgaW4gYSlpZihjLmNhbGwoYVtmXSxmLGFbZl0pPT09ITEpYnJlYWt9ZWxzZSBmb3IodmFyIGo9YVswXTtnPGgmJmMuY2FsbChqLGcsaikhPT0hMTtqPWFbKytnXSl7fXJldHVybiBhfSx0cmltOkY/ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6Ri5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjooYSsiIikucmVwbGFjZShqLCIiKS5yZXBsYWNlKGssIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtpZihhIT1udWxsKXt2YXIgZT1kLnR5cGUoYSk7YS5sZW5ndGg9PW51bGx8fGU9PT0ic3RyaW5nInx8ZT09PSJmdW5jdGlvbiJ8fGU9PT0icmVnZXhwInx8ZC5pc1dpbmRvdyhhKT9ELmNhbGwoYyxhKTpkLm1lcmdlKGMsYSl9cmV0dXJuIGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiKXtpZihiLmluZGV4T2YpcmV0dXJuIGIuaW5kZXhPZihhKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoYltjXT09PWEpcmV0dXJuIGM7cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9YS5sZW5ndGgsZT0wO2lmKHR5cGVvZiBjLmxlbmd0aD09PSJudW1iZXIiKWZvcih2YXIgZj1jLmxlbmd0aDtlPGY7ZSsrKWFbZCsrXT1jW2VdO2Vsc2Ugd2hpbGUoY1tlXSE9PWIpYVtkKytdPWNbZSsrXTthLmxlbmd0aD1kO3JldHVybiBhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlO2M9ISFjO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKyllPSEhYihhW2ZdLGYpLGMhPT1lJiZkLnB1c2goYVtmXSk7cmV0dXJuIGR9LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoO2Y8ZztmKyspZT1iKGFbZl0sZixjKSxlIT1udWxsJiYoZFtkLmxlbmd0aF09ZSk7cmV0dXJuIGQuY29uY2F0LmFwcGx5KFtdLGQpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxjLGUpe2FyZ3VtZW50cy5sZW5ndGg9PT0yJiYodHlwZW9mIGM9PT0ic3RyaW5nIj8oZT1hLGE9ZVtjXSxjPWIpOmMmJiFkLmlzRnVuY3Rpb24oYykmJihlPWMsYz1iKSksIWMmJmEmJihjPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoZXx8dGhpcyxhcmd1bWVudHMpfSksYSYmKGMuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxjLmd1aWR8fGQuZ3VpZCsrKTtyZXR1cm4gY30sYWNjZXNzOmZ1bmN0aW9uKGEsYyxlLGYsZyxoKXt2YXIgaT1hLmxlbmd0aDtpZih0eXBlb2YgYz09PSJvYmplY3QiKXtmb3IodmFyIGogaW4gYylkLmFjY2VzcyhhLGosY1tqXSxmLGcsZSk7cmV0dXJuIGF9aWYoZSE9PWIpe2Y9IWgmJmYmJmQuaXNGdW5jdGlvbihlKTtmb3IodmFyIGs9MDtrPGk7aysrKWcoYVtrXSxjLGY/ZS5jYWxsKGFba10sayxnKGFba10sYykpOmUsaCk7cmV0dXJuIGF9cmV0dXJuIGk/ZyhhWzBdLGMpOmJ9LG5vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSxfRGVmZXJyZWQ6ZnVuY3Rpb24oKXt2YXIgYT1bXSxiLGMsZSxmPXtkb25lOmZ1bmN0aW9uKCl7aWYoIWUpe3ZhciBjPWFyZ3VtZW50cyxnLGgsaSxqLGs7YiYmKGs9YixiPTApO2ZvcihnPTAsaD1jLmxlbmd0aDtnPGg7ZysrKWk9Y1tnXSxqPWQudHlwZShpKSxqPT09ImFycmF5Ij9mLmRvbmUuYXBwbHkoZixpKTpqPT09ImZ1bmN0aW9uIiYmYS5wdXNoKGkpO2smJmYucmVzb2x2ZVdpdGgoa1swXSxrWzFdKX1yZXR1cm4gdGhpc30scmVzb2x2ZVdpdGg6ZnVuY3Rpb24oZCxmKXtpZighZSYmIWImJiFjKXtjPTE7dHJ5e3doaWxlKGFbMF0pYS5zaGlmdCgpLmFwcGx5KGQsZil9Y2F0Y2goZyl7dGhyb3cgZ31maW5hbGx5e2I9W2QsZl0sYz0wfX1yZXR1cm4gdGhpc30scmVzb2x2ZTpmdW5jdGlvbigpe2YucmVzb2x2ZVdpdGgoZC5pc0Z1bmN0aW9uKHRoaXMucHJvbWlzZSk/dGhpcy5wcm9taXNlKCk6dGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxpc1Jlc29sdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIGN8fGJ9LGNhbmNlbDpmdW5jdGlvbigpe2U9MSxhPVtdO3JldHVybiB0aGlzfX07cmV0dXJuIGZ9LERlZmVycmVkOmZ1bmN0aW9uKGEpe3ZhciBiPWQuX0RlZmVycmVkKCksYz1kLl9EZWZlcnJlZCgpLGU7ZC5leHRlbmQoYix7dGhlbjpmdW5jdGlvbihhLGMpe2IuZG9uZShhKS5mYWlsKGMpO3JldHVybiB0aGlzfSxmYWlsOmMuZG9uZSxyZWplY3RXaXRoOmMucmVzb2x2ZVdpdGgscmVqZWN0OmMucmVzb2x2ZSxpc1JlamVjdGVkOmMuaXNSZXNvbHZlZCxwcm9taXNlOmZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpe2lmKGUpcmV0dXJuIGU7ZT1hPXt9fXZhciBjPXoubGVuZ3RoO3doaWxlKGMtLSlhW3pbY11dPWJbeltjXV07cmV0dXJuIGF9fSksYi5kb25lKGMuY2FuY2VsKS5mYWlsKGIuY2FuY2VsKSxkZWxldGUgYi5jYW5jZWwsYSYmYS5jYWxsKGIsYik7cmV0dXJuIGJ9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aCxjPWI8PTEmJmEmJmQuaXNGdW5jdGlvbihhLnByb21pc2UpP2E6ZC5EZWZlcnJlZCgpLGU9Yy5wcm9taXNlKCk7aWYoYj4xKXt2YXIgZj1FLmNhbGwoYXJndW1lbnRzLDApLGc9YixoPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtmW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9FLmNhbGwoYXJndW1lbnRzLDApOmIsLS1nfHxjLnJlc29sdmVXaXRoKGUsZil9fTt3aGlsZShiLS0pYT1mW2JdLGEmJmQuaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLnRoZW4oaChiKSxjLnJlamVjdCk6LS1nO2d8fGMucmVzb2x2ZVdpdGgoZSxmKX1lbHNlIGMhPT1hJiZjLnJlc29sdmUoYSk7cmV0dXJuIGV9LHVhTWF0Y2g6ZnVuY3Rpb24oYSl7YT1hLnRvTG93ZXJDYXNlKCk7dmFyIGI9ci5leGVjKGEpfHxzLmV4ZWMoYSl8fHQuZXhlYyhhKXx8YS5pbmRleE9mKCJjb21wYXRpYmxlIik8MCYmdS5leGVjKGEpfHxbXTtyZXR1cm57YnJvd3NlcjpiWzFdfHwiIix2ZXJzaW9uOmJbMl18fCIwIn19LHN1YjpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm4gbmV3IGEuZm4uaW5pdChiLGMpfWQuZXh0ZW5kKCEwLGEsdGhpcyksYS5zdXBlcmNsYXNzPXRoaXMsYS5mbj1hLnByb3RvdHlwZT10aGlzKCksYS5mbi5jb25zdHJ1Y3Rvcj1hLGEuc3ViY2xhc3M9dGhpcy5zdWJjbGFzcyxhLmZuLmluaXQ9ZnVuY3Rpb24gYihiLGMpe2MmJmMgaW5zdGFuY2VvZiBkJiYhKGMgaW5zdGFuY2VvZiBhKSYmKGM9YShjKSk7cmV0dXJuIGQuZm4uaW5pdC5jYWxsKHRoaXMsYixjLGUpfSxhLmZuLmluaXQucHJvdG90eXBlPWEuZm47dmFyIGU9YShjKTtyZXR1cm4gYX0sYnJvd3Nlcjp7fX0pLHk9ZC5fRGVmZXJyZWQoKSxkLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtIWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pLHc9ZC51YU1hdGNoKHYpLHcuYnJvd3NlciYmKGQuYnJvd3Nlclt3LmJyb3dzZXJdPSEwLGQuYnJvd3Nlci52ZXJzaW9uPXcudmVyc2lvbiksZC5icm93c2VyLndlYmtpdCYmKGQuYnJvd3Nlci5zYWZhcmk9ITApLEcmJihkLmluQXJyYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRy5jYWxsKGIsYSl9KSxpLnRlc3QoIiAiKSYmKGo9L15bXHNceEEwXSsvLGs9L1tcc1x4QTBdKyQvKSxnPWQoYyksYy5hZGRFdmVudExpc3RlbmVyP0E9ZnVuY3Rpb24oKXtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEEsITEpLGQucmVhZHkoKX06Yy5hdHRhY2hFdmVudCYmKEE9ZnVuY3Rpb24oKXtjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiJiYoYy5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixBKSxkLnJlYWR5KCkpfSk7cmV0dXJuIGR9KCk7KGZ1bmN0aW9uKCl7ZC5zdXBwb3J0PXt9O3ZhciBiPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yi5zdHlsZS5kaXNwbGF5PSJub25lIixiLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0nY29sb3I6cmVkO2Zsb2F0OmxlZnQ7b3BhY2l0eTouNTU7Jz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiI7dmFyIGU9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGY9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGc9Yy5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxoPWcuYXBwZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksaT1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdO2lmKGUmJmUubGVuZ3RoJiZmKXtkLnN1cHBvcnQ9e2xlYWRpbmdXaGl0ZXNwYWNlOmIuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTMsdGJvZHk6IWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGh0bWxTZXJpYWxpemU6ISFiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLHN0eWxlOi9yZWQvLnRlc3QoZi5nZXRBdHRyaWJ1dGUoInN0eWxlIikpLGhyZWZOb3JtYWxpemVkOmYuZ2V0QXR0cmlidXRlKCJocmVmIik9PT0iL2EiLG9wYWNpdHk6L14wLjU1JC8udGVzdChmLnN0eWxlLm9wYWNpdHkpLGNzc0Zsb2F0OiEhZi5zdHlsZS5jc3NGbG9hdCxjaGVja09uOmkudmFsdWU9PT0ib24iLG9wdFNlbGVjdGVkOmguc2VsZWN0ZWQsZGVsZXRlRXhwYW5kbzohMCxvcHREaXNhYmxlZDohMSxjaGVja0Nsb25lOiExLG5vQ2xvbmVFdmVudDohMCxub0Nsb25lQ2hlY2tlZDohMCxib3hNb2RlbDpudWxsLGlubGluZUJsb2NrTmVlZHNMYXlvdXQ6ITEsc2hyaW5rV3JhcEJsb2NrczohMSxyZWxpYWJsZUhpZGRlbk9mZnNldHM6ITB9LGkuY2hlY2tlZD0hMCxkLnN1cHBvcnQubm9DbG9uZUNoZWNrZWQ9aS5jbG9uZU5vZGUoITApLmNoZWNrZWQsZy5kaXNhYmxlZD0hMCxkLnN1cHBvcnQub3B0RGlzYWJsZWQ9IWguZGlzYWJsZWQ7dmFyIGo9bnVsbDtkLnN1cHBvcnQuc2NyaXB0RXZhbD1mdW5jdGlvbigpe2lmKGo9PT1udWxsKXt2YXIgYj1jLmRvY3VtZW50RWxlbWVudCxlPWMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksZj0ic2NyaXB0IitkLm5vdygpO3RyeXtlLmFwcGVuZENoaWxkKGMuY3JlYXRlVGV4dE5vZGUoIndpbmRvdy4iK2YrIj0xOyIpKX1jYXRjaChnKXt9Yi5pbnNlcnRCZWZvcmUoZSxiLmZpcnN0Q2hpbGQpLGFbZl0/KGo9ITAsZGVsZXRlIGFbZl0pOmo9ITEsYi5yZW1vdmVDaGlsZChlKSxiPWU9Zj1udWxsfXJldHVybiBqfTt0cnl7ZGVsZXRlIGIudGVzdH1jYXRjaChrKXtkLnN1cHBvcnQuZGVsZXRlRXhwYW5kbz0hMX0hYi5hZGRFdmVudExpc3RlbmVyJiZiLmF0dGFjaEV2ZW50JiZiLmZpcmVFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uIGwoKXtkLnN1cHBvcnQubm9DbG9uZUV2ZW50PSExLGIuZGV0YWNoRXZlbnQoIm9uY2xpY2siLGwpfSksYi5jbG9uZU5vZGUoITApLmZpcmVFdmVudCgib25jbGljayIpKSxiPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5pbm5lckhUTUw9IjxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0ncmFkaW90ZXN0JyBjaGVja2VkPSdjaGVja2VkJy8+Ijt2YXIgbT1jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTttLmFwcGVuZENoaWxkKGIuZmlyc3RDaGlsZCksZC5zdXBwb3J0LmNoZWNrQ2xvbmU9bS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsZChmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksYj1jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07aWYoYil7YS5zdHlsZS53aWR0aD1hLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiLGIuYXBwZW5kQ2hpbGQoYSksZC5ib3hNb2RlbD1kLnN1cHBvcnQuYm94TW9kZWw9YS5vZmZzZXRXaWR0aD09PTIsInpvb20iaW4gYS5zdHlsZSYmKGEuc3R5bGUuZGlzcGxheT0iaW5saW5lIixhLnN0eWxlLnpvb209MSxkLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dD1hLm9mZnNldFdpZHRoPT09MixhLnN0eWxlLmRpc3BsYXk9IiIsYS5pbm5lckhUTUw9IjxkaXYgc3R5bGU9J3dpZHRoOjRweDsnPjwvZGl2PiIsZC5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3M9YS5vZmZzZXRXaWR0aCE9PTIpLGEuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZCBzdHlsZT0ncGFkZGluZzowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSc+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiI7dmFyIGU9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTtkLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzPWVbMF0ub2Zmc2V0SGVpZ2h0PT09MCxlWzBdLnN0eWxlLmRpc3BsYXk9IiIsZVsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixkLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzPWQuc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMmJmVbMF0ub2Zmc2V0SGVpZ2h0PT09MCxhLmlubmVySFRNTD0iIixiLnJlbW92ZUNoaWxkKGEpLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGE9ZT1udWxsfX0pO3ZhciBuPWZ1bmN0aW9uKGEpe3ZhciBiPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YT0ib24iK2E7aWYoIWIuYXR0YWNoRXZlbnQpcmV0dXJuITA7dmFyIGQ9YSBpbiBiO2R8fChiLnNldEF0dHJpYnV0ZShhLCJyZXR1cm47IiksZD10eXBlb2YgYlthXT09PSJmdW5jdGlvbiIpLGI9bnVsbDtyZXR1cm4gZH07ZC5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXM9bigic3VibWl0IiksZC5zdXBwb3J0LmNoYW5nZUJ1YmJsZXM9bigiY2hhbmdlIiksYj1lPWY9bnVsbH19KSgpO3ZhciBlPS9eKD86XHsuKlx9fFxbLipcXSkkLztkLmV4dGVuZCh7Y2FjaGU6e30sdXVpZDowLGV4cGFuZG86ImpRdWVyeSIrKGQuZm4uanF1ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpmdW5jdGlvbihhKXthPWEubm9kZVR5cGU/ZC5jYWNoZVthW2QuZXhwYW5kb11dOmFbZC5leHBhbmRvXTtyZXR1cm4hIWEmJiFnKGEpfSxkYXRhOmZ1bmN0aW9uKGEsYyxlLGYpe2lmKGQuYWNjZXB0RGF0YShhKSl7dmFyIGc9ZC5leHBhbmRvLGg9dHlwZW9mIGM9PT0ic3RyaW5nIixpLGo9YS5ub2RlVHlwZSxrPWo/ZC5jYWNoZTphLGw9aj9hW2QuZXhwYW5kb106YVtkLmV4cGFuZG9dJiZkLmV4cGFuZG87aWYoKCFsfHxmJiZsJiYha1tsXVtnXSkmJmgmJmU9PT1iKXJldHVybjtsfHwoaj9hW2QuZXhwYW5kb109bD0rK2QudXVpZDpsPWQuZXhwYW5kbyksa1tsXXx8KGtbbF09e30sanx8KGtbbF0udG9KU09OPWQubm9vcCkpO2lmKHR5cGVvZiBjPT09Im9iamVjdCJ8fHR5cGVvZiBjPT09ImZ1bmN0aW9uIilmP2tbbF1bZ109ZC5leHRlbmQoa1tsXVtnXSxjKTprW2xdPWQuZXh0ZW5kKGtbbF0sYyk7aT1rW2xdLGYmJihpW2ddfHwoaVtnXT17fSksaT1pW2ddKSxlIT09YiYmKGlbY109ZSk7aWYoYz09PSJldmVudHMiJiYhaVtjXSlyZXR1cm4gaVtnXSYmaVtnXS5ldmVudHM7cmV0dXJuIGg/aVtjXTppfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihiLGMsZSl7aWYoZC5hY2NlcHREYXRhKGIpKXt2YXIgZj1kLmV4cGFuZG8saD1iLm5vZGVUeXBlLGk9aD9kLmNhY2hlOmIsaj1oP2JbZC5leHBhbmRvXTpkLmV4cGFuZG87aWYoIWlbal0pcmV0dXJuO2lmKGMpe3ZhciBrPWU/aVtqXVtmXTppW2pdO2lmKGspe2RlbGV0ZSBrW2NdO2lmKCFnKGspKXJldHVybn19aWYoZSl7ZGVsZXRlIGlbal1bZl07aWYoIWcoaVtqXSkpcmV0dXJufXZhciBsPWlbal1bZl07ZC5zdXBwb3J0LmRlbGV0ZUV4cGFuZG98fGkhPWE/ZGVsZXRlIGlbal06aVtqXT1udWxsLGw/KGlbal09e30saHx8KGlbal0udG9KU09OPWQubm9vcCksaVtqXVtmXT1sKTpoJiYoZC5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8/ZGVsZXRlIGJbZC5leHBhbmRvXTpiLnJlbW92ZUF0dHJpYnV0ZT9iLnJlbW92ZUF0dHJpYnV0ZShkLmV4cGFuZG8pOmJbZC5leHBhbmRvXT1udWxsKX19LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZC5kYXRhKGEsYixjLCEwKX0sYWNjZXB0RGF0YTpmdW5jdGlvbihhKXtpZihhLm5vZGVOYW1lKXt2YXIgYj1kLm5vRGF0YVthLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKGIpcmV0dXJuIGIhPT0hMCYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWJ9cmV0dXJuITB9fSksZC5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxjKXt2YXIgZT1udWxsO2lmKHR5cGVvZiBhPT09InVuZGVmaW5lZCIpe2lmKHRoaXMubGVuZ3RoKXtlPWQuZGF0YSh0aGlzWzBdKTtpZih0aGlzWzBdLm5vZGVUeXBlPT09MSl7dmFyIGc9dGhpc1swXS5hdHRyaWJ1dGVzLGg7Zm9yKHZhciBpPTAsaj1nLmxlbmd0aDtpPGo7aSsrKWg9Z1tpXS5uYW1lLGguaW5kZXhPZigiZGF0YS0iKT09PTAmJihoPWguc3Vic3RyKDUpLGYodGhpc1swXSxoLGVbaF0pKX19cmV0dXJuIGV9aWYodHlwZW9mIGE9PT0ib2JqZWN0IilyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5kYXRhKHRoaXMsYSl9KTt2YXIgaz1hLnNwbGl0KCIuIik7a1sxXT1rWzFdPyIuIitrWzFdOiIiO2lmKGM9PT1iKXtlPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK2tbMV0rIiEiLFtrWzBdXSksZT09PWImJnRoaXMubGVuZ3RoJiYoZT1kLmRhdGEodGhpc1swXSxhKSxlPWYodGhpc1swXSxhLGUpKTtyZXR1cm4gZT09PWImJmtbMV0/dGhpcy5kYXRhKGtbMF0pOmV9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWQodGhpcyksZT1ba1swXSxjXTtiLnRyaWdnZXJIYW5kbGVyKCJzZXREYXRhIitrWzFdKyIhIixlKSxkLmRhdGEodGhpcyxhLGMpLGIudHJpZ2dlckhhbmRsZXIoImNoYW5nZURhdGEiK2tbMV0rIiEiLGUpfSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSksZC5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXtpZihhKXtiPShifHwiZngiKSsicXVldWUiO3ZhciBlPWQuX2RhdGEoYSxiKTtpZighYylyZXR1cm4gZXx8W107IWV8fGQuaXNBcnJheShjKT9lPWQuX2RhdGEoYSxiLGQubWFrZUFycmF5KGMpKTplLnB1c2goYyk7cmV0dXJuIGV9fSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPWQucXVldWUoYSxiKSxlPWMuc2hpZnQoKTtlPT09ImlucHJvZ3Jlc3MiJiYoZT1jLnNoaWZ0KCkpLGUmJihiPT09ImZ4IiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZS5jYWxsKGEsZnVuY3Rpb24oKXtkLmRlcXVldWUoYSxiKX0pKSxjLmxlbmd0aHx8ZC5yZW1vdmVEYXRhKGEsYisicXVldWUiLCEwKX19KSxkLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxjKXt0eXBlb2YgYSE9PSJzdHJpbmciJiYoYz1hLGE9ImZ4Iik7aWYoYz09PWIpcmV0dXJuIGQucXVldWUodGhpc1swXSxhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBlPWQucXVldWUodGhpcyxhLGMpO2E9PT0iZngiJiZlWzBdIT09ImlucHJvZ3Jlc3MiJiZkLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmRlcXVldWUodGhpcyxhKX0pfSxkZWxheTpmdW5jdGlvbihhLGIpe2E9ZC5meD9kLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4IjtyZXR1cm4gdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKCl7dmFyIGM9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5kZXF1ZXVlKGMsYil9LGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9fSk7dmFyIGg9L1tcblx0XHJdL2csaT0vXHMrLyxqPS9cci9nLGs9L14oPzpocmVmfHNyY3xzdHlsZSkkLyxsPS9eKD86YnV0dG9ufGlucHV0KSQvaSxtPS9eKD86YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLG49L15hKD86cmVhKT8kL2ksbz0vXig/OnJhZGlvfGNoZWNrYm94KSQvaTtkLnByb3BzPXsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIixyZWFkb25seToicmVhZE9ubHkiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLHJvd3NwYW46InJvd1NwYW4iLGNvbHNwYW46ImNvbFNwYW4iLHRhYmluZGV4OiJ0YWJJbmRleCIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciJ9LGQuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGQuYWNjZXNzKHRoaXMsYSxiLCEwLGQuYXR0cil9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5hdHRyKHRoaXMsYSwiIiksdGhpcy5ub2RlVHlwZT09PTEmJnRoaXMucmVtb3ZlQXR0cmlidXRlKGEpfSl9LGFkZENsYXNzOmZ1bmN0aW9uKGEpe2lmKGQuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWQodGhpcyk7Yy5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLGMuYXR0cigiY2xhc3MiKSkpfSk7aWYoYSYmdHlwZW9mIGE9PT0ic3RyaW5nIil7dmFyIGI9KGF8fCIiKS5zcGxpdChpKTtmb3IodmFyIGM9MCxlPXRoaXMubGVuZ3RoO2M8ZTtjKyspe3ZhciBmPXRoaXNbY107aWYoZi5ub2RlVHlwZT09PTEpaWYoZi5jbGFzc05hbWUpe3ZhciBnPSIgIitmLmNsYXNzTmFtZSsiICIsaD1mLmNsYXNzTmFtZTtmb3IodmFyIGo9MCxrPWIubGVuZ3RoO2o8aztqKyspZy5pbmRleE9mKCIgIitiW2pdKyIgIik8MCYmKGgrPSIgIitiW2pdKTtmLmNsYXNzTmFtZT1kLnRyaW0oaCl9ZWxzZSBmLmNsYXNzTmFtZT1hfX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoZC5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9ZCh0aGlzKTtjLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsYy5hdHRyKCJjbGFzcyIpKSl9KTtpZihhJiZ0eXBlb2YgYT09PSJzdHJpbmcifHxhPT09Yil7dmFyIGM9KGF8fCIiKS5zcGxpdChpKTtmb3IodmFyIGU9MCxmPXRoaXMubGVuZ3RoO2U8ZjtlKyspe3ZhciBnPXRoaXNbZV07aWYoZy5ub2RlVHlwZT09PTEmJmcuY2xhc3NOYW1lKWlmKGEpe3ZhciBqPSgiICIrZy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKGgsIiAiKTtmb3IodmFyIGs9MCxsPWMubGVuZ3RoO2s8bDtrKyspaj1qLnJlcGxhY2UoIiAiK2Nba10rIiAiLCIgIik7Zy5jbGFzc05hbWU9ZC50cmltKGopfWVsc2UgZy5jbGFzc05hbWU9IiJ9fXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLGU9dHlwZW9mIGI9PT0iYm9vbGVhbiI7aWYoZC5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGU9ZCh0aGlzKTtlLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsZS5hdHRyKCJjbGFzcyIpLGIpLGIpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKGM9PT0ic3RyaW5nIil7dmFyIGYsZz0wLGg9ZCh0aGlzKSxqPWIsaz1hLnNwbGl0KGkpO3doaWxlKGY9a1tnKytdKWo9ZT9qOiFoLmhhc0NsYXNzKGYpLGhbaj8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKGYpfWVsc2UgaWYoYz09PSJ1bmRlZmluZWQifHxjPT09ImJvb2xlYW4iKXRoaXMuY2xhc3NOYW1lJiZkLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8YT09PSExPyIiOmQuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIn0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYj0iICIrYSsiICI7Zm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKWlmKCgiICIrdGhpc1tjXS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKGgsIiAiKS5pbmRleE9mKGIpPi0xKXJldHVybiEwO3JldHVybiExfSx2YWw6ZnVuY3Rpb24oYSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBjPXRoaXNbMF07aWYoYyl7aWYoZC5ub2RlTmFtZShjLCJvcHRpb24iKSl7dmFyIGU9Yy5hdHRyaWJ1dGVzLnZhbHVlO3JldHVybiFlfHxlLnNwZWNpZmllZD9jLnZhbHVlOmMudGV4dH1pZihkLm5vZGVOYW1lKGMsInNlbGVjdCIpKXt2YXIgZj1jLnNlbGVjdGVkSW5kZXgsZz1bXSxoPWMub3B0aW9ucyxpPWMudHlwZT09PSJzZWxlY3Qtb25lIjtpZihmPDApcmV0dXJuIG51bGw7Zm9yKHZhciBrPWk/ZjowLGw9aT9mKzE6aC5sZW5ndGg7azxsO2srKyl7dmFyIG09aFtrXTtpZihtLnNlbGVjdGVkJiYoZC5zdXBwb3J0Lm9wdERpc2FibGVkPyFtLmRpc2FibGVkOm0uZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpPT09bnVsbCkmJighbS5wYXJlbnROb2RlLmRpc2FibGVkfHwhZC5ub2RlTmFtZShtLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXthPWQobSkudmFsKCk7aWYoaSlyZXR1cm4gYTtnLnB1c2goYSl9fWlmKGkmJiFnLmxlbmd0aCYmaC5sZW5ndGgpcmV0dXJuIGQoaFtmXSkudmFsKCk7cmV0dXJuIGd9aWYoby50ZXN0KGMudHlwZSkmJiFkLnN1cHBvcnQuY2hlY2tPbilyZXR1cm4gYy5nZXRBdHRyaWJ1dGUoInZhbHVlIik9PT1udWxsPyJvbiI6Yy52YWx1ZTtyZXR1cm4oYy52YWx1ZXx8IiIpLnJlcGxhY2UoaiwiIil9cmV0dXJuIGJ9dmFyIG49ZC5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9ZCh0aGlzKSxlPWE7aWYodGhpcy5ub2RlVHlwZT09PTEpe24mJihlPWEuY2FsbCh0aGlzLGIsYy52YWwoKSkpLGU9PW51bGw/ZT0iIjp0eXBlb2YgZT09PSJudW1iZXIiP2UrPSIiOmQuaXNBcnJheShlKSYmKGU9ZC5tYXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpO2lmKGQuaXNBcnJheShlKSYmby50ZXN0KHRoaXMudHlwZSkpdGhpcy5jaGVja2VkPWQuaW5BcnJheShjLnZhbCgpLGUpPj0wO2Vsc2UgaWYoZC5ub2RlTmFtZSh0aGlzLCJzZWxlY3QiKSl7dmFyIGY9ZC5tYWtlQXJyYXkoZSk7ZCgib3B0aW9uIix0aGlzKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1kLmluQXJyYXkoZCh0aGlzKS52YWwoKSxmKT49MH0pLGYubGVuZ3RofHwodGhpcy5zZWxlY3RlZEluZGV4PS0xKX1lbHNlIHRoaXMudmFsdWU9ZX19KX19KSxkLmV4dGVuZCh7YXR0ckZuOnt2YWw6ITAsY3NzOiEwLGh0bWw6ITAsdGV4dDohMCxkYXRhOiEwLHdpZHRoOiEwLGhlaWdodDohMCxvZmZzZXQ6ITB9LGF0dHI6ZnVuY3Rpb24oYSxjLGUsZil7aWYoIWF8fGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBlPT09OHx8YS5ub2RlVHlwZT09PTIpcmV0dXJuIGI7aWYoZiYmYyBpbiBkLmF0dHJGbilyZXR1cm4gZChhKVtjXShlKTt2YXIgZz1hLm5vZGVUeXBlIT09MXx8IWQuaXNYTUxEb2MoYSksaD1lIT09YjtjPWcmJmQucHJvcHNbY118fGM7aWYoYS5ub2RlVHlwZT09PTEpe3ZhciBpPWsudGVzdChjKTtpZihjPT09InNlbGVjdGVkIiYmIWQuc3VwcG9ydC5vcHRTZWxlY3RlZCl7dmFyIGo9YS5wYXJlbnROb2RlO2omJihqLnNlbGVjdGVkSW5kZXgsai5wYXJlbnROb2RlJiZqLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9aWYoKGMgaW4gYXx8YVtjXSE9PWIpJiZnJiYhaSl7aCYmKGM9PT0idHlwZSImJmwudGVzdChhLm5vZGVOYW1lKSYmYS5wYXJlbnROb2RlJiZkLmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKSxlPT09bnVsbD9hLm5vZGVUeXBlPT09MSYmYS5yZW1vdmVBdHRyaWJ1dGUoYyk6YVtjXT1lKTtpZihkLm5vZGVOYW1lKGEsImZvcm0iKSYmYS5nZXRBdHRyaWJ1dGVOb2RlKGMpKXJldHVybiBhLmdldEF0dHJpYnV0ZU5vZGUoYykubm9kZVZhbHVlO2lmKGM9PT0idGFiSW5kZXgiKXt2YXIgbz1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0dXJuIG8mJm8uc3BlY2lmaWVkP28udmFsdWU6bS50ZXN0KGEubm9kZU5hbWUpfHxuLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9cmV0dXJuIGFbY119aWYoIWQuc3VwcG9ydC5zdHlsZSYmZyYmYz09PSJzdHlsZSIpe2gmJihhLnN0eWxlLmNzc1RleHQ9IiIrZSk7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dH1oJiZhLnNldEF0dHJpYnV0ZShjLCIiK2UpO2lmKCFhLmF0dHJpYnV0ZXNbY10mJihhLmhhc0F0dHJpYnV0ZSYmIWEuaGFzQXR0cmlidXRlKGMpKSlyZXR1cm4gYjt2YXIgcD0hZC5zdXBwb3J0LmhyZWZOb3JtYWxpemVkJiZnJiZpP2EuZ2V0QXR0cmlidXRlKGMsMik6YS5nZXRBdHRyaWJ1dGUoYyk7cmV0dXJuIHA9PT1udWxsP2I6cH1oJiYoYVtjXT1lKTtyZXR1cm4gYVtjXX19KTt2YXIgcD0vXC4oLiopJC8scT0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2kscj0vXC4vZyxzPS8gL2csdD0vW15cd1xzLnxgXS9nLHU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSh0LCJcXCQmIil9O2QuZXZlbnQ9e2FkZDpmdW5jdGlvbihjLGUsZixnKXtpZihjLm5vZGVUeXBlIT09MyYmYy5ub2RlVHlwZSE9PTgpe3RyeXtkLmlzV2luZG93KGMpJiYoYyE9PWEmJiFjLmZyYW1lRWxlbWVudCkmJihjPWEpfWNhdGNoKGgpe31pZihmPT09ITEpZj12O2Vsc2UgaWYoIWYpcmV0dXJuO3ZhciBpLGo7Zi5oYW5kbGVyJiYoaT1mLGY9aS5oYW5kbGVyKSxmLmd1aWR8fChmLmd1aWQ9ZC5ndWlkKyspO3ZhciBrPWQuX2RhdGEoYyk7aWYoIWspcmV0dXJuO3ZhciBsPWsuZXZlbnRzLG09ay5oYW5kbGU7bHx8KGsuZXZlbnRzPWw9e30pLG18fChrLmhhbmRsZT1tPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBkIT09InVuZGVmaW5lZCImJiFkLmV2ZW50LnRyaWdnZXJlZD9kLmV2ZW50LmhhbmRsZS5hcHBseShtLmVsZW0sYXJndW1lbnRzKTpifSksbS5lbGVtPWMsZT1lLnNwbGl0KCIgIik7dmFyIG4sbz0wLHA7d2hpbGUobj1lW28rK10pe2o9aT9kLmV4dGVuZCh7fSxpKTp7aGFuZGxlcjpmLGRhdGE6Z30sbi5pbmRleE9mKCIuIik+LTE/KHA9bi5zcGxpdCgiLiIpLG49cC5zaGlmdCgpLGoubmFtZXNwYWNlPXAuc2xpY2UoMCkuc29ydCgpLmpvaW4oIi4iKSk6KHA9W10sai5uYW1lc3BhY2U9IiIpLGoudHlwZT1uLGouZ3VpZHx8KGouZ3VpZD1mLmd1aWQpO3ZhciBxPWxbbl0scj1kLmV2ZW50LnNwZWNpYWxbbl18fHt9O2lmKCFxKXtxPWxbbl09W107aWYoIXIuc2V0dXB8fHIuc2V0dXAuY2FsbChjLGcscCxtKT09PSExKWMuYWRkRXZlbnRMaXN0ZW5lcj9jLmFkZEV2ZW50TGlzdGVuZXIobixtLCExKTpjLmF0dGFjaEV2ZW50JiZjLmF0dGFjaEV2ZW50KCJvbiIrbixtKX1yLmFkZCYmKHIuYWRkLmNhbGwoYyxqKSxqLmhhbmRsZXIuZ3VpZHx8KGouaGFuZGxlci5ndWlkPWYuZ3VpZCkpLHEucHVzaChqKSxkLmV2ZW50Lmdsb2JhbFtuXT0hMH1jPW51bGx9fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYyxlLGYpe2lmKGEubm9kZVR5cGUhPT0zJiZhLm5vZGVUeXBlIT09OCl7ZT09PSExJiYoZT12KTt2YXIgZyxoLGksaixrPTAsbCxtLG4sbyxwLHEscixzPWQuaGFzRGF0YShhKSYmZC5fZGF0YShhKSx0PXMmJnMuZXZlbnRzO2lmKCFzfHwhdClyZXR1cm47YyYmYy50eXBlJiYoZT1jLmhhbmRsZXIsYz1jLnR5cGUpO2lmKCFjfHx0eXBlb2YgYz09PSJzdHJpbmciJiZjLmNoYXJBdCgwKT09PSIuIil7Yz1jfHwiIjtmb3IoaCBpbiB0KWQuZXZlbnQucmVtb3ZlKGEsaCtjKTtyZXR1cm59Yz1jLnNwbGl0KCIgIik7d2hpbGUoaD1jW2srK10pe3I9aCxxPW51bGwsbD1oLmluZGV4T2YoIi4iKTwwLG09W10sbHx8KG09aC5zcGxpdCgiLiIpLGg9bS5zaGlmdCgpLG49bmV3IFJlZ0V4cCgiKF58XFwuKSIrZC5tYXAobS5zbGljZSgwKS5zb3J0KCksdSkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLHA9dFtoXTtpZighcCljb250aW51ZTtpZighZSl7Zm9yKGo9MDtqPHAubGVuZ3RoO2orKyl7cT1wW2pdO2lmKGx8fG4udGVzdChxLm5hbWVzcGFjZSkpZC5ldmVudC5yZW1vdmUoYSxyLHEuaGFuZGxlcixqKSxwLnNwbGljZShqLS0sMSl9Y29udGludWV9bz1kLmV2ZW50LnNwZWNpYWxbaF18fHt9O2ZvcihqPWZ8fDA7ajxwLmxlbmd0aDtqKyspe3E9cFtqXTtpZihlLmd1aWQ9PT1xLmd1aWQpe2lmKGx8fG4udGVzdChxLm5hbWVzcGFjZSkpZj09bnVsbCYmcC5zcGxpY2Uoai0tLDEpLG8ucmVtb3ZlJiZvLnJlbW92ZS5jYWxsKGEscSk7aWYoZiE9bnVsbClicmVha319aWYocC5sZW5ndGg9PT0wfHxmIT1udWxsJiZwLmxlbmd0aD09PTEpKCFvLnRlYXJkb3dufHxvLnRlYXJkb3duLmNhbGwoYSxtKT09PSExKSYmZC5yZW1vdmVFdmVudChhLGgscy5oYW5kbGUpLGc9bnVsbCxkZWxldGUgdFtoXX1pZihkLmlzRW1wdHlPYmplY3QodCkpe3ZhciB3PXMuaGFuZGxlO3cmJih3LmVsZW09bnVsbCksZGVsZXRlIHMuZXZlbnRzLGRlbGV0ZSBzLmhhbmRsZSxkLmlzRW1wdHlPYmplY3QocykmJmQucmVtb3ZlRGF0YShhLGIsITApfX19LHRyaWdnZXI6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmPWEudHlwZXx8YSxnPWFyZ3VtZW50c1szXTtpZighZyl7YT10eXBlb2YgYT09PSJvYmplY3QiP2FbZC5leHBhbmRvXT9hOmQuZXh0ZW5kKGQuRXZlbnQoZiksYSk6ZC5FdmVudChmKSxmLmluZGV4T2YoIiEiKT49MCYmKGEudHlwZT1mPWYuc2xpY2UoMCwtMSksYS5leGNsdXNpdmU9ITApLGV8fChhLnN0b3BQcm9wYWdhdGlvbigpLGQuZXZlbnQuZ2xvYmFsW2ZdJiZkLmVhY2goZC5jYWNoZSxmdW5jdGlvbigpe3ZhciBiPWQuZXhwYW5kbyxlPXRoaXNbYl07ZSYmZS5ldmVudHMmJmUuZXZlbnRzW2ZdJiZkLmV2ZW50LnRyaWdnZXIoYSxjLGUuaGFuZGxlLmVsZW0pfSkpO2lmKCFlfHxlLm5vZGVUeXBlPT09M3x8ZS5ub2RlVHlwZT09PTgpcmV0dXJuIGI7YS5yZXN1bHQ9YixhLnRhcmdldD1lLGM9ZC5tYWtlQXJyYXkoYyksYy51bnNoaWZ0KGEpfWEuY3VycmVudFRhcmdldD1lO3ZhciBoPWQuX2RhdGEoZSwiaGFuZGxlIik7aCYmaC5hcHBseShlLGMpO3ZhciBpPWUucGFyZW50Tm9kZXx8ZS5vd25lckRvY3VtZW50O3RyeXtlJiZlLm5vZGVOYW1lJiZkLm5vRGF0YVtlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxlWyJvbiIrZl0mJmVbIm9uIitmXS5hcHBseShlLGMpPT09ITEmJihhLnJlc3VsdD0hMSxhLnByZXZlbnREZWZhdWx0KCkpfWNhdGNoKGope31pZighYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZpKWQuZXZlbnQudHJpZ2dlcihhLGMsaSwhMCk7ZWxzZSBpZighYS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGssbD1hLnRhcmdldCxtPWYucmVwbGFjZShwLCIiKSxuPWQubm9kZU5hbWUobCwiYSIpJiZtPT09ImNsaWNrIixvPWQuZXZlbnQuc3BlY2lhbFttXXx8e307aWYoKCFvLl9kZWZhdWx0fHxvLl9kZWZhdWx0LmNhbGwoZSxhKT09PSExKSYmIW4mJiEobCYmbC5ub2RlTmFtZSYmZC5ub0RhdGFbbC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkpe3RyeXtsW21dJiYoaz1sWyJvbiIrbV0sayYmKGxbIm9uIittXT1udWxsKSxkLmV2ZW50LnRyaWdnZXJlZD0hMCxsW21dKCkpfWNhdGNoKHEpe31rJiYobFsib24iK21dPWspLGQuZXZlbnQudHJpZ2dlcmVkPSExfX19LGhhbmRsZTpmdW5jdGlvbihjKXt2YXIgZSxmLGcsaCxpLGo9W10saz1kLm1ha2VBcnJheShhcmd1bWVudHMpO2M9a1swXT1kLmV2ZW50LmZpeChjfHxhLmV2ZW50KSxjLmN1cnJlbnRUYXJnZXQ9dGhpcyxlPWMudHlwZS5pbmRleE9mKCIuIik8MCYmIWMuZXhjbHVzaXZlLGV8fChnPWMudHlwZS5zcGxpdCgiLiIpLGMudHlwZT1nLnNoaWZ0KCksaj1nLnNsaWNlKDApLnNvcnQoKSxoPW5ldyBSZWdFeHAoIihefFxcLikiK2ouam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLGMubmFtZXNwYWNlPWMubmFtZXNwYWNlfHxqLmpvaW4oIi4iKSxpPWQuX2RhdGEodGhpcywiZXZlbnRzIiksZj0oaXx8e30pW2MudHlwZV07aWYoaSYmZil7Zj1mLnNsaWNlKDApO2Zvcih2YXIgbD0wLG09Zi5sZW5ndGg7bDxtO2wrKyl7dmFyIG49ZltsXTtpZihlfHxoLnRlc3Qobi5uYW1lc3BhY2UpKXtjLmhhbmRsZXI9bi5oYW5kbGVyLGMuZGF0YT1uLmRhdGEsYy5oYW5kbGVPYmo9bjt2YXIgbz1uLmhhbmRsZXIuYXBwbHkodGhpcyxrKTtvIT09YiYmKGMucmVzdWx0PW8sbz09PSExJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCkpKTtpZihjLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWt9fX1yZXR1cm4gYy5yZXN1bHR9LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbGF5ZXJYIGxheWVyWSBtZXRhS2V5IG5ld1ZhbHVlIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtkLmV4cGFuZG9dKXJldHVybiBhO3ZhciBlPWE7YT1kLkV2ZW50KGUpO2Zvcih2YXIgZj10aGlzLnByb3BzLmxlbmd0aCxnO2Y7KWc9dGhpcy5wcm9wc1stLWZdLGFbZ109ZVtnXTthLnRhcmdldHx8KGEudGFyZ2V0PWEuc3JjRWxlbWVudHx8YyksYS50YXJnZXQubm9kZVR5cGU9PT0zJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksIWEucmVsYXRlZFRhcmdldCYmYS5mcm9tRWxlbWVudCYmKGEucmVsYXRlZFRhcmdldD1hLmZyb21FbGVtZW50PT09YS50YXJnZXQ/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudCk7aWYoYS5wYWdlWD09bnVsbCYmYS5jbGllbnRYIT1udWxsKXt2YXIgaD1jLmRvY3VtZW50RWxlbWVudCxpPWMuYm9keTthLnBhZ2VYPWEuY2xpZW50WCsoaCYmaC5zY3JvbGxMZWZ0fHxpJiZpLnNjcm9sbExlZnR8fDApLShoJiZoLmNsaWVudExlZnR8fGkmJmkuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1hLmNsaWVudFkrKGgmJmguc2Nyb2xsVG9wfHxpJiZpLnNjcm9sbFRvcHx8MCktKGgmJmguY2xpZW50VG9wfHxpJiZpLmNsaWVudFRvcHx8MCl9YS53aGljaD09bnVsbCYmKGEuY2hhckNvZGUhPW51bGx8fGEua2V5Q29kZSE9bnVsbCkmJihhLndoaWNoPWEuY2hhckNvZGUhPW51bGw/YS5jaGFyQ29kZTphLmtleUNvZGUpLCFhLm1ldGFLZXkmJmEuY3RybEtleSYmKGEubWV0YUtleT1hLmN0cmxLZXkpLCFhLndoaWNoJiZhLmJ1dHRvbiE9PWImJihhLndoaWNoPWEuYnV0dG9uJjE/MTphLmJ1dHRvbiYyPzM6YS5idXR0b24mND8yOjApO3JldHVybiBhfSxndWlkOjFlOCxwcm94eTpkLnByb3h5LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpkLmJpbmRSZWFkeSx0ZWFyZG93bjpkLm5vb3B9LGxpdmU6e2FkZDpmdW5jdGlvbihhKXtkLmV2ZW50LmFkZCh0aGlzLEYoYS5vcmlnVHlwZSxhLnNlbGVjdG9yKSxkLmV4dGVuZCh7fSxhLHtoYW5kbGVyOkUsZ3VpZDphLmhhbmRsZXIuZ3VpZH0pKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe2QuZXZlbnQucmVtb3ZlKHRoaXMsRihhLm9yaWdUeXBlLGEuc2VsZWN0b3IpLGEpfX0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihhLGIsYyl7ZC5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19fSxkLnJlbW92ZUV2ZW50PWMucmVtb3ZlRXZlbnRMaXN0ZW5lcj9mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLCExKX06ZnVuY3Rpb24oYSxiLGMpe2EuZGV0YWNoRXZlbnQmJmEuZGV0YWNoRXZlbnQoIm9uIitiLGMpfSxkLkV2ZW50PWZ1bmN0aW9uKGEpe2lmKCF0aGlzLnByZXZlbnREZWZhdWx0KXJldHVybiBuZXcgZC5FdmVudChhKTthJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHxhLnJldHVyblZhbHVlPT09ITF8fGEuZ2V0UHJldmVudERlZmF1bHQmJmEuZ2V0UHJldmVudERlZmF1bHQoKT93OnYpOnRoaXMudHlwZT1hLHRoaXMudGltZVN0YW1wPWQubm93KCksdGhpc1tkLmV4cGFuZG9dPSEwfSxkLkV2ZW50LnByb3RvdHlwZT17cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD13O3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDthJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dzt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7YSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD13LHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9LGlzRGVmYXVsdFByZXZlbnRlZDp2LGlzUHJvcGFnYXRpb25TdG9wcGVkOnYsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6dn07dmFyIHg9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZWxhdGVkVGFyZ2V0O3RyeXtpZihiIT09YyYmIWIucGFyZW50Tm9kZSlyZXR1cm47d2hpbGUoYiYmYiE9PXRoaXMpYj1iLnBhcmVudE5vZGU7YiE9PXRoaXMmJihhLnR5cGU9YS5kYXRhLGQuZXZlbnQuaGFuZGxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9Y2F0Y2goZSl7fX0seT1mdW5jdGlvbihhKXthLnR5cGU9YS5kYXRhLGQuZXZlbnQuaGFuZGxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZC5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0sZnVuY3Rpb24oYSxiKXtkLmV2ZW50LnNwZWNpYWxbYV09e3NldHVwOmZ1bmN0aW9uKGMpe2QuZXZlbnQuYWRkKHRoaXMsYixjJiZjLnNlbGVjdG9yP3k6eCxhKX0sdGVhcmRvd246ZnVuY3Rpb24oYSl7ZC5ldmVudC5yZW1vdmUodGhpcyxiLGEmJmEuc2VsZWN0b3I/eTp4KX19fSksZC5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChkLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbihhLGIpe2lmKHRoaXMubm9kZU5hbWUmJnRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJmb3JtIilkLmV2ZW50LmFkZCh0aGlzLCJjbGljay5zcGVjaWFsU3VibWl0IixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxjPWIudHlwZTsoYz09PSJzdWJtaXQifHxjPT09ImltYWdlIikmJmQoYikuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aCYmQygic3VibWl0Iix0aGlzLGFyZ3VtZW50cyl9KSxkLmV2ZW50LmFkZCh0aGlzLCJrZXlwcmVzcy5zcGVjaWFsU3VibWl0IixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxjPWIudHlwZTsoYz09PSJ0ZXh0Inx8Yz09PSJwYXNzd29yZCIpJiZkKGIpLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGgmJmEua2V5Q29kZT09PTEzJiZDKCJzdWJtaXQiLHRoaXMsYXJndW1lbnRzKX0pO2Vsc2UgcmV0dXJuITF9LHRlYXJkb3duOmZ1bmN0aW9uKGEpe2QuZXZlbnQucmVtb3ZlKHRoaXMsIi5zcGVjaWFsU3VibWl0Iil9fSk7aWYoIWQuc3VwcG9ydC5jaGFuZ2VCdWJibGVzKXt2YXIgeixBPWZ1bmN0aW9uKGEpe3ZhciBiPWEudHlwZSxjPWEudmFsdWU7Yj09PSJyYWRpbyJ8fGI9PT0iY2hlY2tib3giP2M9YS5jaGVja2VkOmI9PT0ic2VsZWN0LW11bHRpcGxlIj9jPWEuc2VsZWN0ZWRJbmRleD4tMT9kLm1hcChhLm9wdGlvbnMsZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2VsZWN0ZWR9KS5qb2luKCItIik6IiI6YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InNlbGVjdCImJihjPWEuc2VsZWN0ZWRJbmRleCk7cmV0dXJuIGN9LEI9ZnVuY3Rpb24gQihhKXt2YXIgYz1hLnRhcmdldCxlLGY7aWYocS50ZXN0KGMubm9kZU5hbWUpJiYhYy5yZWFkT25seSl7ZT1kLl9kYXRhKGMsIl9jaGFuZ2VfZGF0YSIpLGY9QShjKSwoYS50eXBlIT09ImZvY3Vzb3V0Inx8Yy50eXBlIT09InJhZGlvIikmJmQuX2RhdGEoYywiX2NoYW5nZV9kYXRhIixmKTtpZihlPT09Ynx8Zj09PWUpcmV0dXJuO2lmKGUhPW51bGx8fGYpYS50eXBlPSJjaGFuZ2UiLGEubGl2ZUZpcmVkPWIsZC5ldmVudC50cmlnZ2VyKGEsYXJndW1lbnRzWzFdLGMpfX07ZC5ldmVudC5zcGVjaWFsLmNoYW5nZT17ZmlsdGVyczp7Zm9jdXNvdXQ6QixiZWZvcmVkZWFjdGl2YXRlOkIsY2xpY2s6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1iLnR5cGU7KGM9PT0icmFkaW8ifHxjPT09ImNoZWNrYm94Inx8Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InNlbGVjdCIpJiZCLmNhbGwodGhpcyxhKX0sa2V5ZG93bjpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxjPWIudHlwZTsoYS5rZXlDb2RlPT09MTMmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJ0ZXh0YXJlYSJ8fGEua2V5Q29kZT09PTMyJiYoYz09PSJjaGVja2JveCJ8fGM9PT0icmFkaW8iKXx8Yz09PSJzZWxlY3QtbXVsdGlwbGUiKSYmQi5jYWxsKHRoaXMsYSl9LGJlZm9yZWFjdGl2YXRlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O2QuX2RhdGEoYiwiX2NoYW5nZV9kYXRhIixBKGIpKX19LHNldHVwOmZ1bmN0aW9uKGEsYil7aWYodGhpcy50eXBlPT09ImZpbGUiKXJldHVybiExO2Zvcih2YXIgYyBpbiB6KWQuZXZlbnQuYWRkKHRoaXMsYysiLnNwZWNpYWxDaGFuZ2UiLHpbY10pO3JldHVybiBxLnRlc3QodGhpcy5ub2RlTmFtZSl9LHRlYXJkb3duOmZ1bmN0aW9uKGEpe2QuZXZlbnQucmVtb3ZlKHRoaXMsIi5zcGVjaWFsQ2hhbmdlIik7cmV0dXJuIHEudGVzdCh0aGlzLm5vZGVOYW1lKX19LHo9ZC5ldmVudC5zcGVjaWFsLmNoYW5nZS5maWx0ZXJzLHouZm9jdXM9ei5iZWZvcmVhY3RpdmF0ZX1jLmFkZEV2ZW50TGlzdGVuZXImJmQuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe2E9ZC5ldmVudC5maXgoYSksYS50eXBlPWI7cmV0dXJuIGQuZXZlbnQuaGFuZGxlLmNhbGwodGhpcyxhKX1kLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ1bmN0aW9uKCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKGEsYywhMCl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGEsYywhMCl9fX0pLGQuZWFjaChbImJpbmQiLCJvbmUiXSxmdW5jdGlvbihhLGMpe2QuZm5bY109ZnVuY3Rpb24oYSxlLGYpe2lmKHR5cGVvZiBhPT09Im9iamVjdCIpe2Zvcih2YXIgZyBpbiBhKXRoaXNbY10oZyxlLGFbZ10sZik7cmV0dXJuIHRoaXN9aWYoZC5pc0Z1bmN0aW9uKGUpfHxlPT09ITEpZj1lLGU9Yjt2YXIgaD1jPT09Im9uZSI/ZC5wcm94eShmLGZ1bmN0aW9uKGEpe2QodGhpcykudW5iaW5kKGEsaCk7cmV0dXJuIGYuYXBwbHkodGhpcyxhcmd1bWVudHMpfSk6ZjtpZihhPT09InVubG9hZCImJmMhPT0ib25lIil0aGlzLm9uZShhLGUsZik7ZWxzZSBmb3IodmFyIGk9MCxqPXRoaXMubGVuZ3RoO2k8ajtpKyspZC5ldmVudC5hZGQodGhpc1tpXSxhLGgsZSk7cmV0dXJuIHRoaXN9fSksZC5mbi5leHRlbmQoe3VuYmluZDpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhIT09Im9iamVjdCJ8fGEucHJldmVudERlZmF1bHQpZm9yKHZhciBlPTAsZj10aGlzLmxlbmd0aDtlPGY7ZSsrKWQuZXZlbnQucmVtb3ZlKHRoaXNbZV0sYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBhKXRoaXMudW5iaW5kKGMsYVtjXSk7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmxpdmUoYixjLGQsYSl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MD90aGlzLnVuYmluZCgibGl2ZSIpOnRoaXMuZGllKGIsbnVsbCxjLGEpfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QuZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXtpZih0aGlzWzBdKXt2YXIgYz1kLkV2ZW50KGEpO2MucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpLGQuZXZlbnQudHJpZ2dlcihjLGIsdGhpc1swXSk7cmV0dXJuIGMucmVzdWx0fX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPTE7d2hpbGUoYzxiLmxlbmd0aClkLnByb3h5KGEsYltjKytdKTtyZXR1cm4gdGhpcy5jbGljayhkLnByb3h5KGEsZnVuY3Rpb24oZSl7dmFyIGY9KGQuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklYztkLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxmKzEpLGUucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltmXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfSkpfSxob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX19KTt2YXIgRD17Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0Iixtb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In07ZC5lYWNoKFsibGl2ZSIsImRpZSJdLGZ1bmN0aW9uKGEsYyl7ZC5mbltjXT1mdW5jdGlvbihhLGUsZixnKXt2YXIgaCxpPTAsaixrLGwsbT1nfHx0aGlzLnNlbGVjdG9yLG49Zz90aGlzOmQodGhpcy5jb250ZXh0KTtpZih0eXBlb2YgYT09PSJvYmplY3QiJiYhYS5wcmV2ZW50RGVmYXVsdCl7Zm9yKHZhciBvIGluIGEpbltjXShvLGUsYVtvXSxtKTtyZXR1cm4gdGhpc31kLmlzRnVuY3Rpb24oZSkmJihmPWUsZT1iKSxhPShhfHwiIikuc3BsaXQoIiAiKTt3aGlsZSgoaD1hW2krK10pIT1udWxsKXtqPXAuZXhlYyhoKSxrPSIiLGomJihrPWpbMF0saD1oLnJlcGxhY2UocCwiIikpO2lmKGg9PT0iaG92ZXIiKXthLnB1c2goIm1vdXNlZW50ZXIiK2ssIm1vdXNlbGVhdmUiK2spO2NvbnRpbnVlfWw9aCxoPT09ImZvY3VzInx8aD09PSJibHVyIj8oYS5wdXNoKERbaF0rayksaD1oK2spOmg9KERbaF18fGgpK2s7aWYoYz09PSJsaXZlIilmb3IodmFyIHE9MCxyPW4ubGVuZ3RoO3E8cjtxKyspZC5ldmVudC5hZGQobltxXSwibGl2ZS4iK0YoaCxtKSx7ZGF0YTplLHNlbGVjdG9yOm0saGFuZGxlcjpmLG9yaWdUeXBlOmgsb3JpZ0hhbmRsZXI6ZixwcmVUeXBlOmx9KTtlbHNlIG4udW5iaW5kKCJsaXZlLiIrRihoLG0pLGYpfXJldHVybiB0aGlzfX0pLGQuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2QuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVsbCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLmJpbmQoYixhLGMpOnRoaXMudHJpZ2dlcihiKX0sZC5hdHRyRm4mJihkLmF0dHJGbltiXT0hMCl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHUoYSxiLGMsZCxlLGYpe2Zvcih2YXIgZz0wLGg9ZC5sZW5ndGg7ZzxoO2crKyl7dmFyIGk9ZFtnXTtpZihpKXt2YXIgaj0hMTtpPWlbYV07d2hpbGUoaSl7aWYoaS5zaXpjYWNoZT09PWMpe2o9ZFtpLnNpenNldF07YnJlYWt9aWYoaS5ub2RlVHlwZT09PTEpe2Z8fChpLnNpemNhY2hlPWMsaS5zaXpzZXQ9Zyk7aWYodHlwZW9mIGIhPT0ic3RyaW5nIil7aWYoaT09PWIpe2o9ITA7YnJlYWt9fWVsc2UgaWYoay5maWx0ZXIoYixbaV0pLmxlbmd0aD4wKXtqPWk7YnJlYWt9fWk9aVthXX1kW2ddPWp9fX1mdW5jdGlvbiB0KGEsYixjLGQsZSxmKXtmb3IodmFyIGc9MCxoPWQubGVuZ3RoO2c8aDtnKyspe3ZhciBpPWRbZ107aWYoaSl7dmFyIGo9ITE7aT1pW2FdO3doaWxlKGkpe2lmKGkuc2l6Y2FjaGU9PT1jKXtqPWRbaS5zaXpzZXRdO2JyZWFrfWkubm9kZVR5cGU9PT0xJiYhZiYmKGkuc2l6Y2FjaGU9YyxpLnNpenNldD1nKTtpZihpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iKXtqPWk7YnJlYWt9aT1pW2FdfWRbZ109an19fXZhciBhPS8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykrXCl8XFsoPzpcW1teXFtcXV0qXF18WyciXVteJyJdKlsnIl18W15cW1xdJyJdKykrXF18XFwufFteID4rfiwoXFtcXF0rKSt8Wz4rfl0pKFxzKixccyopPygoPzoufFxyfFxuKSopL2csZT0wLGY9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxnPSExLGg9ITAsaT0vXFwvZyxqPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe2g9ITE7cmV0dXJuIDB9KTt2YXIgaz1mdW5jdGlvbihiLGQsZSxnKXtlPWV8fFtdLGQ9ZHx8Yzt2YXIgaD1kO2lmKGQubm9kZVR5cGUhPT0xJiZkLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighYnx8dHlwZW9mIGIhPT0ic3RyaW5nIilyZXR1cm4gZTt2YXIgaSxqLG4sbyxxLHIscyx0LHU9ITAsdz1rLmlzWE1MKGQpLHg9W10seT1iO2Rve2EuZXhlYygiIiksaT1hLmV4ZWMoeSk7aWYoaSl7eT1pWzNdLHgucHVzaChpWzFdKTtpZihpWzJdKXtvPWlbM107YnJlYWt9fX13aGlsZShpKTtpZih4Lmxlbmd0aD4xJiZtLmV4ZWMoYikpaWYoeC5sZW5ndGg9PT0yJiZsLnJlbGF0aXZlW3hbMF1dKWo9dih4WzBdK3hbMV0sZCk7ZWxzZXtqPWwucmVsYXRpdmVbeFswXV0/W2RdOmsoeC5zaGlmdCgpLGQpO3doaWxlKHgubGVuZ3RoKWI9eC5zaGlmdCgpLGwucmVsYXRpdmVbYl0mJihiKz14LnNoaWZ0KCkpLGo9dihiLGopfWVsc2V7IWcmJngubGVuZ3RoPjEmJmQubm9kZVR5cGU9PT05JiYhdyYmbC5tYXRjaC5JRC50ZXN0KHhbMF0pJiYhbC5tYXRjaC5JRC50ZXN0KHhbeC5sZW5ndGgtMV0pJiYocT1rLmZpbmQoeC5zaGlmdCgpLGQsdyksZD1xLmV4cHI/ay5maWx0ZXIocS5leHByLHEuc2V0KVswXTpxLnNldFswXSk7aWYoZCl7cT1nP3tleHByOngucG9wKCksc2V0OnAoZyl9OmsuZmluZCh4LnBvcCgpLHgubGVuZ3RoPT09MSYmKHhbMF09PT0ifiJ8fHhbMF09PT0iKyIpJiZkLnBhcmVudE5vZGU/ZC5wYXJlbnROb2RlOmQsdyksaj1xLmV4cHI/ay5maWx0ZXIocS5leHByLHEuc2V0KTpxLnNldCx4Lmxlbmd0aD4wP249cChqKTp1PSExO3doaWxlKHgubGVuZ3RoKXI9eC5wb3AoKSxzPXIsbC5yZWxhdGl2ZVtyXT9zPXgucG9wKCk6cj0iIixzPT1udWxsJiYocz1kKSxsLnJlbGF0aXZlW3JdKG4scyx3KX1lbHNlIG49eD1bXX1ufHwobj1qKSxufHxrLmVycm9yKHJ8fGIpO2lmKGYuY2FsbChuKT09PSJbb2JqZWN0IEFycmF5XSIpaWYodSlpZihkJiZkLm5vZGVUeXBlPT09MSlmb3IodD0wO25bdF0hPW51bGw7dCsrKW5bdF0mJihuW3RdPT09ITB8fG5bdF0ubm9kZVR5cGU9PT0xJiZrLmNvbnRhaW5zKGQsblt0XSkpJiZlLnB1c2goalt0XSk7ZWxzZSBmb3IodD0wO25bdF0hPW51bGw7dCsrKW5bdF0mJm5bdF0ubm9kZVR5cGU9PT0xJiZlLnB1c2goalt0XSk7ZWxzZSBlLnB1c2guYXBwbHkoZSxuKTtlbHNlIHAobixlKTtvJiYoayhvLGgsZSxnKSxrLnVuaXF1ZVNvcnQoZSkpO3JldHVybiBlfTtrLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7aWYocil7Zz1oLGEuc29ydChyKTtpZihnKWZvcih2YXIgYj0xO2I8YS5sZW5ndGg7YisrKWFbYl09PT1hW2ItMV0mJmEuc3BsaWNlKGItLSwxKX1yZXR1cm4gYX0say5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSxudWxsLG51bGwsYil9LGsubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYixudWxsLG51bGwsW2FdKS5sZW5ndGg+MH0say5maW5kPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZighYSlyZXR1cm5bXTtmb3IodmFyIGU9MCxmPWwub3JkZXIubGVuZ3RoO2U8ZjtlKyspe3ZhciBnLGg9bC5vcmRlcltlXTtpZihnPWwubGVmdE1hdGNoW2hdLmV4ZWMoYSkpe3ZhciBqPWdbMV07Zy5zcGxpY2UoMSwxKTtpZihqLnN1YnN0cihqLmxlbmd0aC0xKSE9PSJcXCIpe2dbMV09KGdbMV18fCIiKS5yZXBsYWNlKGksIiIpLGQ9bC5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShsLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PSJ1bmRlZmluZWQiP2IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTpbXSk7cmV0dXJue3NldDpkLGV4cHI6YX19LGsuZmlsdGVyPWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmLGcsaD1hLGk9W10saj1jLG09YyYmY1swXSYmay5pc1hNTChjWzBdKTt3aGlsZShhJiZjLmxlbmd0aCl7Zm9yKHZhciBuIGluIGwuZmlsdGVyKWlmKChmPWwubGVmdE1hdGNoW25dLmV4ZWMoYSkpIT1udWxsJiZmWzJdKXt2YXIgbyxwLHE9bC5maWx0ZXJbbl0scj1mWzFdO2c9ITEsZi5zcGxpY2UoMSwxKTtpZihyLnN1YnN0cihyLmxlbmd0aC0xKT09PSJcXCIpY29udGludWU7aj09PWkmJihpPVtdKTtpZihsLnByZUZpbHRlcltuXSl7Zj1sLnByZUZpbHRlcltuXShmLGosZCxpLGUsbSk7aWYoZil7aWYoZj09PSEwKWNvbnRpbnVlfWVsc2UgZz1vPSEwfWlmKGYpZm9yKHZhciBzPTA7KHA9altzXSkhPW51bGw7cysrKWlmKHApe289cShwLGYscyxqKTt2YXIgdD1lXiEhbztkJiZvIT1udWxsP3Q/Zz0hMDpqW3NdPSExOnQmJihpLnB1c2gocCksZz0hMCl9aWYobyE9PWIpe2R8fChqPWkpLGE9YS5yZXBsYWNlKGwubWF0Y2hbbl0sIiIpO2lmKCFnKXJldHVybltdO2JyZWFrfX1pZihhPT09aClpZihnPT1udWxsKWsuZXJyb3IoYSk7ZWxzZSBicmVhaztoPWF9cmV0dXJuIGp9LGsuZXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithfTt2YXIgbD1rLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5BTUUiLCJUQUciXSxtYXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLENMQVNTOi9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sTkFNRTovXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspWyciXSpcXS8sQVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylccyooPzooXFM/PSlccyooPzooWyciXSkoLio/KVwzfCgjPyg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSopfCl8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKFxzKihldmVufG9kZHwoPzpbK1wtXT9cZCt8KD86WytcLV0/XGQqKT9uXHMqKD86WytcLV1ccypcZCspPykpXHMqXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W15cLV18JCkvLFBTRVVETzovOigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNoOnt9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBiPT09InN0cmluZyIsZD1jJiYhai50ZXN0KGIpLGU9YyYmIWQ7ZCYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoLGg7ZjxnO2YrKylpZihoPWFbZl0pe3doaWxlKChoPWgucHJldmlvdXNTaWJsaW5nKSYmaC5ub2RlVHlwZSE9PTEpe31hW2ZdPWV8fGgmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/aHx8ITE6aD09PWJ9ZSYmay5maWx0ZXIoYixhLCEwKX0sIj4iOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD10eXBlb2YgYj09PSJzdHJpbmciLGU9MCxmPWEubGVuZ3RoO2lmKGQmJiFqLnRlc3QoYikpe2I9Yi50b0xvd2VyQ2FzZSgpO2Zvcig7ZTxmO2UrKyl7Yz1hW2VdO2lmKGMpe3ZhciBnPWMucGFyZW50Tm9kZTthW2VdPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/ZzohMX19fWVsc2V7Zm9yKDtlPGY7ZSsrKWM9YVtlXSxjJiYoYVtlXT1kP2MucGFyZW50Tm9kZTpjLnBhcmVudE5vZGU9PT1iKTtkJiZrLmZpbHRlcihiLGEsITApfX0sIiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9dTt0eXBlb2YgYj09PSJzdHJpbmciJiYhai50ZXN0KGIpJiYoYj1iLnRvTG93ZXJDYXNlKCksZD1iLGc9dCksZygicGFyZW50Tm9kZSIsYixmLGEsZCxjKX0sIn4iOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPWUrKyxnPXU7dHlwZW9mIGI9PT0ic3RyaW5nIiYmIWoudGVzdChiKSYmKGI9Yi50b0xvd2VyQ2FzZSgpLGQ9YixnPXQpLGcoInByZXZpb3VzU2libGluZyIsYixmLGEsZCxjKX19LGZpbmQ6e0lEOmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYhYyl7dmFyIGQ9Yi5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LE5BTUU6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5TmFtZSE9PSJ1bmRlZmluZWQiKXt2YXIgYz1bXSxkPWIuZ2V0RWxlbWVudHNCeU5hbWUoYVsxXSk7Zm9yKHZhciBlPTAsZj1kLmxlbmd0aDtlPGY7ZSsrKWRbZV0uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1hWzFdJiZjLnB1c2goZFtlXSk7cmV0dXJuIGMubGVuZ3RoPT09MD9udWxsOmN9fSxUQUc6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PSJ1bmRlZmluZWQiKXJldHVybiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pfX0scHJlRmlsdGVyOntDTEFTUzpmdW5jdGlvbihhLGIsYyxkLGUsZil7YT0iICIrYVsxXS5yZXBsYWNlKGksIiIpKyIgIjtpZihmKXJldHVybiBhO2Zvcih2YXIgZz0wLGg7KGg9YltnXSkhPW51bGw7ZysrKWgmJihlXihoLmNsYXNzTmFtZSYmKCIgIitoLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoL1tcdFxuXHJdL2csIiAiKS5pbmRleE9mKGEpPj0wKT9jfHxkLnB1c2goaCk6YyYmKGJbZ109ITEpKTtyZXR1cm4hMX0sSUQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV0ucmVwbGFjZShpLCIiKX0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbMV0ucmVwbGFjZShpLCIiKS50b0xvd2VyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihhKXtpZihhWzFdPT09Im50aCIpe2FbMl18fGsuZXJyb3IoYVswXSksYVsyXT1hWzJdLnJlcGxhY2UoL15cK3xccyovZywiIik7dmFyIGI9LygtPykoXGQqKSg/Om4oWytcLV0/XGQqKSk/Ly5leGVjKGFbMl09PT0iZXZlbiImJiIybiJ8fGFbMl09PT0ib2RkIiYmIjJuKzEifHwhL1xELy50ZXN0KGFbMl0pJiYiMG4rIithWzJdfHxhWzJdKTthWzJdPWJbMV0rKGJbMl18fDEpLTAsYVszXT1iWzNdLTB9ZWxzZSBhWzJdJiZrLmVycm9yKGFbMF0pO2FbMF09ZSsrO3JldHVybiBhfSxBVFRSOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1hWzFdPWFbMV0ucmVwbGFjZShpLCIiKTshZiYmbC5hdHRyTWFwW2ddJiYoYVsxXT1sLmF0dHJNYXBbZ10pLGFbNF09KGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGksIiIpLGFbMl09PT0ifj0iJiYoYVs0XT0iICIrYVs0XSsiICIpO3JldHVybiBhfSxQU0VVRE86ZnVuY3Rpb24oYixjLGQsZSxmKXtpZihiWzFdPT09Im5vdCIpaWYoKGEuZXhlYyhiWzNdKXx8IiIpLmxlbmd0aD4xfHwvXlx3Ly50ZXN0KGJbM10pKWJbM109ayhiWzNdLG51bGwsbnVsbCxjKTtlbHNle3ZhciBnPWsuZmlsdGVyKGJbM10sYyxkLCEwXmYpO2R8fGUucHVzaC5hcHBseShlLGcpO3JldHVybiExfWVsc2UgaWYobC5tYXRjaC5QT1MudGVzdChiWzBdKXx8bC5tYXRjaC5DSElMRC50ZXN0KGJbMF0pKXJldHVybiEwO3JldHVybiBifSxQT1M6ZnVuY3Rpb24oYSl7YS51bnNoaWZ0KCEwKTtyZXR1cm4gYX19LGZpbHRlcnM6e2VuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMSYmYS50eXBlIT09ImhpZGRlbiJ9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2hlY2tlZD09PSEwfSxzZWxlY3RlZDpmdW5jdGlvbihhKXthLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBhLnNlbGVjdGVkPT09ITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hIWEuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oYSl7cmV0dXJuIWEuZmlyc3RDaGlsZH0saGFzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4hIWsoY1szXSxhKS5sZW5ndGh9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4vaFxkL2kudGVzdChhLm5vZGVOYW1lKX0sdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4idGV4dCI9PT1hLmdldEF0dHJpYnV0ZSgidHlwZSIpfSxyYWRpbzpmdW5jdGlvbihhKXtyZXR1cm4icmFkaW8iPT09YS50eXBlfSxjaGVja2JveDpmdW5jdGlvbihhKXtyZXR1cm4iY2hlY2tib3giPT09YS50eXBlfSxmaWxlOmZ1bmN0aW9uKGEpe3JldHVybiJmaWxlIj09PWEudHlwZX0scGFzc3dvcmQ6ZnVuY3Rpb24oYSl7cmV0dXJuInBhc3N3b3JkIj09PWEudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGEpe3JldHVybiJzdWJtaXQiPT09YS50eXBlfSxpbWFnZTpmdW5jdGlvbihhKXtyZXR1cm4iaW1hZ2UiPT09YS50eXBlfSxyZXNldDpmdW5jdGlvbihhKXtyZXR1cm4icmVzZXQiPT09YS50eXBlfSxidXR0b246ZnVuY3Rpb24oYSl7cmV0dXJuImJ1dHRvbiI9PT1hLnR5cGV8fGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJidXR0b24ifSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4vaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRlc3QoYS5ub2RlTmFtZSl9fSxzZXRGaWx0ZXJzOntmaXJzdDpmdW5jdGlvbihhLGIpe3JldHVybiBiPT09MH0sbGFzdDpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYj09PWQubGVuZ3RoLTF9LGV2ZW46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MH0sb2RkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIlMj09PTF9LGx0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYjxjWzNdLTB9LGd0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj5jWzNdLTB9LG50aDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGNbM10tMD09PWJ9LGVxOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn19LGZpbHRlcjp7UFNFVURPOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJbMV0sZj1sLmZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKTtpZihlPT09ImNvbnRhaW5zIilyZXR1cm4oYS50ZXh0Q29udGVudHx8YS5pbm5lclRleHR8fGsuZ2V0VGV4dChbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIpe3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdbaF09PT1hKXJldHVybiExO3JldHVybiEwfWsuZXJyb3IoZSl9LENISUxEOmZ1bmN0aW9uKGEsYil7dmFyIGM9YlsxXSxkPWE7c3dpdGNoKGMpe2Nhc2Uib25seSI6Y2FzZSJmaXJzdCI6d2hpbGUoZD1kLnByZXZpb3VzU2libGluZylpZihkLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtpZihjPT09ImZpcnN0IilyZXR1cm4hMDtkPWE7Y2FzZSJsYXN0Ijp3aGlsZShkPWQubmV4dFNpYmxpbmcpaWYoZC5ub2RlVHlwZT09PTEpcmV0dXJuITE7cmV0dXJuITA7Y2FzZSJudGgiOnZhciBlPWJbMl0sZj1iWzNdO2lmKGU9PT0xJiZmPT09MClyZXR1cm4hMDt2YXIgZz1iWzBdLGg9YS5wYXJlbnROb2RlO2lmKGgmJihoLnNpemNhY2hlIT09Z3x8IWEubm9kZUluZGV4KSl7dmFyIGk9MDtmb3IoZD1oLmZpcnN0Q2hpbGQ7ZDtkPWQubmV4dFNpYmxpbmcpZC5ub2RlVHlwZT09PTEmJihkLm5vZGVJbmRleD0rK2kpO2guc2l6Y2FjaGU9Z312YXIgaj1hLm5vZGVJbmRleC1mO3JldHVybiBlPT09MD9qPT09MDpqJWU9PT0wJiZqL2U+PTB9fSxJRDpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVUeXBlPT09MSYmYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PSIqIiYmYS5ub2RlVHlwZT09PTF8fGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNTOmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9bC5hdHRySGFuZGxlW2NdP2wuYXR0ckhhbmRsZVtjXShhKTphW2NdIT1udWxsP2FbY106YS5nZXRBdHRyaWJ1dGUoYyksZT1kKyIiLGY9YlsyXSxnPWJbNF07cmV0dXJuIGQ9PW51bGw/Zj09PSIhPSI6Zj09PSI9Ij9lPT09ZzpmPT09Iio9Ij9lLmluZGV4T2YoZyk+PTA6Zj09PSJ+PSI/KCIgIitlKyIgIikuaW5kZXhPZihnKT49MDpnP2Y9PT0iIT0iP2UhPT1nOmY9PT0iXj0iP2UuaW5kZXhPZihnKT09PTA6Zj09PSIkPSI/ZS5zdWJzdHIoZS5sZW5ndGgtZy5sZW5ndGgpPT09ZzpmPT09Inw9Ij9lPT09Z3x8ZS5zdWJzdHIoMCxnLmxlbmd0aCsxKT09PWcrIi0iOiExOmUmJmQhPT0hMX0sUE9TOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJbMl0sZj1sLnNldEZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKX19fSxtPWwubWF0Y2guUE9TLG49ZnVuY3Rpb24oYSxiKXtyZXR1cm4iXFwiKyhiLTArMSl9O2Zvcih2YXIgbyBpbiBsLm1hdGNoKWwubWF0Y2hbb109bmV3IFJlZ0V4cChsLm1hdGNoW29dLnNvdXJjZSsvKD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3VyY2UpLGwubGVmdE1hdGNoW29dPW5ldyBSZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNvdXJjZStsLm1hdGNoW29dLnNvdXJjZS5yZXBsYWNlKC9cXChcZCspL2csbikpO3ZhciBwPWZ1bmN0aW9uKGEsYil7YT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLDApO2lmKGIpe2IucHVzaC5hcHBseShiLGEpO3JldHVybiBifXJldHVybiBhfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcywwKVswXS5ub2RlVHlwZX1jYXRjaChxKXtwPWZ1bmN0aW9uKGEsYil7dmFyIGM9MCxkPWJ8fFtdO2lmKGYuY2FsbChhKT09PSJbb2JqZWN0IEFycmF5XSIpQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZCxhKTtlbHNlIGlmKHR5cGVvZiBhLmxlbmd0aD09PSJudW1iZXIiKWZvcih2YXIgZT1hLmxlbmd0aDtjPGU7YysrKWQucHVzaChhW2NdKTtlbHNlIGZvcig7YVtjXTtjKyspZC5wdXNoKGFbY10pO3JldHVybiBkfX12YXIgcixzO2MuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP3I9ZnVuY3Rpb24oYSxiKXtpZihhPT09Yil7Zz0hMDtyZXR1cm4gMH1pZighYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbnx8IWIuY29tcGFyZURvY3VtZW50UG9zaXRpb24pcmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24/LTE6MTtyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSY0Py0xOjF9OihyPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPVtdLGY9W10saD1hLnBhcmVudE5vZGUsaT1iLnBhcmVudE5vZGUsaj1oO2lmKGE9PT1iKXtnPSEwO3JldHVybiAwfWlmKGg9PT1pKXJldHVybiBzKGEsYik7aWYoIWgpcmV0dXJuLTE7aWYoIWkpcmV0dXJuIDE7d2hpbGUoaillLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7aj1pO3doaWxlKGopZi51bnNoaWZ0KGopLGo9ai5wYXJlbnROb2RlO2M9ZS5sZW5ndGgsZD1mLmxlbmd0aDtmb3IodmFyIGs9MDtrPGMmJms8ZDtrKyspaWYoZVtrXSE9PWZba10pcmV0dXJuIHMoZVtrXSxmW2tdKTtyZXR1cm4gaz09PWM/cyhhLGZba10sLTEpOnMoZVtrXSxiLDEpfSxzPWZ1bmN0aW9uKGEsYixjKXtpZihhPT09YilyZXR1cm4gYzt2YXIgZD1hLm5leHRTaWJsaW5nO3doaWxlKGQpe2lmKGQ9PT1iKXJldHVybi0xO2Q9ZC5uZXh0U2libGluZ31yZXR1cm4gMX0pLGsuZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYj0iIixjO2Zvcih2YXIgZD0wO2FbZF07ZCsrKWM9YVtkXSxjLm5vZGVUeXBlPT09M3x8Yy5ub2RlVHlwZT09PTQ/Yis9Yy5ub2RlVmFsdWU6Yy5ub2RlVHlwZSE9PTgmJihiKz1rLmdldFRleHQoYy5jaGlsZE5vZGVzKSk7cmV0dXJuIGJ9LGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpLGU9Yy5kb2N1bWVudEVsZW1lbnQ7YS5pbm5lckhUTUw9IjxhIG5hbWU9JyIrZCsiJy8+IixlLmluc2VydEJlZm9yZShhLGUuZmlyc3RDaGlsZCksYy5nZXRFbGVtZW50QnlJZChkKSYmKGwuZmluZC5JRD1mdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGMuZ2V0RWxlbWVudEJ5SWQhPT0idW5kZWZpbmVkIiYmIWQpe3ZhciBlPWMuZ2V0RWxlbWVudEJ5SWQoYVsxXSk7cmV0dXJuIGU/ZS5pZD09PWFbMV18fHR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUhPT0idW5kZWZpbmVkIiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZT09PWFbMV0/W2VdOmI6W119fSxsLmZpbHRlci5JRD1mdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPT0idW5kZWZpbmVkIiYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBhLm5vZGVUeXBlPT09MSYmYyYmYy5ub2RlVmFsdWU9PT1ifSksZS5yZW1vdmVDaGlsZChhKSxlPWE9bnVsbH0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5hcHBlbmRDaGlsZChjLmNyZWF0ZUNvbW1lbnQoIiIpKSxhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoPjAmJihsLmZpbmQuVEFHPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKTtpZihhWzFdPT09IioiKXt2YXIgZD1bXTtmb3IodmFyIGU9MDtjW2VdO2UrKyljW2VdLm5vZGVUeXBlPT09MSYmZC5wdXNoKGNbZV0pO2M9ZH1yZXR1cm4gY30pLGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IixhLmZpcnN0Q2hpbGQmJnR5cGVvZiBhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT09InVuZGVmaW5lZCImJmEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSE9PSIjIiYmKGwuYXR0ckhhbmRsZS5ocmVmPWZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIsMil9KSxhPW51bGx9KCksYy5xdWVyeVNlbGVjdG9yQWxsJiZmdW5jdGlvbigpe3ZhciBhPWssYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9Il9fc2l6emxlX18iO2IuaW5uZXJIVE1MPSI8cCBjbGFzcz0nVEVTVCc+PC9wPiI7aWYoIWIucXVlcnlTZWxlY3RvckFsbHx8Yi5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aCE9PTApe2s9ZnVuY3Rpb24oYixlLGYsZyl7ZT1lfHxjO2lmKCFnJiYhay5pc1hNTChlKSl7dmFyIGg9L14oXHcrJCl8XlwuKFtcd1wtXSskKXxeIyhbXHdcLV0rJCkvLmV4ZWMoYik7aWYoaCYmKGUubm9kZVR5cGU9PT0xfHxlLm5vZGVUeXBlPT09OSkpe2lmKGhbMV0pcmV0dXJuIHAoZS5nZXRFbGVtZW50c0J5VGFnTmFtZShiKSxmKTtpZihoWzJdJiZsLmZpbmQuQ0xBU1MmJmUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gcChlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaFsyXSksZil9aWYoZS5ub2RlVHlwZT09PTkpe2lmKGI9PT0iYm9keSImJmUuYm9keSlyZXR1cm4gcChbZS5ib2R5XSxmKTtpZihoJiZoWzNdKXt2YXIgaT1lLmdldEVsZW1lbnRCeUlkKGhbM10pO2lmKCFpfHwhaS5wYXJlbnROb2RlKXJldHVybiBwKFtdLGYpO2lmKGkuaWQ9PT1oWzNdKXJldHVybiBwKFtpXSxmKX10cnl7cmV0dXJuIHAoZS5xdWVyeVNlbGVjdG9yQWxsKGIpLGYpfWNhdGNoKGope319ZWxzZSBpZihlLm5vZGVUeXBlPT09MSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09Im9iamVjdCIpe3ZhciBtPWUsbj1lLmdldEF0dHJpYnV0ZSgiaWQiKSxvPW58fGQscT1lLnBhcmVudE5vZGUscj0vXlxzKlsrfl0vLnRlc3QoYik7bj9vPW8ucmVwbGFjZSgvJy9nLCJcXCQmIik6ZS5zZXRBdHRyaWJ1dGUoImlkIixvKSxyJiZxJiYoZT1lLnBhcmVudE5vZGUpO3RyeXtpZighcnx8cSlyZXR1cm4gcChlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZD0nIitvKyInXSAiK2IpLGYpfWNhdGNoKHMpe31maW5hbGx5e258fG0ucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGEoYixlLGYsZyl9O2Zvcih2YXIgZSBpbiBhKWtbZV09YVtlXTtiPW51bGx9fSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5kb2N1bWVudEVsZW1lbnQsYj1hLm1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxhLm1zTWF0Y2hlc1NlbGVjdG9yLGQ9ITE7dHJ5e2IuY2FsbChjLmRvY3VtZW50RWxlbWVudCwiW3Rlc3QhPScnXTpzaXp6bGUiKX1jYXRjaChlKXtkPSEwfWImJihrLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGMpe2M9Yy5yZXBsYWNlKC9cPVxzKihbXiciXF1dKilccypcXS9nLCI9JyQxJ10iKTtpZighay5pc1hNTChhKSl0cnl7aWYoZHx8IWwubWF0Y2guUFNFVURPLnRlc3QoYykmJiEvIT0vLnRlc3QoYykpcmV0dXJuIGIuY2FsbChhLGMpfWNhdGNoKGUpe31yZXR1cm4gayhjLG51bGwsbnVsbCxbYV0pLmxlbmd0aD4wfSl9KCksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSd0ZXN0IGUnPjwvZGl2PjxkaXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7aWYoYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGghPT0wKXthLmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKGEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpcmV0dXJuO2wub3JkZXIuc3BsaWNlKDEsMCwiQ0xBU1MiKSxsLmZpbmQuQ0xBU1M9ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUhPT0idW5kZWZpbmVkIiYmIWMpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhWzFdKX0sYT1udWxsfX0oKSxjLmRvY3VtZW50RWxlbWVudC5jb250YWlucz9rLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1iJiYoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOiEwKX06Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ay5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTprLmNvbnRhaW5zPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGsuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9KGE/YS5vd25lckRvY3VtZW50fHxhOjApLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfTt2YXIgdj1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT0iIixmPWIubm9kZVR5cGU/W2JdOmI7d2hpbGUoYz1sLm1hdGNoLlBTRVVETy5leGVjKGEpKWUrPWNbMF0sYT1hLnJlcGxhY2UobC5tYXRjaC5QU0VVRE8sIiIpO2E9bC5yZWxhdGl2ZVthXT9hKyIqIjphO2Zvcih2YXIgZz0wLGg9Zi5sZW5ndGg7ZzxoO2crKylrKGEsZltnXSxkKTtyZXR1cm4gay5maWx0ZXIoZSxkKX07ZC5maW5kPWssZC5leHByPWsuc2VsZWN0b3JzLGQuZXhwclsiOiJdPWQuZXhwci5maWx0ZXJzLGQudW5pcXVlPWsudW5pcXVlU29ydCxkLnRleHQ9ay5nZXRUZXh0LGQuaXNYTUxEb2M9ay5pc1hNTCxkLmNvbnRhaW5zPWsuY29udGFpbnN9KCk7dmFyIEc9L1VudGlsJC8sSD0vXig/OnBhcmVudHN8cHJldlVudGlsfHByZXZBbGwpLyxJPS8sLyxKPS9eLlteOiNcW1wuLF0qJC8sSz1BcnJheS5wcm90b3R5cGUuc2xpY2UsTD1kLmV4cHIubWF0Y2guUE9TLE09e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07ZC5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGM9MDtmb3IodmFyIGU9MCxmPXRoaXMubGVuZ3RoO2U8ZjtlKyspe2M9Yi5sZW5ndGgsZC5maW5kKGEsdGhpc1tlXSxiKTtpZihlPjApZm9yKHZhciBnPWM7ZzxiLmxlbmd0aDtnKyspZm9yKHZhciBoPTA7aDxjO2grKylpZihiW2hdPT09YltnXSl7Yi5zcGxpY2UoZy0tLDEpO2JyZWFrfX1yZXR1cm4gYn0saGFzOmZ1bmN0aW9uKGEpe3ZhciBiPWQoYSk7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYz1iLmxlbmd0aDthPGM7YSsrKWlmKGQuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKE8odGhpcyxhLCExKSwibm90IixhKX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhPKHRoaXMsYSwhMCksImZpbHRlciIsYSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhYSYmZC5maWx0ZXIoYSx0aGlzKS5sZW5ndGg+MH0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGUsZixnPXRoaXNbMF07aWYoZC5pc0FycmF5KGEpKXt2YXIgaCxpLGo9e30saz0xO2lmKGcmJmEubGVuZ3RoKXtmb3IoZT0wLGY9YS5sZW5ndGg7ZTxmO2UrKylpPWFbZV0saltpXXx8KGpbaV09ZC5leHByLm1hdGNoLlBPUy50ZXN0KGkpP2QoaSxifHx0aGlzLmNvbnRleHQpOmkpO3doaWxlKGcmJmcub3duZXJEb2N1bWVudCYmZyE9PWIpe2ZvcihpIGluIGopaD1qW2ldLChoLmpxdWVyeT9oLmluZGV4KGcpPi0xOmQoZykuaXMoaCkpJiZjLnB1c2goe3NlbGVjdG9yOmksZWxlbTpnLGxldmVsOmt9KTtnPWcucGFyZW50Tm9kZSxrKyt9fXJldHVybiBjfXZhciBsPUwudGVzdChhKT9kKGEsYnx8dGhpcy5jb250ZXh0KTpudWxsO2ZvcihlPTAsZj10aGlzLmxlbmd0aDtlPGY7ZSsrKXtnPXRoaXNbZV07d2hpbGUoZyl7aWYobD9sLmluZGV4KGcpPi0xOmQuZmluZC5tYXRjaGVzU2VsZWN0b3IoZyxhKSl7Yy5wdXNoKGcpO2JyZWFrfWc9Zy5wYXJlbnROb2RlO2lmKCFnfHwhZy5vd25lckRvY3VtZW50fHxnPT09YilicmVha319Yz1jLmxlbmd0aD4xP2QudW5pcXVlKGMpOmM7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGMsImNsb3Nlc3QiLGEpfSxpbmRleDpmdW5jdGlvbihhKXtpZighYXx8dHlwZW9mIGE9PT0ic3RyaW5nIilyZXR1cm4gZC5pbkFycmF5KHRoaXNbMF0sYT9kKGEpOnRoaXMucGFyZW50KCkuY2hpbGRyZW4oKSk7cmV0dXJuIGQuaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyl9LGFkZDpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhPT09InN0cmluZyI/ZChhLGIpOmQubWFrZUFycmF5KGEpLGU9ZC5tZXJnZSh0aGlzLmdldCgpLGMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhOKGNbMF0pfHxOKGVbMF0pP2U6ZC51bmlxdWUoZSkpfSxhbmRTZWxmOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkKHRoaXMucHJldk9iamVjdCl9fSksZC5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiZiLm5vZGVUeXBlIT09MTE/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBkLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGQuZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBkLm50aChhLDIsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIGQubnRoKGEsMiwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGQuZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBkLnNpYmxpbmcoYS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBkLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGQubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpkLm1ha2VBcnJheShhLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxiKXtkLmZuW2FdPWZ1bmN0aW9uKGMsZSl7dmFyIGY9ZC5tYXAodGhpcyxiLGMpLGc9Sy5jYWxsKGFyZ3VtZW50cyk7Ry50ZXN0KGEpfHwoZT1jKSxlJiZ0eXBlb2YgZT09PSJzdHJpbmciJiYoZj1kLmZpbHRlcihlLGYpKSxmPXRoaXMubGVuZ3RoPjEmJiFNW2FdP2QudW5pcXVlKGYpOmYsKHRoaXMubGVuZ3RoPjF8fEkudGVzdChlKSkmJkgudGVzdChhKSYmKGY9Zi5yZXZlcnNlKCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhmLGEsZy5qb2luKCIsIikpfX0pLGQuZXh0ZW5kKHtmaWx0ZXI6ZnVuY3Rpb24oYSxiLGMpe2MmJihhPSI6bm90KCIrYSsiKSIpO3JldHVybiBiLmxlbmd0aD09PTE/ZC5maW5kLm1hdGNoZXNTZWxlY3RvcihiWzBdLGEpP1tiWzBdXTpbXTpkLmZpbmQubWF0Y2hlcyhhLGIpfSxkaXI6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmPVtdLGc9YVtjXTt3aGlsZShnJiZnLm5vZGVUeXBlIT09OSYmKGU9PT1ifHxnLm5vZGVUeXBlIT09MXx8IWQoZykuaXMoZSkpKWcubm9kZVR5cGU9PT0xJiZmLnB1c2goZyksZz1nW2NdO3JldHVybiBmfSxudGg6ZnVuY3Rpb24oYSxiLGMsZCl7Yj1ifHwxO3ZhciBlPTA7Zm9yKDthO2E9YVtjXSlpZihhLm5vZGVUeXBlPT09MSYmKytlPT09YilicmVhaztyZXR1cm4gYX0sc2libGluZzpmdW5jdGlvbihhLGIpe3ZhciBjPVtdO2Zvcig7YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSk7dmFyIFA9LyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZyxRPS9eXHMrLyxSPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vaWcsUz0vPChbXHc6XSspLyxUPS88dGJvZHkvaSxVPS88fCYjP1x3KzsvLFY9LzwoPzpzY3JpcHR8b2JqZWN0fGVtYmVkfG9wdGlvbnxzdHlsZSkvaSxXPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLFg9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07WC5vcHRncm91cD1YLm9wdGlvbixYLnRib2R5PVgudGZvb3Q9WC5jb2xncm91cD1YLmNhcHRpb249WC50aGVhZCxYLnRoPVgudGQsZC5zdXBwb3J0Lmh0bWxTZXJpYWxpemV8fChYLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdKSxkLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtpZihkLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1kKHRoaXMpO2MudGV4dChhLmNhbGwodGhpcyxiLGMudGV4dCgpKSl9KTtpZih0eXBlb2YgYSE9PSJvYmplY3QiJiZhIT09YilyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxjKS5jcmVhdGVUZXh0Tm9kZShhKSk7cmV0dXJuIGQudGV4dCh0aGlzKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihkLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtkKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhpc1swXSl7dmFyIGI9ZChhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVUeXBlPT09MSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe2lmKGQuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2QodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1kKHRoaXMpLGM9Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkKHRoaXMpLndyYXBBbGwoYSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Qubm9kZU5hbWUodGhpcywiYm9keSIpfHxkKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmFwcGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhpcy5maXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPWQoYXJndW1lbnRzWzBdKTthLnB1c2guYXBwbHkoYSx0aGlzLnRvQXJyYXkoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGEsImJlZm9yZSIsYXJndW1lbnRzKX19LGFmdGVyOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT10aGlzLnB1c2hTdGFjayh0aGlzLCJhZnRlciIsYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxkKGFyZ3VtZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGU7KGU9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFhfHxkLmZpbHRlcihhLFtlXSkubGVuZ3RoKSFiJiZlLm5vZGVUeXBlPT09MSYmKGQuY2xlYW5EYXRhKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZC5jbGVhbkRhdGEoW2VdKSksZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZkLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZC5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09YilyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShQLCIiKTpudWxsO2lmKHR5cGVvZiBhIT09InN0cmluZyJ8fFYudGVzdChhKXx8IWQuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmUS50ZXN0KGEpfHxYWyhTLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKWQuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9ZCh0aGlzKTtjLmh0bWwoYS5jYWxsKHRoaXMsYixjLmh0bWwoKSkpfSk6dGhpcy5lbXB0eSgpLmFwcGVuZChhKTtlbHNle2E9YS5yZXBsYWNlKFIsIjwkMT48LyQyPiIpO3RyeXtmb3IodmFyIGM9MCxlPXRoaXMubGVuZ3RoO2M8ZTtjKyspdGhpc1tjXS5ub2RlVHlwZT09PTEmJihkLmNsZWFuRGF0YSh0aGlzW2NdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLHRoaXNbY10uaW5uZXJIVE1MPWEpfWNhdGNoKGYpe3RoaXMuZW1wdHkoKS5hcHBlbmQoYSl9fXJldHVybiB0aGlzfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihhKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpe2lmKGQuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWQodGhpcyksZT1jLmh0bWwoKTtjLnJlcGxhY2VXaXRoKGEuY2FsbCh0aGlzLGIsZSkpfSk7dHlwZW9mIGEhPT0ic3RyaW5nIiYmKGE9ZChhKS5kZXRhY2goKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4dFNpYmxpbmcsYz10aGlzLnBhcmVudE5vZGU7ZCh0aGlzKS5yZW1vdmUoKSxiP2QoYikuYmVmb3JlKGEpOmQoYykuYXBwZW5kKGEpfSl9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQoZC5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpfSxkZXRhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucmVtb3ZlKGEsITApfSxkb21NYW5pcDpmdW5jdGlvbihhLGMsZSl7dmFyIGYsZyxoLGksaj1hWzBdLGs9W107aWYoIWQuc3VwcG9ydC5jaGVja0Nsb25lJiZhcmd1bWVudHMubGVuZ3RoPT09MyYmdHlwZW9mIGo9PT0ic3RyaW5nIiYmVy50ZXN0KGopKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkKHRoaXMpLmRvbU1hbmlwKGEsYyxlLCEwKX0pO2lmKGQuaXNGdW5jdGlvbihqKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGYpe3ZhciBnPWQodGhpcyk7YVswXT1qLmNhbGwodGhpcyxmLGM/Zy5odG1sKCk6YiksZy5kb21NYW5pcChhLGMsZSl9KTtpZih0aGlzWzBdKXtpPWomJmoucGFyZW50Tm9kZSxkLnN1cHBvcnQucGFyZW50Tm9kZSYmaSYmaS5ub2RlVHlwZT09PTExJiZpLmNoaWxkTm9kZXMubGVuZ3RoPT09dGhpcy5sZW5ndGg/Zj17ZnJhZ21lbnQ6aX06Zj1kLmJ1aWxkRnJhZ21lbnQoYSx0aGlzLGspLGg9Zi5mcmFnbWVudCxoLmNoaWxkTm9kZXMubGVuZ3RoPT09MT9nPWg9aC5maXJzdENoaWxkOmc9aC5maXJzdENoaWxkO2lmKGcpe2M9YyYmZC5ub2RlTmFtZShnLCJ0ciIpO2Zvcih2YXIgbD0wLG09dGhpcy5sZW5ndGgsbj1tLTE7bDxtO2wrKyllLmNhbGwoYz9ZKHRoaXNbbF0sZyk6dGhpc1tsXSxmLmNhY2hlYWJsZXx8bT4xJiZsPG4/ZC5jbG9uZShoLCEwLCEwKTpoKX1rLmxlbmd0aCYmZC5lYWNoKGssYmEpfXJldHVybiB0aGlzfX0pLGQuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGIsZSl7dmFyIGYsZyxoLGk9YiYmYlswXT9iWzBdLm93bmVyRG9jdW1lbnR8fGJbMF06YzthLmxlbmd0aD09PTEmJnR5cGVvZiBhWzBdPT09InN0cmluZyImJmFbMF0ubGVuZ3RoPDUxMiYmaT09PWMmJmFbMF0uY2hhckF0KDApPT09IjwiJiYhVi50ZXN0KGFbMF0pJiYoZC5zdXBwb3J0LmNoZWNrQ2xvbmV8fCFXLnRlc3QoYVswXSkpJiYoZz0hMCxoPWQuZnJhZ21lbnRzW2FbMF1dLGgmJihoIT09MSYmKGY9aCkpKSxmfHwoZj1pLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxkLmNsZWFuKGEsaSxmLGUpKSxnJiYoZC5mcmFnbWVudHNbYVswXV09aD9mOjEpO3JldHVybntmcmFnbWVudDpmLGNhY2hlYWJsZTpnfX0sZC5mcmFnbWVudHM9e30sZC5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtkLmZuW2FdPWZ1bmN0aW9uKGMpe3ZhciBlPVtdLGY9ZChjKSxnPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKGcmJmcubm9kZVR5cGU9PT0xMSYmZy5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmYubGVuZ3RoPT09MSl7ZltiXSh0aGlzWzBdKTtyZXR1cm4gdGhpc31mb3IodmFyIGg9MCxpPWYubGVuZ3RoO2g8aTtoKyspe3ZhciBqPShoPjA/dGhpcy5jbG9uZSghMCk6dGhpcykuZ2V0KCk7ZChmW2hdKVtiXShqKSxlPWUuY29uY2F0KGopfXJldHVybiB0aGlzLnB1c2hTdGFjayhlLGEsZi5zZWxlY3Rvcil9fSksZC5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT1hLmNsb25lTm9kZSghMCksZixnLGg7aWYoKCFkLnN1cHBvcnQubm9DbG9uZUV2ZW50fHwhZC5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSYmKGEubm9kZVR5cGU9PT0xfHxhLm5vZGVUeXBlPT09MTEpJiYhZC5pc1hNTERvYyhhKSl7JChhLGUpLGY9XyhhKSxnPV8oZSk7Zm9yKGg9MDtmW2hdOysraCkkKGZbaF0sZ1toXSl9aWYoYil7WihhLGUpO2lmKGMpe2Y9XyhhKSxnPV8oZSk7Zm9yKGg9MDtmW2hdOysraClaKGZbaF0sZ1toXSl9fXJldHVybiBlfSxjbGVhbjpmdW5jdGlvbihhLGIsZSxmKXtiPWJ8fGMsdHlwZW9mIGIuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiJiYoYj1iLm93bmVyRG9jdW1lbnR8fGJbMF0mJmJbMF0ub3duZXJEb2N1bWVudHx8Yyk7dmFyIGc9W107Zm9yKHZhciBoPTAsaTsoaT1hW2hdKSE9bnVsbDtoKyspe3R5cGVvZiBpPT09Im51bWJlciImJihpKz0iIik7aWYoIWkpY29udGludWU7aWYodHlwZW9mIGkhPT0ic3RyaW5nInx8VS50ZXN0KGkpKXtpZih0eXBlb2YgaT09PSJzdHJpbmciKXtpPWkucmVwbGFjZShSLCI8JDE+PC8kMj4iKTt2YXIgaj0oUy5leGVjKGkpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGs9WFtqXXx8WC5fZGVmYXVsdCxsPWtbMF0sbT1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpO20uaW5uZXJIVE1MPWtbMV0raStrWzJdO3doaWxlKGwtLSltPW0ubGFzdENoaWxkO2lmKCFkLnN1cHBvcnQudGJvZHkpe3ZhciBuPVQudGVzdChpKSxvPWo9PT0idGFibGUiJiYhbj9tLmZpcnN0Q2hpbGQmJm0uZmlyc3RDaGlsZC5jaGlsZE5vZGVzOmtbMV09PT0iPHRhYmxlPiImJiFuP20uY2hpbGROb2RlczpbXTtmb3IodmFyIHA9by5sZW5ndGgtMTtwPj0wOy0tcClkLm5vZGVOYW1lKG9bcF0sInRib2R5IikmJiFvW3BdLmNoaWxkTm9kZXMubGVuZ3RoJiZvW3BdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob1twXSl9IWQuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmUS50ZXN0KGkpJiZtLmluc2VydEJlZm9yZShiLmNyZWF0ZVRleHROb2RlKFEuZXhlYyhpKVswXSksbS5maXJzdENoaWxkKSxpPW0uY2hpbGROb2Rlc319ZWxzZSBpPWIuY3JlYXRlVGV4dE5vZGUoaSk7aS5ub2RlVHlwZT9nLnB1c2goaSk6Zz1kLm1lcmdlKGcsaSl9aWYoZSlmb3IoaD0wO2dbaF07aCsrKSFmfHwhZC5ub2RlTmFtZShnW2hdLCJzY3JpcHQiKXx8Z1toXS50eXBlJiZnW2hdLnR5cGUudG9Mb3dlckNhc2UoKSE9PSJ0ZXh0L2phdmFzY3JpcHQiPyhnW2hdLm5vZGVUeXBlPT09MSYmZy5zcGxpY2UuYXBwbHkoZyxbaCsxLDBdLmNvbmNhdChkLm1ha2VBcnJheShnW2hdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSkpKSxlLmFwcGVuZENoaWxkKGdbaF0pKTpmLnB1c2goZ1toXS5wYXJlbnROb2RlP2dbaF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChnW2hdKTpnW2hdKTtyZXR1cm4gZ30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZT1kLmNhY2hlLGY9ZC5leHBhbmRvLGc9ZC5ldmVudC5zcGVjaWFsLGg9ZC5zdXBwb3J0LmRlbGV0ZUV4cGFuZG87Zm9yKHZhciBpPTAsajsoaj1hW2ldKSE9bnVsbDtpKyspe2lmKGoubm9kZU5hbWUmJmQubm9EYXRhW2oubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pY29udGludWU7Yz1qW2QuZXhwYW5kb107aWYoYyl7Yj1lW2NdJiZlW2NdW2ZdO2lmKGImJmIuZXZlbnRzKXtmb3IodmFyIGsgaW4gYi5ldmVudHMpZ1trXT9kLmV2ZW50LnJlbW92ZShqLGspOmQucmVtb3ZlRXZlbnQoaixrLGIuaGFuZGxlKTtiLmhhbmRsZSYmKGIuaGFuZGxlLmVsZW09bnVsbCl9aD9kZWxldGUgaltkLmV4cGFuZG9dOmoucmVtb3ZlQXR0cmlidXRlJiZqLnJlbW92ZUF0dHJpYnV0ZShkLmV4cGFuZG8pLGRlbGV0ZSBlW2NdfX19fSk7dmFyIGJiPS9hbHBoYVwoW14pXSpcKS9pLGJjPS9vcGFjaXR5PShbXildKikvLGJkPS8tKFthLXpdKS9pZyxiZT0vKFtBLVpdKS9nLGJmPS9eLT9cZCsoPzpweCk/JC9pLGJnPS9eLT9cZC8sYmg9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LGJpPVsiTGVmdCIsIlJpZ2h0Il0sYmo9WyJUb3AiLCJCb3R0b20iXSxiayxibCxibSxibj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O2QuZm4uY3NzPWZ1bmN0aW9uKGEsYyl7aWYoYXJndW1lbnRzLmxlbmd0aD09PTImJmM9PT1iKXJldHVybiB0aGlzO3JldHVybiBkLmFjY2Vzcyh0aGlzLGEsYywhMCxmdW5jdGlvbihhLGMsZSl7cmV0dXJuIGUhPT1iP2Quc3R5bGUoYSxjLGUpOmQuY3NzKGEsYyl9KX0sZC5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1iayhhLCJvcGFjaXR5Iiwib3BhY2l0eSIpO3JldHVybiBjPT09IiI/IjEiOmN9cmV0dXJuIGEuc3R5bGUub3BhY2l0eX19fSxjc3NOdW1iZXI6e3pJbmRleDohMCxmb250V2VpZ2h0OiEwLG9wYWNpdHk6ITAsem9vbTohMCxsaW5lSGVpZ2h0OiEwfSxjc3NQcm9wczp7ImZsb2F0IjpkLnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGEsYyxlLGYpe2lmKGEmJmEubm9kZVR5cGUhPT0zJiZhLm5vZGVUeXBlIT09OCYmYS5zdHlsZSl7dmFyIGcsaD1kLmNhbWVsQ2FzZShjKSxpPWEuc3R5bGUsaj1kLmNzc0hvb2tzW2hdO2M9ZC5jc3NQcm9wc1toXXx8aDtpZihlPT09Yil7aWYoaiYmImdldCJpbiBqJiYoZz1qLmdldChhLCExLGYpKSE9PWIpcmV0dXJuIGc7cmV0dXJuIGlbY119aWYodHlwZW9mIGU9PT0ibnVtYmVyIiYmaXNOYU4oZSl8fGU9PW51bGwpcmV0dXJuO3R5cGVvZiBlPT09Im51bWJlciImJiFkLmNzc051bWJlcltoXSYmKGUrPSJweCIpO2lmKCFqfHwhKCJzZXQiaW4gail8fChlPWouc2V0KGEsZSkpIT09Yil0cnl7aVtjXT1lfWNhdGNoKGspe319fSxjc3M6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmLGc9ZC5jYW1lbENhc2UoYyksaD1kLmNzc0hvb2tzW2ddO2M9ZC5jc3NQcm9wc1tnXXx8ZztpZihoJiYiZ2V0ImluIGgmJihmPWguZ2V0KGEsITAsZSkpIT09YilyZXR1cm4gZjtpZihiaylyZXR1cm4gYmsoYSxjLGcpfSxzd2FwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fTtmb3IodmFyIGUgaW4gYilkW2VdPWEuc3R5bGVbZV0sYS5zdHlsZVtlXT1iW2VdO2MuY2FsbChhKTtmb3IoZSBpbiBiKWEuc3R5bGVbZV09ZFtlXX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoYmQsYm4pfX0pLGQuY3VyQ1NTPWQuY3NzLGQuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtkLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmO2lmKGMpe2Eub2Zmc2V0V2lkdGghPT0wP2Y9Ym8oYSxiLGUpOmQuc3dhcChhLGJoLGZ1bmN0aW9uKCl7Zj1ibyhhLGIsZSl9KTtpZihmPD0wKXtmPWJrKGEsYixiKSxmPT09IjBweCImJmJtJiYoZj1ibShhLGIsYikpO2lmKGYhPW51bGwpcmV0dXJuIGY9PT0iInx8Zj09PSJhdXRvIj8iMHB4IjpmfWlmKGY8MHx8Zj09bnVsbCl7Zj1hLnN0eWxlW2JdO3JldHVybiBmPT09IiJ8fGY9PT0iYXV0byI/IjBweCI6Zn1yZXR1cm4gdHlwZW9mIGY9PT0ic3RyaW5nIj9mOmYrInB4In19LHNldDpmdW5jdGlvbihhLGIpe2lmKCFiZi50ZXN0KGIpKXJldHVybiBiO2I9cGFyc2VGbG9hdChiKTtpZihiPj0wKXJldHVybiBiKyJweCJ9fX0pLGQuc3VwcG9ydC5vcGFjaXR5fHwoZC5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYmMudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpP3BhcnNlRmxvYXQoUmVnRXhwLiQxKS8xMDArIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGU7Yy56b29tPTE7dmFyIGU9ZC5pc05hTihiKT8iIjoiYWxwaGEob3BhY2l0eT0iK2IqMTAwKyIpIixmPWMuZmlsdGVyfHwiIjtjLmZpbHRlcj1iYi50ZXN0KGYpP2YucmVwbGFjZShiYixlKTpjLmZpbHRlcisiICIrZX19KSxjLmRlZmF1bHRWaWV3JiZjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihibD1mdW5jdGlvbihhLGMsZSl7dmFyIGYsZyxoO2U9ZS5yZXBsYWNlKGJlLCItJDEiKS50b0xvd2VyQ2FzZSgpO2lmKCEoZz1hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKXJldHVybiBiO2lmKGg9Zy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpZj1oLmdldFByb3BlcnR5VmFsdWUoZSksZj09PSIiJiYhZC5jb250YWlucyhhLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGEpJiYoZj1kLnN0eWxlKGEsZSkpO3JldHVybiBmfSksYy5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoYm09ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxlPWEucnVudGltZVN0eWxlJiZhLnJ1bnRpbWVTdHlsZVtiXSxmPWEuc3R5bGU7IWJmLnRlc3QoZCkmJmJnLnRlc3QoZCkmJihjPWYubGVmdCxlJiYoYS5ydW50aW1lU3R5bGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxmLmxlZnQ9Yj09PSJmb250U2l6ZSI/IjFlbSI6ZHx8MCxkPWYucGl4ZWxMZWZ0KyJweCIsZi5sZWZ0PWMsZSYmKGEucnVudGltZVN0eWxlLmxlZnQ9ZSkpO3JldHVybiBkPT09IiI/ImF1dG8iOmR9KSxiaz1ibHx8Ym0sZC5leHByJiZkLmV4cHIuZmlsdGVycyYmKGQuZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFdpZHRoLGM9YS5vZmZzZXRIZWlnaHQ7cmV0dXJuIGI9PT0wJiZjPT09MHx8IWQuc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMmJihhLnN0eWxlLmRpc3BsYXl8fGQuY3NzKGEsImRpc3BsYXkiKSk9PT0ibm9uZSJ9LGQuZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIWQuZXhwci5maWx0ZXJzLmhpZGRlbihhKX0pO3ZhciBicD0vJTIwL2csYnE9L1xbXF0kLyxicj0vXHI/XG4vZyxicz0vIy4qJC8sYnQ9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9tZyxidT0vXig/OmNvbG9yfGRhdGV8ZGF0ZXRpbWV8ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxzZWFyY2h8dGVsfHRleHR8dGltZXx1cmx8d2VlaykkL2ksYnY9Lyg/Ol5maWxlfF53aWRnZXR8XC1leHRlbnNpb24pOiQvLGJ3PS9eKD86R0VUfEhFQUQpJC8sYng9L15cL1wvLyxieT0vXD8vLGJ6PS88c2NyaXB0XGJbXjxdKig/Oig/ITxcL3NjcmlwdD4pPFtePF0qKSo8XC9zY3JpcHQ+L2dpLGJBPS9eKD86c2VsZWN0fHRleHRhcmVhKS9pLGJCPS9ccysvLGJDPS8oWz8mXSlfPVteJl0qLyxiRD0vKF58XC0pKFthLXpdKS9nLGJFPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYitjLnRvVXBwZXJDYXNlKCl9LGJGPS9eKFtcd1wrXC5cLV0rOilcL1wvKFteXC8/IzpdKikoPzo6KFxkKykpPy8sYkc9ZC5mbi5sb2FkLGJIPXt9LGJJPXt9LGJKLGJLO3RyeXtiSj1jLmxvY2F0aW9uLmhyZWZ9Y2F0Y2goYkwpe2JKPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJKLmhyZWY9IiIsYko9YkouaHJlZn1iSz1iRi5leGVjKGJKLnRvTG93ZXJDYXNlKCkpLGQuZm4uZXh0ZW5kKHtsb2FkOmZ1bmN0aW9uKGEsYyxlKXtpZih0eXBlb2YgYSE9PSJzdHJpbmciJiZiRylyZXR1cm4gYkcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZj1hLmluZGV4T2YoIiAiKTtpZihmPj0wKXt2YXIgZz1hLnNsaWNlKGYsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGYpfXZhciBoPSJHRVQiO2MmJihkLmlzRnVuY3Rpb24oYyk/KGU9YyxjPWIpOnR5cGVvZiBjPT09Im9iamVjdCImJihjPWQucGFyYW0oYyxkLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksaD0iUE9TVCIpKTt2YXIgaT10aGlzO2QuYWpheCh7dXJsOmEsdHlwZTpoLGRhdGFUeXBlOiJodG1sIixkYXRhOmMsY29tcGxldGU6ZnVuY3Rpb24oYSxiLGMpe2M9YS5yZXNwb25zZVRleHQsYS5pc1Jlc29sdmVkKCkmJihhLmRvbmUoZnVuY3Rpb24oYSl7Yz1hfSksaS5odG1sKGc/ZCgiPGRpdj4iKS5hcHBlbmQoYy5yZXBsYWNlKGJ6LCIiKSkuZmluZChnKTpjKSksZSYmaS5lYWNoKGUsW2MsYixhXSl9fSk7cmV0dXJuIHRoaXN9LHNlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBkLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHM/ZC5tYWtlQXJyYXkodGhpcy5lbGVtZW50cyk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWUmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5jaGVja2VkfHxiQS50ZXN0KHRoaXMubm9kZU5hbWUpfHxidS50ZXN0KHRoaXMudHlwZSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9ZCh0aGlzKS52YWwoKTtyZXR1cm4gYz09bnVsbD9udWxsOmQuaXNBcnJheShjKT9kLm1hcChjLGZ1bmN0aW9uKGEsYyl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShiciwiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoYnIsIlxyXG4iKX19KS5nZXQoKX19KSxkLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7ZC5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5iaW5kKGIsYSl9fSksZC5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGEsYyl7ZFtjXT1mdW5jdGlvbihhLGUsZixnKXtkLmlzRnVuY3Rpb24oZSkmJihnPWd8fGYsZj1lLGU9Yik7cmV0dXJuIGQuYWpheCh7dHlwZTpjLHVybDphLGRhdGE6ZSxzdWNjZXNzOmYsZGF0YVR5cGU6Z30pfX0pLGQuZXh0ZW5kKHtnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZC5nZXQoYSxiLGMsInNjcmlwdCIpfSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZC5nZXQoYSxiLGMsImpzb24iKX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7Yj9kLmV4dGVuZCghMCxhLGQuYWpheFNldHRpbmdzLGIpOihiPWEsYT1kLmV4dGVuZCghMCxkLmFqYXhTZXR0aW5ncyxiKSk7Zm9yKHZhciBjIGluIHtjb250ZXh0OjEsdXJsOjF9KWMgaW4gYj9hW2NdPWJbY106YyBpbiBkLmFqYXhTZXR0aW5ncyYmKGFbY109ZC5hamF4U2V0dGluZ3NbY10pO3JldHVybiBhfSxhamF4U2V0dGluZ3M6e3VybDpiSixpc0xvY2FsOmJ2LnRlc3QoYktbMV0pLGdsb2JhbDohMCx0eXBlOiJHRVQiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIix0ZXh0OiJ0ZXh0L3BsYWluIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiLCIqIjoiKi8qIn0sY29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOmEuU3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOmQucGFyc2VKU09OLCJ0ZXh0IHhtbCI6ZC5wYXJzZVhNTH19LGFqYXhQcmVmaWx0ZXI6Yk0oYkgpLGFqYXhUcmFuc3BvcnQ6Yk0oYkkpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB2KGEsYyxsLG4pe2lmKHIhPT0yKXtyPTIscCYmY2xlYXJUaW1lb3V0KHApLG89YixtPW58fCIiLHUucmVhZHlTdGF0ZT1hPzQ6MDt2YXIgcSx0LHYsdz1sP2JQKGUsdSxsKTpiLHgseTtpZihhPj0yMDAmJmE8MzAwfHxhPT09MzA0KXtpZihlLmlmTW9kaWZpZWQpe2lmKHg9dS5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKWQubGFzdE1vZGlmaWVkW2tdPXg7aWYoeT11LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIikpZC5ldGFnW2tdPXl9aWYoYT09PTMwNCljPSJub3Rtb2RpZmllZCIscT0hMDtlbHNlIHRyeXt0PWJRKGUsdyksYz0ic3VjY2VzcyIscT0hMH1jYXRjaCh6KXtjPSJwYXJzZXJlcnJvciIsdj16fX1lbHNle3Y9YztpZighY3x8YSljPSJlcnJvciIsYTwwJiYoYT0wKX11LnN0YXR1cz1hLHUuc3RhdHVzVGV4dD1jLHE/aC5yZXNvbHZlV2l0aChmLFt0LGMsdV0pOmgucmVqZWN0V2l0aChmLFt1LGMsdl0pLHUuc3RhdHVzQ29kZShqKSxqPWIscyYmZy50cmlnZ2VyKCJhamF4IisocT8iU3VjY2VzcyI6IkVycm9yIiksW3UsZSxxP3Q6dl0pLGkucmVzb2x2ZVdpdGgoZixbdSxjXSkscyYmKGcudHJpZ2dlcigiYWpheENvbXBsZXRlIixbdSxlXSksLS1kLmFjdGl2ZXx8ZC5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKX19dHlwZW9mIGE9PT0ib2JqZWN0IiYmKGM9YSxhPWIpLGM9Y3x8e307dmFyIGU9ZC5hamF4U2V0dXAoe30sYyksZj1lLmNvbnRleHR8fGUsZz1mIT09ZSYmKGYubm9kZVR5cGV8fGYgaW5zdGFuY2VvZiBkKT9kKGYpOmQuZXZlbnQsaD1kLkRlZmVycmVkKCksaT1kLl9EZWZlcnJlZCgpLGo9ZS5zdGF0dXNDb2RlfHx7fSxrLGw9e30sbSxuLG8scCxxLHI9MCxzLHQsdT17cmVhZHlTdGF0ZTowLHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxiKXtyfHwobFthLnRvTG93ZXJDYXNlKCkucmVwbGFjZShiRCxiRSldPWIpO3JldHVybiB0aGlzfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gcj09PTI/bTpudWxsfSxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYztpZihyPT09Mil7aWYoIW4pe249e307d2hpbGUoYz1idC5leGVjKG0pKW5bY1sxXS50b0xvd2VyQ2FzZSgpXT1jWzJdfWM9blthLnRvTG93ZXJDYXNlKCldfXJldHVybiBjPT09Yj9udWxsOmN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cnx8KGUubWltZVR5cGU9YSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe2E9YXx8ImFib3J0IixvJiZvLmFib3J0KGEpLHYoMCxhKTtyZXR1cm4gdGhpc319O2gucHJvbWlzZSh1KSx1LnN1Y2Nlc3M9dS5kb25lLHUuZXJyb3I9dS5mYWlsLHUuY29tcGxldGU9aS5kb25lLHUuc3RhdHVzQ29kZT1mdW5jdGlvbihhKXtpZihhKXt2YXIgYjtpZihyPDIpZm9yKGIgaW4gYSlqW2JdPVtqW2JdLGFbYl1dO2Vsc2UgYj1hW3Uuc3RhdHVzXSx1LnRoZW4oYixiKX1yZXR1cm4gdGhpc30sZS51cmw9KChhfHxlLnVybCkrIiIpLnJlcGxhY2UoYnMsIiIpLnJlcGxhY2UoYngsYktbMV0rIi8vIiksZS5kYXRhVHlwZXM9ZC50cmltKGUuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5zcGxpdChiQiksZS5jcm9zc0RvbWFpbnx8KHE9YkYuZXhlYyhlLnVybC50b0xvd2VyQ2FzZSgpKSxlLmNyb3NzRG9tYWluPXEmJihxWzFdIT1iS1sxXXx8cVsyXSE9YktbMl18fChxWzNdfHwocVsxXT09PSJodHRwOiI/ODA6NDQzKSkhPShiS1szXXx8KGJLWzFdPT09Imh0dHA6Ij84MDo0NDMpKSkpLGUuZGF0YSYmZS5wcm9jZXNzRGF0YSYmdHlwZW9mIGUuZGF0YSE9PSJzdHJpbmciJiYoZS5kYXRhPWQucGFyYW0oZS5kYXRhLGUudHJhZGl0aW9uYWwpKSxiTihiSCxlLGMsdSk7aWYocj09PTIpcmV0dXJuITE7cz1lLmdsb2JhbCxlLnR5cGU9ZS50eXBlLnRvVXBwZXJDYXNlKCksZS5oYXNDb250ZW50PSFidy50ZXN0KGUudHlwZSkscyYmZC5hY3RpdmUrKz09PTAmJmQuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iik7aWYoIWUuaGFzQ29udGVudCl7ZS5kYXRhJiYoZS51cmwrPShieS50ZXN0KGUudXJsKT8iJiI6Ij8iKStlLmRhdGEpLGs9ZS51cmw7aWYoZS5jYWNoZT09PSExKXt2YXIgdz1kLm5vdygpLHg9ZS51cmwucmVwbGFjZShiQywiJDFfPSIrdyk7ZS51cmw9eCsoeD09PWUudXJsPyhieS50ZXN0KGUudXJsKT8iJiI6Ij8iKSsiXz0iK3c6IiIpfX1pZihlLmRhdGEmJmUuaGFzQ29udGVudCYmZS5jb250ZW50VHlwZSE9PSExfHxjLmNvbnRlbnRUeXBlKWxbIkNvbnRlbnQtVHlwZSJdPWUuY29udGVudFR5cGU7ZS5pZk1vZGlmaWVkJiYoaz1rfHxlLnVybCxkLmxhc3RNb2RpZmllZFtrXSYmKGxbIklmLU1vZGlmaWVkLVNpbmNlIl09ZC5sYXN0TW9kaWZpZWRba10pLGQuZXRhZ1trXSYmKGxbIklmLU5vbmUtTWF0Y2giXT1kLmV0YWdba10pKSxsLkFjY2VwdD1lLmRhdGFUeXBlc1swXSYmZS5hY2NlcHRzW2UuZGF0YVR5cGVzWzBdXT9lLmFjY2VwdHNbZS5kYXRhVHlwZXNbMF1dKyhlLmRhdGFUeXBlc1swXSE9PSIqIj8iLCAqLyo7IHE9MC4wMSI6IiIpOmUuYWNjZXB0c1siKiJdO2Zvcih0IGluIGUuaGVhZGVycyl1LnNldFJlcXVlc3RIZWFkZXIodCxlLmhlYWRlcnNbdF0pO2lmKGUuYmVmb3JlU2VuZCYmKGUuYmVmb3JlU2VuZC5jYWxsKGYsdSxlKT09PSExfHxyPT09Mikpe3UuYWJvcnQoKTtyZXR1cm4hMX1mb3IodCBpbiB7c3VjY2VzczoxLGVycm9yOjEsY29tcGxldGU6MX0pdVt0XShlW3RdKTtvPWJOKGJJLGUsYyx1KTtpZihvKXt1LnJlYWR5U3RhdGU9MSxzJiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdSxlXSksZS5hc3luYyYmZS50aW1lb3V0PjAmJihwPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt1LmFib3J0KCJ0aW1lb3V0Iil9LGUudGltZW91dCkpO3RyeXtyPTEsby5zZW5kKGwsdil9Y2F0Y2goeSl7c3RhdHVzPDI/digtMSx5KTpkLmVycm9yKHkpfX1lbHNlIHYoLTEsIk5vIFRyYW5zcG9ydCIpO3JldHVybiB1fSxwYXJhbTpmdW5jdGlvbihhLGMpe3ZhciBlPVtdLGY9ZnVuY3Rpb24oYSxiKXtiPWQuaXNGdW5jdGlvbihiKT9iKCk6YixlW2UubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChiKX07Yz09PWImJihjPWQuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKTtpZihkLmlzQXJyYXkoYSl8fGEuanF1ZXJ5JiYhZC5pc1BsYWluT2JqZWN0KGEpKWQuZWFjaChhLGZ1bmN0aW9uKCl7Zih0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcih2YXIgZyBpbiBhKWJPKGcsYVtnXSxjLGYpO3JldHVybiBlLmpvaW4oIiYiKS5yZXBsYWNlKGJwLCIrIil9fSksZC5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9fSk7dmFyIGJSPWQubm93KCksYlM9LyhcPSlcPygmfCQpfCgpXD9cPygpL2k7ZC5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBkLmV4cGFuZG8rIl8iK2JSKyt9fSksZC5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMsZSl7dmFyIGY9dHlwZW9mIGIuZGF0YT09PSJzdHJpbmciO2lmKGIuZGF0YVR5cGVzWzBdPT09Impzb25wInx8Yy5qc29ucENhbGxiYWNrfHxjLmpzb25wIT1udWxsfHxiLmpzb25wIT09ITEmJihiUy50ZXN0KGIudXJsKXx8ZiYmYlMudGVzdChiLmRhdGEpKSl7dmFyIGcsaD1iLmpzb25wQ2FsbGJhY2s9ZC5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGk9YVtoXSxqPWIudXJsLGs9Yi5kYXRhLGw9IiQxIitoKyIkMiIsbT1mdW5jdGlvbigpe2FbaF09aSxnJiZkLmlzRnVuY3Rpb24oaSkmJmFbaF0oZ1swXSl9O2IuanNvbnAhPT0hMSYmKGo9ai5yZXBsYWNlKGJTLGwpLGIudXJsPT09aiYmKGYmJihrPWsucmVwbGFjZShiUyxsKSksYi5kYXRhPT09ayYmKGorPSgvXD8vLnRlc3Qoaik/IiYiOiI/IikrYi5qc29ucCsiPSIraCkpKSxiLnVybD1qLGIuZGF0YT1rLGFbaF09ZnVuY3Rpb24oYSl7Zz1bYV19LGUudGhlbihtLG0pLGIuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe2d8fGQuZXJyb3IoaCsiIHdhcyBub3QgY2FsbGVkIik7cmV0dXJuIGdbMF19LGIuZGF0YVR5cGVzWzBdPSJqc29uIjtyZXR1cm4ic2NyaXB0In19KSxkLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L2phdmFzY3JpcHR8ZWNtYXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7ZC5nbG9iYWxFdmFsKGEpO3JldHVybiBhfX19KSxkLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7YS5jYWNoZT09PWImJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLGQuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgZCxlPWMuaGVhZHx8Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxjLmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihmLGcpe2Q9Yy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxkLmFzeW5jPSJhc3luYyIsYS5zY3JpcHRDaGFyc2V0JiYoZC5jaGFyc2V0PWEuc2NyaXB0Q2hhcnNldCksZC5zcmM9YS51cmwsZC5vbmxvYWQ9ZC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oYSxjKXtpZighZC5yZWFkeVN0YXRlfHwvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGQucmVhZHlTdGF0ZSkpZC5vbmxvYWQ9ZC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxlJiZkLnBhcmVudE5vZGUmJmUucmVtb3ZlQ2hpbGQoZCksZD1iLGN8fGcoMjAwLCJzdWNjZXNzIil9LGUuaW5zZXJ0QmVmb3JlKGQsZS5maXJzdENoaWxkKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkLm9ubG9hZCgwLDEpfX19fSk7dmFyIGJUPWQubm93KCksYlUsYlY7ZC5hamF4U2V0dGluZ3MueGhyPWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJmJYKCl8fGJZKCl9OmJYLGJWPWQuYWpheFNldHRpbmdzLnhocigpLGQuc3VwcG9ydC5hamF4PSEhYlYsZC5zdXBwb3J0LmNvcnM9YlYmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYlYsYlY9YixkLnN1cHBvcnQuYWpheCYmZC5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxkLnN1cHBvcnQuY29ycyl7dmFyIGM7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXt2YXIgZz1hLnhocigpLGgsaTthLnVzZXJuYW1lP2cub3BlbihhLnR5cGUsYS51cmwsYS5hc3luYyxhLnVzZXJuYW1lLGEucGFzc3dvcmQpOmcub3BlbihhLnR5cGUsYS51cmwsYS5hc3luYyk7aWYoYS54aHJGaWVsZHMpZm9yKGkgaW4gYS54aHJGaWVsZHMpZ1tpXT1hLnhockZpZWxkc1tpXTthLm1pbWVUeXBlJiZnLm92ZXJyaWRlTWltZVR5cGUmJmcub3ZlcnJpZGVNaW1lVHlwZShhLm1pbWVUeXBlKSwoIWEuY3Jvc3NEb21haW58fGEuaGFzQ29udGVudCkmJiFlWyJYLVJlcXVlc3RlZC1XaXRoIl0mJihlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e2ZvcihpIGluIGUpZy5zZXRSZXF1ZXN0SGVhZGVyKGksZVtpXSl9Y2F0Y2goail7fWcuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYz1mdW5jdGlvbihlLGkpe3ZhciBqLGssbCxtLG47dHJ5e2lmKGMmJihpfHxnLnJlYWR5U3RhdGU9PT00KSl7Yz1iLGgmJihnLm9ucmVhZHlzdGF0ZWNoYW5nZT1kLm5vb3AsZGVsZXRlIGJVW2hdKTtpZihpKWcucmVhZHlTdGF0ZSE9PTQmJmcuYWJvcnQoKTtlbHNle2o9Zy5zdGF0dXMsbD1nLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLG09e30sbj1nLnJlc3BvbnNlWE1MLG4mJm4uZG9jdW1lbnRFbGVtZW50JiYobS54bWw9biksbS50ZXh0PWcucmVzcG9uc2VUZXh0O3RyeXtrPWcuc3RhdHVzVGV4dH1jYXRjaChvKXtrPSIifWp8fCFhLmlzTG9jYWx8fGEuY3Jvc3NEb21haW4/aj09PTEyMjMmJihqPTIwNCk6aj1tLnRleHQ/MjAwOjQwNH19fWNhdGNoKHApe2l8fGYoLTEscCl9bSYmZihqLGssbSxsKX0sYS5hc3luYyYmZy5yZWFkeVN0YXRlIT09ND8oYlV8fChiVT17fSxiVygpKSxoPWJUKyssZy5vbnJlYWR5c3RhdGVjaGFuZ2U9YlVbaF09Yyk6YygpfSxhYm9ydDpmdW5jdGlvbigpe2MmJmMoMCwxKX19fX0pO3ZhciBiWj17fSxiJD0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sYl89L14oWytcLV09KT8oW1xkKy5cLV0rKShbYS16JV0qKSQvaSxjYSxjYj1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtkLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZjtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGNjKCJzaG93IiwzKSxhLGIsYyk7Zm9yKHZhciBnPTAsaD10aGlzLmxlbmd0aDtnPGg7ZysrKWU9dGhpc1tnXSxmPWUuc3R5bGUuZGlzcGxheSwhZC5fZGF0YShlLCJvbGRkaXNwbGF5IikmJmY9PT0ibm9uZSImJihmPWUuc3R5bGUuZGlzcGxheT0iIiksZj09PSIiJiZkLmNzcyhlLCJkaXNwbGF5Iik9PT0ibm9uZSImJmQuX2RhdGEoZSwib2xkZGlzcGxheSIsY2QoZS5ub2RlTmFtZSkpO2ZvcihnPTA7ZzxoO2crKyl7ZT10aGlzW2ddLGY9ZS5zdHlsZS5kaXNwbGF5O2lmKGY9PT0iInx8Zj09PSJub25lIillLnN0eWxlLmRpc3BsYXk9ZC5fZGF0YShlLCJvbGRkaXNwbGF5Iil8fCIifXJldHVybiB0aGlzfSxoaWRlOmZ1bmN0aW9uKGEsYixjKXtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGNjKCJoaWRlIiwzKSxhLGIsYyk7Zm9yKHZhciBlPTAsZj10aGlzLmxlbmd0aDtlPGY7ZSsrKXt2YXIgZz1kLmNzcyh0aGlzW2VdLCJkaXNwbGF5Iik7ZyE9PSJub25lIiYmIWQuX2RhdGEodGhpc1tlXSwib2xkZGlzcGxheSIpJiZkLl9kYXRhKHRoaXNbZV0sIm9sZGRpc3BsYXkiLGcpfWZvcihlPTA7ZTxmO2UrKyl0aGlzW2VdLnN0eWxlLmRpc3BsYXk9Im5vbmUiO3JldHVybiB0aGlzfSxfdG9nZ2xlOmQuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihhLGIsYyl7dmFyIGU9dHlwZW9mIGE9PT0iYm9vbGVhbiI7ZC5pc0Z1bmN0aW9uKGEpJiZkLmlzRnVuY3Rpb24oYik/dGhpcy5fdG9nZ2xlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTphPT1udWxsfHxlP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWU/YTpkKHRoaXMpLmlzKCI6aGlkZGVuIik7ZCh0aGlzKVtiPyJzaG93IjoiaGlkZSJdKCl9KTp0aGlzLmFuaW1hdGUoY2MoInRvZ2dsZSIsMyksYSxiLGMpO3JldHVybiB0aGlzfSxmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuZmlsdGVyKCI6aGlkZGVuIikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9ZC5zcGVlZChiLGMsZSk7aWYoZC5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZi5jb21wbGV0ZSk7cmV0dXJuIHRoaXNbZi5xdWV1ZT09PSExPyJlYWNoIjoicXVldWUiXShmdW5jdGlvbigpe3ZhciBiPWQuZXh0ZW5kKHt9LGYpLGMsZT10aGlzLm5vZGVUeXBlPT09MSxnPWUmJmQodGhpcykuaXMoIjpoaWRkZW4iKSxoPXRoaXM7Zm9yKGMgaW4gYSl7dmFyIGk9ZC5jYW1lbENhc2UoYyk7YyE9PWkmJihhW2ldPWFbY10sZGVsZXRlIGFbY10sYz1pKTtpZihhW2NdPT09ImhpZGUiJiZnfHxhW2NdPT09InNob3ciJiYhZylyZXR1cm4gYi5jb21wbGV0ZS5jYWxsKHRoaXMpO2lmKGUmJihjPT09ImhlaWdodCJ8fGM9PT0id2lkdGgiKSl7Yi5vdmVyZmxvdz1bdGhpcy5zdHlsZS5vdmVyZmxvdyx0aGlzLnN0eWxlLm92ZXJmbG93WCx0aGlzLnN0eWxlLm92ZXJmbG93WV07aWYoZC5jc3ModGhpcywiZGlzcGxheSIpPT09ImlubGluZSImJmQuY3NzKHRoaXMsImZsb2F0Iik9PT0ibm9uZSIpaWYoZC5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQpe3ZhciBqPWNkKHRoaXMubm9kZU5hbWUpO2o9PT0iaW5saW5lIj90aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6KHRoaXMuc3R5bGUuZGlzcGxheT0iaW5saW5lIix0aGlzLnN0eWxlLnpvb209MSl9ZWxzZSB0aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayJ9ZC5pc0FycmF5KGFbY10pJiYoKGIuc3BlY2lhbEVhc2luZz1iLnNwZWNpYWxFYXNpbmd8fHt9KVtjXT1hW2NdWzFdLGFbY109YVtjXVswXSl9Yi5vdmVyZmxvdyE9bnVsbCYmKHRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpLGIuY3VyQW5pbT1kLmV4dGVuZCh7fSxhKSxkLmVhY2goYSxmdW5jdGlvbihjLGUpe3ZhciBmPW5ldyBkLmZ4KGgsYixjKTtpZihiJC50ZXN0KGUpKWZbZT09PSJ0b2dnbGUiP2c/InNob3ciOiJoaWRlIjplXShhKTtlbHNle3ZhciBpPWJfLmV4ZWMoZSksaj1mLmN1cigpO2lmKGkpe3ZhciBrPXBhcnNlRmxvYXQoaVsyXSksbD1pWzNdfHwoZC5jc3NOdW1iZXJbY10/IiI6InB4Iik7bCE9PSJweCImJihkLnN0eWxlKGgsYywoa3x8MSkrbCksaj0oa3x8MSkvZi5jdXIoKSpqLGQuc3R5bGUoaCxjLGorbCkpLGlbMV0mJihrPShpWzFdPT09Ii09Ij8tMToxKSprK2opLGYuY3VzdG9tKGosayxsKX1lbHNlIGYuY3VzdG9tKGosZSwiIil9fSk7cmV0dXJuITB9KX0sc3RvcDpmdW5jdGlvbihhLGIpe3ZhciBjPWQudGltZXJzO2EmJnRoaXMucXVldWUoW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe2Zvcih2YXIgYT1jLmxlbmd0aC0xO2E+PTA7YS0tKWNbYV0uZWxlbT09PXRoaXMmJihiJiZjW2FdKCEwKSxjLnNwbGljZShhLDEpKX0pLGJ8fHRoaXMuZGVxdWV1ZSgpO3JldHVybiB0aGlzfX0pLGQuZWFjaCh7c2xpZGVEb3duOmNjKCJzaG93IiwxKSxzbGlkZVVwOmNjKCJoaWRlIiwxKSxzbGlkZVRvZ2dsZTpjYygidG9nZ2xlIiwxKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7ZC5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxkLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWEmJnR5cGVvZiBhPT09Im9iamVjdCI/ZC5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxkLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIWQuaXNGdW5jdGlvbihiKSYmYn07ZS5kdXJhdGlvbj1kLmZ4Lm9mZj8wOnR5cGVvZiBlLmR1cmF0aW9uPT09Im51bWJlciI/ZS5kdXJhdGlvbjplLmR1cmF0aW9uIGluIGQuZnguc3BlZWRzP2QuZnguc3BlZWRzW2UuZHVyYXRpb25dOmQuZnguc3BlZWRzLl9kZWZhdWx0LGUub2xkPWUuY29tcGxldGUsZS5jb21wbGV0ZT1mdW5jdGlvbigpe2UucXVldWUhPT0hMSYmZCh0aGlzKS5kZXF1ZXVlKCksZC5pc0Z1bmN0aW9uKGUub2xkKSYmZS5vbGQuY2FsbCh0aGlzKX07cmV0dXJuIGV9LGVhc2luZzp7bGluZWFyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjK2QqYX0sc3dpbmc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuKC1NYXRoLmNvcyhhKk1hdGguUEkpLzIrLjUpKmQrY319LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsYyl7dGhpcy5vcHRpb25zPWIsdGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsYi5vcmlnfHwoYi5vcmlnPXt9KX19KSxkLmZ4LnByb3RvdHlwZT17dXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLChkLmZ4LnN0ZXBbdGhpcy5wcm9wXXx8ZC5meC5zdGVwLl9kZWZhdWx0KSh0aGlzKX0sY3VyOmZ1bmN0aW9uKCl7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpcmV0dXJuIHRoaXMuZWxlbVt0aGlzLnByb3BdO3ZhciBhLGI9ZC5jc3ModGhpcy5lbGVtLHRoaXMucHJvcCk7cmV0dXJuIGlzTmFOKGE9cGFyc2VGbG9hdChiKSk/IWJ8fGI9PT0iYXV0byI/MDpiOmF9LGN1c3RvbTpmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZyhhKXtyZXR1cm4gZS5zdGVwKGEpfXZhciBlPXRoaXMsZj1kLmZ4O3RoaXMuc3RhcnRUaW1lPWQubm93KCksdGhpcy5zdGFydD1hLHRoaXMuZW5kPWIsdGhpcy51bml0PWN8fHRoaXMudW5pdHx8KGQuY3NzTnVtYmVyW3RoaXMucHJvcF0/IiI6InB4IiksdGhpcy5ub3c9dGhpcy5zdGFydCx0aGlzLnBvcz10aGlzLnN0YXRlPTAsZy5lbGVtPXRoaXMuZWxlbSxnKCkmJmQudGltZXJzLnB1c2goZykmJiFjYSYmKGNhPXNldEludGVydmFsKGYudGljayxmLmludGVydmFsKSl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWQuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLnNob3c9ITAsdGhpcy5jdXN0b20odGhpcy5wcm9wPT09IndpZHRoInx8dGhpcy5wcm9wPT09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpLGQodGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWQuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLmhpZGU9ITAsdGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpmdW5jdGlvbihhKXt2YXIgYj1kLm5vdygpLGM9ITA7aWYoYXx8Yj49dGhpcy5vcHRpb25zLmR1cmF0aW9uK3RoaXMuc3RhcnRUaW1lKXt0aGlzLm5vdz10aGlzLmVuZCx0aGlzLnBvcz10aGlzLnN0YXRlPTEsdGhpcy51cGRhdGUoKSx0aGlzLm9wdGlvbnMuY3VyQW5pbVt0aGlzLnByb3BdPSEwO2Zvcih2YXIgZSBpbiB0aGlzLm9wdGlvbnMuY3VyQW5pbSl0aGlzLm9wdGlvbnMuY3VyQW5pbVtlXSE9PSEwJiYoYz0hMSk7aWYoYyl7aWYodGhpcy5vcHRpb25zLm92ZXJmbG93IT1udWxsJiYhZC5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3Mpe3ZhciBmPXRoaXMuZWxlbSxnPXRoaXMub3B0aW9ucztkLmVhY2goWyIiLCJYIiwiWSJdLGZ1bmN0aW9uKGEsYil7Zi5zdHlsZVsib3ZlcmZsb3ciK2JdPWcub3ZlcmZsb3dbYV19KX10aGlzLm9wdGlvbnMuaGlkZSYmZCh0aGlzLmVsZW0pLmhpZGUoKTtpZih0aGlzLm9wdGlvbnMuaGlkZXx8dGhpcy5vcHRpb25zLnNob3cpZm9yKHZhciBoIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKWQuc3R5bGUodGhpcy5lbGVtLGgsdGhpcy5vcHRpb25zLm9yaWdbaF0pO3RoaXMub3B0aW9ucy5jb21wbGV0ZS5jYWxsKHRoaXMuZWxlbSl9cmV0dXJuITF9dmFyIGk9Yi10aGlzLnN0YXJ0VGltZTt0aGlzLnN0YXRlPWkvdGhpcy5vcHRpb25zLmR1cmF0aW9uO3ZhciBqPXRoaXMub3B0aW9ucy5zcGVjaWFsRWFzaW5nJiZ0aGlzLm9wdGlvbnMuc3BlY2lhbEVhc2luZ1t0aGlzLnByb3BdLGs9dGhpcy5vcHRpb25zLmVhc2luZ3x8KGQuZWFzaW5nLnN3aW5nPyJzd2luZyI6ImxpbmVhciIpO3RoaXMucG9zPWQuZWFzaW5nW2p8fGtdKHRoaXMuc3RhdGUsaSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKSx0aGlzLm5vdz10aGlzLnN0YXJ0Kyh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0aGlzLnBvcyx0aGlzLnVwZGF0ZSgpO3JldHVybiEwfX0sZC5leHRlbmQoZC5meCx7dGljazpmdW5jdGlvbigpe3ZhciBhPWQudGltZXJzO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWFbYl0oKXx8YS5zcGxpY2UoYi0tLDEpO2EubGVuZ3RofHxkLmZ4LnN0b3AoKX0saW50ZXJ2YWw6MTMsc3RvcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoY2EpLGNhPW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGEpe2Quc3R5bGUoYS5lbGVtLCJvcGFjaXR5IixhLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2EuZWxlbS5zdHlsZSYmYS5lbGVtLnN0eWxlW2EucHJvcF0hPW51bGw/YS5lbGVtLnN0eWxlW2EucHJvcF09KGEucHJvcD09PSJ3aWR0aCJ8fGEucHJvcD09PSJoZWlnaHQiP01hdGgubWF4KDAsYS5ub3cpOmEubm93KSthLnVuaXQ6YS5lbGVtW2EucHJvcF09YS5ub3d9fX0pLGQuZXhwciYmZC5leHByLmZpbHRlcnMmJihkLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZC5ncmVwKGQudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGNlPS9edCg/OmFibGV8ZHxoKSQvaSxjZj0vXig/OmJvZHl8aHRtbCkkL2k7ImdldEJvdW5kaW5nQ2xpZW50UmVjdCJpbiBjLmRvY3VtZW50RWxlbWVudD9kLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdLGM7aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Qub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGQub2Zmc2V0LmJvZHlPZmZzZXQoYik7dHJ5e2M9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChlKXt9dmFyIGY9Yi5vd25lckRvY3VtZW50LGc9Zi5kb2N1bWVudEVsZW1lbnQ7aWYoIWN8fCFkLmNvbnRhaW5zKGcsYikpcmV0dXJuIGM/e3RvcDpjLnRvcCxsZWZ0OmMubGVmdH06e3RvcDowLGxlZnQ6MH07dmFyIGg9Zi5ib2R5LGk9Y2coZiksaj1nLmNsaWVudFRvcHx8aC5jbGllbnRUb3B8fDAsaz1nLmNsaWVudExlZnR8fGguY2xpZW50TGVmdHx8MCxsPWkucGFnZVlPZmZzZXR8fGQuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wLG09aS5wYWdlWE9mZnNldHx8ZC5zdXBwb3J0LmJveE1vZGVsJiZnLnNjcm9sbExlZnR8fGguc2Nyb2xsTGVmdCxuPWMudG9wK2wtaixvPWMubGVmdCttLWs7cmV0dXJue3RvcDpuLGxlZnQ6b319OmQuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF07aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Qub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGQub2Zmc2V0LmJvZHlPZmZzZXQoYik7ZC5vZmZzZXQuaW5pdGlhbGl6ZSgpO3ZhciBjLGU9Yi5vZmZzZXRQYXJlbnQsZj1iLGc9Yi5vd25lckRvY3VtZW50LGg9Zy5kb2N1bWVudEVsZW1lbnQsaT1nLmJvZHksaj1nLmRlZmF1bHRWaWV3LGs9aj9qLmdldENvbXB1dGVkU3R5bGUoYixudWxsKTpiLmN1cnJlbnRTdHlsZSxsPWIub2Zmc2V0VG9wLG09Yi5vZmZzZXRMZWZ0O3doaWxlKChiPWIucGFyZW50Tm9kZSkmJmIhPT1pJiZiIT09aCl7aWYoZC5vZmZzZXQuc3VwcG9ydHNGaXhlZFBvc2l0aW9uJiZrLnBvc2l0aW9uPT09ImZpeGVkIilicmVhaztjPWo/ai5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCk6Yi5jdXJyZW50U3R5bGUsbC09Yi5zY3JvbGxUb3AsbS09Yi5zY3JvbGxMZWZ0LGI9PT1lJiYobCs9Yi5vZmZzZXRUb3AsbSs9Yi5vZmZzZXRMZWZ0LGQub2Zmc2V0LmRvZXNOb3RBZGRCb3JkZXImJighZC5vZmZzZXQuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHN8fCFjZS50ZXN0KGIubm9kZU5hbWUpKSYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGY9ZSxlPWIub2Zmc2V0UGFyZW50KSxkLm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJmMub3ZlcmZsb3chPT0idmlzaWJsZSImJihsKz1wYXJzZUZsb2F0KGMuYm9yZGVyVG9wV2lkdGgpfHwwLG0rPXBhcnNlRmxvYXQoYy5ib3JkZXJMZWZ0V2lkdGgpfHwwKSxrPWN9aWYoay5wb3NpdGlvbj09PSJyZWxhdGl2ZSJ8fGsucG9zaXRpb249PT0ic3RhdGljIilsKz1pLm9mZnNldFRvcCxtKz1pLm9mZnNldExlZnQ7ZC5vZmZzZXQuc3VwcG9ydHNGaXhlZFBvc2l0aW9uJiZrLnBvc2l0aW9uPT09ImZpeGVkIiYmKGwrPU1hdGgubWF4KGguc2Nyb2xsVG9wLGkuc2Nyb2xsVG9wKSxtKz1NYXRoLm1heChoLnNjcm9sbExlZnQsaS5zY3JvbGxMZWZ0KSk7cmV0dXJue3RvcDpsLGxlZnQ6bX19LGQub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIGE9Yy5ib2R5LGI9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxlLGYsZyxoLGk9cGFyc2VGbG9hdChkLmNzcyhhLCJtYXJnaW5Ub3AiKSl8fDAsaj0iPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7Jz48ZGl2PjwvZGl2PjwvZGl2Pjx0YWJsZSBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7JyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+IjtkLmV4dGVuZChiLnN0eWxlLHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxtYXJnaW46MCxib3JkZXI6MCx3aWR0aDoiMXB4IixoZWlnaHQ6IjFweCIsdmlzaWJpbGl0eToiaGlkZGVuIn0pLGIuaW5uZXJIVE1MPWosYS5pbnNlcnRCZWZvcmUoYixhLmZpcnN0Q2hpbGQpLGU9Yi5maXJzdENoaWxkLGY9ZS5maXJzdENoaWxkLGg9ZS5uZXh0U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQsdGhpcy5kb2VzTm90QWRkQm9yZGVyPWYub2Zmc2V0VG9wIT09NSx0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPWgub2Zmc2V0VG9wPT09NSxmLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsZi5zdHlsZS50b3A9IjIwcHgiLHRoaXMuc3VwcG9ydHNGaXhlZFBvc2l0aW9uPWYub2Zmc2V0VG9wPT09MjB8fGYub2Zmc2V0VG9wPT09MTUsZi5zdHlsZS5wb3NpdGlvbj1mLnN0eWxlLnRvcD0iIixlLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix0aGlzLnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90VmlzaWJsZT1mLm9mZnNldFRvcD09PS01LHRoaXMuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQ9YS5vZmZzZXRUb3AhPT1pLGEucmVtb3ZlQ2hpbGQoYiksYT1iPWU9Zj1nPWg9bnVsbCxkLm9mZnNldC5pbml0aWFsaXplPWQubm9vcH0sYm9keU9mZnNldDpmdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFRvcCxjPWEub2Zmc2V0TGVmdDtkLm9mZnNldC5pbml0aWFsaXplKCksZC5vZmZzZXQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQmJihiKz1wYXJzZUZsb2F0KGQuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjKz1wYXJzZUZsb2F0KGQuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDApO3JldHVybnt0b3A6YixsZWZ0OmN9fSxzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWQuY3NzKGEsInBvc2l0aW9uIik7ZT09PSJzdGF0aWMiJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKTt2YXIgZj1kKGEpLGc9Zi5vZmZzZXQoKSxoPWQuY3NzKGEsInRvcCIpLGk9ZC5jc3MoYSwibGVmdCIpLGo9ZT09PSJhYnNvbHV0ZSImJmQuaW5BcnJheSgiYXV0byIsW2gsaV0pPi0xLGs9e30sbD17fSxtLG47aiYmKGw9Zi5wb3NpdGlvbigpKSxtPWo/bC50b3A6cGFyc2VJbnQoaCwxMCl8fDAsbj1qP2wubGVmdDpwYXJzZUludChpLDEwKXx8MCxkLmlzRnVuY3Rpb24oYikmJihiPWIuY2FsbChhLGMsZykpLGIudG9wIT1udWxsJiYoay50b3A9Yi50b3AtZy50b3ArbSksYi5sZWZ0IT1udWxsJiYoay5sZWZ0PWIubGVmdC1nLmxlZnQrbiksInVzaW5nImluIGI/Yi51c2luZy5jYWxsKGEsayk6Zi5jc3Moayl9fSxkLmZuLmV4dGVuZCh7cG9zaXRpb246ZnVuY3Rpb24oKXtpZighdGhpc1swXSlyZXR1cm4gbnVsbDt2YXIgYT10aGlzWzBdLGI9dGhpcy5vZmZzZXRQYXJlbnQoKSxjPXRoaXMub2Zmc2V0KCksZT1jZi50ZXN0KGJbMF0ubm9kZU5hbWUpP3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCk7Yy50b3AtPXBhcnNlRmxvYXQoZC5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMubGVmdC09cGFyc2VGbG9hdChkLmNzcyhhLCJtYXJnaW5MZWZ0IikpfHwwLGUudG9wKz1wYXJzZUZsb2F0KGQuY3NzKGJbMF0sImJvcmRlclRvcFdpZHRoIikpfHwwLGUubGVmdCs9cGFyc2VGbG9hdChkLmNzcyhiWzBdLCJib3JkZXJMZWZ0V2lkdGgiKSl8fDA7cmV0dXJue3RvcDpjLnRvcC1lLnRvcCxsZWZ0OmMubGVmdC1lLmxlZnR9fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudHx8Yy5ib2R5O3doaWxlKGEmJighY2YudGVzdChhLm5vZGVOYW1lKSYmZC5jc3MoYSwicG9zaXRpb24iKT09PSJzdGF0aWMiKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfSl9fSksZC5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKGEsYyl7dmFyIGU9InNjcm9sbCIrYztkLmZuW2VdPWZ1bmN0aW9uKGMpe3ZhciBmPXRoaXNbMF0sZztpZighZilyZXR1cm4gbnVsbDtpZihjIT09YilyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zz1jZyh0aGlzKSxnP2cuc2Nyb2xsVG8oYT9kKGcpLnNjcm9sbExlZnQoKTpjLGE/YzpkKGcpLnNjcm9sbFRvcCgpKTp0aGlzW2VdPWN9KTtnPWNnKGYpO3JldHVybiBnPyJwYWdlWE9mZnNldCJpbiBnP2dbYT8icGFnZVlPZmZzZXQiOiJwYWdlWE9mZnNldCJdOmQuc3VwcG9ydC5ib3hNb2RlbCYmZy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbZV18fGcuZG9jdW1lbnQuYm9keVtlXTpmW2VdfX0pLGQuZWFjaChbIkhlaWdodCIsIldpZHRoIl0sZnVuY3Rpb24oYSxjKXt2YXIgZT1jLnRvTG93ZXJDYXNlKCk7ZC5mblsiaW5uZXIiK2NdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbMF0/cGFyc2VGbG9hdChkLmNzcyh0aGlzWzBdLGUsInBhZGRpbmciKSk6bnVsbH0sZC5mblsib3V0ZXIiK2NdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzWzBdP3BhcnNlRmxvYXQoZC5jc3ModGhpc1swXSxlLGE/Im1hcmdpbiI6ImJvcmRlciIpKTpudWxsfSxkLmZuW2VdPWZ1bmN0aW9uKGEpe3ZhciBmPXRoaXNbMF07aWYoIWYpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGQuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWQodGhpcyk7Y1tlXShhLmNhbGwodGhpcyxiLGNbZV0oKSkpfSk7aWYoZC5pc1dpbmRvdyhmKSl7dmFyIGc9Zi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY107cmV0dXJuIGYuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8Zi5kb2N1bWVudC5ib2R5WyJjbGllbnQiK2NdfHxnfWlmKGYubm9kZVR5cGU9PT05KXJldHVybiBNYXRoLm1heChmLmRvY3VtZW50RWxlbWVudFsiY2xpZW50IitjXSxmLmJvZHlbInNjcm9sbCIrY10sZi5kb2N1bWVudEVsZW1lbnRbInNjcm9sbCIrY10sZi5ib2R5WyJvZmZzZXQiK2NdLGYuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK2NdKTtpZihhPT09Yil7dmFyIGg9ZC5jc3MoZixlKSxpPXBhcnNlRmxvYXQoaCk7cmV0dXJuIGQuaXNOYU4oaSk/aDppfXJldHVybiB0aGlzLmNzcyhlLHR5cGVvZiBhPT09InN0cmluZyI/YTphKyJweCIpfX0pLGEualF1ZXJ5PWEuJD1kfSkod2luZG93KTsK]]></data>
	</file>
	<file>
	  <filename>/js/jq.ui.core.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBVSSAxLjguMTEKICoKICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJCiAqLwooZnVuY3Rpb24oYyxqKXtmdW5jdGlvbiBrKGEpe3JldHVybiFjKGEpLnBhcmVudHMoKS5hbmRTZWxmKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIGMuY3VyQ1NTKHRoaXMsInZpc2liaWxpdHkiKT09PSJoaWRkZW4ifHxjLmV4cHIuZmlsdGVycy5oaWRkZW4odGhpcyl9KS5sZW5ndGh9Yy51aT1jLnVpfHx7fTtpZighYy51aS52ZXJzaW9uKXtjLmV4dGVuZChjLnVpLHt2ZXJzaW9uOiIxLjguMTEiLGtleUNvZGU6e0FMVDoxOCxCQUNLU1BBQ0U6OCxDQVBTX0xPQ0s6MjAsQ09NTUE6MTg4LENPTU1BTkQ6OTEsQ09NTUFORF9MRUZUOjkxLENPTU1BTkRfUklHSFQ6OTMsQ09OVFJPTDoxNyxERUxFVEU6NDYsRE9XTjo0MCxFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsSU5TRVJUOjQ1LExFRlQ6MzcsTUVOVTo5MyxOVU1QQURfQUREOjEwNyxOVU1QQURfREVDSU1BTDoxMTAsTlVNUEFEX0RJVklERToxMTEsTlVNUEFEX0VOVEVSOjEwOCxOVU1QQURfTVVMVElQTFk6MTA2LApOVU1QQURfU1VCVFJBQ1Q6MTA5LFBBR0VfRE9XTjozNCxQQUdFX1VQOjMzLFBFUklPRDoxOTAsUklHSFQ6MzksU0hJRlQ6MTYsU1BBQ0U6MzIsVEFCOjksVVA6MzgsV0lORE9XUzo5MX19KTtjLmZuLmV4dGVuZCh7X2ZvY3VzOmMuZm4uZm9jdXMsZm9jdXM6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGE9PT0ibnVtYmVyIj90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjKGQpLmZvY3VzKCk7YiYmYi5jYWxsKGQpfSxhKX0pOnRoaXMuX2ZvY3VzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sc2Nyb2xsUGFyZW50OmZ1bmN0aW9uKCl7dmFyIGE7YT1jLmJyb3dzZXIubXNpZSYmLyhzdGF0aWN8cmVsYXRpdmUpLy50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKXx8L2Fic29sdXRlLy50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKT90aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4vKHJlbGF0aXZlfGFic29sdXRlfGZpeGVkKS8udGVzdChjLmN1ckNTUyh0aGlzLAoicG9zaXRpb24iLDEpKSYmLyhhdXRvfHNjcm9sbCkvLnRlc3QoYy5jdXJDU1ModGhpcywib3ZlcmZsb3ciLDEpK2MuY3VyQ1NTKHRoaXMsIm92ZXJmbG93LXkiLDEpK2MuY3VyQ1NTKHRoaXMsIm92ZXJmbG93LXgiLDEpKX0pLmVxKDApOnRoaXMucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybi8oYXV0b3xzY3JvbGwpLy50ZXN0KGMuY3VyQ1NTKHRoaXMsIm92ZXJmbG93IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy15IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy14IiwxKSl9KS5lcSgwKTtyZXR1cm4vZml4ZWQvLnRlc3QodGhpcy5jc3MoInBvc2l0aW9uIikpfHwhYS5sZW5ndGg/Yyhkb2N1bWVudCk6YX0sekluZGV4OmZ1bmN0aW9uKGEpe2lmKGEhPT1qKXJldHVybiB0aGlzLmNzcygiekluZGV4IixhKTtpZih0aGlzLmxlbmd0aCl7YT1jKHRoaXNbMF0pO2Zvcih2YXIgYjthLmxlbmd0aCYmYVswXSE9PWRvY3VtZW50Oyl7Yj1hLmNzcygicG9zaXRpb24iKTsKaWYoYj09PSJhYnNvbHV0ZSJ8fGI9PT0icmVsYXRpdmUifHxiPT09ImZpeGVkIil7Yj1wYXJzZUludChhLmNzcygiekluZGV4IiksMTApO2lmKCFpc05hTihiKSYmYiE9PTApcmV0dXJuIGJ9YT1hLnBhcmVudCgpfX1yZXR1cm4gMH0sZGlzYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJpbmQoKGMuc3VwcG9ydC5zZWxlY3RzdGFydD8ic2VsZWN0c3RhcnQiOiJtb3VzZWRvd24iKSsiLnVpLWRpc2FibGVTZWxlY3Rpb24iLGZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKX0pfSxlbmFibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmJpbmQoIi51aS1kaXNhYmxlU2VsZWN0aW9uIil9fSk7Yy5lYWNoKFsiV2lkdGgiLCJIZWlnaHQiXSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoZixnLGwsbSl7Yy5lYWNoKGUsZnVuY3Rpb24oKXtnLT1wYXJzZUZsb2F0KGMuY3VyQ1NTKGYsInBhZGRpbmciK3RoaXMsdHJ1ZSkpfHwwO2lmKGwpZy09cGFyc2VGbG9hdChjLmN1ckNTUyhmLAoiYm9yZGVyIit0aGlzKyJXaWR0aCIsdHJ1ZSkpfHwwO2lmKG0pZy09cGFyc2VGbG9hdChjLmN1ckNTUyhmLCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfSk7cmV0dXJuIGd9dmFyIGU9Yj09PSJXaWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdLGg9Yi50b0xvd2VyQ2FzZSgpLGk9e2lubmVyV2lkdGg6Yy5mbi5pbm5lcldpZHRoLGlubmVySGVpZ2h0OmMuZm4uaW5uZXJIZWlnaHQsb3V0ZXJXaWR0aDpjLmZuLm91dGVyV2lkdGgsb3V0ZXJIZWlnaHQ6Yy5mbi5vdXRlckhlaWdodH07Yy5mblsiaW5uZXIiK2JdPWZ1bmN0aW9uKGYpe2lmKGY9PT1qKXJldHVybiBpWyJpbm5lciIrYl0uY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5jc3MoaCxkKHRoaXMsZikrInB4Iil9KX07Yy5mblsib3V0ZXIiK2JdPWZ1bmN0aW9uKGYsZyl7aWYodHlwZW9mIGYhPT0ibnVtYmVyIilyZXR1cm4gaVsib3V0ZXIiK2JdLmNhbGwodGhpcyxmKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5jc3MoaCwKZCh0aGlzLGYsdHJ1ZSxnKSsicHgiKX0pfX0pO2MuZXh0ZW5kKGMuZXhwclsiOiJdLHtkYXRhOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4hIWMuZGF0YShhLGRbM10pfSxmb2N1c2FibGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGQ9Yy5hdHRyKGEsInRhYmluZGV4Iik7aWYoImFyZWEiPT09Yil7Yj1hLnBhcmVudE5vZGU7ZD1iLm5hbWU7aWYoIWEuaHJlZnx8IWR8fGIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJtYXAiKXJldHVybiBmYWxzZTthPWMoImltZ1t1c2VtYXA9IyIrZCsiXSIpWzBdO3JldHVybiEhYSYmayhhKX1yZXR1cm4oL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0Ly50ZXN0KGIpPyFhLmRpc2FibGVkOiJhIj09Yj9hLmhyZWZ8fCFpc05hTihkKTohaXNOYU4oZCkpJiZrKGEpfSx0YWJiYWJsZTpmdW5jdGlvbihhKXt2YXIgYj1jLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4oaXNOYU4oYil8fGI+PTApJiZjKGEpLmlzKCI6Zm9jdXNhYmxlIil9fSk7CmMoZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5ib2R5LGI9YS5hcHBlbmRDaGlsZChiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtjLmV4dGVuZChiLnN0eWxlLHttaW5IZWlnaHQ6IjEwMHB4IixoZWlnaHQ6ImF1dG8iLHBhZGRpbmc6MCxib3JkZXJXaWR0aDowfSk7Yy5zdXBwb3J0Lm1pbkhlaWdodD1iLm9mZnNldEhlaWdodD09PTEwMDtjLnN1cHBvcnQuc2VsZWN0c3RhcnQ9Im9uc2VsZWN0c3RhcnQiaW4gYjthLnJlbW92ZUNoaWxkKGIpLnN0eWxlLmRpc3BsYXk9Im5vbmUifSk7Yy5leHRlbmQoYy51aSx7cGx1Z2luOnthZGQ6ZnVuY3Rpb24oYSxiLGQpe2E9Yy51aVthXS5wcm90b3R5cGU7Zm9yKHZhciBlIGluIGQpe2EucGx1Z2luc1tlXT1hLnBsdWdpbnNbZV18fFtdO2EucGx1Z2luc1tlXS5wdXNoKFtiLGRbZV1dKX19LGNhbGw6ZnVuY3Rpb24oYSxiLGQpe2lmKChiPWEucGx1Z2luc1tiXSkmJmEuZWxlbWVudFswXS5wYXJlbnROb2RlKWZvcih2YXIgZT0wO2U8Yi5sZW5ndGg7ZSsrKWEub3B0aW9uc1tiW2VdWzBdXSYmCmJbZV1bMV0uYXBwbHkoYS5lbGVtZW50LGQpfX0sY29udGFpbnM6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZG9jdW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNjphIT09YiYmYS5jb250YWlucyhiKX0saGFzU2Nyb2xsOmZ1bmN0aW9uKGEsYil7aWYoYyhhKS5jc3MoIm92ZXJmbG93Iik9PT0iaGlkZGVuIilyZXR1cm4gZmFsc2U7Yj1iJiZiPT09ImxlZnQiPyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIjt2YXIgZD1mYWxzZTtpZihhW2JdPjApcmV0dXJuIHRydWU7YVtiXT0xO2Q9YVtiXT4wO2FbYl09MDtyZXR1cm4gZH0saXNPdmVyQXhpczpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGE+YiYmYTxiK2R9LGlzT3ZlcjpmdW5jdGlvbihhLGIsZCxlLGgsaSl7cmV0dXJuIGMudWkuaXNPdmVyQXhpcyhhLGQsaCkmJmMudWkuaXNPdmVyQXhpcyhiLGUsaSl9fSl9fSkoalF1ZXJ5KTsKOwo=]]></data>
	</file>
	<file>
	  <filename>/js/jq.ui.mouse.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBVSSBNb3VzZSAxLjguNwogKgogKiBDb3B5cmlnaHQgMjAxMCwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvTW91c2UKICoKICogRGVwZW5kczoKICoJanF1ZXJ5LnVpLndpZGdldC5qcwogKi8KKGZ1bmN0aW9uKGMpe2Mud2lkZ2V0KCJ1aS5tb3VzZSIse29wdGlvbnM6e2NhbmNlbDoiOmlucHV0LG9wdGlvbiIsZGlzdGFuY2U6MSxkZWxheTowfSxfbW91c2VJbml0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmVsZW1lbnQuYmluZCgibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGIpe3JldHVybiBhLl9tb3VzZURvd24oYil9KS5iaW5kKCJjbGljay4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihiKXtpZih0cnVlPT09Yy5kYXRhKGIudGFyZ2V0LGEud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50Iikpe2MucmVtb3ZlRGF0YShiLnRhcmdldCxhLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpO2Iuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7cmV0dXJuIGZhbHNlfX0pO3RoaXMuc3RhcnRlZD1mYWxzZX0sX21vdXNlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSl9LF9tb3VzZURvd246ZnVuY3Rpb24oYSl7YS5vcmlnaW5hbEV2ZW50PQphLm9yaWdpbmFsRXZlbnR8fHt9O2lmKCFhLm9yaWdpbmFsRXZlbnQubW91c2VIYW5kbGVkKXt0aGlzLl9tb3VzZVN0YXJ0ZWQmJnRoaXMuX21vdXNlVXAoYSk7dGhpcy5fbW91c2VEb3duRXZlbnQ9YTt2YXIgYj10aGlzLGU9YS53aGljaD09MSxmPXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsPT0ic3RyaW5nIj9jKGEudGFyZ2V0KS5wYXJlbnRzKCkuYWRkKGEudGFyZ2V0KS5maWx0ZXIodGhpcy5vcHRpb25zLmNhbmNlbCkubGVuZ3RoOmZhbHNlO2lmKCFlfHxmfHwhdGhpcy5fbW91c2VDYXB0dXJlKGEpKXJldHVybiB0cnVlO3RoaXMubW91c2VEZWxheU1ldD0hdGhpcy5vcHRpb25zLmRlbGF5O2lmKCF0aGlzLm1vdXNlRGVsYXlNZXQpdGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLm1vdXNlRGVsYXlNZXQ9dHJ1ZX0sdGhpcy5vcHRpb25zLmRlbGF5KTtpZih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGEpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGEpKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9CnRoaXMuX21vdXNlU3RhcnQoYSkhPT1mYWxzZTtpZighdGhpcy5fbW91c2VTdGFydGVkKXthLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIHRydWV9fXRoaXMuX21vdXNlTW92ZURlbGVnYXRlPWZ1bmN0aW9uKGQpe3JldHVybiBiLl9tb3VzZU1vdmUoZCl9O3RoaXMuX21vdXNlVXBEZWxlZ2F0ZT1mdW5jdGlvbihkKXtyZXR1cm4gYi5fbW91c2VVcChkKX07Yyhkb2N1bWVudCkuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSk7YS5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBhLm9yaWdpbmFsRXZlbnQubW91c2VIYW5kbGVkPXRydWV9fSxfbW91c2VNb3ZlOmZ1bmN0aW9uKGEpe2lmKGMuYnJvd3Nlci5tc2llJiYhKGRvY3VtZW50LmRvY3VtZW50TW9kZT49OSkmJiFhLmJ1dHRvbilyZXR1cm4gdGhpcy5fbW91c2VVcChhKTtpZih0aGlzLl9tb3VzZVN0YXJ0ZWQpe3RoaXMuX21vdXNlRHJhZyhhKTsKcmV0dXJuIGEucHJldmVudERlZmF1bHQoKX1pZih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGEpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGEpKSh0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydCh0aGlzLl9tb3VzZURvd25FdmVudCxhKSE9PWZhbHNlKT90aGlzLl9tb3VzZURyYWcoYSk6dGhpcy5fbW91c2VVcChhKTtyZXR1cm4hdGhpcy5fbW91c2VTdGFydGVkfSxfbW91c2VVcDpmdW5jdGlvbihhKXtjKGRvY3VtZW50KS51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSk7aWYodGhpcy5fbW91c2VTdGFydGVkKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9ZmFsc2U7YS50YXJnZXQ9PXRoaXMuX21vdXNlRG93bkV2ZW50LnRhcmdldCYmYy5kYXRhKGEudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiwKdHJ1ZSk7dGhpcy5fbW91c2VTdG9wKGEpfXJldHVybiBmYWxzZX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLWEucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLWEucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHRydWV9fSl9KShqUXVlcnkpOwo7Cg==]]></data>
	</file>
	<file>
	  <filename>/js/jq.ui.sortable.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNICogalF1ZXJ5IFVJIFNvcnRhYmxlIDEuOC4xMQ0gKg0gKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpDSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLg0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlDSAqDSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvU29ydGFibGVzDSAqDSAqIERlcGVuZHM6DSAqCWpxdWVyeS51aS5jb3JlLmpzDSAqCWpxdWVyeS51aS5tb3VzZS5qcw0gKglqcXVlcnkudWkud2lkZ2V0LmpzDSAqLw0oZnVuY3Rpb24oZCl7ZC53aWRnZXQoInVpLnNvcnRhYmxlIixkLnVpLm1vdXNlLHt3aWRnZXRFdmVudFByZWZpeDoic29ydCIsb3B0aW9uczp7YXBwZW5kVG86InBhcmVudCIsYXhpczpmYWxzZSxjb25uZWN0V2l0aDpmYWxzZSxjb250YWlubWVudDpmYWxzZSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OmZhbHNlLGRyb3BPbkVtcHR5OnRydWUsZm9yY2VQbGFjZWhvbGRlclNpemU6ZmFsc2UsZm9yY2VIZWxwZXJTaXplOmZhbHNlLGdyaWQ6ZmFsc2UsaGFuZGxlOmZhbHNlLGhlbHBlcjoib3JpZ2luYWwiLGl0ZW1zOiI+ICoiLG9wYWNpdHk6ZmFsc2UscGxhY2Vob2xkZXI6ZmFsc2UscmV2ZXJ0OmZhbHNlLHNjcm9sbDp0cnVlLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjFFM30sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29udGFpbmVyQ2FjaGU9e307dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zb3J0YWJsZSIpOw10aGlzLnJlZnJlc2goKTt0aGlzLmZsb2F0aW5nPXRoaXMuaXRlbXMubGVuZ3RoPy9sZWZ0fHJpZ2h0Ly50ZXN0KHRoaXMuaXRlbXNbMF0uaXRlbS5jc3MoImZsb2F0IikpfHwvaW5saW5lfHRhYmxlLWNlbGwvLnRlc3QodGhpcy5pdGVtc1swXS5pdGVtLmNzcygiZGlzcGxheSIpKTpmYWxzZTt0aGlzLm9mZnNldD10aGlzLmVsZW1lbnQub2Zmc2V0KCk7dGhpcy5fbW91c2VJbml0KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlIHVpLXNvcnRhYmxlLWRpc2FibGVkIikucmVtb3ZlRGF0YSgic29ydGFibGUiKS51bmJpbmQoIi5zb3J0YWJsZSIpO3RoaXMuX21vdXNlRGVzdHJveSgpO2Zvcih2YXIgYT10aGlzLml0ZW1zLmxlbmd0aC0xO2E+PTA7YS0tKXRoaXMuaXRlbXNbYV0uaXRlbS5yZW1vdmVEYXRhKCJzb3J0YWJsZS1pdGVtIik7cmV0dXJuIHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24oYSxiKXtpZihhPT09ImRpc2FibGVkIil7dGhpcy5vcHRpb25zW2FdPQ1iO3RoaXMud2lkZ2V0KClbYj8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJ1aS1zb3J0YWJsZS1kaXNhYmxlZCIpfWVsc2UgZC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKGEsYil7aWYodGhpcy5yZXZlcnRpbmcpcmV0dXJuIGZhbHNlO2lmKHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8dGhpcy5vcHRpb25zLnR5cGU9PSJzdGF0aWMiKXJldHVybiBmYWxzZTt0aGlzLl9yZWZyZXNoSXRlbXMoYSk7dmFyIGM9bnVsbCxlPXRoaXM7ZChhLnRhcmdldCkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXtpZihkLmRhdGEodGhpcywic29ydGFibGUtaXRlbSIpPT1lKXtjPWQodGhpcyk7cmV0dXJuIGZhbHNlfX0pO2lmKGQuZGF0YShhLnRhcmdldCwic29ydGFibGUtaXRlbSIpPT1lKWM9ZChhLnRhcmdldCk7aWYoIWMpcmV0dXJuIGZhbHNlO2lmKHRoaXMub3B0aW9ucy5oYW5kbGUmJiFiKXt2YXIgZj1mYWxzZTsNZCh0aGlzLm9wdGlvbnMuaGFuZGxlLGMpLmZpbmQoIioiKS5hbmRTZWxmKCkuZWFjaChmdW5jdGlvbigpe2lmKHRoaXM9PWEudGFyZ2V0KWY9dHJ1ZX0pO2lmKCFmKXJldHVybiBmYWxzZX10aGlzLmN1cnJlbnRJdGVtPWM7dGhpcy5fcmVtb3ZlQ3VycmVudHNGcm9tSXRlbXMoKTtyZXR1cm4gdHJ1ZX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oYSxiLGMpe2I9dGhpcy5vcHRpb25zO3ZhciBlPXRoaXM7dGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXM7dGhpcy5yZWZyZXNoUG9zaXRpb25zKCk7dGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVyKGEpO3RoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKTt0aGlzLl9jYWNoZU1hcmdpbnMoKTt0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoKTt0aGlzLm9mZnNldD10aGlzLmN1cnJlbnRJdGVtLm9mZnNldCgpO3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LQ10aGlzLm1hcmdpbnMubGVmdH07dGhpcy5oZWxwZXIuY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIik7dGhpcy5jc3NQb3NpdGlvbj10aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIik7ZC5leHRlbmQodGhpcy5vZmZzZXQse2NsaWNrOntsZWZ0OmEucGFnZVgtdGhpcy5vZmZzZXQubGVmdCx0b3A6YS5wYWdlWS10aGlzLm9mZnNldC50b3B9LHBhcmVudDp0aGlzLl9nZXRQYXJlbnRPZmZzZXQoKSxyZWxhdGl2ZTp0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfSk7dGhpcy5vcmlnaW5hbFBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oYSk7dGhpcy5vcmlnaW5hbFBhZ2VYPWEucGFnZVg7dGhpcy5vcmlnaW5hbFBhZ2VZPWEucGFnZVk7Yi5jdXJzb3JBdCYmdGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihiLmN1cnNvckF0KTt0aGlzLmRvbVBvc2l0aW9uPXtwcmV2OnRoaXMuY3VycmVudEl0ZW0ucHJldigpWzBdLHBhcmVudDp0aGlzLmN1cnJlbnRJdGVtLnBhcmVudCgpWzBdfTsNdGhpcy5oZWxwZXJbMF0hPXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMuY3VycmVudEl0ZW0uaGlkZSgpO3RoaXMuX2NyZWF0ZVBsYWNlaG9sZGVyKCk7Yi5jb250YWlubWVudCYmdGhpcy5fc2V0Q29udGFpbm1lbnQoKTtpZihiLmN1cnNvcil7aWYoZCgiYm9keSIpLmNzcygiY3Vyc29yIikpdGhpcy5fc3RvcmVkQ3Vyc29yPWQoImJvZHkiKS5jc3MoImN1cnNvciIpO2QoImJvZHkiKS5jc3MoImN1cnNvciIsYi5jdXJzb3IpfWlmKGIub3BhY2l0eSl7aWYodGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IikpdGhpcy5fc3RvcmVkT3BhY2l0eT10aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiKTt0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLGIub3BhY2l0eSl9aWYoYi56SW5kZXgpe2lmKHRoaXMuaGVscGVyLmNzcygiekluZGV4IikpdGhpcy5fc3RvcmVkWkluZGV4PXRoaXMuaGVscGVyLmNzcygiekluZGV4Iik7dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLGIuekluZGV4KX1pZih0aGlzLnNjcm9sbFBhcmVudFswXSE9DWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXS50YWdOYW1lIT0iSFRNTCIpdGhpcy5vdmVyZmxvd09mZnNldD10aGlzLnNjcm9sbFBhcmVudC5vZmZzZXQoKTt0aGlzLl90cmlnZ2VyKCJzdGFydCIsYSx0aGlzLl91aUhhc2goKSk7dGhpcy5fcHJlc2VydmVIZWxwZXJQcm9wb3J0aW9uc3x8dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpO2lmKCFjKWZvcihjPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtjPj0wO2MtLSl0aGlzLmNvbnRhaW5lcnNbY10uX3RyaWdnZXIoImFjdGl2YXRlIixhLGUuX3VpSGFzaCh0aGlzKSk7aWYoZC51aS5kZG1hbmFnZXIpZC51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzO2QudWkuZGRtYW5hZ2VyJiYhYi5kcm9wQmVoYXZpb3VyJiZkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGEpO3RoaXMuZHJhZ2dpbmc9dHJ1ZTt0aGlzLmhlbHBlci5hZGRDbGFzcygidWktc29ydGFibGUtaGVscGVyIik7dGhpcy5fbW91c2VEcmFnKGEpOw1yZXR1cm4gdHJ1ZX0sX21vdXNlRHJhZzpmdW5jdGlvbihhKXt0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oYSk7dGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKTtpZighdGhpcy5sYXN0UG9zaXRpb25BYnMpdGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicztpZih0aGlzLm9wdGlvbnMuc2Nyb2xsKXt2YXIgYj10aGlzLm9wdGlvbnMsYz1mYWxzZTtpZih0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJnRoaXMuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWUhPSJIVE1MIil7aWYodGhpcy5vdmVyZmxvd09mZnNldC50b3ArdGhpcy5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0SGVpZ2h0LWEucGFnZVk8Yi5zY3JvbGxTZW5zaXRpdml0eSl0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9Yz10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3ArYi5zY3JvbGxTcGVlZDtlbHNlIGlmKGEucGFnZVktdGhpcy5vdmVyZmxvd09mZnNldC50b3A8DWIuc2Nyb2xsU2Vuc2l0aXZpdHkpdGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPWM9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLWIuc2Nyb2xsU3BlZWQ7aWYodGhpcy5vdmVyZmxvd09mZnNldC5sZWZ0K3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldFdpZHRoLWEucGFnZVg8Yi5zY3JvbGxTZW5zaXRpdml0eSl0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PWM9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdCtiLnNjcm9sbFNwZWVkO2Vsc2UgaWYoYS5wYWdlWC10aGlzLm92ZXJmbG93T2Zmc2V0LmxlZnQ8Yi5zY3JvbGxTZW5zaXRpdml0eSl0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PWM9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdC1iLnNjcm9sbFNwZWVkfWVsc2V7aWYoYS5wYWdlWS1kKGRvY3VtZW50KS5zY3JvbGxUb3AoKTxiLnNjcm9sbFNlbnNpdGl2aXR5KWM9ZChkb2N1bWVudCkuc2Nyb2xsVG9wKGQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLQ1iLnNjcm9sbFNwZWVkKTtlbHNlIGlmKGQod2luZG93KS5oZWlnaHQoKS0oYS5wYWdlWS1kKGRvY3VtZW50KS5zY3JvbGxUb3AoKSk8Yi5zY3JvbGxTZW5zaXRpdml0eSljPWQoZG9jdW1lbnQpLnNjcm9sbFRvcChkKGRvY3VtZW50KS5zY3JvbGxUb3AoKStiLnNjcm9sbFNwZWVkKTtpZihhLnBhZ2VYLWQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKTxiLnNjcm9sbFNlbnNpdGl2aXR5KWM9ZChkb2N1bWVudCkuc2Nyb2xsTGVmdChkKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCktYi5zY3JvbGxTcGVlZCk7ZWxzZSBpZihkKHdpbmRvdykud2lkdGgoKS0oYS5wYWdlWC1kKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkpPGIuc2Nyb2xsU2Vuc2l0aXZpdHkpYz1kKGRvY3VtZW50KS5zY3JvbGxMZWZ0KGQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKStiLnNjcm9sbFNwZWVkKX1jIT09ZmFsc2UmJmQudWkuZGRtYW5hZ2VyJiYhYi5kcm9wQmVoYXZpb3VyJiZkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLA1hKX10aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpO2lmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ5Iil0aGlzLmhlbHBlclswXS5zdHlsZS5sZWZ0PXRoaXMucG9zaXRpb24ubGVmdCsicHgiO2lmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ4Iil0aGlzLmhlbHBlclswXS5zdHlsZS50b3A9dGhpcy5wb3NpdGlvbi50b3ArInB4Ijtmb3IoYj10aGlzLml0ZW1zLmxlbmd0aC0xO2I+PTA7Yi0tKXtjPXRoaXMuaXRlbXNbYl07dmFyIGU9Yy5pdGVtWzBdLGY9dGhpcy5faW50ZXJzZWN0c1dpdGhQb2ludGVyKGMpO2lmKGYpaWYoZSE9dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5wbGFjZWhvbGRlcltmPT0xPyJuZXh0IjoicHJldiJdKClbMF0hPWUmJiFkLnVpLmNvbnRhaW5zKHRoaXMucGxhY2Vob2xkZXJbMF0sZSkmJih0aGlzLm9wdGlvbnMudHlwZT09InNlbWktZHluYW1pYyI/IWQudWkuY29udGFpbnModGhpcy5lbGVtZW50WzBdLA1lKTp0cnVlKSl7dGhpcy5kaXJlY3Rpb249Zj09MT8iZG93biI6InVwIjtpZih0aGlzLm9wdGlvbnMudG9sZXJhbmNlPT0icG9pbnRlciJ8fHRoaXMuX2ludGVyc2VjdHNXaXRoU2lkZXMoYykpdGhpcy5fcmVhcnJhbmdlKGEsYyk7ZWxzZSBicmVhazt0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLGEsdGhpcy5fdWlIYXNoKCkpO2JyZWFrfX10aGlzLl9jb250YWN0Q29udGFpbmVycyhhKTtkLnVpLmRkbWFuYWdlciYmZC51aS5kZG1hbmFnZXIuZHJhZyh0aGlzLGEpO3RoaXMuX3RyaWdnZXIoInNvcnQiLGEsdGhpcy5fdWlIYXNoKCkpO3RoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9zaXRpb25BYnM7cmV0dXJuIGZhbHNlfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGEsYil7aWYoYSl7ZC51aS5kZG1hbmFnZXImJiF0aGlzLm9wdGlvbnMuZHJvcEJlaGF2aW91ciYmZC51aS5kZG1hbmFnZXIuZHJvcCh0aGlzLGEpO2lmKHRoaXMub3B0aW9ucy5yZXZlcnQpe3ZhciBjPXRoaXM7Yj1jLnBsYWNlaG9sZGVyLm9mZnNldCgpOw1jLnJldmVydGluZz10cnVlO2QodGhpcy5oZWxwZXIpLmFuaW1hdGUoe2xlZnQ6Yi5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LWMubWFyZ2lucy5sZWZ0Kyh0aGlzLm9mZnNldFBhcmVudFswXT09ZG9jdW1lbnQuYm9keT8wOnRoaXMub2Zmc2V0UGFyZW50WzBdLnNjcm9sbExlZnQpLHRvcDpiLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLWMubWFyZ2lucy50b3ArKHRoaXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsVG9wKX0scGFyc2VJbnQodGhpcy5vcHRpb25zLnJldmVydCwxMCl8fDUwMCxmdW5jdGlvbigpe2MuX2NsZWFyKGEpfSl9ZWxzZSB0aGlzLl9jbGVhcihhLGIpO3JldHVybiBmYWxzZX19LGNhbmNlbDpmdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYodGhpcy5kcmFnZ2luZyl7dGhpcy5fbW91c2VVcCh7dGFyZ2V0Om51bGx9KTt0aGlzLm9wdGlvbnMuaGVscGVyPT0ib3JpZ2luYWwiP3RoaXMuY3VycmVudEl0ZW0uY3NzKHRoaXMuX3N0b3JlZENTUykucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpOg10aGlzLmN1cnJlbnRJdGVtLnNob3coKTtmb3IodmFyIGI9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2I+PTA7Yi0tKXt0aGlzLmNvbnRhaW5lcnNbYl0uX3RyaWdnZXIoImRlYWN0aXZhdGUiLG51bGwsYS5fdWlIYXNoKHRoaXMpKTtpZih0aGlzLmNvbnRhaW5lcnNbYl0uY29udGFpbmVyQ2FjaGUub3Zlcil7dGhpcy5jb250YWluZXJzW2JdLl90cmlnZ2VyKCJvdXQiLG51bGwsYS5fdWlIYXNoKHRoaXMpKTt0aGlzLmNvbnRhaW5lcnNbYl0uY29udGFpbmVyQ2FjaGUub3Zlcj0wfX19aWYodGhpcy5wbGFjZWhvbGRlcil7dGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlJiZ0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wbGFjZWhvbGRlclswXSk7dGhpcy5vcHRpb25zLmhlbHBlciE9Im9yaWdpbmFsIiYmdGhpcy5oZWxwZXImJnRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUmJnRoaXMuaGVscGVyLnJlbW92ZSgpO2QuZXh0ZW5kKHRoaXMse2hlbHBlcjpudWxsLA1kcmFnZ2luZzpmYWxzZSxyZXZlcnRpbmc6ZmFsc2UsX25vRmluYWxTb3J0Om51bGx9KTt0aGlzLmRvbVBvc2l0aW9uLnByZXY/ZCh0aGlzLmRvbVBvc2l0aW9uLnByZXYpLmFmdGVyKHRoaXMuY3VycmVudEl0ZW0pOmQodGhpcy5kb21Qb3NpdGlvbi5wYXJlbnQpLnByZXBlbmQodGhpcy5jdXJyZW50SXRlbSl9cmV0dXJuIHRoaXN9LHNlcmlhbGl6ZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KGEmJmEuY29ubmVjdGVkKSxjPVtdO2E9YXx8e307ZChiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9KGQoYS5pdGVtfHx0aGlzKS5hdHRyKGEuYXR0cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKGEuZXhwcmVzc2lvbnx8LyguKylbLT1fXSguKykvKTtpZihlKWMucHVzaCgoYS5rZXl8fGVbMV0rIltdIikrIj0iKyhhLmtleSYmYS5leHByZXNzaW9uP2VbMV06ZVsyXSkpfSk7IWMubGVuZ3RoJiZhLmtleSYmYy5wdXNoKGEua2V5KyI9Iik7cmV0dXJuIGMuam9pbigiJiIpfSwNdG9BcnJheTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KGEmJmEuY29ubmVjdGVkKSxjPVtdO2E9YXx8e307Yi5lYWNoKGZ1bmN0aW9uKCl7Yy5wdXNoKGQoYS5pdGVtfHx0aGlzKS5hdHRyKGEuYXR0cmlidXRlfHwiaWQiKXx8IiIpfSk7cmV0dXJuIGN9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnBvc2l0aW9uQWJzLmxlZnQsYz1iK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsZT10aGlzLnBvc2l0aW9uQWJzLnRvcCxmPWUrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsZz1hLmxlZnQsaD1nK2Eud2lkdGgsaT1hLnRvcCxrPWkrYS5oZWlnaHQsaj10aGlzLm9mZnNldC5jbGljay50b3AsbD10aGlzLm9mZnNldC5jbGljay5sZWZ0O2o9ZStqPmkmJmUrajxrJiZiK2w+ZyYmYitsPGg7cmV0dXJuIHRoaXMub3B0aW9ucy50b2xlcmFuY2U9PSJwb2ludGVyInx8dGhpcy5vcHRpb25zLmZvcmNlUG9pbnRlckZvckNvbnRhaW5lcnN8fA10aGlzLm9wdGlvbnMudG9sZXJhbmNlIT0icG9pbnRlciImJnRoaXMuaGVscGVyUHJvcG9ydGlvbnNbdGhpcy5mbG9hdGluZz8id2lkdGgiOiJoZWlnaHQiXT5hW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0/ajpnPGIrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yJiZjLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMjxoJiZpPGUrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMiYmZi10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPGt9LF9pbnRlcnNlY3RzV2l0aFBvaW50ZXI6ZnVuY3Rpb24oYSl7dmFyIGI9ZC51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCxhLnRvcCxhLmhlaWdodCk7YT1kLnVpLmlzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQsYS5sZWZ0LGEud2lkdGgpO2I9YiYmYTthPXRoaXMuX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbigpOw12YXIgYz10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO2lmKCFiKXJldHVybiBmYWxzZTtyZXR1cm4gdGhpcy5mbG9hdGluZz9jJiZjPT0icmlnaHQifHxhPT0iZG93biI/MjoxOmEmJihhPT0iZG93biI/MjoxKX0sX2ludGVyc2VjdHNXaXRoU2lkZXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZC51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCxhLnRvcCthLmhlaWdodC8yLGEuaGVpZ2h0KTthPWQudWkuaXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCxhLmxlZnQrYS53aWR0aC8yLGEud2lkdGgpO3ZhciBjPXRoaXMuX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbigpLGU9dGhpcy5fZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb24oKTtyZXR1cm4gdGhpcy5mbG9hdGluZyYmZT9lPT0icmlnaHQiJiZhfHxlPT0ibGVmdCImJiFhOmMmJihjPT0iZG93biImJmJ8fGM9PSJ1cCImJiFiKX0sDV9nZXREcmFnVmVydGljYWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvc2l0aW9uQWJzLnRvcC10aGlzLmxhc3RQb3NpdGlvbkFicy50b3A7cmV0dXJuIGEhPTAmJihhPjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gYSE9MCYmKGE+MD8icmlnaHQiOiJsZWZ0Iil9LHJlZnJlc2g6ZnVuY3Rpb24oYSl7dGhpcy5fcmVmcmVzaEl0ZW1zKGEpO3RoaXMucmVmcmVzaFBvc2l0aW9ucygpO3JldHVybiB0aGlzfSxfY29ubmVjdFdpdGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7cmV0dXJuIGEuY29ubmVjdFdpdGguY29uc3RydWN0b3I9PVN0cmluZz9bYS5jb25uZWN0V2l0aF06YS5jb25uZWN0V2l0aH0sX2dldEl0ZW1zQXNqUXVlcnk6ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxlPXRoaXMuX2Nvbm5lY3RXaXRoKCk7DWlmKGUmJmEpZm9yKGE9ZS5sZW5ndGgtMTthPj0wO2EtLSlmb3IodmFyIGY9ZChlW2FdKSxnPWYubGVuZ3RoLTE7Zz49MDtnLS0pe3ZhciBoPWQuZGF0YShmW2ddLCJzb3J0YWJsZSIpO2lmKGgmJmghPXRoaXMmJiFoLm9wdGlvbnMuZGlzYWJsZWQpYy5wdXNoKFtkLmlzRnVuY3Rpb24oaC5vcHRpb25zLml0ZW1zKT9oLm9wdGlvbnMuaXRlbXMuY2FsbChoLmVsZW1lbnQpOmQoaC5vcHRpb25zLml0ZW1zLGguZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSxoXSl9Yy5wdXNoKFtkLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnQsbnVsbCx7b3B0aW9uczp0aGlzLm9wdGlvbnMsaXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZCh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KS5ub3QoIi51aS1zb3J0YWJsZS1oZWxwZXIiKS5ub3QoIi51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciIpLA10aGlzXSk7Zm9yKGE9Yy5sZW5ndGgtMTthPj0wO2EtLSljW2FdWzBdLmVhY2goZnVuY3Rpb24oKXtiLnB1c2godGhpcyl9KTtyZXR1cm4gZChiKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuY3VycmVudEl0ZW0uZmluZCgiOmRhdGEoc29ydGFibGUtaXRlbSkiKSxiPTA7Yjx0aGlzLml0ZW1zLmxlbmd0aDtiKyspZm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYVtjXT09dGhpcy5pdGVtc1tiXS5pdGVtWzBdJiZ0aGlzLml0ZW1zLnNwbGljZShiLDEpfSxfcmVmcmVzaEl0ZW1zOmZ1bmN0aW9uKGEpe3RoaXMuaXRlbXM9W107dGhpcy5jb250YWluZXJzPVt0aGlzXTt2YXIgYj10aGlzLml0ZW1zLGM9W1tkLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sYSx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZCh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSwNdGhpc11dLGU9dGhpcy5fY29ubmVjdFdpdGgoKTtpZihlKWZvcih2YXIgZj1lLmxlbmd0aC0xO2Y+PTA7Zi0tKWZvcih2YXIgZz1kKGVbZl0pLGg9Zy5sZW5ndGgtMTtoPj0wO2gtLSl7dmFyIGk9ZC5kYXRhKGdbaF0sInNvcnRhYmxlIik7aWYoaSYmaSE9dGhpcyYmIWkub3B0aW9ucy5kaXNhYmxlZCl7Yy5wdXNoKFtkLmlzRnVuY3Rpb24oaS5vcHRpb25zLml0ZW1zKT9pLm9wdGlvbnMuaXRlbXMuY2FsbChpLmVsZW1lbnRbMF0sYSx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZChpLm9wdGlvbnMuaXRlbXMsaS5lbGVtZW50KSxpXSk7dGhpcy5jb250YWluZXJzLnB1c2goaSl9fWZvcihmPWMubGVuZ3RoLTE7Zj49MDtmLS0pe2E9Y1tmXVsxXTtlPWNbZl1bMF07aD0wO2ZvcihnPWUubGVuZ3RoO2g8ZztoKyspe2k9ZChlW2hdKTtpLmRhdGEoInNvcnRhYmxlLWl0ZW0iLGEpO2IucHVzaCh7aXRlbTppLGluc3RhbmNlOmEsd2lkdGg6MCxoZWlnaHQ6MCxsZWZ0OjAsdG9wOjB9KX19fSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKGEpe2lmKHRoaXMub2Zmc2V0UGFyZW50JiYNdGhpcy5oZWxwZXIpdGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpO2Zvcih2YXIgYj10aGlzLml0ZW1zLmxlbmd0aC0xO2I+PTA7Yi0tKXt2YXIgYz10aGlzLml0ZW1zW2JdLGU9dGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQ/ZCh0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudCxjLml0ZW0pOmMuaXRlbTtpZighYSl7Yy53aWR0aD1lLm91dGVyV2lkdGgoKTtjLmhlaWdodD1lLm91dGVySGVpZ2h0KCl9ZT1lLm9mZnNldCgpO2MubGVmdD1lLmxlZnQ7Yy50b3A9ZS50b3B9aWYodGhpcy5vcHRpb25zLmN1c3RvbSYmdGhpcy5vcHRpb25zLmN1c3RvbS5yZWZyZXNoQ29udGFpbmVycyl0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzLmNhbGwodGhpcyk7ZWxzZSBmb3IoYj10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7Yj49MDtiLS0pe2U9dGhpcy5jb250YWluZXJzW2JdLmVsZW1lbnQub2Zmc2V0KCk7dGhpcy5jb250YWluZXJzW2JdLmNvbnRhaW5lckNhY2hlLmxlZnQ9DWUubGVmdDt0aGlzLmNvbnRhaW5lcnNbYl0uY29udGFpbmVyQ2FjaGUudG9wPWUudG9wO3RoaXMuY29udGFpbmVyc1tiXS5jb250YWluZXJDYWNoZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbYl0uZWxlbWVudC5vdXRlcldpZHRoKCk7dGhpcy5jb250YWluZXJzW2JdLmNvbnRhaW5lckNhY2hlLmhlaWdodD10aGlzLmNvbnRhaW5lcnNbYl0uZWxlbWVudC5vdXRlckhlaWdodCgpfXJldHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dGhpcyxjPWIub3B0aW9ucztpZighYy5wbGFjZWhvbGRlcnx8Yy5wbGFjZWhvbGRlci5jb25zdHJ1Y3Rvcj09U3RyaW5nKXt2YXIgZT1jLnBsYWNlaG9sZGVyO2MucGxhY2Vob2xkZXI9e2VsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZj1kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYi5jdXJyZW50SXRlbVswXS5ub2RlTmFtZSkpLmFkZENsYXNzKGV8fGIuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUtcGxhY2Vob2xkZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIilbMF07DWlmKCFlKWYuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjtyZXR1cm4gZn0sdXBkYXRlOmZ1bmN0aW9uKGYsZyl7aWYoIShlJiYhYy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkpe2cuaGVpZ2h0KCl8fGcuaGVpZ2h0KGIuY3VycmVudEl0ZW0uaW5uZXJIZWlnaHQoKS1wYXJzZUludChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1RvcCIpfHwwLDEwKS1wYXJzZUludChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0JvdHRvbSIpfHwwLDEwKSk7Zy53aWR0aCgpfHxnLndpZHRoKGIuY3VycmVudEl0ZW0uaW5uZXJXaWR0aCgpLXBhcnNlSW50KGIuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nTGVmdCIpfHwwLDEwKS1wYXJzZUludChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1JpZ2h0Iil8fDAsMTApKX19fX1iLnBsYWNlaG9sZGVyPWQoYy5wbGFjZWhvbGRlci5lbGVtZW50LmNhbGwoYi5lbGVtZW50LGIuY3VycmVudEl0ZW0pKTtiLmN1cnJlbnRJdGVtLmFmdGVyKGIucGxhY2Vob2xkZXIpOw1jLnBsYWNlaG9sZGVyLnVwZGF0ZShiLGIucGxhY2Vob2xkZXIpfSxfY29udGFjdENvbnRhaW5lcnM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPW51bGwsYz1udWxsLGU9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2U+PTA7ZS0tKWlmKCFkLnVpLmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5jb250YWluZXJzW2VdLmVsZW1lbnRbMF0pKWlmKHRoaXMuX2ludGVyc2VjdHNXaXRoKHRoaXMuY29udGFpbmVyc1tlXS5jb250YWluZXJDYWNoZSkpe2lmKCEoYiYmZC51aS5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbZV0uZWxlbWVudFswXSxiLmVsZW1lbnRbMF0pKSl7Yj10aGlzLmNvbnRhaW5lcnNbZV07Yz1lfX1lbHNlIGlmKHRoaXMuY29udGFpbmVyc1tlXS5jb250YWluZXJDYWNoZS5vdmVyKXt0aGlzLmNvbnRhaW5lcnNbZV0uX3RyaWdnZXIoIm91dCIsYSx0aGlzLl91aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tlXS5jb250YWluZXJDYWNoZS5vdmVyPTB9aWYoYilpZih0aGlzLmNvbnRhaW5lcnMubGVuZ3RoPT09DTEpe3RoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dlcigib3ZlciIsYSx0aGlzLl91aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tjXS5jb250YWluZXJDYWNoZS5vdmVyPTF9ZWxzZSBpZih0aGlzLmN1cnJlbnRDb250YWluZXIhPXRoaXMuY29udGFpbmVyc1tjXSl7Yj0xRTQ7ZT1udWxsO2Zvcih2YXIgZj10aGlzLnBvc2l0aW9uQWJzW3RoaXMuY29udGFpbmVyc1tjXS5mbG9hdGluZz8ibGVmdCI6InRvcCJdLGc9dGhpcy5pdGVtcy5sZW5ndGgtMTtnPj0wO2ctLSlpZihkLnVpLmNvbnRhaW5zKHRoaXMuY29udGFpbmVyc1tjXS5lbGVtZW50WzBdLHRoaXMuaXRlbXNbZ10uaXRlbVswXSkpe3ZhciBoPXRoaXMuaXRlbXNbZ11bdGhpcy5jb250YWluZXJzW2NdLmZsb2F0aW5nPyJsZWZ0IjoidG9wIl07aWYoTWF0aC5hYnMoaC1mKTxiKXtiPU1hdGguYWJzKGgtZik7ZT10aGlzLml0ZW1zW2ddfX1pZihlfHx0aGlzLm9wdGlvbnMuZHJvcE9uRW1wdHkpe3RoaXMuY3VycmVudENvbnRhaW5lcj0NdGhpcy5jb250YWluZXJzW2NdO2U/dGhpcy5fcmVhcnJhbmdlKGEsZSxudWxsLHRydWUpOnRoaXMuX3JlYXJyYW5nZShhLG51bGwsdGhpcy5jb250YWluZXJzW2NdLmVsZW1lbnQsdHJ1ZSk7dGhpcy5fdHJpZ2dlcigiY2hhbmdlIixhLHRoaXMuX3VpSGFzaCgpKTt0aGlzLmNvbnRhaW5lcnNbY10uX3RyaWdnZXIoImNoYW5nZSIsYSx0aGlzLl91aUhhc2godGhpcykpO3RoaXMub3B0aW9ucy5wbGFjZWhvbGRlci51cGRhdGUodGhpcy5jdXJyZW50Q29udGFpbmVyLHRoaXMucGxhY2Vob2xkZXIpO3RoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dlcigib3ZlciIsYSx0aGlzLl91aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tjXS5jb250YWluZXJDYWNoZS5vdmVyPTF9fX0sX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnM7YT1kLmlzRnVuY3Rpb24oYi5oZWxwZXIpP2QoYi5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFthLHRoaXMuY3VycmVudEl0ZW1dKSk6DWIuaGVscGVyPT0iY2xvbmUiP3RoaXMuY3VycmVudEl0ZW0uY2xvbmUoKTp0aGlzLmN1cnJlbnRJdGVtO2EucGFyZW50cygiYm9keSIpLmxlbmd0aHx8ZChiLmFwcGVuZFRvIT0icGFyZW50Ij9iLmFwcGVuZFRvOnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSlbMF0uYXBwZW5kQ2hpbGQoYVswXSk7aWYoYVswXT09dGhpcy5jdXJyZW50SXRlbVswXSl0aGlzLl9zdG9yZWRDU1M9e3dpZHRoOnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUud2lkdGgsaGVpZ2h0OnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUuaGVpZ2h0LHBvc2l0aW9uOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJwb3NpdGlvbiIpLHRvcDp0aGlzLmN1cnJlbnRJdGVtLmNzcygidG9wIiksbGVmdDp0aGlzLmN1cnJlbnRJdGVtLmNzcygibGVmdCIpfTtpZihhWzBdLnN0eWxlLndpZHRoPT0iInx8Yi5mb3JjZUhlbHBlclNpemUpYS53aWR0aCh0aGlzLmN1cnJlbnRJdGVtLndpZHRoKCkpO2lmKGFbMF0uc3R5bGUuaGVpZ2h0PT0NIiJ8fGIuZm9yY2VIZWxwZXJTaXplKWEuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpO3JldHVybiBhfSxfYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcjpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09InN0cmluZyIpYT1hLnNwbGl0KCIgIik7aWYoZC5pc0FycmF5KGEpKWE9e2xlZnQ6K2FbMF0sdG9wOithWzFdfHwwfTtpZigibGVmdCJpbiBhKXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9YS5sZWZ0K3RoaXMubWFyZ2lucy5sZWZ0O2lmKCJyaWdodCJpbiBhKXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC1hLnJpZ2h0K3RoaXMubWFyZ2lucy5sZWZ0O2lmKCJ0b3AiaW4gYSl0aGlzLm9mZnNldC5jbGljay50b3A9YS50b3ArdGhpcy5tYXJnaW5zLnRvcDtpZigiYm90dG9tImluIGEpdGhpcy5vZmZzZXQuY2xpY2sudG9wPXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LWEuYm90dG9tK3RoaXMubWFyZ2lucy50b3B9LF9nZXRQYXJlbnRPZmZzZXQ6ZnVuY3Rpb24oKXt0aGlzLm9mZnNldFBhcmVudD0NdGhpcy5oZWxwZXIub2Zmc2V0UGFyZW50KCk7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQub2Zmc2V0KCk7aWYodGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZkLnVpLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSl7YS5sZWZ0Kz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk7YS50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpfWlmKHRoaXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5ib2R5fHx0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lJiZ0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PSJodG1sIiYmZC5icm93c2VyLm1zaWUpYT17dG9wOjAsbGVmdDowfTtyZXR1cm57dG9wOmEudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OmEubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwNMTApfHwwKX19LF9nZXRSZWxhdGl2ZU9mZnNldDpmdW5jdGlvbigpe2lmKHRoaXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSIpe3ZhciBhPXRoaXMuY3VycmVudEl0ZW0ucG9zaXRpb24oKTtyZXR1cm57dG9wOmEudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDphLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpfX1lbHNlIHJldHVybnt0b3A6MCxsZWZ0OjB9fSxfY2FjaGVNYXJnaW5zOmZ1bmN0aW9uKCl7dGhpcy5tYXJnaW5zPXtsZWZ0OnBhcnNlSW50KHRoaXMuY3VycmVudEl0ZW0uY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luVG9wIiksMTApfHwwfX0sX2NhY2hlSGVscGVyUHJvcG9ydGlvbnM6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlclByb3BvcnRpb25zPQ17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zO2lmKGEuY29udGFpbm1lbnQ9PSJwYXJlbnQiKWEuY29udGFpbm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZTtpZihhLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQifHxhLmNvbnRhaW5tZW50PT0id2luZG93Iil0aGlzLmNvbnRhaW5tZW50PVswLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsMC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCxkKGEuY29udGFpbm1lbnQ9PSJkb2N1bWVudCI/ZG9jdW1lbnQ6d2luZG93KS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKGQoYS5jb250YWlubWVudD09ImRvY3VtZW50Ij9kb2N1bWVudDp3aW5kb3cpLmhlaWdodCgpfHwNZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF07aWYoIS9eKGRvY3VtZW50fHdpbmRvd3xwYXJlbnQpJC8udGVzdChhLmNvbnRhaW5tZW50KSl7dmFyIGI9ZChhLmNvbnRhaW5tZW50KVswXTthPWQoYS5jb250YWlubWVudCkub2Zmc2V0KCk7dmFyIGM9ZChiKS5jc3MoIm92ZXJmbG93IikhPSJoaWRkZW4iO3RoaXMuY29udGFpbm1lbnQ9W2EubGVmdCsocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGQoYikuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLmxlZnQsYS50b3ArKHBhcnNlSW50KGQoYikuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGQoYikuY3NzKCJwYWRkaW5nVG9wIiksMTApfHwwKS10aGlzLm1hcmdpbnMudG9wLGEubGVmdCsoYz9NYXRoLm1heChiLnNjcm9sbFdpZHRoLA1iLm9mZnNldFdpZHRoKTpiLm9mZnNldFdpZHRoKS0ocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGQoYikuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsYS50b3ArKGM/TWF0aC5tYXgoYi5zY3JvbGxIZWlnaHQsYi5vZmZzZXRIZWlnaHQpOmIub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoZChiKS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdfX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGEsYil7aWYoIWIpYj10aGlzLnBvc2l0aW9uO2E9YT09ImFic29sdXRlIj8xOi0xO3ZhciBjPXRoaXMuY3NzUG9zaXRpb249PSJhYnNvbHV0ZSImJiEodGhpcy5zY3JvbGxQYXJlbnRbMF0hPQ1kb2N1bWVudCYmZC51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkpP3RoaXMub2Zmc2V0UGFyZW50OnRoaXMuc2Nyb2xsUGFyZW50LGU9LyhodG1sfGJvZHkpL2kudGVzdChjWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6Yi50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKmErdGhpcy5vZmZzZXQucGFyZW50LnRvcCphLShkLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmU/MDpjLnNjcm9sbFRvcCgpKSphKSxsZWZ0OmIubGVmdCt0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0KmErdGhpcy5vZmZzZXQucGFyZW50LmxlZnQqYS0oZC5icm93c2VyLnNhZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6DWU/MDpjLnNjcm9sbExlZnQoKSkqYSl9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnMsYz10aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUiJiYhKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmZC51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkpP3RoaXMub2Zmc2V0UGFyZW50OnRoaXMuc2Nyb2xsUGFyZW50LGU9LyhodG1sfGJvZHkpL2kudGVzdChjWzBdLnRhZ05hbWUpO2lmKHRoaXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSImJiEodGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9dGhpcy5vZmZzZXRQYXJlbnRbMF0pKXRoaXMub2Zmc2V0LnJlbGF0aXZlPXRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCk7dmFyIGY9YS5wYWdlWCxnPWEucGFnZVk7aWYodGhpcy5vcmlnaW5hbFBvc2l0aW9uKXtpZih0aGlzLmNvbnRhaW5tZW50KXtpZihhLnBhZ2VYLQ10aGlzLm9mZnNldC5jbGljay5sZWZ0PHRoaXMuY29udGFpbm1lbnRbMF0pZj10aGlzLmNvbnRhaW5tZW50WzBdK3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQ7aWYoYS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5jb250YWlubWVudFsxXSlnPXRoaXMuY29udGFpbm1lbnRbMV0rdGhpcy5vZmZzZXQuY2xpY2sudG9wO2lmKGEucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD50aGlzLmNvbnRhaW5tZW50WzJdKWY9dGhpcy5jb250YWlubWVudFsyXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0O2lmKGEucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9wPnRoaXMuY29udGFpbm1lbnRbM10pZz10aGlzLmNvbnRhaW5tZW50WzNdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcH1pZihiLmdyaWQpe2c9dGhpcy5vcmlnaW5hbFBhZ2VZK01hdGgucm91bmQoKGctdGhpcy5vcmlnaW5hbFBhZ2VZKS9iLmdyaWRbMV0pKmIuZ3JpZFsxXTtnPXRoaXMuY29udGFpbm1lbnQ/IShnLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDwNdGhpcy5jb250YWlubWVudFsxXXx8Zy10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXSk/ZzohKGctdGhpcy5vZmZzZXQuY2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV0pP2ctYi5ncmlkWzFdOmcrYi5ncmlkWzFdOmc7Zj10aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoZi10aGlzLm9yaWdpbmFsUGFnZVgpL2IuZ3JpZFswXSkqYi5ncmlkWzBdO2Y9dGhpcy5jb250YWlubWVudD8hKGYtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdfHxmLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSk/ZjohKGYtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdKT9mLWIuZ3JpZFswXTpmK2IuZ3JpZFswXTpmfX1yZXR1cm57dG9wOmctdGhpcy5vZmZzZXQuY2xpY2sudG9wLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wKyhkLmJyb3dzZXIuc2FmYXJpJiYNdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmU/MDpjLnNjcm9sbFRvcCgpKSxsZWZ0OmYtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KyhkLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6dGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmU/MDpjLnNjcm9sbExlZnQoKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKGEsYixjLGUpe2M/Y1swXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTpiLml0ZW1bMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlclswXSx0aGlzLmRpcmVjdGlvbj09ImRvd24iP2IuaXRlbVswXTpiLml0ZW1bMF0ubmV4dFNpYmxpbmcpO3RoaXMuY291bnRlcj0NdGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7dmFyIGY9dGhpcyxnPXRoaXMuY291bnRlcjt3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2c9PWYuY291bnRlciYmZi5yZWZyZXNoUG9zaXRpb25zKCFlKX0sMCl9LF9jbGVhcjpmdW5jdGlvbihhLGIpe3RoaXMucmV2ZXJ0aW5nPWZhbHNlO3ZhciBjPVtdOyF0aGlzLl9ub0ZpbmFsU29ydCYmdGhpcy5jdXJyZW50SXRlbVswXS5wYXJlbnROb2RlJiZ0aGlzLnBsYWNlaG9sZGVyLmJlZm9yZSh0aGlzLmN1cnJlbnRJdGVtKTt0aGlzLl9ub0ZpbmFsU29ydD1udWxsO2lmKHRoaXMuaGVscGVyWzBdPT10aGlzLmN1cnJlbnRJdGVtWzBdKXtmb3IodmFyIGUgaW4gdGhpcy5fc3RvcmVkQ1NTKWlmKHRoaXMuX3N0b3JlZENTU1tlXT09ImF1dG8ifHx0aGlzLl9zdG9yZWRDU1NbZV09PSJzdGF0aWMiKXRoaXMuX3N0b3JlZENTU1tlXT0iIjt0aGlzLmN1cnJlbnRJdGVtLmNzcyh0aGlzLl9zdG9yZWRDU1MpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oZWxwZXIiKX1lbHNlIHRoaXMuY3VycmVudEl0ZW0uc2hvdygpOw10aGlzLmZyb21PdXRzaWRlJiYhYiYmYy5wdXNoKGZ1bmN0aW9uKGYpe3RoaXMuX3RyaWdnZXIoInJlY2VpdmUiLGYsdGhpcy5fdWlIYXNoKHRoaXMuZnJvbU91dHNpZGUpKX0pO2lmKCh0aGlzLmZyb21PdXRzaWRlfHx0aGlzLmRvbVBvc2l0aW9uLnByZXYhPXRoaXMuY3VycmVudEl0ZW0ucHJldigpLm5vdCgiLnVpLXNvcnRhYmxlLWhlbHBlciIpWzBdfHx0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCE9dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXSkmJiFiKWMucHVzaChmdW5jdGlvbihmKXt0aGlzLl90cmlnZ2VyKCJ1cGRhdGUiLGYsdGhpcy5fdWlIYXNoKCkpfSk7aWYoIWQudWkuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHRoaXMuY3VycmVudEl0ZW1bMF0pKXtifHxjLnB1c2goZnVuY3Rpb24oZil7dGhpcy5fdHJpZ2dlcigicmVtb3ZlIixmLHRoaXMuX3VpSGFzaCgpKX0pO2ZvcihlPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtlPj0wO2UtLSlpZihkLnVpLmNvbnRhaW5zKHRoaXMuY29udGFpbmVyc1tlXS5lbGVtZW50WzBdLA10aGlzLmN1cnJlbnRJdGVtWzBdKSYmIWIpe2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7Zi5fdHJpZ2dlcigicmVjZWl2ZSIsZyx0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tlXSkpO2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7Zi5fdHJpZ2dlcigidXBkYXRlIixnLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jb250YWluZXJzW2VdKSl9fWZvcihlPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtlPj0wO2UtLSl7Ynx8Yy5wdXNoKGZ1bmN0aW9uKGYpe3JldHVybiBmdW5jdGlvbihnKXtmLl90cmlnZ2VyKCJkZWFjdGl2YXRlIixnLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jb250YWluZXJzW2VdKSk7aWYodGhpcy5jb250YWluZXJzW2VdLmNvbnRhaW5lckNhY2hlLm92ZXIpe2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7Zi5fdHJpZ2dlcigib3V0IiwNZyx0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tlXSkpO3RoaXMuY29udGFpbmVyc1tlXS5jb250YWluZXJDYWNoZS5vdmVyPTB9fXRoaXMuX3N0b3JlZEN1cnNvciYmZCgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLl9zdG9yZWRDdXJzb3IpO3RoaXMuX3N0b3JlZE9wYWNpdHkmJnRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsdGhpcy5fc3RvcmVkT3BhY2l0eSk7aWYodGhpcy5fc3RvcmVkWkluZGV4KXRoaXMuaGVscGVyLmNzcygiekluZGV4Iix0aGlzLl9zdG9yZWRaSW5kZXg9PSJhdXRvIj8iIjp0aGlzLl9zdG9yZWRaSW5kZXgpO3RoaXMuZHJhZ2dpbmc9ZmFsc2U7aWYodGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsKXtpZighYil7dGhpcy5fdHJpZ2dlcigiYmVmb3JlU3RvcCIsYSx0aGlzLl91aUhhc2goKSk7Zm9yKGU9MDtlPGMubGVuZ3RoO2UrKyljW2VdLmNhbGwodGhpcyxhKTt0aGlzLl90cmlnZ2VyKCJzdG9wIixhLHRoaXMuX3VpSGFzaCgpKX1yZXR1cm4gZmFsc2V9Ynx8DXRoaXMuX3RyaWdnZXIoImJlZm9yZVN0b3AiLGEsdGhpcy5fdWlIYXNoKCkpO3RoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTt0aGlzLmhlbHBlclswXSE9dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5oZWxwZXIucmVtb3ZlKCk7dGhpcy5oZWxwZXI9bnVsbDtpZighYil7Zm9yKGU9MDtlPGMubGVuZ3RoO2UrKyljW2VdLmNhbGwodGhpcyxhKTt0aGlzLl90cmlnZ2VyKCJzdG9wIixhLHRoaXMuX3VpSGFzaCgpKX10aGlzLmZyb21PdXRzaWRlPWZhbHNlO3JldHVybiB0cnVlfSxfdHJpZ2dlcjpmdW5jdGlvbigpe2QuV2lkZ2V0LnByb3RvdHlwZS5fdHJpZ2dlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk9PT1mYWxzZSYmdGhpcy5jYW5jZWwoKX0sX3VpSGFzaDpmdW5jdGlvbihhKXt2YXIgYj1hfHx0aGlzO3JldHVybntoZWxwZXI6Yi5oZWxwZXIscGxhY2Vob2xkZXI6Yi5wbGFjZWhvbGRlcnx8ZChbXSkscG9zaXRpb246Yi5wb3NpdGlvbiwNb3JpZ2luYWxQb3NpdGlvbjpiLm9yaWdpbmFsUG9zaXRpb24sb2Zmc2V0OmIucG9zaXRpb25BYnMsaXRlbTpiLmN1cnJlbnRJdGVtLHNlbmRlcjphP2EuZWxlbWVudDpudWxsfX19KTtkLmV4dGVuZChkLnVpLnNvcnRhYmxlLHt2ZXJzaW9uOiIxLjguMTEifSl9KShqUXVlcnkpOw07]]></data>
	</file>
	<file>
	  <filename>/js/jq.ui.widget.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBVSSBXaWRnZXQgMS44LjcKICoKICogQ29weXJpZ2h0IDIwMTAsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1dpZGdldAogKi8KKGZ1bmN0aW9uKGIsail7aWYoYi5jbGVhbkRhdGEpe3ZhciBrPWIuY2xlYW5EYXRhO2IuY2xlYW5EYXRhPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYz0wLGQ7KGQ9YVtjXSkhPW51bGw7YysrKWIoZCkudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpO2soYSl9fWVsc2V7dmFyIGw9Yi5mbi5yZW1vdmU7Yi5mbi5yZW1vdmU9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoIWMpaWYoIWF8fGIuZmlsdGVyKGEsW3RoaXNdKS5sZW5ndGgpYigiKiIsdGhpcykuYWRkKFt0aGlzXSkuZWFjaChmdW5jdGlvbigpe2IodGhpcykudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpfSk7cmV0dXJuIGwuY2FsbChiKHRoaXMpLGEsYyl9KX19Yi53aWRnZXQ9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWEuc3BsaXQoIi4iKVswXSxmO2E9YS5zcGxpdCgiLiIpWzFdO2Y9ZSsiLSIrYTtpZighZCl7ZD1jO2M9Yi5XaWRnZXR9Yi5leHByWyI6Il1bZl09ZnVuY3Rpb24oaCl7cmV0dXJuISFiLmRhdGEoaCwKYSl9O2JbZV09YltlXXx8e307YltlXVthXT1mdW5jdGlvbihoLGcpe2FyZ3VtZW50cy5sZW5ndGgmJnRoaXMuX2NyZWF0ZVdpZGdldChoLGcpfTtjPW5ldyBjO2Mub3B0aW9ucz1iLmV4dGVuZCh0cnVlLHt9LGMub3B0aW9ucyk7YltlXVthXS5wcm90b3R5cGU9Yi5leHRlbmQodHJ1ZSxjLHtuYW1lc3BhY2U6ZSx3aWRnZXROYW1lOmEsd2lkZ2V0RXZlbnRQcmVmaXg6YltlXVthXS5wcm90b3R5cGUud2lkZ2V0RXZlbnRQcmVmaXh8fGEsd2lkZ2V0QmFzZUNsYXNzOmZ9LGQpO2Iud2lkZ2V0LmJyaWRnZShhLGJbZV1bYV0pfTtiLndpZGdldC5icmlkZ2U9ZnVuY3Rpb24oYSxjKXtiLmZuW2FdPWZ1bmN0aW9uKGQpe3ZhciBlPXR5cGVvZiBkPT09InN0cmluZyIsZj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaD10aGlzO2Q9IWUmJmYubGVuZ3RoP2IuZXh0ZW5kLmFwcGx5KG51bGwsW3RydWUsZF0uY29uY2F0KGYpKTpkO2lmKGUmJmQuY2hhckF0KDApPT09Il8iKXJldHVybiBoOwplP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBnPWIuZGF0YSh0aGlzLGEpLGk9ZyYmYi5pc0Z1bmN0aW9uKGdbZF0pP2dbZF0uYXBwbHkoZyxmKTpnO2lmKGkhPT1nJiZpIT09ail7aD1pO3JldHVybiBmYWxzZX19KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZz1iLmRhdGEodGhpcyxhKTtnP2cub3B0aW9uKGR8fHt9KS5faW5pdCgpOmIuZGF0YSh0aGlzLGEsbmV3IGMoZCx0aGlzKSl9KTtyZXR1cm4gaH19O2IuV2lkZ2V0PWZ1bmN0aW9uKGEsYyl7YXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGEsYyl9O2IuV2lkZ2V0LnByb3RvdHlwZT17d2lkZ2V0TmFtZToid2lkZ2V0Iix3aWRnZXRFdmVudFByZWZpeDoiIixvcHRpb25zOntkaXNhYmxlZDpmYWxzZX0sX2NyZWF0ZVdpZGdldDpmdW5jdGlvbihhLGMpe2IuZGF0YShjLHRoaXMud2lkZ2V0TmFtZSx0aGlzKTt0aGlzLmVsZW1lbnQ9YihjKTt0aGlzLm9wdGlvbnM9Yi5leHRlbmQodHJ1ZSx7fSx0aGlzLm9wdGlvbnMsCnRoaXMuX2dldENyZWF0ZU9wdGlvbnMoKSxhKTt2YXIgZD10aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJyZW1vdmUuIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oKXtkLmRlc3Ryb3koKX0pO3RoaXMuX2NyZWF0ZSgpO3RoaXMuX3RyaWdnZXIoImNyZWF0ZSIpO3RoaXMuX2luaXQoKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gYi5tZXRhZGF0YSYmYi5tZXRhZGF0YS5nZXQodGhpcy5lbGVtZW50WzBdKVt0aGlzLndpZGdldE5hbWVdfSxfY3JlYXRlOmZ1bmN0aW9uKCl7fSxfaW5pdDpmdW5jdGlvbigpe30sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSkucmVtb3ZlRGF0YSh0aGlzLndpZGdldE5hbWUpO3RoaXMud2lkZ2V0KCkudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKS5yZW1vdmVDbGFzcyh0aGlzLndpZGdldEJhc2VDbGFzcysiLWRpc2FibGVkIHVpLXN0YXRlLWRpc2FibGVkIil9LAp3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50fSxvcHRpb246ZnVuY3Rpb24oYSxjKXt2YXIgZD1hO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiBiLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMpO2lmKHR5cGVvZiBhPT09InN0cmluZyIpe2lmKGM9PT1qKXJldHVybiB0aGlzLm9wdGlvbnNbYV07ZD17fTtkW2FdPWN9dGhpcy5fc2V0T3B0aW9ucyhkKTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbnM6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcztiLmVhY2goYSxmdW5jdGlvbihkLGUpe2MuX3NldE9wdGlvbihkLGUpfSk7cmV0dXJuIHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24oYSxjKXt0aGlzLm9wdGlvbnNbYV09YztpZihhPT09ImRpc2FibGVkIil0aGlzLndpZGdldCgpW2M/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXSh0aGlzLndpZGdldEJhc2VDbGFzcysiLWRpc2FibGVkIHVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsYyk7cmV0dXJuIHRoaXN9LAplbmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsZmFsc2UpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbigiZGlzYWJsZWQiLHRydWUpfSxfdHJpZ2dlcjpmdW5jdGlvbihhLGMsZCl7dmFyIGU9dGhpcy5vcHRpb25zW2FdO2M9Yi5FdmVudChjKTtjLnR5cGU9KGE9PT10aGlzLndpZGdldEV2ZW50UHJlZml4P2E6dGhpcy53aWRnZXRFdmVudFByZWZpeCthKS50b0xvd2VyQ2FzZSgpO2Q9ZHx8e307aWYoYy5vcmlnaW5hbEV2ZW50KXthPWIuZXZlbnQucHJvcHMubGVuZ3RoO2Zvcih2YXIgZjthOyl7Zj1iLmV2ZW50LnByb3BzWy0tYV07Y1tmXT1jLm9yaWdpbmFsRXZlbnRbZl19fXRoaXMuZWxlbWVudC50cmlnZ2VyKGMsZCk7cmV0dXJuIShiLmlzRnVuY3Rpb24oZSkmJmUuY2FsbCh0aGlzLmVsZW1lbnRbMF0sYyxkKT09PWZhbHNlfHxjLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19fSkoalF1ZXJ5KTsKOwo=]]></data>
	</file>
	<file>
	  <filename>/js/jsLoader.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpzTG9hZGVyIC0gQSBKYXZhU2NyaXB0IGNsYXNzIHRvIGR5bmFtaWNhbGx5IGxvYWQganMgZmlsZXMgd2hlbiBuZWVkZWQKICogQGF1dGhvciBHZW9yZyBCdXNjaCAoZ2VvcmcuYnVzY2hAZ214Lm5ldCkKICogQGNvcHlyaWdodCAyMDExIEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogKiBAdmVyc2lvbiAxLjAKICogQGxpY2Vuc2UgR1BMCiAqLwoKaWYodHlwZW9mIGpzTG9hZGVyID09ICd1bmRlZmluZWQnKSB7Cglqc0xvYWRlciA9IHsKCQlkZWJ1ZzogZmFsc2UsCgkJbG9hZFNjcmlwdHM6IGZ1bmN0aW9uKCkgewoJCQl2YXIgaSA9IHRoaXMubG9hZGVycy5sZW5ndGg7CgkJCXRoaXMubG9hZGVycy5wdXNoKG5ldyB0aGlzLm9iamVjdChpKSk7CgkJCXZhciBhcmdzID0gKGFyZ3VtZW50c1swXSAmJiB0aGlzLnR5cGVPZihhcmd1bWVudHNbMF0pID09ICdvYmplY3QnID8gYXJndW1lbnRzWzBdIDogJycpOwoJCQlpZih0aGlzLmRlYnVnICYmIHR5cGVvZiBjb25zb2xlLmxvZyAhPSAndW5kZWZpbmVkJykgewoJCQkJY29uc29sZS5sb2coInN0YXJ0IGxvYWRpbmcgcHJvY2VzcyAiK2krIjtcbmFyZ3VtZW50czoiKTsKCQkJCWNvbnNvbGUubG9nKGFyZ3MpOwoJCQl9CgkJCXRoaXMubG9hZGVyc1tpXS5pbml0KGFyZ3MpOwoJCX0sCgkJbG9hZGVyczpuZXcgQXJyYXkoKSwKCQl0eXBlT2Y6IGZ1bmN0aW9uICh2YWx1ZSkgewoJCQl2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTsKCQkJaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7CgkJCQlpZiAodmFsdWUpIHsKCQkJCQlpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgewoJCQkJCQl0eXBlID0gJ2FycmF5JzsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCXR5cGUgPSAnbnVsbCc7CgkJCQl9CgkJCX0KCQkJcmV0dXJuIHR5cGU7CgkJfSwKCQlvYmplY3Q6IGZ1bmN0aW9uKGlkKSB7CgkJCXRoaXMuaWQgPSBpZDsKCQkJdGhpcy5vcHRpb25zID0gewoJCQkJaW5pdFRpbWVPdXQ6MTAwLAoJCQkJbG9hZFRpbWVPdXQ6MTAwMDAsCgkJCQlpbnRlcnZhbDoxMDAsCgkJCQljYWxsQmFjazogZnVuY3Rpb24gKHJlYWR5KSB7fSwKCQkJCWRlYnVnOmpzTG9hZGVyLmRlYnVnCgkJCX07CgkJCXRoaXMucmVhZHkgPSBmdW5jdGlvbiAoKSB7CgkJCQlmb3IodmFyIHggaW4gdGhpcy5zY3JpcHRzKSB7CgkJCQkJaWYoIXRoaXMuc2NyaXB0c1t4XS5yZWFkeSgpKSB7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQkJaWYoIXRoaXMuc2NyaXB0c1t4XS5jYWxsQmFja0NhbGxlZCkgewoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJfQoJCQkJaWYoIXRoaXMub3B0aW9ucy5kZWJ1ZykgewoJCQkJCWRlbGV0ZSBqc0xvYWRlci5sb2FkZXJzW3RoaXMuaWRdOwoJCQkJfQoJCQkJcmV0dXJuIHRydWU7CgkJCX07CgkJCXRoaXMuc2NyaXB0cyA9IHt9OwoJCQl0aGlzLmluaXQgPSBmdW5jdGlvbigpIHsKCQkJCWlmKGFyZ3VtZW50c1swXSAmJiBqc0xvYWRlci50eXBlT2YoYXJndW1lbnRzWzBdKSA9PSAnb2JqZWN0JykgewoJCQkJCWZvciAodmFyIGkgaW4gYXJndW1lbnRzWzBdKSB7CgkJCQkJCWlmICh0eXBlb2YgdGhpcy5vcHRpb25zW2ldICE9ICd1bmRlZmluZWQnKSB7CgkJCQkJCQl0aGlzLm9wdGlvbnNbaV0gPSBhcmd1bWVudHNbMF1baV07CgkJCQkJCX0KCQkJCQl9CgkJCQkJaWYodHlwZW9mIGFyZ3VtZW50c1swXS5zY3JpcHRzICE9ICd1bmRlZmluZWQnICYmIGpzTG9hZGVyLnR5cGVPZihhcmd1bWVudHNbMF0uc2NyaXB0cykgPT0gJ29iamVjdCcpIHsKCQkJCQkJdmFyIGNvdW50ID0gMDsKCQkJCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQkJCQlmb3IgKHZhciBqIGluIGFyZ3VtZW50c1swXS5zY3JpcHRzKSB7CgkJCQkJCQl2YXIgc2NyaXB0ID0gewoJCQkJCQkJCWluaXRUaW1lT3V0OiBzZWxmLm9wdGlvbnMuaW5pdFRpbWVPdXQsCgkJCQkJCQkJbG9hZFRpbWVPdXQ6IHNlbGYub3B0aW9ucy5sb2FkVGltZU91dCwKCQkJCQkJCQlpbnRlcnZhbDogc2VsZi5vcHRpb25zLmludGVydmFsLAoJCQkJCQkJCWNhbGxCYWNrOiBmdW5jdGlvbihyZWFkeSkge30sCgkJCQkJCQkJdXJsOicnLAoJCQkJCQkJCXJlYWR5OiBmdW5jdGlvbigpIHsKCQkJCQkJCQkJcmV0dXJuICh0eXBlb2Ygd2luZG93W3RoaXMuaWRdICE9ICd1bmRlZmluZWQnKTsKCQkJCQkJCQl9CgkJCQkJCQl9OwoJCQkJCQkJZm9yICh2YXIgbiBpbiBhcmd1bWVudHNbMF0uc2NyaXB0c1tqXSkgewoJCQkJCQkJCWlmKHR5cGVvZiBzY3JpcHRbbl0gIT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQkJCQkJc2NyaXB0W25dID0gYXJndW1lbnRzWzBdLnNjcmlwdHNbal1bbl07CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQkJc2NyaXB0LnRpbWVFbGFwc2VkID0gMDsKCQkJCQkJCXNjcmlwdC5pZCA9IGo7CgkJCQkJCQlzY3JpcHQuY2FsbEJhY2tDYWxsZWQgPSBmYWxzZTsKCQkJCQkJCXNjcmlwdC5sb2FkZWQgPSBmdW5jdGlvbigpIHsKCQkJCQkJCQl2YXIgc2NyaXB0RWxtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsKCQkJCQkJCQlmb3IodmFyIGk9MDsgaTxzY3JpcHRFbG1zLmxlbmd0aDsgaSsrKSB7CgkJCQkJCQkJCWZvcih2YXIgaj0wOyBqPHNjcmlwdEVsbXNbaV0uYXR0cmlidXRlcy5sZW5ndGg7IGorKykgewoJCQkJCQkJCQkJaWYoc2NyaXB0RWxtc1tpXS5hdHRyaWJ1dGVzW2pdLm5hbWUgPT0gJ3NyYycgJiYgc2NyaXB0RWxtc1tpXS5hdHRyaWJ1dGVzW2pdLm5vZGVWYWx1ZSA9PSB0aGlzLnVybCkgewoJCQkJCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQkJCQkJfQoJCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJCX07CgkJCQkJCQl0aGlzLnNjcmlwdHNbc2NyaXB0LmlkXSA9IHNjcmlwdDsKCQkJCQkJCWNvdW50Kys7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQlmb3IodmFyIGkgaW4gdGhpcy5zY3JpcHRzKSB7CgkJCQkJaWYoIXRoaXMuc2NyaXB0c1tpXS5yZWFkeSgpICYmICF0aGlzLnNjcmlwdHNbaV0ubG9hZGVkKCkpIHsKCQkJCQkJc2V0VGltZW91dCgianNMb2FkZXIubG9hZGVyc1siK3RoaXMuaWQrIl0ubG9hZChqc0xvYWRlci5sb2FkZXJzWyIrdGhpcy5pZCsiXS5zY3JpcHRzWyciK2krIiddKSIsIHRoaXMuc2NyaXB0c1tpXS5pbml0VGltZU91dCk7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQlpZih0aGlzLm9wdGlvbnMuZGVidWcgJiYgdHlwZW9mIGNvbnNvbGUubG9nICE9ICd1bmRlZmluZWQnKSB7CgkJCQkJCWNvbnNvbGUubG9nKCJqcyAnIiArIHRoaXMuc2NyaXB0c1tpXS5pZCArICInIGxvYWRlZCBhbmQgcmVhZHk7XG5wcm9jZXNzaW5nIHNjcmlwdCBjYWxsQmFjayBmdW5jdGlvbi4uLiIpOwoJCQkJCX0KCQkJCQl0aGlzLnNjcmlwdHNbaV0uY2FsbEJhY2sodHJ1ZSk7CgkJCQkJdGhpcy5zY3JpcHRzW2ldLmNhbGxCYWNrQ2FsbGVkID0gdHJ1ZTsKCQkJCQlpZighdGhpcy5vcHRpb25zLmRlYnVnKSB7CgkJCQkJCWRlbGV0ZSB0aGlzLnNjcmlwdHNbaV07CgkJCQkJfQoJCQkJfQoJCQkJaWYodGhpcy5yZWFkeSgpKSB7CgkJCQkJaWYodGhpcy5vcHRpb25zLmRlYnVnICYmIHR5cGVvZiBjb25zb2xlLmxvZyAhPSAndW5kZWZpbmVkJykgewoJCQkJCQljb25zb2xlLmxvZygiYWxsIHNjcmlwdHMgb2YgbG9hZGluZyBwcm9jZXNzICIrdGhpcy5pZCsiIHJlYWR5O1xucHJvY2Vzc2luZyBnbG9iYWwgY2FsbEJhY2sgZnVuY3Rpb24uLiIpOwoJCQkJCX0KCQkJCQl0aGlzLm9wdGlvbnMuY2FsbEJhY2sodHJ1ZSk7CgkJCQkJaWYoIXRoaXMub3B0aW9ucy5kZWJ1ZykgewoJCQkJCQlkZWxldGUganNMb2FkZXIubG9hZGVyc1t0aGlzLmlkXTsKCQkJCQl9CgkJCQl9CgkJCX07CgkJCXRoaXMubG9hZCA9IGZ1bmN0aW9uKHNjcmlwdCkgewoJCQkJaWYoIXNjcmlwdC5yZWFkeSgpICYmICFzY3JpcHQubG9hZGVkKCkpIHsKCQkJCQl2YXIgbG9hZCA9IHRydWU7CgkJCQkJZm9yKHZhciBpPTA7IGk8anNMb2FkZXIubG9hZGVycy5sZW5ndGg7IGkrKykgewoJCQkJCQlpZih0eXBlb2YganNMb2FkZXIubG9hZGVyc1tpXSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YganNMb2FkZXIubG9hZGVyc1tpXS5zY3JpcHRzICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqc0xvYWRlci5sb2FkZXJzW2ldLnNjcmlwdHNbc2NyaXB0LmlkXSAhPSAndW5kZWZpbmVkJyAmJiBqc0xvYWRlci5sb2FkZXJzW2ldLnNjcmlwdHNbc2NyaXB0LmlkXS5sb2FkZWQoKSkgewoJCQkJCQkJbG9hZCA9IGZhbHNlOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWlmKGxvYWQpIHsKCQkJCQkJdmFyIHNjcmlwdEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwoJCQkJCQlzY3JpcHRFbG0uc2V0QXR0cmlidXRlKCJ0eXBlIiwgInRleHQvamF2YXNjcmlwdCIpOwoJCQkJCQlzY3JpcHRFbG0uc2V0QXR0cmlidXRlKCJzcmMiLCBzY3JpcHQudXJsKTsKCQkJCQkJaWYgKHR5cGVvZiBzY3JpcHRFbG0gIT0gInVuZGVmaW5lZCIpIHsKCQkJCQkJCWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0RWxtKTsKCQkJCQkJfQoJCQkJCQlpZih0aGlzLm9wdGlvbnMuZGVidWcgJiYgdHlwZW9mIGNvbnNvbGUubG9nICE9ICd1bmRlZmluZWQnKSB7CgkJCQkJCQljb25zb2xlLmxvZygianMgJyIgKyBzY3JpcHQuaWQgKyAiJyBsb2FkZWQ7XG53YWl0aW5nIGZvciByZWFkeS4uLiIpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJaWYgKCFzY3JpcHQucmVhZHkoKSkgewoJCQkJCWlmIChzY3JpcHQudGltZUVsYXBzZWQgPD0gc2NyaXB0LmxvYWRUaW1lT3V0KSB7CgkJCQkJCXRoaXMuc2NyaXB0c1tzY3JpcHQuaWRdLnRpbWVFbGFwc2VkID0gZXZhbChzY3JpcHQudGltZUVsYXBzZWQgKyBzY3JpcHQuaW50ZXJ2YWwpOwoJCQkJCQlzZXRUaW1lb3V0KCJqc0xvYWRlci5sb2FkZXJzWyIrdGhpcy5pZCsiXS5sb2FkKGpzTG9hZGVyLmxvYWRlcnNbIit0aGlzLmlkKyJdLnNjcmlwdHNbJyIrc2NyaXB0LmlkKyInXSkiLCAgc2NyaXB0LmludGVydmFsKTsKCQkJCQkJcmV0dXJuOwoJCQkJCX0KCQkJCQllbHNlIHsKCQkJCQkJaWYodGhpcy5vcHRpb25zLmRlYnVnICYmIHR5cGVvZiBjb25zb2xlLmxvZyAhPSAndW5kZWZpbmVkJykgewoJCQkJCQkJdmFyIG1zZyA9ICJFcnJvcjogVGltZWQgb3V0IHdoaWxlIGxvYWRpbmcganMgJyIgKyBzY3JpcHQuaWQgKyAiJ1xuIjsKCQkJCQkJCWZvciAodmFyIG4gaW4gc2NyaXB0KSB7CgkJCQkJCQkJbXNnID0gbXNnICsgbiArICc6ICcgKyBzY3JpcHRbbl0gKyAiXG4iOwoJCQkJCQkJfQoJCQkJCQkJY29uc29sZS5sb2cobXNnKTsKCQkJCQkJfQoJCQkJCQlzY3JpcHQuY2FsbEJhY2soZmFsc2UpOwoJCQkJCQlzY3JpcHQuY2FsbEJhY2tDYWxsZWQgPSB0cnVlOwoJCQkJCQlpZighdGhpcy5vcHRpb25zLmRlYnVnKSB7CgkJCQkJCQlkZWxldGUgdGhpcy5zY3JpcHRzW3NjcmlwdC5pZF07CgkJCQkJCX0KCQkJCQkJcmV0dXJuOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2UgewoJCQkJCWlmKHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiB0eXBlb2YgY29uc29sZS5sb2cgIT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQkJY29uc29sZS5sb2coImpzICciICsgc2NyaXB0LmlkICsgIicgbG9hZGVkIGFuZCByZWFkeTtcbnByb2Nlc3Npbmcgc2NyaXB0IGNhbGxCYWNrIGZ1bmN0aW9uLi4uIik7CgkJCQkJfQoJCQkJCXNjcmlwdC5jYWxsQmFjayh0cnVlKTsKCQkJCQlzY3JpcHQuY2FsbEJhY2tDYWxsZWQgPSB0cnVlOwoJCQkJCWlmKCF0aGlzLm9wdGlvbnMuZGVidWcpIHsKCQkJCQkJZGVsZXRlIHRoaXMuc2NyaXB0c1tzY3JpcHQuaWRdOwoJCQkJCX0KCQkJCQlpZih0aGlzLnJlYWR5KCkpIHsKCQkJCQkJaWYodGhpcy5vcHRpb25zLmRlYnVnICYmIHR5cGVvZiBjb25zb2xlLmxvZyAhPSAndW5kZWZpbmVkJykgewoJCQkJCQkJY29uc29sZS5sb2coImFsbCBzY3JpcHRzIG9mIGxvYWRpbmcgcHJvY2VzcyAiK3RoaXMuaWQrIiByZWFkeTtcbnByb2Nlc3NpbmcgZ2xvYmFsIGNhbGxCYWNrIGZ1bmN0aW9uLi4iKTsKCQkJCQkJfQoJCQkJCQl0aGlzLm9wdGlvbnMuY2FsbEJhY2sodHJ1ZSk7CgkJCQkJCWlmKCF0aGlzLm9wdGlvbnMuZGVidWcpIHsKCQkJCQkJCWRlbGV0ZSBqc0xvYWRlci5sb2FkZXJzW3RoaXMuaWRdOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9OwoJCQlyZXR1cm4gdGhpczsKCQl9Cgl9Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0Vyd2VpdGVydGVyIEluaGFsdCc7CiRsYW5nWydhZHZhbmNlZGNvbnRlbnRfdGFibmFtZSddID0gJ0Vyd2VpdGVydGUgT3B0aW9uZW4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGluc3RhbGxpZXJ0JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGRlaW5zdGFsbGllcnQnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBBZHZhbmNlZENvbnRlbnQgYXVmIFZlcnNpb24gJXMgYWt0dWFsaXNpZXJ0JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGluc3RhbGxpZXJ0Lic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGRlaW5zdGFsbGllcnQuJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICdXb2xsZW4gU2llIGRhcyBNb2R1bCBBZHZhbmNlZENvbnRlbnQgd2lya2xpY2ggZGVpbnN0YWxsaWVyZW4/JzsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gPSAnPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gRGllc2VyIEJsb2NrIHdpcmQgbWVocmZhY2ggaW0gVGVtcGxhdGUgdmVyd2VuZGV0LiBTaWUgc2VoZW4gaGllciBudXIgZGVuIGVyc3RlbiBCbG9jay48L2VtPic7CiRsYW5nWydlcnJvcl9iYXNpY2F0dHJpYiddID0gJzxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IERlciBCYXNpcy1JbmhhbHRzLUVpZ2Vuc2NoYWZ0cy1OYW1lICYjMDM5OyVzJiMwMzk7IGthbm4gbmljaHQgYWxzIFdlcnQgZiZ1dW1sO3IgZGVuIFBhcmFtZXRlciAmIzAzOTtibG9jayYjMDM5OyB2ZXJ3ZW5kZXQgd2VyZGVuLiA8YnIgLz5EaWVzZXIgQmxvY2sgaXN0IGluYWt0aXYuIE51ciBkZXIgZXJzdGUgQmxvY2sgd2lyZCBhbmdlemVpZ3QuIFByJnV1bWw7ZmVuIFNpZSBJaHIgU2VpdGVuLVRlbXBsYXRlIHVuZCB3JmF1bWw7aGxlbiBTaWUgZiZ1dW1sO3IgZGVuIFBhcmFtZXRlciAmIzAzOTtibG9jayYjMDM5OyBlaW5lbiBhbmRlcmVuIFdlcnQuPC9lbT4nOwokbGFuZ1snZXJyb3JfZXhwaXJlZGF0ZSddID0gJ0RhcyBFbmRkYXR1bSBtdXNzIGhpbnRlciBkZW0gU3RhcnRkYXR1bSBsaWVnZW4uJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ0FrdHVlbGxlcyBWZXJ6ZWljaG5pcyc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnQmlsZGdyJm91bWw7JnN6bGlnO2UnOwokbGFuZ1snc2l6ZSddID0gJ0RhdGVpZ3Imb3VtbDsmc3psaWc7ZSc7CiRsYW5nWydpbmhlcml0X2Zyb21fcGFyZW50J10gPSAnVm9tICZ1dW1sO2Jlcmdlb3JkbmV0ZW4gRWxlbWVudCB2ZXJlcmJiYXInOwokbGFuZ1snbm9uZSddID0gJ25pY2h0cyc7CiRsYW5nWydpbnZhbGlkJ10gPSAndW5nJnV1bWw7bHRpZyc7CiRsYW5nWydpbnZhbGlkX2Jsb2NrdHlwZSddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVW5nJnV1bWw7bHRpZ2VyIFdlcnQgJiMwMzk7JXMmIzAzOTsgZGVzIFBhcmFtZXRlcnMgYmxvY2tfdHlwZSBpbSBCbG9jayAmIzAzOTslcyYjMDM5Oy48YnIgLz5CaXR0ZSBwciZ1dW1sO2ZlbiBTaWUgSWhyIFNlaXRlbi1UZW1wbGF0ZS48L2VtPic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRfYmxvY2twYXJhbXMnXSA9ICc8ZW0+PHN0cm9uZz5GZWhsZXI6PC9zdHJvbmc+IFVuenVyZWljaGVuZGUgcGFyYW1ldGVyLiA8YnIgLz5GZWhsZW5kZXIgcGFyYW0gJiMwMzk7JXMmIzAzOTsgZiZ1dW1sO3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsuICZVdW1sO2JlcnByJnV1bWw7ZmVuIFNpZSBJaHIgU2VpdGVuLVRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ0phJzsKJGxhbmdbJ25vJ10gPSAnTmVpbic7CiRsYW5nWydmcm9udGVuZGFjY2VzcyddID0gJ0Zyb250ZW5kLVp1Z3JpZmYnOwokbGFuZ1sncmVkaXJlY3RwYWdlJ10gPSAnU2VpdGUsIGF1ZiBkaWUgd2VpdGVyZ2VsZWl0ZXQgd2lyZCwgd2VubiBkZXIgWnVncmlmZiBuaWNodCBlcmxhdWJ0IGlzdCc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnQW5tZWxkZS1Gb3JtdWxhciBhbnplaWdlbic7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdOdXIgZiZ1dW1sO3IgcmVnaXN0cmllcnRlIE51dHplcic7CiRsYW5nWydibG9jayddID0gJ0Jsb2NrICc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnQWJsYXVmZGF0dW0gdmVyd2VuZGVuJzsKJGxhbmdbJ3N0YXJ0ZGF0ZSddID0gJ1N0YXJ0ZGF0dW0nOwokbGFuZ1snZW5kZGF0ZSddID0gJ0VuZGRhdHVtJzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ0Jsb2NrLUluaGFsdCc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdTZWl0ZSBhdWYgaW5ha3RpdiBzZXR6ZW4nOwokbGFuZ1snZGVsZXRlcGFnZSddID0gJ1NlaXRlIGwmb3VtbDtzY2hlbic7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdBa3Rpb24gYmVpbSBEZWluc3RhbGxpZXJlbic7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ0FsbGUgU2VpdGVuIGF1ZiBUeXAgJnF1b3Q7SW5oYWx0JnF1b3Q7IHNldHplbic7CiRsYW5nWydzZXRjb250ZW50MiddID0gJ0FsbGUgU2VpdGVuIGF1ZiBUeXAgJnF1b3Q7SW5oYWx0JnF1b3Q7IHNldHplbiB1bmQgenVnZWgmb3VtbDtyaWdlIEJsJm91bWw7Y2tlIGwmb3VtbDtzY2hlbic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdFaW5zdGVsbHVuZ2VuIGFrdHVhbGlzaWVydCc7CiRsYW5nWydzdWNjZXNzJ10gPSAnT0snOwokbGFuZ1snZXJyb3InXSA9ICdGZWhsZXInOwokbGFuZ1snZGVsZXRlcGFnZXMnXSA9ICdBbGxlIFNlaXRlbiB2b20gVHlwICZxdW90O0Vyd2VpdGVydGVyIEluaGFsdCZxdW90OyBsJm91bWw7c2NoZW4nOwokbGFuZ1snaW1wb3J0cGFnZXMnXSA9ICdBbGxlIFNlaXRlbiB2b20gVHlwICVzIGF1ZiBUeXAgJXMgc2V0emVuLic7CiRsYW5nWydjb25maXJtaW1wb3J0J10gPSAnV29sbGVuIFNpZSB3aXJrbGljaCBkZW4gSW5oYWx0cy1UeXAgYWxsZXIgSW5oYWx0c3NlaXRlbiAmYXVtbDtuZGVybj8nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICdEaWVzZSBOYWNocmljaHQgdmVyYmVyZ2VuJzsKJGxhbmdbJ2NvbnRlbnRzZXR0aW5ncyddID0gJ1N0YW5kYXJkLUVpbnN0ZWxsdW5nZW4gZiZ1dW1sO3IgJnF1b3Q7RXJ3ZWl0ZXJ0ZXIgSW5oYWx0JnF1b3Q7JzsKJGxhbmdbJ3JlZGlyZWN0cGFyYW1zJ10gPSAnVVJMLVBhcmFtZXRlciwgZGVyIGJlaSBVbWxlaXR1bmcgYW5nZWhhbmdlbiB3ZXJkZW4gc29sbCc7CiRsYW5nWydldmFsdWF0ZXNtYXJ0eSddID0gJ1NtYXJ0eSB2ZXJ3ZW5kZW4sIHVtIGRpZSBQYXJhbWV0ZXIgenUgdmVyYXJiZWl0ZW4nOwokbGFuZ1snZXJyb3JfbG9hZGluZ19tb2R1bGUnXSA9ICc8ZW0+PHN0cm9uZz5GZWhsZXI6PC9zdHJvbmc+IE1vZHVsIGtvbm50ZSBuaWNodCBnZWxhZGVuIHdlcmRlbiAmIzAzOTslcyYjMDM5Oy4gKERlZmluaWVydCBmJnV1bWw7ciBCbG9jayAmIzAzOTslcyYjMDM5OyAgaW4gSWhyZW4gU2VpdGVuLVRlbXBsYXRlLi4pPC9lbT4nOwokbGFuZ1snZXJyb3JfY29udGVudGJsb2NrX3N1cHBvcnQnXSA9ICc8ZW0+PHN0cm9uZz5FcnJvcjo8L3N0cm9uZz4gTW9kdWxlICYjMDM5OyVzJiMwMzk7IGRvZXMgbm90IHN1cHBvcnQgY29udGVudGJsb2Nrcy4gKERlZmluZWQgZm9yIGJsb2NrICYjMDM5OyVzJiMwMzk7IGluIHlvdXIgcGFnZSB0ZW1wbGF0ZS4pPC9lbT4nOwokbGFuZ1snc3VjY2Vzc19pbXBvcnRwYWdlcyddID0gJ0FsbGUgU2VpdGVuIGRlcyBUeXBzICVzIGVyZm9sZ3JlaWNoIGdlJmF1bWw7bmRlcnQgaW4gJXMnOwokbGFuZ1snc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucyddID0gJ1plaWdlIEFkdmFuY2VkQ29udGVudCBUYWInOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddID0gJyVzIEVpbnN0ZWxsdW5nZW4gYW56ZWlnZW4nOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdTYXZlIGNvbGxwYXNlIHN0YXR1cyBvZiAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ0luaGFsdHNibCZvdW1sO2NrZSc7CiRsYW5nWydibG9ja19tZXNzYWdlJ10gPSAnY29udGVudCBibG9jayBtZXNzYWdlJzsKJGxhbmdbJ2Jsb2NrX2dyb3VwcyddID0gJ0Jsb2NrZ3J1cHBlJzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdDb2xsYXBzZSAlcyBieSBkZWZhdWx0JzsKJGxhbmdbJ3Blcl9wYWdlJ10gPSAncHJvIFNlaXRlJzsKJGxhbmdbJ3Blcl90ZW1wbGF0ZSddID0gJ3BybyBUZW1wbGF0ZSc7CiRsYW5nWydib3RoMSddID0gJ1RlbXBsYXRlIE9ERVIgU2VpdGUgJzsKJGxhbmdbJ2JvdGgyJ10gPSAnVGVtcGxhdGUgVU5EIFNlaXRlJzsKJGxhbmdbJ2NvbnRlbnQnXSA9ICdJbmhhbHQnOwokbGFuZ1snY29udGVudDInXSA9ICdFcndlaXRlcnRlciBJbmhhbHQnOwokbGFuZ1sncHJlZnMnXSA9ICdFaW5zdGVsbHVuZ2VuJzsKJGxhbmdbJ211bHRpX2lucHV0J10gPSAnTXVsdGkgSW5wdXRzJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbCddID0gJ011bHRpIElucHV0IFRlbXBsYXRlcyc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXQnXSA9ICdOZXVlcyBtdWx0aSBpbnB1dCBoaW56dWcmdXVtbDtnZW4nOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddID0gJ05ldWVzIG11bHRpIGlucHV0IHRlbXBsYXRlIGhpbnp1ZiZ1dW1sO2dlbic7CiRsYW5nWydpbnB1dF9pZCddID0gJ0VpbmdhYmUtSUQnOwokbGFuZ1snaW5wdXRfZmllbGRzJ10gPSAnRWluZ2FiZWZlbGRlcic7CiRsYW5nWyd0cGxfbmFtZSddID0gJ1RlbXBsYXRlIE5hbWUnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBpc3QgZWluIFBmbGljaHRmZWxkIHVuZCBkYXJmIG5pY2h0IGxlZXIgc2VpbiAnOwokbGFuZ1snZXJyb3JfaW5wdXRfZmllbGRzJ10gPSAnRWluZ2FiZWZlbGRlciBpc3QgZWluIFBmbGljaHRmZWxkIHVuZCBkYXJmIG5pY2h0IGxlZXIgc2Vpbi4nOwokbGFuZ1snZXJyb3JfaW5wdXRfaWQnXSA9ICdLZWluZSBFaW5nYWJlLUlEIGFuZ2VnZWJlbiBvZGVyIEVpbmdhYmUtSUQgaXN0IGJlcmVpdHMgdm9yaGFuZGVuLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdFaW5nYWJlLUlEIHdpcmQgYmVyZWl0cyB2ZXJ3ZW5kZXQuIFcmYXVtbDtobGVuIFNpZSBlaW5lIGFuZGVyZS4gKE11c3MgZWluZGV1dGlnIHNlaW4pJzsKJGxhbmdbJ211bHRpX2lucHV0X2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgaGluenVnZWYmdXVtbDtndC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfZGVsZXRlZCddID0gJ011bHRpIElucHV0IGdlbCZvdW1sO3NjaHQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3VwZGF0ZWQnXSA9ICdNdWx0aSBJbnB1dCBha3R1YWxpc2llcnQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9hZGRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIGhpbnp1Z2VmJnV1bWw7Z3QuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIGdlbCZvdW1sO3NjaHQuJzsKJGxhbmdbJ2RlbGV0ZV9zZWxlY3RlZCddID0gJ0F1c2dldyZhdW1sO2hsdGUgRWxlbWVudGUgbCZvdW1sO3NjaGVuJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlJ10gPSAnV29sbGVuIFNpZSB3aXJrbGljaCwgZGllc2VzIEVsZW1lbnQgbCZvdW1sO3NjaGVuPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ1dvbGxlbiBTaWUgd2lya2xpY2gsIGRpZSBhdXNnZXcmYXVtbDtobHRlbiBFbGVtZW50ZSBsJm91bWw7c2NoZW4/JzsKJGxhbmdbJ2hlbHBfdHBsX3ZhcnMnXSA9ICc8cD48c3Ryb25nPlRlbXBsYXRlLVZhcmlhYmxlbjo8L3N0cm9uZz48L3A+CjxwPjxwcmU+PGNvZGU+eyRpbnB1dHN9PC9jb2RlPjwvcHJlPiBpc3QgZWluIEFycmF5IHdlbGNoZXMgYWxsZSBJbnB1dC1FbGVtZW50ZSBkZXMgTXVsdGlJbnB1dCBCbG9ja3MgZW50aCZhdW1sO3QuPGJyIC8+CkplZGVzIElucHV0LUVsZW1lbnQgaXN0IHdpZWRlcnVtIGVpbiBBcnJheSB3ZWxjaGVzIGFsbGUgUGFyYW1ldGVyIGVudGjDpGx0LiA8YnIgLz4KKFNpZWhlIE1vZHVsaGlsZmUpPGJyIC8+Clp1c8OkdHpsaWNoZXIgUGFyYW1ldGVyIGlzdCAmcXVvdDtpbnB1dCZxdW90Oy4gRGllc2VyIGdpYnQgZGFzIElucHV0ZmVsZCBhdXMuPGJyIC8+ClVtIGF1ZiBkaWUgUGFyYW1hdGVyIHp1enVncmVpZmVuIHdpcmQgZGVyIFB1bmt0LVN5bnRheCB2ZXJ3ZW5kZXQuPGJyIC8+CkJlaXNwaWVsOjwvcD4KPHByZT48Y29kZT57Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19Cgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9PGJyIC8+CnsvZm9yZWFjaH08L2NvZGU+PC9wcmU+JzsKJGxhbmdbJ2hlbHAnXSA9IDw8PEVPVAo8YnIgLz4KPGgzPldhcyBtYWNodCBkaWVzZXMgTW9kdWw/PC9oMz4KPHA+RGllc2VzIE1vZHVsIGJpZXRldCBlaW5lbiB3ZWl0ZXJlbiBJbmhhbHRzdHlwZW4gIkVyd2VpdGVydGVyIEluaGFsdCIuPGJyIC8+Ck1pdCBkaWVzZW0gSW5oYWx0c3R5cGVuIGthbm4gZGllIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGZsZXhpYmVsIGdlc3RhbHRldCB3ZXJkZW4sIGluZGVtIG1hbiBpbSBTZWl0ZW4tVGVtcGxhdGUgZGVuIGVpbnplbG5lbiBJbmhhbHRzYmwmb3VtbDtja2VuIHdlaXRlcmUgUGFyYW1ldGVyIGhpbnp1ZiZ1dW1sO2d0LjxiciAvPgpJbmhhbHRzYmwmb3VtbDtja2UgayZvdW1sO25uZW4gaW4gRm9ybSB2ZXJzY2hpZWRlbmVyIElucHV0LUZlbGRlciB3aWUgRHJvcGRvd25zLCBNZWhyZmFjaGF1c3dhaGxmZWxkZXIgb2RlciBDaGVja2JveGVuIGRhcmdlc3RlbGx0IHdlcmRlbi48YnIgLz4KRGllIElucHV0LUZlbGRlciBrJm91bWw7bm5lbiB3ZWl0ZXJoaW4gaW4gZWlnZW5lbiBUYWJzIGFuZ2V6ZWlndCBvZGVyIGluIEdydXBwZW4genVzYW1tZW5nZWZhc3N0IHdlcmRlbi48YnIgLz4KQXXDn2VyZGVtIGhhdCBtYW4gZGllIE0mb3VtbDtnbGljaGtlaXQsIFNlaXRlbiBvZGVyIGVpbnplbG5lIEJsJm91bWw7Y2tlIG51ciBmJnV1bWw7ciBiZXN0aW1tdGUgR3J1cHBlbiBkZXMgRnJvbnRFbmRVc2VycyBNb2R1bHMgZnJlaXp1Z2ViZW4uPGJyIC8+CkRpZSBFaW5zdGVsbHVuZ2VuIGRlcyBCZW51dHplcnp1Z3JpZmZzIHNpbmQgYXVmIHVudGVyZ2VvcmRuZXRlIFNlaXRlbiB2ZXJyZWJiYXIuPC9wPgo8cD5EaWUgUGFyYW1ldGVyIGsmb3VtbDtubmVuIGF1w59lcmRlbSBtaXQgSGlsZmUgdm9uIGVpbmZhY2hlbSBTbWFydHktU3ludGF4IGR5bmFtaXNjaGUgV2VydGUgZW50aGFsdGVuLjxiciAvPgpELmguIG1hbiBrYW5uIHouQi4gZGFzIEVyZ2VibmlzIGVpbmVzIGJlbnV0emVyZGVmaW5pZXJ0ZW4gVGFncywgZWluZXMgUGx1Z2lucywgZWluZXMgTW9kdWxzIG9kZXIgZWluZmFjaCBudXIgZWluZXMgR2xvYmFsZW4gSW5oYWx0c2Jsb2NrZXMgYWxzIFdlcnQgZiZ1dW1sO3IgZWluZW4gUGFyYW1ldGVyIGVpbnNldHplbiBsYXNzZW4uPC9wPgo8cD48ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBJbiBtYW5jaGVuIEYmYXVtbDtsbGVuIGVtcGZpZWx0IGVzIHNpY2gsIGFuc3RlbGxlIGRlcyBub3JtYWxlbiB7Y29udGVudH0gVGFncyBkZW4ge0FkdmFuY2VkQ29udGVudH0gVGFnIHp1IGJlbnV0emVuLiAoR3Jvw58tIHVuZCBLbGVpbnNjaHJlaWJ1bmcgYmVhY2h0ZW4pPC9lbT48L3A+CjxoMz5XaWUgd2lyZCBlcyB2ZXJ3ZW5kZXQ/PC9oMz4KPHA+TmFjaCBkZXIgSW5zdGFsbGF0aW9uIHdpcmQgZGVyIEFkbWluaXN0cmF0aW9uIGVpbiB3ZWl0ZXJlciBNZW4mdXVtbDtwdW5rdCAiRXJ3ZWl0ZXJ1bmdlbi0mZ3Q7RXJ3ZWl0ZXJ0ZXIgSW5oYWx0IiBoaW56dWdlZiZ1dW1sO2d0LjxiciAvPgpIaWVyIGsmb3VtbDtubmVuIHZlcnNjaGllZGVuZSBFaW5zdGVsbHVuZ2VuIHZvcmdlbm9tbWVuIHdlcmRlbi48YnIgLz4KQmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gc3RlaHQgbnVuIGVpbiB3ZWl0ZXJlciBJbmhhbHRzdHlwICJFcndlaXRlcnRlciBJbmhhbHQiIHp1ciBBdXN3YWhsLCBkZXIgZGllIEZ1bmt0aW9uZW4gZGVzIE1vZHVscyBiZXJlaXRzdGVsbHQuPC9wPgo8cD5NaXQgSGlsZmUgZm9sZ2VuZGVyIFBhcmFtZXRlciBiZWltIEVyc3RlbGxlbiB2b24gSW5oYWx0c2JsJm91bWw7Y2tlbiBpbSBTZWl0ZW4tVGVtcGxhdGUgayZvdW1sO25uZSBkaWVzZSBGdW5rdGlvbmVuIHZlcndlbmRldCB3ZXJkZW46PC9wPgo8aDM+V2VsY2hlIFBhcmFtZXRlciBzaW5kIHZlcmYmdXVtbDtnYmFyPzwvaDM+CjxwPmFsbGUgUGFyYW1ldGVyIHNpbmQgb3B0aW9uYWw8L3A+CjxwPjxzdHJvbmc+U3RhbmRhcmQgUGFyYW1hdGVyOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCUVybSZvdW1sO2dsaWNodCBkYXMgSGluenVmJnV1bWw7Z2VuIG1laHJlcmVyIEluaGFsdHNibCZvdW1sO2NrZS4gQmVpbSBCZWFyYmVpdGVuIGVpbmVyIFNlaXRlIHdpcmQgZiZ1dW1sO3IgamVkZW4gQmxvY2sgZWluIGVpZ2VuZXMgSW5wdXQtRmVsZCBhbmdlemVpZ3QuPGJyIC8+CgkJCQlCc3AuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtad2VpdGVyIEluaGFsdHNibG9jayZxdW90O308L2NvZGU+PGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBEZXIgTmFtZSBkZXMgSW5oYWx0c2Jsb2NrcyBkYXJmIG51ciBCdWNoc3RhYmVuLCBaYWhsZW4gdW5kIFVudGVyc3RyaWNoZSBlbnRoYWx0ZW4uIChrZWluZSBMZWVyLSBvZGVyIFNvbmRlcnplaWNoZW4sIFVtbGF1dGUgZXRjLikuIEFuZGVyZW5mYWxscyB3aXJkIGRlciBCbG9ja25hbWUgJmF1bWw7aG5saWNoIGRlbSBTZWl0ZW5hbGlhcyBlbnRwcmVjaGVuZCBrb252ZXJ0aWVydC48L2VtPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pnd5c2l3eWc8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT5XZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIHdpcmQgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGtlaW4gV1lTSVdZRyBFZGl0b3IgZiZ1dW1sO3IgZGllc2VuIEJsb2NrIHZlcndlbmRldC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm9uZWxpbmU8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT5XZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIHdpcmQgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIG51ciBlaW4gZWluZmFjaGVzIGVpbnplaWxpZ2VzIFRleHQtSW5wdXQtRmVsZCBhbmdlemVpZ3QuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5TdGFiZGFyZGluaGFsdCBiZWltIEVyc3RlbGxlbiBuZXVlciBTZWl0ZW4uPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5sYWJlbDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+RGllIEVpbmdhYmVhdWZmb3JkZXJ1bmcgZiZ1dW1sO3IgZGVuIEluaGFsdHNibG9jayBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4uIFdlbm4gZGllc2VyIFBhcmFtZXRlciBmZWhsdCwgd2lyZCBkZXIgdW5rb252ZXJ0aWVydGUgV2VydCBkZXMgUGFyYW1ldGVycyBibG9jayB2ZXJ3ZW5kZXQuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJV2Vpc3QgZGVuIEluaGFsdCBkaWVzZXMgQmxvY2tzIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZSBlaW5lciBTbWFydHkgVmFyaWFibGVuIHp1LjxiciAvPgoJCQkJQnNwLjogPGNvZGU+e2NvbnRlbnQgYXNzaWduPSJwYWdlY29udGVudCJ9PGJyIC8+CgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9JnF1b3Q7XCRwYWdlY29udGVudCZxdW90O308L2NvZGU+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+RXJ3ZWl0ZXJ0ZSBQYXJhbWV0ZXI6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdHlwZTwvdHQ+ICh0ZXh0LGNoZWNrYm94LGRyb3Bkb3duLHNlbGVjdF9tdWx0aXBsZSxkYXRlLG11bHRpX2lucHV0KSAKCQk8dWw+CgkJCTxsaT5HaWJ0IGFuLCBpbiB3ZWxjaGVyIEZvcm0gZGVyIEluaGFsdHNibG9jayBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gYW5nZXplaWd0IHdlcmRlbiBzb2xsLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cGFnZV90YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJTWl0IGRpZXNlbSBQYXJhbWV0ZXIgayZvdW1sO25uZW4gSW5oYWx0c2JsJm91bWw7Y2tlIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBpbiBiZXN0aW1tdGVuIFRhYnMgYW5nZXplaWd0IHdlcmRlbi48YnIgLz4KCQkJCU0mb3VtbDtnbGljaGUgV2VydGUgc2luZCB6LkIuICZxdW90O21haW4mcXVvdDsgKCA9IFRhYiAmcXVvdDtIYXVwdG1lbiZ1dW1sOyZxdW90OyksICZxdW90O29wdGlvbnMmcXVvdDsgKCA9IFRhYiAmcXVvdDtPcHRpb25lbiZxdW90OyksIG9kZXIgamVkZXIgYW5kZXJlIGJlbGllYmlnZSBXZXJ0IChlcnpldWd0IGF1dG9tYXRpc2NoIGVpbmVuIHdlaXRlcmVuIFRhYikuPGJyIC8+CgkJCQk8ZW0+TWFuIGthbm4gc29taXQgei5CLiBlaW5lIENoZWNrYm94IGltIFRhYiAiT3B0aW9uZW4iIGhpbnp1ZiZ1dW1sO2dlbiBvZGVyIGVpbmVuIGVpZ2VuZW4gVGFiIGVyc3RlbGxlbi48L2VtPi4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPk1pdCBkaWVzZW0gUGFyYW1ldGVyIGsmb3VtbDtubmVuIGRpZSBJbmhhbHRzYmwmb3VtbDtja2Ugbm9jaG1hbHMgaW4gd2VpdGVyZSAiVW50ZXJ0YWJzIiBpbm5lcmhhbGIgZGVyICJIYXVwdHRhYnMiIHVudGVydGVpbHQgd2VyZGVuLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfZ3JvdXA8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJTWl0IGRpZXNlbSBQYXJhbWV0ZXIga2FubiBtYW4gbWVocmVyZSBJbmhhbHRzYmwmb3VtbDtja2UgaW4gZWluZW0gRmllbGRzZXQgZ3J1cHBpZXJlbi48YnIgLz4KCQkJCURpZSBHcnVwcGVuIGsmb3VtbDtubmVuIGF1Y2ggYXVmIG1laHJlcmUgVGFicyB2ZXJ0ZWlsdCB3ZXJkZW4uCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWN0aXZlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIGlzdCBkZXIgQmxvY2sgZGVha3RpdmllcnQuPGJyIC8+CgkJCQlEZWFrdGl2aWVydGUgSW5oYWx0c2JsJm91bWw7Y2tlIHdlcmRlbiB3ZWRlciBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4sIG5vY2ggYXVmIGRlciBJbnRlcm5ldHNlaXRlIGFuZ2V6ZWlndC4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgaXN0ICZhdW1sO2hubGljaCBkZW4gIlp1cyZhdW1sO3R6bGljaGVuIEJlYXJiZWl0ZXJuIiBlaW5lciBTZWl0ZS4gRXIgZ2lsdCBhbGxlcmRpbmdzIG51ciBmJnV1bWw7ciBlaW56ZWxuZSBJbmhhbHRzYmwmb3VtbDtja2UuPGJyIC8+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgbnVyIHZvbiBiZXN0aW1tdGVuIEJlbnV0emVncnVwcGVuIGRlciBBZG1pbmlzdHJhdGlvbiBiZWFyYmVpdGV0IHdlcmRlbi48YnIgLz4KCQkJCShOYW1lIGRlciBCZW51dHplcmdydXBwZSBlaW50cmFnZW47IG1laHJlcmUgR3J1cHBlbiBtaXQgS29tbWEgZ2V0cmVubnQpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgaXN0ICZhdW1sO2hubGljaCBkZW4gIlp1cyZhdW1sO3R6bGljaGVuIEJlYXJiZWl0ZXJuIiBlaW5lciBTZWl0ZS4gRXIgZ2lsdCBhbGxlcmRpbmdzIG51ciBmJnV1bWw7ciBlaW56ZWxuZSBJbmhhbHRzYmwmb3VtbDtja2UuPGJyIC8+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgbnVyIHZvbiBiZXN0aW1tdGVuIEJlbnV0emVybiBkZXIgQWRtaW5pc3RyYXRpb24gYmVhcmJlaXRldCB3ZXJkZW4uPGJyIC8+CgkJCQkoTmFtZSBkZXMgQmVudXR6ZXJzIGVpbnRyYWdlbjsgbWVocmVyZSBCZW51dHplciBtaXQgS29tbWEgZ2V0cmVubnQpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiB3ZW5uIGRpZSBQYXJhbWV0ZXIgPHR0PmVkaXRvcl91c2VyczwvdHQ+IHVuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IG5pY2h0IHZlcndlbmRldCB3ZXJkZW4sIGsmb3VtbDtubmVuIGRpZSBCbCZvdW1sO2NrZSB2b24gamVkZW0gQmVudXR6ZXIgYmVhcmJlaXRldCB3ZXJkZW4uPGJyIC8+CglEaWUgV2VydGUgaGFiZW4ga2VpbmVuIEVpbmZsdXNzLCB3ZW5uIGRlciBCZW51dHplciBkZXIgR3J1cHBlICJBZG1pbiIgYW5nZWgmb3VtbDtydC48YnIgLz4KCVVtIGVpbmVtIEJlbnV0emVyIHp1IGVybGF1YmVuIGFsbGUgSW5oYWx0c2JsJm91bWw7Y2tlIHVuYWJoJmF1bWw7bmdpZyB2b24gZGVuIGJlaWRlbiBQYXJhbWV0ZXJuIHp1IGJlYXJiZWl0ZW4sIG11c3MgZGVyIEJlbnV0emVyIGVpbmVyIEdydXBwZSBhbmdlaCZvdW1sO3JlbiwgZGllIGRpZSBCZXJlY2h0aWd1bmcgIk1hbmFnZSBhbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyIgaGF0LjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+CgkJPHVsPgoJCQk8bGk+CgkJCQlEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZmVzdCwgd2VsY2hlIEJlbnV0emVyZ3J1cHBlbiBkZXMgRnJvbnRFbmRVc2VycyBNb2R1bHMgZGllc2VuIEJsb2NrIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZSBzZWhlbiBkJnV1bWw7cmZlbi48YnIgLz4KCQkJCShJRCBkZXIgQmVudXR6ZXJncnVwcGUgYW5nZWJlbjsgbWVocmVyZSBJRHMgbWl0IEtvbW1hIGdldHJlbm50KTxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgZ2lidCBhbiwgb2IgYW5zdGVsbGUgZGVzIEluaGFsdHNibG9ja3MgZGFzIExvZ2luLUZvcm11bGFyIGRlcyBGcm9udEVuZFVzZXJzIE1vZHVscyBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwsIHdlbm4gZGllc2VyIEJsb2NrIG51ciBmJnV1bWw7ciBiZXN0aW1tdGUgQmVudXR6ZXJncnVwcGVuIGZyZWlnZWdlYmVuIHVuZCBkZXIgQmVzdWNoZXIgbmljaHQgZWluZ2Vsb2dndCBpc3QuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBEYXMgRm9ybXVsYXIgd2lyZCBudXIgZWluIGVpbnppZ2VzIE1hbCBhbmdlemVpZ3QuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hbGxvd19ub25lPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+R2lidCBhbiwgb2IgZGVyIEJsb2NrIGxlZXIgc2VpbiBkYXJmIG9kZXIgbmljaHQuPGJyIC8+CgkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCB1bmQgZGVyIEluaGFsdCBkZXMgQmxvY2tzIGlzdCBsZWVyLCB3aXJkIGRlciBXZXJ0IGRlcyBQYXJhbWV0ZXJzIGRlZmF1bHQgdmVyd2VuZGV0LjxiciAvPgoJCQlXdXJkZSBkZXIgQmxvY2sgbWl0IGRlbSBQbHVnaW4ge2NvbnRlbnRfaW1hZ2V9IGVyc3RlbGx0LCBmZWhsdCBkaWUgT3B0aW9uICJOaWNodHMiIGltIEJpbGQtRHJvcGRvd24uPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zbWFydHk8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVNjaGFsdGV0IGRpZSBWZXJhcmJlaXR1bmcgZGVyIFBhcmFtZXRlcndlcnRlIG1pdCBIaWxmZSB2b24gU21hcnR5IGVpbi9hdXMuPGJyIC8+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiB0cnVlIGdlc2V0enQgd2lyZCwgd2lyZCBqZWRlciBQYXJhbWV0ZXIgbWl0IEhpbGZlIGRlciBTbWFydHkgVGVtcGxhdGUgRW5naW5lIHZlcmFyYmVpdGV0LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2VpczogPC9zdHJvbmc+IERpZSBXZXJ0ZSBtJnV1bWw7c3NlbiBhbHMgU21hcnR5LVN5bnRheCBnZWtlbm56ZWljaG5ldCB3ZXJkZW4uIEhpZXIgayZvdW1sO25uZW4gYWJlciBuaWNodCBTdGFuZGFyZCBTbWFydHktQmVncmVuemVyICh7Li4ufSkgdmVyd2VuZGV0IHdlcmRlbiwgZGEgZXMgenUgRmVobGVybiBhdWYgZGVyIEludGVybmV0c2VpdGUgZiZ1dW1sO2hydC48YnIgLz4KCQkJCURhaGVyIHdlcmRlbiBzdGF0dGRlc3NlbiBkaWUgWmVpY2hlbiA6OjogYWxzIEJlZ3JlbnplciB2ZXJ3ZW5kZXQuPGJyIC8+PC9lbT4KCQkJCUJzcC46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O0thdGVnb3JpZW4mcXVvdDsgbGFiZWw9JnF1b3Q7VyZhdW1sO2hsZW4gU2llIGVpbmUgS2F0ZWdvcmllJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDsgaXRlbXM9JnF1b3Q7Ojo6Z2xvYmFsX2NvbnRlbnQgbmFtZT0mIzAzOTtjYXRlZ29yeWxpc3QmIzAzOTs6OjomcXVvdDsgc21hcnR5PSZxdW90O3RydWUmcXVvdDt9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlc2NyaXB0aW9uPC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+RWluZSBkZXRhaWxpZXJ0ZXJlIEJlc2NocmVpYnVuZyBkZXMgSW5oYWx0c2Jsb2Nrcy48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlHaWJ0IGFuLCBvYiBlaW4gQmxvY2sgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGVpbi0gKHRydWUpIG9kZXIgYXVzZ2VrbGFwcHQgKGZhbHNlKSBzZWluIHNvbGwuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBpc3QgaW1tZXIgZmFsc2UsIHdlbm4gZGVyIGRlciBQYXJhbWV0ZXIgbm9fY29sbGFwc2U9dHJ1ZSB2ZXJ3ZW5kZXQgd2lyZC48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IGlzdCwga2FubiBkZXIgQmxvY2tlIG5pY2h0IHp1c2FtbWVuZ2VrbGFwcHQgd2VyZGVuLjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gd2VubiBkZXIgV2VydCBhdWYgdHJ1ZSBnZXNldHp0IGlzdCwgaXN0IGRlciBQYXJhbWV0ZXIgY29sbGFwc2UgYXV0b21hdGlzY2ggaW1tZXIgZmFsc2UuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5yZXF1aXJlZDwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJR2lidCBhbiwgb2IgZWluIEJsb2NrIGVpbiBQZmxpY2h0ZmVsZCBpc3QgKHRydWUpIG9kZXIgbmljaHQgKGZhbHNlKS48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgQ2hlY2tib3hlbjo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHRydWUvZmFsc2UpIAoJCTx1bD4KCQkJPGxpPgoJCQkJQWt0aXZpZXJ0L0RlYWt0aXZpZXJ0IGRpZSBDaGVja2JveCBhbHMgU3RhbmRhcmR3ZXJ0LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gJnF1b3Q7MSZxdW90OyA9IGFrdGl2aWVydDsgJnF1b3Q7MCZxdW90OyBkZWFrdGl2aWVydDxiciAvPjwvZW0+CgkJCQlCc3AuOiA8Y29kZT57Y29udGVudCBibG9ja190eXBlPSZxdW90O2NoZWNrYm94JnF1b3Q7IGRlZmF1bHQ9MX08L2NvZGU+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+UGFyYW1ldGVyIGYmdXVtbDtyIERyb3Bkb3ducy9NZWhyZmFjaGF1c3dhaGw6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aXRlbXM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkRpZSBCZXplaWNobnVuZyBkZXIgZWluemVsbmVuIEVpbnRyJmF1bWw7Z2UuIChtaXQgZWluZW0gYmVzdGltbXRlbiBaZWljaGVuIGdldHJlbm50IC0gU3RhbmRhcmQgaXN0IHwgKHBpcGUpKTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EaWUgV2VydGUgZGVyIGVpbnplbG5lbiBFaW50ciZhdW1sO2dlLiAobWl0IGVpbmVtIGJlc3RpbW10ZW4gWmVpY2hlbiBnZXRyZW5udCAtIFN0YW5kYXJkIGlzdCB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gd2VubiBlcyB3ZW5pZ2VyIFdlcnRlIGFscyBCZXplaWNobnVuZ2VuIGdpYnQsIHdlcmRlbiBkaWUgcmVzdGxpY2hlbiBCZXplaWNobnVuZ2VuIGFscyBXZXJ0ZSB2ZXJ3ZW5kZXQgKHVuZCB1bWdla2VocnQpLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlBdXNnZXcmYXVtbDtobHRlIFN0YW5kYXJkd2VydGUgKG1pdCBlaW5lbSBiZXN0aW1tdGVuIFplaWNoZW4gZ2V0cmVubnQgLSBTdGFuZGFyZCBpc3QgfCAocGlwZSkpPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBWZXJ3ZW5kZW4gU2llIG51ciBkaWUgV2VydGUgZGVyIEVpbnRyw6RnZSBhbHMgU3RhbmRhcmR3ZXJ0LCBuaWNodCBkaWUgQmV6ZWljaG51bmdlbiBkZXIgRWludHImYXVtbDtnZS48L2VtPjxiciAvPjxiciAvPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlbGltaXRlcjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+RGFzIFRyZW5uemVpY2hlbiBtaXQgZGVtIGRpZSBCZXplaWNobnVuZ2VuLCBXZXJ0ZSB1bmQgU3RhbmRhcmR3ZXJ0ZSB2b25laW5hbmRlciBnZXRyZW5udCB3ZXJkZW4uIChTdGFuZGFyZCBpc3QgfCAocGlwZSkpPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpCgkJPHVsPgoJCQk8bGk+RGllIEgmb3VtbDtoZSBkZXMgSW5wdXRmZWxkZXMsIHdlbm4gPGNvZGU+YmxvY2tfdHlwZT0mcXVvdDtzZWxlY3RfbXVsdGlwbGUmcXVvdDs8L2NvZGU+IHZlcndlbmRldCB3aXJkLjxlbT4oU3RhbmRhcmQgaXN0IGRpZSBBbnphaGwgZGVyIEVpbnRyJmF1bWw7Z2UpPC9lbT48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNvcnRhYmxlX2l0ZW1zPC90dD4gKHRydWUvZmFsc2UpIC0gbnVyIGJlaSBzZWxlY3RfbXVsdGlwbGUKCQk8dWw+CgkJCTxsaT4KCQkJCVdpcmQgZGllc2VyIFdlcnQgYXVmIHRydWUgZ2VzZXR6dCwgd2VyZGVuIGRpZSBFaW50ciZhdW1sO2dlIG5pY2h0IGFscyBNZWhyZmFjaGF1c3dhaGxmZWxkIGFuZ2V6ZWlndCwgc29uZGVybiBhbHMgZWluZSBMaXN0ZSBtaXQgQ2hlY2tib3hlbiwgZGllIG5ldSBzb3J0aWVydCB3ZXJkZW4ga2Fubi48YnIgLz5KZWRlIFplaWxlIGVpbnRoJmF1bWw7bHQgZGllIEJlemVpY2hudW5nIGRlcyBFaW50cmFncyB1bmQgZWluZSBDaGVja2JveCBtaXQgZGVtIFdlcnQgZGVzIEVpbnRyYWdzLjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gRXMgd2lyZCBudXIgZGllIFJlaWhlbmZvbGdlIGRlciA8c3Ryb25nPmF1c2dldyZhdW1sO2hsdGVuPC9zdHJvbmc+IEVpbnRyJmF1bWw7Z2UgZ2VzcGVpY2hlcnQuIEF1c2dldyZhdW1sO2hsdGUgRWludHImYXVtbDtnZSB3ZXJkZW4gaW1tZXIgYWxzIGVyc3RlcyBhbmdlemVpZ3QuPGJyIC8+CgkJCQlOaWNodCBhdXNnZXcmYXVtbDtobHRlIEVpbnRyJmF1bWw7Z2Ugc3RlaGVuIGRhcnVudGVyIGluIGRlciBSZWloZW5mb2xnZSwgd2llIHNpZSBpbSBUZW1wbGF0ZSBkZWZpbmllcnQgd3VyZGVuLjwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+UGFyYW1ldGVyIGYmdXVtbDtyIERhdHVtc2JsJm91bWw7Y2tlOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCVomYXVtbDtobHNjaHJpdHRlIGRlciBTdHVuZGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgMSkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlCZWdpbm4gZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAwKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVuZF9ob3VyPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlFbmRlIGRlciBTdHVuZGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgMTIgb2RlciAyMyAtIGFiaCZhdW1sO25naWcgdm9tIFBhcmFtZXRlciBzaG93MjRoKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3cyNGg8L3R0PiAodHJ1ZS9mYWxzZSkgCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIHdlcmRlbiBkaWUgU3R1bmRlbiBpbiAxMmggQW56ZWlnZSBtaXQgQU0vUE0gYW5nZXplaWd0LiAoU3RhbmRhcmQgaXMgdHJ1ZSkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwX21pbnV0ZXM8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCVomYXVtbDtobHNjaHJpdHRlIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpcyAxMCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9taW51dGU8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUJlZ2lubiBkZXIgTWludXRlbiBpbSBVaHJ6ZWl0LURyb3Bkb3duLiAoU3RhbmRhcmQgaXN0IDApCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX21pbnV0ZTwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJRW5kZSBkZXIgTWludXRlbiBpbSBVaHJ6ZWl0LURyb3Bkb3duLiAoU3RhbmRhcmQgaXN0IDU5KQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3dfY2xvY2s8L3R0PiAodHJ1ZS9mYWxzZSkgCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IGlzdCwgd2lyZCBrZWluIFVocnplaXQtRHJvcGRvd24gYW5nZXplaWd0LiAoU3RhbmRhcmQgaXN0IHRydWUpPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBCZWkgZmFsc2Ugd2lyZCBhbHMgVWhyemVpdCAwMDowMCBVaHIgZ2VzcGVpY2hlcnQ8L2VtPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRhdGVfZm9ybWF0PC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlEYXMgc3RyZnRpbWUgRGF0dW1zZm9ybWF0IGYmdXVtbDtyIGRpZSBBbnplaWdlIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZS4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgJnF1b3Q7bXVsdGlfaW5wdXQmcXVvdDs6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aW5wdXRzPC90dD4KCQk8dWw+CgkJCTxsaT4KCQkJCUVpbmUgTGlzdGUgdm9uIElucHV0LUlEcywgZGllIGluIGRlbiBNb2R1bGVpbnN0ZWxsdW5nZW4gZXJzdGVsbHQgd3VyZGVuLiAobWVocmVyZSBXZXJ0ZSBtaXQgS29tbWEgZ2V0cmVubnQpPGJyIC8+CgkJCQlFcyBrJm91bWw7bm5lbiBkaWVzZWxiZW4gSURzIG1laHJmYWNoIHZlcndlbmRldCB3ZXJkZW4uCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVfZGVsaW1pdGVyPC90dD4gKGFueSBzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPgoJCQkJRWluIFRyZW5uemVpY2hlbiBmJnV1bWw7ciBkaWUgZWluemVsbmVuIFdlcnRlIGRlcyBqZXdlaWxpZ2VuIE11bHRpSW5wdXRzLjxiciAvPgoJCQkJU3RhbmRhcmQgaXN0ICZxdW90OyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsbGltaXRlciAtLSZndDsmcXVvdDsKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dF9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlFaW4gVHJlbm56ZWljaGVuIGYmdXVtbDtyIGRpZSBlaW56ZWxuZW4gTXVsdGlJbnB1dHMuPGJyIC8+CgkJCQlEZWZhdWx0IGlzICZxdW90OyZsdDshLS0gbXVsdGlfaW5wdXRfZGVsbGltaXRlciAtLSZndDsmcXVvdDsKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8cD48c3Ryb25nPldhcyBpc3QgZWluIG11bHRpX2lucHV0Pzwvc3Ryb25nPjwvcD4KCQk8cD5FaW4gbXVsdGlfaW5wdXQgaXN0IGVpbiBCbG9jaywgZGVyIGF1cyBtZWhyZXJlbiBJbnB1dGZlbGRlcm4gYmVzdGVoZW4ga2Fubi48YnIgLz4KCQlEaWVzZSBrJm91bWw7bm5lbiBpbiBkZW4gTW9kdWxlaW5zdGVsbHVuZ2VuIGZlc3RnZWxlZ3Qgd2VyZGVuLiBEYWJlaSBnaWx0IGYmdXVtbDtyIGplZGVuIG11bHRpX2lucHV0IGRlcnNlbGJlIFN5bnRheCB3aWUgaW4gZWluZW0gU2VpdGVudGVtcGxhdGUgYmVpbSBFcnN0ZWxsZW4gZWluZXMgSW5oYWx0c2Jsb2Nrcy48YnIgLz4KCQlNdWx0aUlucHV0cyBrJm91bWw7bm5lbiB2ZXJ3ZW5kZXQgd2VyZGVuLCB1bSB2ZXJzY2hpZWRlbmUgV2VydGUgaW4gZWluZW0gZWluemlnZW4gSW5oYWx0c2Jsb2NrIHp1IHNwZWljaGVybiwgd29iZWkgZiZ1dW1sO3IgamVkZW4gV2VydCB1bnRlcnNjaGllZGxpY2hlIElucHV0ZmVsZGVyIHZlcndlbmRldCB3ZXJkZW4gayZvdW1sO25uZW4uPGJyIC8+CgkJRGllc2UgQmwmb3VtbDtja2Uga2FubiBtYW4gei5CLiB2ZXJ3ZW5kZW4sIHVtIGVpbmUgTGlzdGUgbWl0IE1vZHVsZW4gdW5kIHp1Z2VoJm91bWw7cmlnZW4gUGFyYW1ldGVybiBhbnp1emVpZ2VuLjxiciAvPgoJCUJlaXNwaWVsIGVpbmVzIE11bHRpSW5wdXRzIGltIFNlaXRlbnRlbXBsYXRlOjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSZxdW90OyBsYWJlbD0mcXVvdDtTZWl0ZW5tb2R1bGUmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDttdWx0aV9pbnB1dCZxdW90OyBpbnB1dHM9JnF1b3Q7bW9kdWxlLG1vZHVsZSxtb2R1bGUsbW9kdWxlJnF1b3Q7fQoJCTwvY29kZT4KCQk8L3ByZT4KCQk8cD5CZWlzcGllbCBmJnV1bWw7ciBlaW5lbiBNdWx0aUlucHV0IGRlciAmdXVtbDtiZXIgZGllIE1vZHVsZWluc3RlbGx1bmcgZXJzdGVsbHQgd2VyZGVuIGthbm4gKE5hbWU9JnF1b3Q7bW9kdWxlJnF1b3Q7KTo8L3A+CgkJPHByZT4KCQk8Y29kZT4KCQl7Y29udGVudCBibG9jaz0mcXVvdDttb2R1bGUgc2VsZWN0aW9uJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDsgaXRlbXM9JnF1b3Q7fE5ld3N8R2FsbGVyeXxNZW51JnF1b3Q7fQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBwYXJhbXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IG9uZWxpbmU9dHJ1ZX0KCQk8L2NvZGU+CgkJPC9wcmU+CgkJPHA+V2llIHNpZWh0IGRhcyBudW4gYmVpbSBCZWFyYmVpdGVuIGVpbmVyIFNlaXRlIGF1cz88L3A+CgkJPHA+RXMgd2lyZCBlaW4gRmllbGRzZXQgbWl0IGRlciBMZWdlbmRlICZxdW90O1NlaXRlbm1vZHVsZSZxdW90OyBhbmdlemVpZ3QuIDxiciAvPgoJCUluIGRpZXNlbSBGaWVsZHNldCB3aXJkIGRlciBNdWx0aUlucHV0ICZxdW90O21vZHVsZSZxdW90OyB2aWVybWFsIGFuZ2V6ZWlndC48YnIgLz4KCQlELmguIGVzIGdpYnQgdmllciBaZWlsZW4gbWl0IGplIHp3ZWkgSW5wdXRmZWxkZXJuLiBFaW4gRHJvcGRvd24gdW5kIGVpbiBlaW56ZWlsaWdlcyBUZXh0aW5wdXQuPC9wPgoJCTxwPldhcyB3aXJkIGdlc3BlaWNoZXJ0PzwvcD4KCQk8cD5EYXMgTW9kdWwgc3BlaWNoZXJ0IGRpZSBXZXJ0ZSBhbHMgZWluZW4gZWluemVsbmVuIEluaGFsdHNibG9jay4gRGFiZWkgd2VyZGVuIGRpZSBlaW56ZWxuZW4gSW5wdXRmZWxkZXIgbWl0IGRlbSBpbnB1dF9kZWxpbWl0ZXIgdm9uZWluYW5kZXIgZ2V0cmVubnQgdW5kIGRlcmVuIFdlcnQgbWl0IGRlbSBpbnB1dF92YWx1ZV9kZWxpbWl0ZXIuPGJyIC8+CgkJTmVobWVuIHdpciBtYWwgYW4sIGVzIHd1cmRlIGRhcyBOZXdzbW9kdWwgdmllcm1hbCBhdXNnZXcmYXVtbDtobHQsIGplZG9jaCBtaXQgdW50ZXJzY2hpZWRsaWNoZW4gUGFyYW1ldGVybiB3aWUgei5CLiBjYXRlZ29yeT0mcXVvdDsxJnF1b3Q7LCBjYXRlZ29yeT0mcXVvdDsyJnF1b3Q7LCBjYXRlZ29yeT0mcXVvdDszJnF1b3Q7LCBjYXRlZ29yeT0mcXVvdDs0JnF1b3Q7LjxiciAvPgoJCUluIGRlciBEYXRlbmJhbmsgd2lyZCBmb2xnZW5kZXMgZiZ1dW1sO3IgZGllc2VuIEJsb2NrIGdlc3BlaWNoZXJ0OjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCU5ld3MmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDtjYXRlZ29yeT0iMSImbHQ7IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLSZndDs8YnIgLz4KCQlOZXdzJmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7Y2F0ZWdvcnk9IjIiJmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7PGJyIC8+CgkJTmV3cyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmd0O2NhdGVnb3J5PSIzIiZsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmd0OzxiciAvPgoJCU5ld3MmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDtjYXRlZ29yeT0iNCIKCQk8L2NvZGU+CgkJPC9wcmU+CgkJPHA+SW0gU2VpdGVudGVtcGxhdGUga2FubiBtYW4gbnVuIGRlbiBJbmhhbHQgZGllc2VzIEJsb2NrcyBhbmhhbmQgZGVyIFRyZW5uemVpY2hlbiBhdWZ0ZWlsZW4gdW5kIGRpZSBhdXNnZXcmYXVtbDtobHRlbiBNb2R1bGUgaW5rbC4gaWhyZXIgamV3ZWlsaWdlbiBQYXJhbWV0ZXIgYXVmcnVmZW4uPC9wPgoJCTxwPktvbXBsZXR0ZXMgQmVpc3BpZWw6PC9wPgoJCTxwcmU+CgkJPGNvZGU+CgkJeyogSW5oYWx0c2Jsb2NrIGVyc3RlbGxlbiB1bmQgZGVyIFZhcmlhYmxlIFwkbW9kdWxlcyB6dXdlaXNlbiAqfQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21laW5lX3NlaXRlbm1vZHVsZSZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDtNb2R1bGUsTW9kdWxlLE1vZHVsZSxNb2R1bGUmcXVvdDsgYXNzaWduPSZxdW90O21vZHVsZXMmcXVvdDt9CgkJCgkJeyogSW5oYWx0IGRlciBWYXJpYWJsZSBcJG1vZHVsZXMgaW4gZWluIEFycmF5IGF1ZnRlaWxlbiB1bmQgaW4gZGVyIFZhcmlhYmxlIFwkbW9kdWxlcyBzcGVpY2hlcm47IHNvbWl0IGhhYmVuIHdpciBkaWUgTXVsdGlJbnB1dHMgKn0KCQl7YXNzaWduIHZhcj1tb2R1bGVzIHZhbHVlPSZxdW90OyZsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmd0OyZxdW90O3xleHBsb2RlOlwkbW9kdWxlc30KCQkKCQl7KiBqZWRlbiBNdWx0aUlucHV0IGR1cmNoZ2VoZW4gKn0KCQl7Zm9yZWFjaCBmcm9tPVwkbW9kdWxlcyBpdGVtPSZxdW90O21vZHVsZSZxdW90O30KCQkJe2lmIFwkbW9kdWxlICE9ICcnfQoJCQkKCQkJCXsqIGRpZSBXZXJ0ZSBkZXMgTXVsdGlJbnB1dHMgaW4gZWluIEFycmF5IGF1ZnRlaWxlbjsgc29taXQgaGFiZW4gd2lyIE1vZHVsbmFtZSB1bmQgUGFyYW1ldGVyICp9CgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9JnF1b3Q7Jmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7JnF1b3Q7fGV4cGxvZGU6XCRtb2R1bGV9CgkJCQkKCQkJCXtpZiBcJG1vZHVsZV9pdGVtc1swXSAhPSAmIzAzOTsmIzAzOTt9CgkJCQkKCQkJCQl7KiBNb2R1bCBhdWZydWZlbiAqfQoJCQkJCXtpZiBpc3NldChcJG1vZHVsZV9pdGVtc1sxXSl9CgkJCQkJCXtldmFsIHZhcj1cJHNtYXJ0eS5sZGVsaW18Y2F0OidjbXNfbW9kdWxlIG1vZHVsZT0iJ3xjYXQ6XCRtb2R1bGVfaXRlbXNbMF18Y2F0OiciICd8Y2F0OlwkbW9kdWxlX2l0ZW1zWzFdfGNhdDpcJHNtYXJ0eS5yZGVsaW19CgkJCQkJe2Vsc2V9CgkJCQkJCXtldmFsIHZhcj1cJHNtYXJ0eS5sZGVsaW18Y2F0OidjbXNfbW9kdWxlIG1vZHVsZT0iJ3xjYXQ6XCRtb2R1bGVfaXRlbXNbMF18Y2F0OiciJ3xjYXQ6XCRzbWFydHkucmRlbGltfQoJCQkJCXsvaWZ9CgkJCQkJCgkJCQl7L2lmfQoJCQkJCgkJCXsvaWZ9CgkJCgkJey9mb3JlYWNofQoJCTwvY29kZT4KCQk8L3ByZT4KCTwvbGk+CjwvdWw+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPkRpZXNlcyBNb2R1bCBiaWV0ZXQga2VpbmUga29tbWVyemllbGxlIFVudGVyc3QmdXVtbDt0enVuZy4gRXMgZ2lidCBqZWRvY2ggZWluaWdlIE0mb3VtbDtnbGljaGtlaXRlbiwgSGlsZmUgenUgZmluZGVuOjwvcD4KPHVsPgoJPGxpPkRpZSBIb21wYWdlIGRlcyBQcm9qZWt0ZXMgaXN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvIj5odHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLzwvYT48L2xpPgoJPGxpPldlaXRlcmUgRGlza3Vzc2lvbmVuIGdpYnQgZXMgYXXDn2VyZGVtIGluIGRlbiBDTVMgTWFkZSBTaW1wbGUgRm9yZW46PGJyIC8+Cgk8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5kZSI+aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUuZGU8L2E+PGJyIC8+Cgk8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPmh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZzwvYT48L2xpPgo8L3VsPgo8YnIgLz4KPHA+Qml0dGUgbWVsZGVuIFNpZSBGZWhsZXIgb2RlciBWZXJiZXNzZXJ1bmdzdm9yc2NobCZhdW1sO2dlIGF1ZiBkZXIgUHJvamVjdCBIb21lcGFnZS48L3A+CjxoMz5Db3B5cmlnaHQgdW5kIExpemVuejwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMC0yMDExLCBHZW9yZyBCdXNjaCAoTmFOKSA8YSBocmVmPSJtYWlsdG86Z2VvcmcuYnVzY2hAZ214Lm5ldCI+Jmx0O2dlb3JnLmJ1c2NoQGdteC5uZXQmZ3Q7PC9hPi4gQWxsZSBSZWNodGUgdm9yYmVoYWx0ZW4uPC9wPgo8cD5EaWVzZXMgTW9kdWwgd3VyZGUgdW50ZXIgZGVyIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPiB2ZXImb3VtbDtmZmVudGxpY2h0LiBTaWUgbSZ1dW1sO3NzZW4gZGllc2VyIExpemVueiB6dXN0aW1tZW4sIGJldm9yIFNpZSBkYXMgTW9kdWwgdmVyd2VuZGVuLjwvcD4KPHA+CglMYXV0IGRlbiBOdXR6dW5nc2Jlc3RpbW11bmdlbiBkZXIgR1BMIHdpcmQgZGllc2UgU29mdHdhcmUgc28gdmVyJm91bWw7ZmZlbnRsaWNodCB3aWUgc2llIGlzdC48YnIgLz4KCVNpZSBlcmhlYnQga2VpbmVybGVpIEFuc3BydWNoIGF1ZiBlaW53YW5kZnJlaWUgRnVua3Rpb24uPGJyIC8+CglEYXMgTW9kdWwgd3VyZGUgZXJzdGVsbHQsIGluIGRlciBIb2ZmbnVuZyBuJnV1bWw7dHpsaWNoIHp1IHNlaW4uPGJyIC8+CglFcyBiZXN0ZWh0IGtlaW5lcmxlaSBHYXJhbnRpZSBhdWYgZWluZW4gZWlud2FuZGZyZWllbiBOdXR6ZW4uPGJyIC8+CglCaXR0ZSBsZXNlbiBTaWUgZGllIE51dHp1bmdzYmVkaW5ndW5nZW4gZiZ1dW1sO3IgYXVzZiZ1dW1sO2hybGljaGUgSW5mb3JtYXRpb25lbi4KPC9wPgo8YnIgLz4KRU9UOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddICAgICAgICAgICAgICAgID0gIkFkdmFuY2VkIENvbnRlbnQiOwokbGFuZ1snYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnXSAgICAgICAgPSAiQWR2YW5jZWQgT3B0aW9ucyI7CiRsYW5nWydpbnN0YWxsZWQnXSAgICAgICAgICAgICAgICAgICAgICA9ICJNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGluc3RhbGxlZCI7CiRsYW5nWyd1bmluc3RhbGxlZCddICAgICAgICAgICAgICAgICAgICA9ICJNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIHVuaW5zdGFsbGVkIjsKJGxhbmdbJ3VwZ3JhZGVkJ10gICAgICAgICAgICAgICAgICAgICAgID0gIk1vZHVsZSBBZHZhbmNlZENvbnRlbnQgdXBncmFkZWQgdG8gJXMiOwokbGFuZ1sncG9zdGluc3RhbGwnXSAgICAgICAgICAgICAgICAgICAgPSAiTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBpbnN0YWxsZWQuIjsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSAgICAgICAgICAgICAgICAgID0gIk1vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgdW5pbnN0YWxsZWQuIjsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSAgICAgICAgICAgICAgID0gIkRvIHlvdSByZWFsbHkgd2FudCB1bmluc3RhbGwgdGhlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQ/IjsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gICAgICAgID0gIjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhpcyBibG9jayBpcyB1c2VkIG11bHRpcGxlIHRpbWVzIGluIHRlbXBsYXRlLiBZb3Ugb25seSBzZWUgdGhlIGZpcnN0IGJsb2NrIGhlcmUuPC9lbT4iOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSAgICAgICAgICAgICAgPSAiPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBDYW5ub3QgdXNlIGJhc2ljIGNvbnRlbnQgcHJvcGVydHkgbmFtZSAnJXMnIGFzIHZhbHVlIG9mIHBhcmFtICdibG9jaycuIDxiciAvPlRoaXMgYmxvY2sgaXMgZGlzYWJsZWQuIENoZWNrIHlvdXIgcGFnZSB0ZW1wbGF0ZSBhbmQgY2hvc2UgYSBkaWZmZXJlbnQgdmFsdWUgb2YgcGFyYW0gJ2Jsb2NrJy48L2VtPiI7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gICAgICAgICAgICAgICA9ICJFbmQgZGF0ZSBtdXN0IGJlIGxhdGVyIHRoYW4gc3RhcnQgZGF0ZS4iOwokbGFuZ1sneW91YXJlaW50ZXh0J10gICAgICAgICAgICAgICAgICAgPSAiQ3VycmVudCBkaXJlY3RvcnkiOwokbGFuZ1snZGltZW5zaW9ucyddICAgICAgICAgICAgICAgICAgICAgPSAiSW1hZ2VzaXplIjsKJGxhbmdbJ3NpemUnXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIkZpbGVzaXplIjsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSAgICAgICAgICAgID0gIkluaGVyaXQgZnJvbSBwYXJlbnQiOwokbGFuZ1snbm9uZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAibm9uZSI7CiRsYW5nWydpbnZhbGlkJ10gICAgICAgICAgICAgICAgICAgICAgICA9ICJpbnZhbGlkIjsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gICAgICAgICAgICAgID0gIjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gSW52YWxpZCB2YWx1ZSAnJXMnIG9mIHBhcmFtIGJsb2NrX3R5cGUgaW4gYmxvY2sgJyVzJy48YnIgLz5DaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4iOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50X2Jsb2NrcGFyYW1zJ10gPSAiPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IEluc3VmZmljaWVudCBwYXJhbXMuIDxiciAvPk1pc3NpbmcgcGFyYW0gJyVzJyBmb3IgYmxvY2sgJyVzJy4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+IjsKJGxhbmdbJ3llcyddICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIlllcyI7CiRsYW5nWydubyddICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJObyI7CiRsYW5nWydmcm9udGVuZGFjY2VzcyddICAgICAgICAgICAgICAgICA9ICJGcm9udGVuZCBhY2Nlc3MiOwokbGFuZ1sncmVkaXJlY3RwYWdlJ10gICAgICAgICAgICAgICAgICAgPSAiUmVkaXJlY3QgUGFnZSBpZiBubyBhY2Nlc3MiOwokbGFuZ1snc2hvd2xvZ2luZm9ybSddICAgICAgICAgICAgICAgICAgPSAiU2hvdyBsb2dpbiBmb3JtIjsKJGxhbmdbJ3JlZ2lzdGVyZWR1c2VycyddICAgICAgICAgICAgICAgID0gIlJlZ2lzdGVyZWQgdXNlcnMgb25seSI7CiRsYW5nWydibG9jayddICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJCbG9jayI7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gICAgICAgICAgICAgICAgICA9ICJVc2UgZXhwaXJlIGRhdGUiOwokbGFuZ1snc3RhcnRkYXRlJ10gICAgICAgICAgICAgICAgICAgICAgPSAiU3RhcnQgRGF0ZSI7CiRsYW5nWydlbmRkYXRlJ10gICAgICAgICAgICAgICAgICAgICAgICA9ICJFbmQgRGF0ZSI7CiRsYW5nWydibG9ja2NvbnRlbnQnXSAgICAgICAgICAgICAgICAgICA9ICJCbG9jayBDb250ZW50IjsKJGxhbmdbJ3NldHBhZ2VpbmFjdGl2ZSddICAgICAgICAgICAgICAgID0gIlNldCBQYWdlIHRvIEluYWN0aXZlIjsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSAgICAgICAgICAgICAgICAgICAgID0gIkRlbGV0ZSBQYWdlIjsKJGxhbmdbJ3VuaW5zdGFsbGFjdGlvbiddICAgICAgICAgICAgICAgID0gIlVuaW5zdGFsbCBhY3Rpb24iOwokbGFuZ1snc2V0Y29udGVudDEnXSAgICAgICAgICAgICAgICAgICAgPSAiU2V0IGFsbCBQYWdlcyBvZiBBZHZhbmNlZENvbnRlbnQgYmFjayB0byB0eXBlIENvbnRlbnQiOwokbGFuZ1snc2V0Y29udGVudDInXSAgICAgICAgICAgICAgICAgICAgPSAiU2V0IGFsbCBQYWdlcyBvZiBBZHZhbmNlZENvbnRlbnQgYmFjayB0byB0eXBlIENvbnRlbnQgYW5kIHJlbW92ZSBhZGRpdGlvbmFsIGNvbnRlbnQgYmxvY2tzIjsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddICAgICAgICAgICAgICAgICAgID0gIlByZWZlcmVuY2VzIHVwZGF0ZWQiOwokbGFuZ1snc3VjY2VzcyddICAgICAgICAgICAgICAgICAgICAgICAgPSAiT2siOwokbGFuZ1snZXJyb3InXSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiRXJyb3IiOwokbGFuZ1snZGVsZXRlcGFnZXMnXSAgICAgICAgICAgICAgICAgICAgPSAiRGVsZXRlIGFsbCBwYWdlcyBvZiB0eXBlIEFkdmFuY2VkQ29udGVudCI7CiRsYW5nWydpbXBvcnRwYWdlcyddICAgICAgICAgICAgICAgICAgICA9ICJTZXQgYWxsIFBhZ2VzIG9mIHR5cGUgJXMgdG8gdHlwZSAlcy4iOwokbGFuZ1snY29uZmlybWltcG9ydCddICAgICAgICAgICAgICAgICAgPSAiRG8geW91IHJlYWxseSB3YW50IHRvIGNoYW5nZSB0aGUgY29udGVudCB0eXBlIG9mIGFsbCBjb250ZW50IHBhZ2VzPyI7CiRsYW5nWyd0b2dnbGVfbWVzc2FnZSddICAgICAgICAgICAgICAgICA9ICJIaWRlIHRoaXMgbWVzc2FnZSI7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSAgICAgICAgICAgICAgICA9ICJEZWZhdWx0IEFkdmFuY2VkQ29udGVudCBzZXR0aW5ncyI7CiRsYW5nWydyZWRpcmVjdHBhcmFtcyddICAgICAgICAgICAgICAgICA9ICJVUkwgcGFyYW1zIHRvIGFwcGVuZCB3aGVuIHJlZGlyZWN0aW5nIjsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gICAgICAgICAgICAgICAgID0gIlVzZSBzbWFydHkgdG8gcHJvY2VzcyB0aGUgcGFyYW1zIjsKJGxhbmdbJ2Vycm9yX2xvYWRpbmdfbW9kdWxlJ10gICAgICAgICAgID0gIjxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBDb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJy4gKERlZmluZWQgZm9yIGJsb2NrICclcycgaW4geW91ciBwYWdlIHRlbXBsYXRlLik8L2VtPiI7CiRsYW5nWydlcnJvcl9jb250ZW50YmxvY2tfc3VwcG9ydCddICAgICA9ICI8ZW0+PHN0cm9uZz5FcnJvcjo8L3N0cm9uZz4gTW9kdWxlICclcycgZG9lcyBub3Qgc3VwcG9ydCBjb250ZW50YmxvY2tzLiAoRGVmaW5lZCBmb3IgYmxvY2sgJyVzJyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+IjsKJGxhbmdbJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnXSAgICAgICAgICAgID0gIkFsbCBwYWdlcyBvZiB0eXBlICVzIHN1Y2Nlc2Z1bGx5IGNoYW5nZWQgdG8gJXMiOwokbGFuZ1snc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucyddICAgPSAiU2hvdyBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWIiOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddICAgICAgICAgICAgICAgPSAiJXMgZGlzcGxheSBzZXR0aW5ncyI7CiRsYW5nWydzYXZlX2NvbGxhcHNlX3N0YXR1cyddICAgICAgICAgICA9ICJTYXZlIGNvbGxwYXNlIHN0YXR1cyBvZiAlcyI7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddICAgICAgICAgICAgICAgICA9ICJjb250ZW50IGJsb2NrcyI7CiRsYW5nWydibG9ja19tZXNzYWdlJ10gICAgICAgICAgICAgICAgICA9ICJjb250ZW50IGJsb2NrIG1lc3NhZ2UiOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gICAgICAgICAgICAgICAgICAgPSAiYmxvY2sgZ3JvdXBzIjsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSAgICAgICAgICAgICAgID0gIkNvbGxhcHNlICVzIGJ5IGRlZmF1bHQiOwokbGFuZ1sncGVyX3BhZ2UnXSAgICAgICAgICAgICAgICAgICAgICAgPSAicGVyIHBhZ2UiOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gICAgICAgICAgICAgICAgICAgPSAicGVyIHRlbXBsYXRlIjsKJGxhbmdbJ2JvdGgxJ10gICAgICAgICAgICAgICAgICAgICAgICAgID0gInRlbXBsYXRlIE9SIHBhZ2UgIjsKJGxhbmdbJ2JvdGgyJ10gICAgICAgICAgICAgICAgICAgICAgICAgID0gInRlbXBsYXRlIEFORCBwYWdlIjsKJGxhbmdbJ2NvbnRlbnQnXSAgICAgICAgICAgICAgICAgICAgICAgID0gJ0NvbnRlbnQnOwokbGFuZ1snY29udGVudDInXSAgICAgICAgICAgICAgICAgICAgICAgPSAnQWR2YW5jZWQgQ29udGVudCc7CiRsYW5nWydwcmVmcyddICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydtdWx0aV9pbnB1dCddICAgICAgICAgICAgICAgICAgICA9ICdNdWx0aSBJbnB1dHMnOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsJ10gICAgICAgICAgICAgICAgPSAnTXVsdGkgSW5wdXQgVGVtcGxhdGVzJzsKJGxhbmdbJ2FkZF9tdWx0aV9pbnB1dCddICAgICAgICAgICAgICAgID0gJ0FkZCBuZXcgbXVsdGkgaW5wdXQnOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddICAgICAgICAgICAgPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCB0ZW1wbGF0ZSc7CiRsYW5nWydpbnB1dF9pZCddICAgICAgICAgICAgICAgICAgICAgICA9ICdJbnB1dCBJRCc7CiRsYW5nWydpbnB1dF9maWVsZHMnXSAgICAgICAgICAgICAgICAgICA9ICdJbnB1dCBmaWVsZHMnOwokbGFuZ1sndHBsX25hbWUnXSAgICAgICAgICAgICAgICAgICAgICAgPSAnVGVtcGxhdGUgbmFtZSc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddICAgICAgICAgICAgICAgICA9ICdUZW1wbGF0ZSBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5JzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddICAgICAgICAgICAgID0gIklucHV0IGZpZWxkcyBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5LiI7CiRsYW5nWydlcnJvcl9pbnB1dF9pZCddICAgICAgICAgICAgICAgICA9ICJObyBpbnB1dCBpZCBnaXZlbiBvciBpbnB1dCBpZCBhbHJlYWR5IGV4aXN0cy4iOwokbGFuZ1snZXJyb3JfaW5wdXRfaWRfZXhpc3RzJ10gICAgICAgICAgPSAiSW5wdXQgSUQgaXMgYWxyZWFkeSBpbiB1c2UuIENob29zZSBhIGRpZmZlcmVudCBvbmUuIChtdXN0IGJlIHVuaXF1ZSkiOwokbGFuZ1snbXVsdGlfaW5wdXRfYWRkZWQnXSAgICAgICAgICAgICAgPSAiTXVsdGkgSW5wdXQgYWRkZWQuIjsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSAgICAgICAgICAgID0gIk11bHRpIElucHV0IGRlbGV0ZWQuIjsKJGxhbmdbJ211bHRpX2lucHV0X3VwZGF0ZWQnXSAgICAgICAgICAgID0gIk11bHRpIElucHV0IHVwZGF0ZWQuIjsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9hZGRlZCddICAgICAgICAgID0gIk11bHRpIElucHV0IHRlbXBsYXRlIGFkZGVkLiI7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfdXBkYXRlZCddICAgICAgICA9ICJNdWx0aSBJbnB1dCB0ZW1wbGF0ZSB1cGRhdGVkLiI7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCddICAgICAgICA9ICJNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBkZWxldGVkLiI7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSAgICAgICAgICAgICAgICA9ICJEZWxldGUgc2VsZWN0ZWQgaXRlbXMiOwokbGFuZ1snY29uZmlybV9kZWxldGUnXSAgICAgICAgICAgICAgICAgPSAiRG8geW91IHJlYWxseSB3YW50IGRvIGRlbGV0ZSB0aGlzIGl0ZW0/IjsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJ10gICAgICAgID0gIkRvIHlvdSByZWFsbHkgd2FudCBkbyBkZWxldGUgdGhlIHNlbGVjdGVkIGl0ZW1zPyI7CiRsYW5nWydoZWxwX3RwbF92YXJzJ10gICAgICAgICAgICAgICAgICA9ICc8cD48c3Ryb25nPlRlbXBsYXRlIHZhcnM6PC9zdHJvbmc+PC9wPgo8cD48cHJlPjxjb2RlPntcJGlucHV0c308L2NvZGU+PC9wcmU+IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGRlZmluZWQgaW5wdXQgZWxlbWVudHMgb2YgdGhhdCBtdWx0aSBpbnB1dCBibG9jay48YnIgLz4KRWFjaCBpbnB1dCBlbGVtZW50IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGl0cyBwYXJhbXMuIDxiciAvPgpTZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgaW5mby48YnIgLz4KQWRkaXRpb25hbCBwYXJhbSBpcyAiaW5wdXQiIHRoYXQgd2lsbCBwcmludCBvdXQgdGhlIGlucHV0IGVsZW1lbnQuPGJyIC8+ClRvIGFjY2VzcyB0aGUgcGFyYW1zIHVzZSB0aGUgZG90IHN5bnRheC48YnIgLz4KRXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+e2ZvcmVhY2ggZnJvbT0kaW5wdXRzIGl0ZW09ZWxtfQoJeyRlbG0ubGFiZWx9OiZuYnNwO3skZWxtLmlucHV0fSZsdDticiAvJmd0Owp7L2ZvcmVhY2h9PC9jb2RlPjwvcHJlPic7CiRsYW5nWydoZWxwJ10gPSA8PDxFT1QKPGJyIC8+CjxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgo8cD5UaGlzIGlzIGEgbW9kaWZpY2F0aW9uIG9mIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSAiQ29udGVudCIgb2YgQ01TbXMuPGJyIC8+Ckl0IHByb3ZpZGVzIG1vcmUgZmxleGliaWxpdHkgYnkgY3JlYXRpbmcgY3VzdG9tIGlucHV0IGNvbnRyb2xzIGluIGJhY2tlbmQuPGJyIC8+ClVzZXJzIGNhbiBhZGQgZHJvcGRvd25zLCBtdWx0aXBsZSBzZWxlY3QgbGlzdHMsIGNoZWNrYm94ZXMsIGdyb3VwIGNvbnRlbnQgYmxvY2tzIAppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgCnVzaW5nIGFkZGl0aW9uYWwgcGFyYW1zIGluIHRoZSB0ZW1wbGF0ZSB3aGVuIGNhbGxpbmcgdGhlIGNvbnRlbnQuPGJyIC8+Ckl0IGFsc28gYWRkcyBhYmlsaXR5IHRvIGdyYW50IGFjY2VzcyBvZiBwYWdlcyB0byBjZXJ0YWluIHVzZXJzIG9mIHRoZSAKRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIApGcm9udEVuZFVzZXJzIG1vZHVsZSBvciByZWRpcmVjdCB0byBhIHNwZWNpZmllZCBwYWdlIHNob3dpbmcgdGhlIGxvZ2luIGZvcm0gb3IgCmp1c3QgcmVkaXJlY3Qgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlLjxiciAvPgpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgCnBhcmVudCBwYWdlcy48L3A+CjxwPllvdSBjYW4gZXZlbiB1c2Ugc21hcnR5IGxvZ2ljIGluIHBhcmFtZXRlciB2YWx1ZXMuIFRoYXQgbWVhbnMgeW91IGNhbiB1c2UgdGhlIApyZXN1bHQgb2YgYSBwbHVnaW4sIGFuIHVkdCBvciBldmVuIGEgbW9kdWxlIG9yIGp1c3QgdGhlIGNvbnRlbnQgb2YgYSBnbG9iYWwgCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+CjxoMz5Ib3cgaXMgaXQgdXNlZD88L2gzPgo8cD5BZnRlciBpbnN0YWxsYXRpb24gdGhlIG1vZHVsZSBzZXR0aW5ncyBjYW4gYmUgZm91bmQgaW4gIkV4dGVuc2lvbnMtPkFkdmFuY2VkQ29udGVudCIuPC9wPgo8cD5BZGRpdGlvbmFsbHkgeW91IHdpbGwgaGF2ZSBhIG5ldyBjb250ZW50IHR5cGUgIkFkdmFuY2VkQ29udGVudCIgYXZhaWxhYmxlIAp3aGVuIGFkZGluZy9lZGl0aW5nIGEgcGFnZS48YnIgLz4KPHA+QWRkIHRoZSBmb2xsb3dpbmcgcGFyYW1zIHRvIHlvdXIgY29udGVudCB0YWcgaW4geW91ciBwYWdlIHRlbXBsYXRlLCAKY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICJBZHZhbmNlZENvbnRlbnQiIGFuZCBzZWUgd2hhdCBoYXBwZW5zIAppbiBiYWNrZW5kLi4uPC9wPgo8aDM+V2hhdCBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGU/PC9oMz4KPHA+YWxsIHBhcmFtcyBhcmUgb3B0aW9uYWw8L3A+CjxwPjxzdHJvbmc+RGVmYXVsdCBwYXJhbXM6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2s8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJQWxsb3dzIHlvdSB0byBoYXZlIG1vcmUgdGhhbiBvbmUgY29udGVudCBibG9jayBwZXIgcGFnZS4gSWYgbXVsdGlwbGUgY29udGVudCB0YWdzIGFyZSBwdXQgb24gYSB0ZW1wbGF0ZSwgdGhhdCBudW1iZXIgb2YgZWRpdCBib3hlcyB3aWxsIGJlIGRpc3BsYXllZCBpZiB0aGUgcGFnZSBpcyBlZGl0ZWQuPGJyIC8+CgkJCQllLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0iU2Vjb25kIENvbnRlbnQgYmxvY2sifTwvY29kZT48YnIgLz4KCQkJCU5vdywgaWYgeW91IGVkaXQgYSBwYWdlIHRoZXJlIHdpbGwgYmEgYSB0ZXh0YXJlYSBjYWxsZWQgIlNlY29uZCBDb250ZW50IGJsb2NrIi48YnIgLz4KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhlIG5hbWUgb2YgdGhlIGNvbnRlbnQgYmxvY2sgbWF5IGNvbnRhaW4gb25seSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgdW5kZXJzY29yZXMgKG5vIHdoaXRlc3BhY2VzLCBzcGVjaWFsIGNoYXJzLCB1bWxhdXRzIGV0Yy4pLiBPdGhlcndpc2UgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBwcm9wZXIgbmFtZSAoc2ltaWxhciB0byB0aGUgcGFnZSBhbGlhcykuPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD53eXNpd3lnPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+b25lbGluZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPklmIHNldCB0byB0cnVlLCB0aGVuIG9ubHkgb25lIGVkaXQgbGluZSB3aWxsIGJlIHNob3duIHdoaWxlIGVkaXRpbmcgdGhpcyBibG9jay4gSWYgZmFsc2UsIHRoZW4gaXQgYWN0cyBhcyBub3JtYWwuIE9ubHkgd29ya3Mgd2hlbiBibG9jayBwYXJhbWV0ZXIgaXMgdXNlZC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkRlZmF1bHQgY29udGVudCB3aGVuIGNyZWF0aW5nIGEgbmV3IHBhZ2UuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5sYWJlbDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YXNzaWduPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCUFzc2lnbnMgdGhlIGNvbnRlbnQgdG8gYSBzbWFydHkgcGFyYW1ldGVyLCB3aGljaCB5b3UgY2FuIHRoZW4gdXNlIGluIG90aGVyIGFyZWFzIG9mIHRoZSBwYWdlLCBvciB1c2UgdG8gdGVzdCB3aGV0aGVyIGNvbnRlbnQgZXhpc3RzIGluIGl0IG9yIG5vdC48YnIgLz4KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPgoJCQkJPGNvZGU+e2NvbnRlbnQgYXNzaWduPXBhZ2Vjb250ZW50fTxiciAvPgoJCQkJe3RhYmxlX29mX2NvbnRlbnRzIHRoZXBhZ2Vjb250ZW50PSJcJHBhZ2Vjb250ZW50In08L2NvZGU+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+QWR2YW5jZWQgcGFyYW1zOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3R5cGU8L3R0PiAodGV4dCxjaGVja2JveCxkcm9wZG93bixzZWxlY3RfbXVsdGlwbGUsZGF0ZSxtdWx0aV9pbnB1dCkgCgkJPHVsPgoJCQk8bGk+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHdoYXQgY29udGVudCBjb250cm9sIHR5cGUgaXMgdXNlZCBpbiB0aGUgYmFjayBlbmQuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5wYWdlX3RhYjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlUaGlzIHBhcmFtZXRlciBzZXRzIHRoZSB0YWIgaW4gd2hpY2ggdGhlIGNvbnRlbnQgYmxvY2sgaXMgZGlzcGxheWVkIGluIHRoZSBiYWNrZW5kLjxiciAvPgoJCQkJUG9zc2libGUgdmFsdWVzIGFyZSAibWFpbiIgKCA9IFRhYiAiTWFpbiBNZW51IiksICJvcHRpb25zIiAoID0gVGFiICJPcHRpb25zIiksIG9yIGFueSBvdGhlciBhcmJpdHJhcnkgdmFsdWU8YnIgLz4KCQkJCTxlbT5lLmcuIHlvdSBjYW4gYWRkIGEgY2hlY2tib3ggdG8gdGhlIG9wdGlvbnMgdGFiIG9yIGNyZWF0ZSBuZXcgdGFiczwvZW0+LgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3RhYjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgdGhlIGJsb2NrcyB3aXRoaW4gYSBwYWdlIHRhYiBjYW4gYmUgZnVydGhlciBkaXZpZGVkIGludG8gdGFicyBvciBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlci4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX2dyb3VwPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5XaXRoIHRoaXMgcGFyYW1ldGVyLCBtdWx0aXBsZSBibG9ja3MgY2FuIGJlIGdyb3VwZWQgaW4gYSBmaWVsZHNldC4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFjdGl2ZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJQWxsb3dzIHlvdSB0byBkaXNhYmxlIGEgY29udGVudCBibG9jay4gRGlzYWJsZWQgY29udGVudCBibG9ja3Mgd29uJ3QgYmUgc2hvd24gaW4gYmFja2VuZCBhcyB3ZWxsIGFzIGluIGZyb250ZW5kLiAob25seSB3b3JrcyB3aXRoIHtBZHZhbmNlZENvbnRlbnR9IHBsdWdpbik8YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IHRoaXMgYmxvY2suCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdXNlciBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlIHBhcmFtcyA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gYW5kIDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gYXJlIGVtcHR5IHRoZSBibG9jayBtYXkgYmUgZWRpdGVkIGJ5IGFueSB1c2VyIHdpdGggc3VmZmljaWVudCBwZXJtaXNzaW9uIHRvIGVkaXQgYSBwYWdlPC9lbT48YnIgLz48YnIgLz4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4KCQk8dWw+CgkJCTxsaT4KCQkJCUEgbGlzdCBvZiBmZXUgZ3JvdXAgaWRzIHNlcGFyYXRlZCBieSBhIGNvbW1hLjxiciAvPgoJCQkJVGhpcyBzaG93cyB0aGUgY29udGVudCBibG9jayBvbmx5IHRvIGNlcnRhaW4gZmV1IGdyb3Vwcy48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWN0aW9uPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlTcGVjaWZ5IGlmIHRoZSBsb2dpbiBmb3JtIG9mIHRoZSBmZXUgbW9kdWxlIHdpbGwgYmUgc2hvd24gb3Igbm90LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBUaGUgbG9naW4gZm9ybSB3aWxsIG9ubHkgYmUgc2hvd24gb25lIHRpbWUuPGJyIC8+CgkJCQlJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYmxvY2tzIHdpdGggbGltaXRlZCBmZXVfYWNjZXNzIGFuZCBmZXVfYWN0aW9uIHNldCB0byB0cnVlIG9ubHkgdGhlIGZpcnN0IGJsb2NrcyBsb2dpbiBmb3JtIHdpbGwgYmUgc2hvd24gYW5kIGFsbCBvdGhlciBibG9ja3Mgd2lsbCBqdXN0IGJlIGVtcHR5LjwvZW0+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWxsb3dfbm9uZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPlNldCB0byB0cnVlIGlmIHRoZSB1c2VyIG1heSBlbnRlciBlbXB0eSB2YWx1ZXMuIDxiciAvPklmIHNldCB0byBmYWxzZSBhbmQgdmFsdWUgaXMgZW1wdHkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIHBhcmFtICJkZWZhdWx0IiB3aWxsIGJlIHVzZWQuIDxiciAvPklmIHNldCB0byB0cnVlIGFuZCBibG9jayBpcyBvZiB0eXBlIGltYWdlL2ZpbGUgdGhlIG9wdGlvbiAibm9uZSIgKG1vZGU9ImRyb3Bkb3duIikgb3IgYSBidXR0b24gdG8gY2xlYXIgdGhlIHNlbGVjdGVkIGZpbGUvaW1hZ2UgdmFsdWUgKG1vZGU9ImZpbGVwaWNrZXIiKSB3aWxsIGJlIGRpc3BsYXllZC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNtYXJ0eTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJVHVybiBzbWFydHkgcHJvY2Vzc2luZyBvZiB2YWx1ZXMgb24vb2ZmLjxiciAvPgoJCQkJSWYgc2V0IHRvIHRydWUgYW55IGdpdmVuIHZhbHVlIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBzbWFydHkgZW5naW5lLjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOiA8L3N0cm9uZz4gQ29uc2lkZXIgdGhhdCB5b3UgY2Fubm90IHVzZSB0aGUgZGVmYXVsdCBzbWFydHkgZGVsaW1pdGVycyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0ZW1wbGF0ZS4gVGhpcyB3aWxsIGNhdXNlIHNtYXJ0eSBlcnJvcnMgaW4gZnJvbnRlbmQuPGJyIC8+CgkJCQlTbyB5b3UgbmVlZCB0byB1c2UgOjo6IGFzIGRlbGltaXRlciBpbnN0ZWFkLjxiciAvPjwvZW0+CgkJCQlFLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0iQ2F0ZWdvcmllcyIgbGFiZWw9IlNlbGVjdCBhIGNhdGVnb3J5IiBibG9ja190eXBlPSJkcm9wZG93biIgaXRlbXM9Ijo6Omdsb2JhbF9jb250ZW50IG5hbWU9J2NhdGVnb3J5bGlzdCc6OjoiIHNtYXJ0eT0idHJ1ZSJ9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlc2NyaXB0aW9uPC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5jb2xsYXBzZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJU2V0IHRvIHRydWUvZmFsc2UgdG8gZGlzcGxheSBibG9jayBpbiBiYWNrZW5kIGluIGNvbGxhcHNlZC9leHBhbmRlZCBtb2RlIGJ5IGRlZmF1bHQuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHdpbGwgYmUgYWx3YXlzIGZhbHNlIGlmIG5vX2NvbGxhcHNlPXRydWUgaXMgdXNlZC48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBmb2xkaW5nIG9mIGJsb2Nrcy48YnIgLz4KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgc2V0IHRvIHRydWUgcGFyYW0gY29sbGFwc2UgaXMgYWx3YXlzIGZhbHNlLjwvZW0+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cmVxdWlyZWQ8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVNldCB0byB0cnVlIGlmIHRoaXMgYmxvY2sgbWF5IG5vdCBiZSBlbXB0eS48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICJjaGVja2JveCI6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCWNoZWNrcy91bmNoZWNrcyB0aGUgY2hlY2tib3ggYnkgZGVmYXVsdCB3aGVuIGFkZGluZyBhIHBhZ2U8YnIgLz4KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVXNlICIxIiBmb3IgY2hlY2tlZCBhbmQgIjAiIGZvciB1bmNoZWNrZWQgYnkgZGVmYXVsdDxiciAvPjwvZW0+CgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9ImNoZWNrYm94IiBkZWZhdWx0PTF9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgImRyb3Bkb3duIi8ic2VsZWN0X211bHRpcGxlIjo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+SXRlbSBsYWJlbChzKSBvZiB0aGUgZmllbGQocykgKHNlcGFyYXRlZCBieSBhIGRlbGltaXRlciAtIGRlZmF1bHQgaXMgfCAocGlwZSkpPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZXM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGVyZSBhcmUgbGVzcyB2YWx1ZXMgdGhhbiBpdGVtcyB0aGUgaXRlbSBsYWJlbHMgd2lsbCBiZSB1c2VkIGFzIHZhbHVlcyAoYW5kIHZpc2UgdmVyc2EpLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVXNlIHRoZSBpdGVtIHZhbHVlcyBhcyBkZWZhdWx0LCBub3QgdGhlIGl0ZW0gbGFiZWxzLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVsaW1pdGVyPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5BIHNpZ24gb3Igc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldmlkZSB0aGUgaXRlbXMvdmFsdWVzIChkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2l6ZTwvdHQ+IChpbnRlZ2VyKQoJCTx1bD4KCQkJPGxpPkhlaWdodCBvZiBjb250ZW50IGJsb2NrIGluIGJhY2sgZW5kIGlmIDxjb2RlPmJsb2NrX3R5cGU9InNlbGVjdF9tdWx0aXBsZSI8L2NvZGU+IGlzIHNldC4gPGVtPihEZWZhdWx0IGlzIG51bWJlciBvZiBpdGVtcyk8L2VtPjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGVfaXRlbXM8L3R0PiAodHJ1ZS9mYWxzZSkgLSBzZWxlY3RfbXVsdGlwbGUgb25seQoJCTx1bD4KCQkJPGxpPgoJCQkJSWYgc2V0IHRvIHRydWUgdGhlIGl0ZW1zIHdvbid0IGJlIHNob3duIGFzIGEgbXVsdGlwbGUgc2VsZWN0IGlucHV0IHdpdGggb3B0aW9ucyBidXQgYXMgYSBsaXN0IG9mIGNoZWNrYm94ZXMgdGhhdCBjYW4gYmUgcmVvcmRlcmVkLjxiciAvPkVhY2ggcm93IGNvbnRhaW5zIHRoZSBpdGVtIGxhYmVsIGFuZCBhIGNoZWNrYm94IHdpdGggdGhlIGl0ZW0gdmFsdWUuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IG9ubHkgdGhlIG9yZGVyIG9mIHRoZSA8c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+IGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBhbHdheXMgZGlzcGxheWVkIG9uIHRoZSB0b3Agb2YgdGhlIGxpc3Qgd2hlbiByZWxvYWRpbmcgdGhlIGVkaXQgcGFnZS48YnIgLz4KCQkJCVVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIHRlbXBsYXRlPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5jb2xsYXBzZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJVGhlIGRlZmF1bHQgZGlzcGxheSBvZiB0aGUgYmxvY2sgaW4gYmFja2VuZC4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICJkYXRlIjo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwX2hvdXJzPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlzdGVwcyBvZiBob3VycyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RhcnRfaG91cjwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJdGhlIHN0YXJ0IGhvdXIgb2YgdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAwKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVuZF9ob3VyPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQl0aGUgZW5kIGhvdXIgb2YgdGhlIGNsb2NrIGRyb3Bkb3duIChkZWZhdWx0IGlzIDEyIG9yIDIzKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3cyNGg8L3R0PiAodHJ1ZS9mYWxzZSkgCgkJPHVsPgoJCQk8bGk+CgkJCQlzZXQgdG8gZmFsc2UgaWYgQU0vUE0gaXMgdXNlZC4gKGRlZmF1bHQgaXMgdHJ1ZSkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwX21pbnV0ZXM8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCXN0ZXBzIG9mIG1pbnV0ZXMgaW4gdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAxMCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9taW51dGU8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCXRoZSBzdGFydCBtaW51dGUgb2YgdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAwKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVuZF9taW51dGU8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCXRoZSBlbmQgbWludXRlIG9mIHRoZSBjbG9jayBkcm9wZG93biAoZGVmYXVsdCBpcyA1OSkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaG93X2Nsb2NrPC90dD4gKHRydWUvZmFsc2UpIAoJCTx1bD4KCQkJPGxpPgoJCQkJc2V0IHRvIGZhbHNlIGlmIG5vIHRpbWUgZHJvcGRvd24gc2hvdWxkIGJlIGRpc3BsYXllZCAoZGVmYXVsdCBpcyB0cnVlKTxiciAvPgoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBJZiBzZXQgdG8gZmFsc2UgMDA6MDAgbydjbG9jayB3aWxsIGJlIHVzZWQ8L2VtPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRhdGVfZm9ybWF0PC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlUaGUgc3RyZnRpbWUgZGF0ZSBmb3JtYXQgdG8gc2hvdyBpbiBmcm9udGVuZC4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICJtdWx0aV9pbnB1dCI6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aW5wdXRzPC90dD4gKGNzdiBvZiBpbnB1dCBpZHMgeW91IGNyZWF0ZWQgaW4gdGhlIGJhY2tlbmQpIAoJCTxiciAvPjxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZV9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlUaGlzIGRlZmluZXMgYSBzdHJpbmcgdGhhdCBkZXZpZGVzIHRoZSB2YWx1ZXMgb2YgdGhlIGlucHV0cyBvZiBvbmUgbXVsdGlfaW5wdXQgd2hlbiBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLjxiciAvPgoJCQkJRGVmYXVsdCBpcyAiJmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxsaW1pdGVyIC0tJmd0OyIKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dF9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlUaGlzIGRlZmluZXMgYSBzdHJpbmcgdGhhdCBkZXZpZGVzIHRoZSBtdWx0aV9pbnB1dHMgeW91IGRlZmluZWQgZm9yIHRoaXMgY29udGVudCBibG9jayB3aGVuIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuPGJyIC8+CgkJCQlEZWZhdWx0IGlzICImbHQ7IS0tIG11bHRpX2lucHV0X2RlbGxpbWl0ZXIgLS0mZ3Q7IgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxwPjxzdHJvbmc+V2hhdCBpcyBhIG11bHRpX2lucHV0IGZvcj88L3N0cm9uZz48L3A+CgkJPHA+QSBtdWx0aV9pbnB1dCBibG9jayBpcyBhIGNvbnRlbnQgYmxvY2sgdGhhdCBjb25zaXN0cyBvZiBkaWZmZXJlbnQgaW5wdXQgZmllbGRzLiA8YnIgLz4KCQlZb3UgY2FuIGRlZmluZSB0aGVtIGluIHRoZSBtb2R1bGUgYWRtaW5pc3RyYXRpb24gdXNpbmcgdGhlIHNhbWUgc3ludGF4IHlvdSB1c2UgaW4gYSB0ZW1wbGF0ZSB3aGVuIGRlZmluaW5nIGEgY29udGVudCBibG9jay48YnIgLz4KCQlNdWx0aSBpbnB1dHMgY2FuIGJlIHVzZWQgaWYgeW91IHdhbnQgdG8gc3RvcmUgZGlmZmVyZW50IHZhbHVlcyBpbiBvbmUgY29udGVudCBibG9jayBhbmQgcHJvdmlkZSBkaWZmZXJlbnQgaW5wdXQgdHlwZXMgZm9yIGVhY2ggdmFsdWVzLjxiciAvPgoJCVRoaXMgY2FuIGJlIHVzZWZ1bGwgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgZHJvcGRvd24gdG8gc2VsZWN0IGEgbW9kdWxlIHRvIGJlIHNob3duIGluIGZyb250ZW5kIGFuZCB0ZXh0IGlucHV0IHRvIGRlZmluZSB0aGUgbW9kdWxlIHBhcmFtZXRlcnMuPGJyIC8+CgkJRXhhbXBsZSBmb3IgYSBtdWx0aV9pbnB1dCBpbiBwYWdlIHRlbXBsYXRlOjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCXtjb250ZW50IGJsb2NrPSJtb2R1bGUiIGxhYmVsPSJQYWdlIG1vZHVsZXMiIGJsb2NrX3R5cGU9Im11bHRpX2lucHV0IiBpbnB1dHM9Im1vZHVsZSxtb2R1bGUsbW9kdWxlLG1vZHVsZSJ9CgkJPC9jb2RlPgoJCTwvcHJlPgoJCTxwPkV4YW1wbGUgZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtdWx0aV9pbnB1dCBuYW1lZCAibW9kdWxlIjo8L3A+CgkJPHByZT4KCQk8Y29kZT4KCQl7Y29udGVudCBibG9jaz0ibW9kdWxlIHNlbGVjdGlvbiIgYmxvY2tfdHlwZT0iZHJvcGRvd24iIGl0ZW1zPSJ8TmV3c3xHYWxsZXJ5fE1lbnUifQoJCXtjb250ZW50IGJsb2NrPSJtb2R1bGUgcGFyYW1zIiBibG9ja190eXBlPSJ0ZXh0IiBvbmVsaW5lPXRydWV9CgkJPC9jb2RlPgoJCTwvcHJlPgoJCTxwPldoYXQgaGFwcGVucyBpZiB5b3UgZWRpdCBhIHBhZ2U/PC9wPgoJCTxwPkl0IHdpbGwgc2hvdyB5b3UgYSBmaWVsZHNldCB3aXRoIGxlZ2VuZCAiUGFnZSBtb2R1bGVzIi4gPGJyIC8+CgkJSW5zaWRlIHRoaXMgZmllbGRzZXQgaXQgc2hvd3MgdGhlIG11bHRpX2lucHV0IG5hbWVkICJtb2R1bGUiIGZvdXIgdGltZXMuPGJyIC8+CgkJVGhhdCBtZWFucyB5b3Ugc2VlIGZvdXIgbGluZXMgd2l0aCB0d28gaW5wdXQgZmllbGRzLiBBIGRyb3Bkb3duIGFuZCBhIHRleHQgaW5wdXQuPC9wPgoJCTxwPldoYXQgaGFwcGVucyBpZiB5b3Ugc2F2ZSBhIHBhZ2U/PC9wPgoJCTxwPlRoZSBtb2R1bGUgc3RvcmVzIHRoZSB2YWx1ZXMgYXMgb25lIHNpbmdsZSBjb250ZW50IHByb3BlcnR5IChha2EgY29udGVudGJsb2NrKSBhbmQgc2VwYXJhdGVzIHRoZSBpbnB1dHMgYnkgYSBnaXZlbiBkZWxpbWl0ZXIuPGJyIC8+CgkJTGV0J3MgYXNzdW1lIHlvdSBzZWxlY3QgdGhlIE5ld3MgbW9kdWxlIGZvdXIgdGltZXMgd2l0aCBkaWZmZXJlbnQgbW9kdWxlIHBhcmFtcyBsaWtlIGNhdGVnb3J5PSIxIiwgY2F0ZWdvcnk9IjIiLCBjYXRlZ29yeT0iMyIsIGNhdGVnb3J5PSI0Ii48YnIgLz4KCQlJbiB0aGUgZGF0YWJhc2UgaXQgc3RvcmVzIHRoaXMgc3RyaW5nOjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCU5ld3MmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDtjYXRlZ29yeT0iMSImbHQ7IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLSZndDs8YnIgLz4KCQlOZXdzJmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7Y2F0ZWdvcnk9IjIiJmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7PGJyIC8+CgkJTmV3cyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmd0O2NhdGVnb3J5PSIzIiZsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmd0OzxiciAvPgoJCU5ld3MmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDtjYXRlZ29yeT0iNCIKCQk8L2NvZGU+CgkJPC9wcmU+CgkJPHA+SW4geW91ciBwYWdlIHRlbXBsYXRlIHlvdSBjYW4gZXhwbG9kZSB0aGUgY29udGVudCBieSB0aGUgZGVsaW1pdGVycyBhbmQgY2FsbCB0aGUgc2VsZWN0ZWQgbW9kdWxlcy48L3A+CgkJPHA+RnVsbCBFeGFtcGxlOjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCXsqIGRlZmluZSB0aGUgY29udGVudCBibG9jayAqfQoJCXtjb250ZW50IGJsb2NrPSJteV9tb2R1bGVzIiBibG9ja190eXBlPSJtdWx0aV9pbnB1dCIgaW5wdXRzPSJNb2R1bGUsTW9kdWxlLE1vZHVsZSxNb2R1bGUiIGFzc2lnbj0ibW9kdWxlcyJ9CgkJCgkJeyogZXhwbG9kZSBibG9jayBjb250ZW50IGluIGFuIGFycmF5IHRvIGdldCB0aGUgaW5wdXQgZ3JvdXBzICp9CgkJe2Fzc2lnbiB2YXI9bW9kdWxlcyB2YWx1ZT0iJmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7InxleHBsb2RlOlwkbW9kdWxlc30KCQkKCQl7KiBsb29wIHRocm91Z2ggdGhlIHNlbGVjdGVkIG1vZHVsZXMgKn0KCQl7Zm9yZWFjaCBmcm9tPVwkbW9kdWxlcyBpdGVtPSJtb2R1bGUifQoJCQl7aWYgXCRtb2R1bGUgIT0gJyd9CgkJCQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0KCQkJCXthc3NpZ24gdmFyPW1vZHVsZV9pdGVtcyB2YWx1ZT0iJmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7InxleHBsb2RlOlwkbW9kdWxlfQoJCQkJCgkJCQl7aWYgXCRtb2R1bGVfaXRlbXNbMF0gIT0gJyd9CgkJCQkKCQkJCQl7KiBjYWxsIHRoZSBtb2R1bGUgKn0KCQkJCQl7aWYgaXNzZXQoXCRtb2R1bGVfaXRlbXNbMV0pfQoJCQkJCQl7ZXZhbCB2YXI9XCRzbWFydHkubGRlbGltfGNhdDonY21zX21vZHVsZSBtb2R1bGU9Iid8Y2F0OlwkbW9kdWxlX2l0ZW1zWzBdfGNhdDonIiAnfGNhdDpcJG1vZHVsZV9pdGVtc1sxXXxjYXQ6XCRzbWFydHkucmRlbGltfQoJCQkJCXtlbHNlfQoJCQkJCQl7ZXZhbCB2YXI9XCRzbWFydHkubGRlbGltfGNhdDonY21zX21vZHVsZSBtb2R1bGU9Iid8Y2F0OlwkbW9kdWxlX2l0ZW1zWzBdfGNhdDonIid8Y2F0Olwkc21hcnR5LnJkZWxpbX0KCQkJCQl7L2lmfQoJCQkJCQoJCQkJey9pZn0KCQkJCQoJCQl7L2lmfQoJCQoJCXsvZm9yZWFjaH0KCQk8L2NvZGU+CgkJPC9wcmU+Cgk8L2xpPgo8L3VsPgoKPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KCTxsaT5UaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+Cgk8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSBDTVMgTWFkZSBTaW1wbGUgRm9ydW1zOjxiciAvPgoJPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUuZGUiPmh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLmRlPC9hPjxiciAvPgoJPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5odHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmc8L2E+PC9saT4KPC91bD4KPGJyIC8+CjxwPkZlZWwgZnJlZSByZXBvcnQgYW55IGtpbmQgb2YgZmVlZGJhY2suPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+CglBcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy48YnIgLz4KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPgoJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Y8YnIgLz4KCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS48YnIgLz4KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4KCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPGJyIC8+CglhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZTxiciAvPgoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4KCU9yIHJlYWQgaXQgb25saW5lOiA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPmh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTDwvYT48YnIgLz4KCVBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLgo8L3A+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMCwgR2VvcmcgQnVzY2ggKE5hTikuIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KPGJyIC8+CkVPVDsKJGxhbmdbJ2NoYW5nZWxvZyddID0gPDw8RU9UCjxiciAvPgo8cD48c3Ryb25nPk1vZHVsZSByZWxlYXNlczwvc3Ryb25nPi4uLjwvcD4KPHVsPgoJPGxpPjxwPjxzdHJvbmc+MC42LjQgKE1hciAyMDExKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIFsjNjI0MV0gKElzc3VlIHdpdGggcGFyYW0gZGVmYXVsdCk8L3A+PC9saT4KCQkJCQk8bGk+PHA+ZmF0YWwgZXJyb3IgaW4gQWR2YW5jZWRDb250ZW50Lm1vZHVsZS5waHA8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuMyAoTWFyIDIwMTEpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gWyM1NzM0XSBQYXJhbWV0ZXIgYmxvY2tfZ3JvdXAgaXMgbm90IGtub3duIGJ5IG1vZHVsZSBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwMTRdIGhlYWRlciBwcm9ibGVtIHdpdGggbXVsdGktaW5wdXQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwMzhdIGNvbnRlbnRfaW1hZ2UgcmVzcGVjdGl2ZWx5IGJsb2NrX3R5cGU9ImltYWdlIiBkb2Vzbid0IHdvcms8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwMzldIHRlbXBsYXRlIGNhbid0IGJlIHN3aXRjaGVkPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gWyM2MDYxXSBpc3N1ZSB3aXRoIHRoZSByZWRpcmVjdCBmb3IgZmV1IG5vbiBtYXRjaDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjA5NV0gUGFyYW1ldGVyIHNvcnRhYmxlIGlzIG5vdCBrbm93biA8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgaXRlbSAjNTY1MSAocmVkaXJlY3QgaWYgZnJvbnRlbmQgdXNlciBoYXMgbm8gYWNjZXMgdG8gdGhhdCBwYWdlIGRpZCBub3Qgd29yayBwcm9wZXJseSk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjY2VzczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb248L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZXF1aXJlZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGNvbGxhcHNlPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gbm9fY29sbGFwc2U8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSB0aGlzIG1vZHVsZSBub3cgb25seSB3b3JrcyB3aXRoIENNU21zIDEuNi45IHVwIHRvIDEuOC4yPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC42LjIgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeCAoc2hvd2VkIHRhYnMgb2YgcHJldmlvdXMgdGVtcGxhdGUgd2hlbiB0ZW1wbGF0ZSB3YXMgY2hhbmdlZCk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuMSAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBibG9ja190eXBlIG11bHRpX2lucHV0PC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC42IChPY3QgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX2dyb3VwPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+TWlzYzo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gUmVtb3ZlZCBmaWxlIHBpY2tlciAoYW5kIGFzc29jaWF0ZWQgYmxvY2tfdHlwZXMgaW1hZ2UvZmlsZSkgLSB1c2UgR0JGaWxlUGlja2VyIGluc3RlYWQuPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC41IChTZXB0IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjkyIChtZW1vcnkgaXNzdWUpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjU0IChkaXNhYmxlIHd5c2l3eWcgbm90IHdvcmtpbmcpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzEwICh1cmxvbmx5IG5vdCB3b3JraW5nKTwvcD48L2xpPgoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMSAoaW1hZ2UgcGF0aHMgbm90IHN0b3JlZCAnY29ycmVjdGx5Jyk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI2MSAoQWRkIHNvcnQgdG8gaW1hZ2UgdHlwZSAtIG5vdGljZSB0aGUgY2hhbmdlIG9mIHBhcmFtIGZpbHRlcik8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgcGFyYW1zIGV4Y2x1ZGVfcHJlZml4LCBpbmNsdWRlX3ByZWZpeCwgZXhjbHVkZV9zdWZpeCwgaW5jbHVkZV9zdWZpeDwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNTMgKFRleHQgaW5wdXQgdG8gZGVmaW5lIGFkZCBwYXJhbXMgdG8gcmVkaXJlY3QgZnVuY3Rpb24pPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MCAoRGVmYXVsdCB2YWx1ZXMgb2YgQWR2YW5jZWRDb250ZW50IHBhZ2Ugb3B0aW9ucyk8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQxIChwdXQgRmV1QWNjZXNzIGluIEJsb2NrdGFiKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIGFyZSBzaG93biBpbiBzZXBhcmF0ZSB0YWI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBBZGRlZCBuZXcgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhlIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIHRhYjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW0gZmlsdGVyICh1c2UgbmV3IHBhcmFtcyBpbnN0ZWFkKTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHBhdGggdG8gZmlsZXMgYXJlIHN0b3JlZCByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBwYXJhbSBkaXIgb2YgYmxvY2sgdHlwZSBmaWxlL2ltYWdlIG5lZWRzIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpciBvbmx5ICh0aGVyZSBpcyBubyBpbWFnZSB1cGxvYWRzIGRpciB1c2VkIGFueW1vcmUpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC40LjEgKEF1Z3VzdCAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tICM1MTUxOiBmaXhlZCBzdHlsZXNoZWV0IGlzc3VlIHdpdGggZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbnMgb2YgY29udGVudCBibG9ja3MgaW4gSUUvU2FmYXJpLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MTYyOiBQSFAgd2FybmluZ3MgaWYgYmFja2VuZCB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gIk1hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyIgb3BlbiBhbiBhZHZhbmNlZCBjb250ZW50IHBhZ2UgYW5kIG11bHRpcGxlIGNvbnRlbnQgYmxvY2tzIG9mIHNhbWUgbmFtZSB3ZXJlIHVzZWQgaW4gdGVtcGxhdGUuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGV4dHJhIGZpZWxkcyBjb3VsZCBub3QgYmUgdXBkYXRlZC48L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZmV1IGFjY2VzcyBkaWQgbm90IHdvcmsuPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJkZWxldGUiIHRvIGxldCB1c2VycyBkZWxldGUgZmlsZXMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICJNb2RpZnkgRmlsZXMiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImNyZWF0ZV9kaXJzIiB0byBsZXQgdXNlcnMgY3JlYXRlX2RpcnMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICJNb2RpZnkgRmlsZXMiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgbmV3IGJsb2NrdHlwZSAibm90ZSIgdG8gY3JlYXRlIHNvbWUgc2luZ2xlIG5vdGVzIGZvciB5b3VyIGVkaXRvcnM8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSByZW1vdmVkIGRlcGVuZGVuY3kgb2YgRmlsZU1hbmFnZXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBibG9jayBvZiB0eXBlIGZpbGUgb3IgaW1hZ2Ugc3RvcmVzIHJlbGF0aXZlIHVybCBub3c8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBibG9jayB0eXBlIGltYWdlIHNob3dzIHRodW1ibmFpbCBpbiBiYWNrZW5kIHByZXZpZXcgaW5zdGVhZCBvZiBmdWxsIGltYWdlPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC40IChKdWx5IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5JbXBvcnRhbnQgbm90aWNlOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIHBhcmFtICJ0eXBlIiB0byAiYmxvY2tfdHlwZSIgc2luY2UgaXQgaW50ZXJmZXJlcyB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tICM1MTAxOiBwYWdlX3RhYiAib3B0aW9ucyIgd2FzIHNob3duIHRvIHVzZXJzIHdpdGggbm8gcGVybWlzc2lvbiB0byBlZGl0IHBhZ2Ugb3B0aW9ucyBpZiBhIGNvbnRlbnQgYmxvY2sgd2FzIGFzc2lnbmVkIHRvIHRoYXQgdGFiLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MDk3OiBsaW5rIHRvIG1pc3NpbmcgY3NzIHJlbW92ZWQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBtaW1lLXR5cGUgaXNzdWUgKGFkZGVkIHByZWZlcmVuY2UgdG8gdG9nZ2xlIG1pbWUtdHlwZSB1c2FnZSBvbi9vZmYpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgcGF0aCBpc3N1ZSB3aGVyZSB0aHVtYm5haWxzIHdlcmUgbm90IHNob3duPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgY29tcGF0aWJpbGl0eSB3aXRoIENNU21zIDEuODwvcD48L2xpPgoJCQkJCTxsaT48cD4tIG90aGVyIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIE1MRSBzdXBwb3J0PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gInNob3dfY2xvY2siIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSB0aW1lIGRyb3Bkb3duIG9mIGJsb2NrdHlwZXMgImRhdGUiIGluIGJhY2tlbmQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGF0ZV9mb3JtYXQiIHRvIGZvcm1hdCB0aW1lc3RhbXAgb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gZnJvbnRlbmQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGVzY3JpcHRpb24iPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgYnVsayBmdW5jdGlvbiB0byBzZXQgYWxsIHBhZ2VzIHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuMy40IChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gIzUwNDU6IFdoZW4gc3dpdGNoaW5nIGZyb20gQ29udGVudCAtPiBBZHZhbmNlZCBDb250ZW50IGxvdHMgb2YgUEhQIGVycm9yczwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MDU2OiBwYWdlX3RhYnMgbm90IHdvcmtpbmcgZm9yIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAiTWFuYWdlIEFsbCBDb250ZW50IjwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MDczOiBpbmNvcnJlY3QgZGlzcGxheSBvZiBmaWxlcyB3aGVuIG9wZW5pbmcgZmlsZXBpY2tlcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbm9yIGJ1ZyB3aGVyZSB0aGUgb3B0aW9uICJhbGxvd19ub25lIiBvZiBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGUgd2FzIG5vdCBzaG93biB3aGVuIHRlbXBsYXRlIGhhcyBiZWVuIGVkaXRlZDwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBmaWxlbWFuYWdlbWVudCBhbmQgdXBsb2FkIGZ1bmN0aW9ucyB0byBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGU8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBicmVhZGN1bWJzIHRvIGZpbGVwaWNrZXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZG1pbnMgbWF5IGJyb3dzZSB0aGUgZW50aXJlIGRpciB0cmVlIGluIGZpbGVwaWNrZXIgZmlsZSBicm93c2VyIHJlZ2FyZGxlc3Mgb2YgdGVtcGxhdGUgcGFyYW1zPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgbWltZSB0eXBlIGNoZWNraW5nIHRvIGdldCBmaWxlIHR5cGU8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCByYXd1cmxlbmNvZGUgaW4gc3JjIGF0dHJpYnMgdG8gZGlzcGxheSBpbWFnZXMgd2l0aCB3ZWlyZCBmaWxlbmFtZXMuPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+bWlzY2VsbGFuZW91czo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBPT1Agc3R1ZmYgKHByaXZhdGUvcHVibGljL3Byb3RlY3RlZCkgdG8gZ2FpbiBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBQSFA0PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBhamF4IGZ1bmN0aW9ucyB0byByZXR1cm4geG1sIHZhbHVlczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgdXNhZ2Ugb2YgSW1hZ2VNYW5hZ2VyIG9uY2UgYW5kIGZvciBhbGwuIChjYXVzZWQgb25seSB0cm91YmxlKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuMy4zIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4KCTx1bD4KCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQk8dWw+CgkJCQk8bGk+PHA+LSBhbGlhcyB3YXMgbm90IGFsd2F5cyBjb252ZXJ0ZWQgcHJvcGVybHk8L3A+PC9saT4KCQkJCTxsaT48cD4tIHVuc3VibWl0dGVkIGNvbnRlbnQgZ290IGxvc3QgaWYgc3dpdGNoaW5nIGZyb20gQ29udGVudCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4KCQkJPC91bD4KCQk8L2xpPgoJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCTx1bD4KCQkJCTxsaT48cD4tIGFkZGVkIHN0YXJ0L2VuZCBkYXRlPC9wPjwvbGk+CgkJCQk8bGk+PHA+LSByZW1vdmVkIHRpbWVwaWNrZXI7IHJlcGxhY2VkIGJ5IGEgc2ltcGxlIGRyb3Bkb3duPC9wPjwvbGk+CgkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfaW1hZ2V9PC9wPjwvbGk+CgkJCTwvdWw+CgkJPC9saT4KCTwvdWw+Cgk8bGk+PHA+PHN0cm9uZz4wLjMuMiAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgY2hhbmdpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgdHlwZSBvciBjaGFuZ2luZyB0ZW1wbGF0ZSBjYXVzZWQgZmF0YWwgZXJyb3JzPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggc21hcnR5IHByb2Nlc3Npbmcgd2hlbiBzYXZpbmcgYSBwYWdlPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcHJldmlldyB0YWI8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmUtYWRkZWQgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiB0byB0b2dnbGUgY29udGVudCBibG9ja3MgaW4gYmFja2VuZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbXMgZWRpdG9yX2dyb3Vwcy9lZGl0b3JfdXNlcnMgdG8gc3BlY2lmeSBjZXJ0YWluIHVzZXJzL2dyb3VwcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgY2VydGFpbiBibG9ja3M8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbXMgc2VsZWN0ZWQvY2hlY2tlZDsgdXNlIHBhcmFtIGRlZmF1bHQgaW5zdGVhZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBibG9jayBpZHMgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSBibG9jayBuYW1lIHVzaW5nIGNvcmUgZnVuY3Rpb24gbXVuZ2Vfc3RyaW5nX3RvX3VybCAodG8gcmVtb3ZlIHNwZWNpYWwgY2hhcnMsIHdoaXRlc3BhY2VzLCB1bWxhdXRzIGV0Yy4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyBvZiBibG9ja3R5cGUgZHJvcGRvd24vc2VsZWN0X211bHRpcGxlIHdoZXJlIGZpcnN0IGl0ZW0gaGFkIGFuIGVtcHR5IGxhYmVsIGlmIG9ubHkgdGhlIHBhcmFtICJ2YWx1ZXMiIGlzIHVzZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgc29tZSB0ZW1wbGF0ZSB2YXJzIG9mIHRoZSBmcm9udGVuZCB0byBiZSBhbHNvIGFjY2Vzc2libGUgaW4gYmFja2VuZCAoZS5nLjogXCRwYWdlX2FsaWFzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiYWxsb3dfbm9uZSIgdG8gYWxsIGNvbnRlbnQgYmxvY2sgdHlwZXMgdG8gc3BlY2lmeSBpZiB0aGUgcHJlZGVmaW5lZCBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZCBpZiBubyB2YWx1ZSBpcyBlbnRlcmVkPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBlbXB0eSB2YWx1ZXMgd2VyZSBuZXZlciBiZSBzdG9yZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGRlZmF1bHQgdmFsdWUgaW4gZnJvbnRlbmQgd2FzIGlnbm9yZWQgaWYgdGhlICJhbGxvd19ub25lIiBwYXJhbSB3YXMgY2hhbmdlZCBhZnRlciBhbiBlbXB0eSB2YWx1ZSBoYXMgYmVlbiBzdG9yZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gInNvcnRhYmxlX2l0ZW1zIiB0byBjcmVhdGUgYSBzb3J0YWJsZSBtdWx0aXBsZSBzZWxlY3QgbGlzdCAoc2VsZWN0IGxpc3Qgd2lsbCByZXN1bHQgaW4gYSB0YWJsZSB3aXRoIGNoZWNrYm94ZXM7IG9ubHkgb3JkZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIHNob3dlZCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0OyB1bnNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIHRlbXBsYXRlKTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjEgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSByZW9yZGVyaW5nIHN0dWZmIGZvciBub3cgKGNhdXNlcyB0cm91YmxlIGF0IHRoaXMgdGltZSk8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgZGIgc3R1ZmYgKHBhcmFtcyBvZiBjb250ZW50IGJsb2NrcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRlbXBsYXRlIHdvbid0IGJlIHNhdmVkIGluIG1vZHVsZSBkYiB0YWJsZSBhbnltb3JlIC0+IGhvcGVmdWxseSBzcGVlZCB1cCBsb2FkaW5nIHRpbWUpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggZHVwbGljYXRlIGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+CgkJPHA+PHN0cm9uZz5BZHZhbmNlZENvbnRlbnQgMC4zIChNYXkgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gcmV3cml0ZSBjb2RlPC9wPjwvbGk+CgkJCTxsaT48cD4tIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCTxsaT48cD4tIHJlbmFtZWQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+CgkJCTxsaT48cD4tIHVzaW5nIHNlcGFyYXRlIG1vZHVsZSB0ZW1wbGF0ZSBub3cgdG8gZHNwbGF5IGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+CgkJCTxsaT48cD4tIHJlbW92ZWQgcGFnZSBhbGlhcyBpbmhlcml0YW5jZTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDMgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIE1ham9yIEJ1Z2ZpeCAobWlzc2luZyAiOyIgYW5kIHN0cmFuZ2UgaW52aXNpYmxlIGludmFsaWQgY2hhcnMpPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDIgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcGFyYW0gImRlbGltaXRlciI8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZzwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiAiU2hvdyBsb2dpbiBmb3JtIjwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBwYWdlIGFsaWFzIHRvIGFkZCBpdCBhcyBwcmVmZml4OyBzbyBpZiB5b3UgaGF2ZSBhIHBhZ2UgY2FsbGVkICJtZW1iZXJzIiBhbmQgc2VsZWN0IGZvciBlYWNoIGNoaWxkIHBhZ2UgImluaGVyaXQgcGFnZSBhbGlhcyIgYWxsIGNoaWxkIHBhZ2VzIGFsaWFzZXMgd2lsbCBzdGFydCB3aXRoICJtZW1iZXJzXyI7IG1ha2VzIGZpbHRlcmluZyBvZiBtZW51IGVudHJpZXMgd2l0aCBNZW51TWFuYWdlciBwYXJhbSAiZXhjbHVkZXByZWZmaXgiIG9yICJpbmNsdWRlcHJlZmZpeCIgZWFzaWVyLjwvcD48L2xpPgoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlczwvcD48L2xpPiAKCQk8L3VsPgoJPC9saT4KCTxsaT4KCQk8cD48c3Ryb25nPlhDb250ZW50IEJFVEEgKEFwcmlsIDIwMTApOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBjb252ZXJ0ZWQgdGhlIHNpbmdsZSBmaWxlIGludG8gYSBtb2R1bGU8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVuYW1lZCBwYXJhbXM7IHNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBkZXRhaWxzPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+U2luZ2xlIGZpbGUgcmVsZWFzZXMgKGRpc2NvbnRpbnVlZCk8L3N0cm9uZz4uLi48L3A+Cjx1bD4KCTxsaT4KCQk8cD48c3Ryb25nPjEuNCAoTWFyY2ggMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gY2xlYW51cCBjb2RlIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXMgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCByZWRpcmVjdCBwYWdlIGlmIGZldSBpcyBub3QgbG9nZ2VkIGluIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgZmV1X2FjY2VzcyBhbmQgcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3MgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWN0aW9uIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX29ubHkgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBzbWFydHkgbG9naWMgaW4gYmFja2VuZCAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzdHlsZSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmaWx0ZXIgKGZpbHRlcmluZyBpbWFnZXMgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gSW1nTW9kZSAoZHJvcGRvd24gb3IgSW1hZ2VNYW5hZ2VyKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzbWFydHlPbiAoZm9yIHByb2Nlc3Npbmcgc21hcnR5IHZhcnMgb2YgdGhlIHRlbXBhdGUgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjEuMyAoQXByaWwgMjAwOSk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gQ01TbXMgMS42LiogcmVhZHkgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBmZXUgYWNjZXNzIG9wdGlvbiAtIChOYU4pPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+CgkJPHA+PHN0cm9uZz4xLjIgKE1hcmNoIDIwMDkpOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBBIHNpbmdsZSBmaWxlIENvbnRlbnQyLmluYy5waHAgdGhhdCBuZWVkcyB0byBiZSBwbGFjZWQgaW4gbGliL2NsYXNzZXMvY29udGVudHR5cGVzLjwvcD48L2xpPgoJCQk8bGk+PHA+LSBsYXlvdXQvb3B0aW9ucyBvZiBiYWNrZW5kIHBhbmVsIGNhbiBiZSBjb250cm9sZWQgYnkgYWRkaXRpb25hbCBzbWFydHkgcGFyYW1zIGluIHRoZSB0ZW1wbGF0ZTsgaW50ZWdyYXRlZCB0aGUge2NvbnRlbnRfaW1hZ2V9IHRhZyAtIChtb2QgYnkgTmFOKTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgo8L3VsPgo8YnIgLz4KRU9UOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0NvbnRlbnUgQXZhbmMmZWFjdXRlOyc7CiRsYW5nWydhZHZhbmNlZGNvbnRlbnRfdGFibmFtZSddID0gJ09wdGlvbnMgYXZhbmMmZWFjdXRlO2VzJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ0xlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgZXN0IGluc3RhbGwmZWFjdXRlOyAnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdMZSBtb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGVzdCBkJmVhY3V0ZTtzaW5zdGFsbCZlYWN1dGU7JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudCBtaXMgJmFncmF2ZTsgam91ciBlbiB2ZXJzaW9uICVzJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBlc3QgaW5zdGFsbCZlYWN1dGU7ICc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBlc3QgZCZlYWN1dGU7c2luc3RhbGwmZWFjdXRlOyc7CiRsYW5nWydjb25maXJtdW5pbnN0YWxsJ10gPSAnJkVjaXJjO3RlcyB2b3VzIGNlcnRhaW4gZGUgdm91bG9pciBkJmVhY3V0ZTtzaW5zdGFsbGVyIGxlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQgPyc7CiRsYW5nWydub3RpY2VfZHVwbGljYXRlY29udGVudCddID0gJzxlbT48c3Ryb25nPkF0dGVudGlvbiA6PC9zdHJvbmc+IENlIGJsb2MgZXN0IHV0aWxpcyZlYWN1dGU7ICZhZ3JhdmU7IGRlIG11bHRpcGxlcyByZXByaXNlcyBkYW5zIGxlIGdhYmFyaXQuIFZvdXMgdmVycmV6IGljaSB1bmlxdWVtZW50IGxlIHByZW1pZXIgYmxvYy48L2VtPic7CiRsYW5nWydlcnJvcl9iYXNpY2F0dHJpYiddID0gJzxlbT48c3Ryb25nPkF0dGVudGlvbiA6PC9zdHJvbmc+IElsIG4mIzAzOTtlc3QgcGFzIHBvc3NpYmxlIGQmIzAzOTt1dGlsaXNlciBsZSBub20gZGUgYmFzZSBkZSBsYSBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyBkdSBjb250ZW51ICYjMDM5OyVzJiMwMzk7IGNvbW1lIHVuZSB2YWxldXIgZHUgcGFyYW0mZWdyYXZlO3RyZSAmIzAzOTtibG9jayYjMDM5Oy4gPGJyIC8+Q2UgYmxvYyBlc3QgaW5hY3RpZi4gViZlYWN1dGU7cmlmaWV6IHZvdHJlIGdhYmFyaXQgZGUgcGFnZSBldCBjaG9pc2lzc2V6IHVuZSB2YWxldXIgZGlmZiZlYWN1dGU7cmVudGUgZHUgcGFyYW0mZWdyYXZlO3RyZSAmIzAzOTtibG9jayYjMDM5Oy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnTGEgZGF0ZSBkZSBmaW4gZG9pdCAmZWNpcmM7dHJlIHN1cCZlYWN1dGU7cmlldXJlICZhZ3JhdmU7IGxhIGRhdGUgZGUgZCZlYWN1dGU7YnV0JzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ1ImZWFjdXRlO3BlcnRvaXJlIGNvdXJhbnQnOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ1RhaWxsZSBkZSBsJiMwMzk7aW1hZ2UnOwokbGFuZ1snc2l6ZSddID0gJ1RhaWxsZSBkdSBmaWNoaWVyJzsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSA9ICdIJmVhY3V0ZTtyaXQmZWFjdXRlOyBkdSBwYXJlbnQnOwokbGFuZ1snbm9uZSddID0gJ2F1Y3VuJzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdpbnZhbGlkZSc7CiRsYW5nWydpbnZhbGlkX2Jsb2NrdHlwZSddID0gJzxlbT48c3Ryb25nPkF0dGVudGlvbiA6PC9zdHJvbmc+ICYjMDM5OyVzJiMwMzk7IGVzdCB1bmUgdmFsZXVyIGluY29ycmVjdGUgZHUgcGFyYW0mZWdyYXZlO3RyZSBibG9ja190eXBlIGRhbnMgbGUgYmxvYyAmIzAzOTslcyYjMDM5Oy48YnIgLz5WJmVhY3V0ZTtyaWZpZXogdm90cmUgZ2FiYXJpdCBkZSBwYWdlLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcyddID0gJzxlbT48c3Ryb25nPkVycmV1ciA6PC9zdHJvbmc+IFBhcmFtJmVncmF2ZTt0cmVzIGluc3VmZmlzYW50cy4gPGJyIC8+TGUgcGFyYW0mZWdyYXZlO3RyZSAmIzAzOTslcyYjMDM5OyBwb3VyIGxlIGJsb2MgJiMwMzk7JXMmIzAzOTsgZXN0IG1hbnF1YW50LiBWJmVhY3V0ZTtyaWZpZXogdm90cmUgZ2FiYXJpdCBkZSBwYWdlLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ091aSc7CiRsYW5nWydubyddID0gJ05vbic7CiRsYW5nWydmcm9udGVuZGFjY2VzcyddID0gJ0FjYyZlZ3JhdmU7cyBGcm9udGVuZCc7CiRsYW5nWydyZWRpcmVjdHBhZ2UnXSA9ICdQYWdlIGRlIHJlZGlyZWN0aW9uIHNpIGFjYyZlZ3JhdmU7cyByZWZ1cyZlYWN1dGU7JzsKJGxhbmdbJ3Nob3dsb2dpbmZvcm0nXSA9ICdBZmZpY2hlciBsZSBmb3JtdWxhaXJlIGRlIGNvbm5leGlvbic7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdVdGlsaXNhdGV1cnMgZW5yZWdpc3RyJmVhY3V0ZTtzIHNldWxlbWVudCc7CiRsYW5nWydibG9jayddID0gJ0Jsb2MnOwokbGFuZ1sndXNlZXhwaXJlZGF0ZSddID0gJ1V0aWxpc2VyIGxhIGRhdGUgZCYjMDM5O2V4cGlyYXRpb24nOwokbGFuZ1snc3RhcnRkYXRlJ10gPSAnRGF0ZSBkZSBkJmVhY3V0ZTtidXQnOwokbGFuZ1snZW5kZGF0ZSddID0gJ0RhdGUgZGUgZmluJzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ0Jsb2MgZGUgY29udGVudSc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdEJmVhY3V0ZTtmaW5pciBsYSBwYWdlIGNvbW1lIGluYWN0aXZlJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICdFZmZhY2VyIGxhIHBhZ2UnOwokbGFuZ1sndW5pbnN0YWxsYWN0aW9uJ10gPSAnRCZlYWN1dGU7c2luc3RhbGxhdGlvbic7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ0QmZWFjdXRlO2ZpbmlyIHRvdXRlcyBsZXMgcGFnZXMgZCYjMDM5O0FkdmFuY2VkQ29udGVudCBlbiB0eXBlIENvbnRlbnQnOwokbGFuZ1snc2V0Y29udGVudDInXSA9ICdEJmVhY3V0ZTtmaW5pciB0b3V0ZXMgbGVzIHBhZ2VzIGQmIzAzOTtBZHZhbmNlZENvbnRlbnQgZW4gdHlwZSBDb250ZW50IGV0IHN1cHByaW1lciBsZXMgYmxvY3MgZGUgY29udGVudSBhZGRpdGlvbm5lbCc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzIG1pc2VzICZhZ3JhdmU7IGpvdXInOwokbGFuZ1snc3VjY2VzcyddID0gJ09rICc7CiRsYW5nWydlcnJvciddID0gJ0VycmV1cic7CiRsYW5nWydkZWxldGVwYWdlcyddID0gJ1N1cHByaW1lciB0b3V0ZXMgbGVzIHBhZ2VzIGRlIHR5cGUgQWR2YW5jZWRDb250ZW50JzsKJGxhbmdbJ2ltcG9ydHBhZ2VzJ10gPSAnRCZlYWN1dGU7ZmluaXIgdG91dGVzIGxlcyBwYWdlIGRlIHR5cGUgJXMgZW4gdHlwZSAlcy4nOwokbGFuZ1sncGFnZXNpbXBvcnRlZCddID0gJ1RvdXRlcyBsZXMgcGFnZXMgc29udCBkJmVhY3V0ZTtmaW5pZSBlbiBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ2NvbmZpcm1pbXBvcnQnXSA9ICcmRWNpcmM7dGVzIHZvdXMgY2VydGFpbnMgZGUgdm91bG9pciBjaGFuZ2VyIGxlIHR5cGUgZGUgY29udGVudSBkZSB0b3V0ZXMgbGVzIHBhZ2VzID8nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICdDYWNoZXIgY2UgbWVzc2FnZSc7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyBBZHZhbmNlZENvbnRlbnQgcGFyIGQmZWFjdXRlO2ZhdXQnOwokbGFuZ1sncmVkaXJlY3RwYXJhbXMnXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyBkJiMwMzk7VVJMICZhZ3JhdmU7IGFqb3V0ZXIgcG91ciBsYSByZWRpcmVjdGlvbic7CiRsYW5nWydldmFsdWF0ZXNtYXJ0eSddID0gJ1V0aWxpc2VyIHNtYXJ0eSBwb3VyIHRyYWl0ZXIgbGVzIHBhcmFtJmVncmF2ZTt0cmVzJzsKJGxhbmdbJ2Vycm9yX2xvYWRpbmdfbW9kdWxlJ10gPSAnPGVtPjxzdHJvbmc+RXJyZXVyIDo8L3N0cm9uZz4gTiYjMDM5O2EgcGFzIHB1IGNoYXJnZXIgbGUgbW9kdWxlICYjMDM5OyVzJiMwMzk7LiAoRCZlYWN1dGU7ZmluaSBwb3VyIGxlIGJsb2MgJiMwMzk7JXMmIzAzOTsgZGFucyB2b3RyZSBnYWJhcml0IGRlIHBhZ2UuKTwvZW0+JzsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0J10gPSAnPGVtPjxzdHJvbmc+RXJyZXVyIDo8L3N0cm9uZz4gTGUgbW9kdWxlICYjMDM5OyVzJiMwMzk7IG5lIHN1cHBvcnRlIHBhcyBsZXMgYmxvY3MgZGUgY29udGVudSAoY29udGVudGJsb2NrcykuIChEJmVhY3V0ZTtmaW5pIHBvdXIgbGUgYmxvYyAmIzAzOTslcyYjMDM5OyBkYW5zIHZvdHJlIGdhYmFyaXQgZGUgcGFnZS4pPC9lbT4nOwokbGFuZ1snc3VjY2Vzc19pbXBvcnRwYWdlcyddID0gJ1RvdXRlcyBsZXMgcGFnZXMgZGUgdHlwZSAlcyBvbnQgJmVhY3V0ZTt0JmVhY3V0ZTsgY2hhbmcmZWFjdXRlO2VzIGVuICVzJzsKJGxhbmdbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSA9ICdNb250cmVyIGwmIzAzOTtvbmdsZXQgZCYjMDM5O29wdGlvbnMgZCYjMDM5O0FkdmFuY2VkQ29udGVudCc7CiRsYW5nWydkaXNwbGF5X3NldHRpbmdzJ10gPSAnJXMgYWZmaWNoZSBsZXMgcGFyYW0mZWdyYXZlO3RyZXMnOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdFbnJlZ2lzdHJlciBsZSBzdGF0dXQgbWFzcXUmZWFjdXRlOyBkZSAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ2Jsb2NzIGRlIGNvbnRlbnVzJzsKJGxhbmdbJ2Jsb2NrX21lc3NhZ2UnXSA9ICdtZXNzYWdlIGR1IGJsb2MgZGUgY29udGVudSc7CiRsYW5nWydibG9ja19ncm91cHMnXSA9ICdncm91cGVzIGRlIGJsb2MnOwokbGFuZ1snY29sbGFwc2VfZGVmYXVsdCddID0gJ01hc3F1ZXIgJXMgcGFyIGQmZWFjdXRlO2ZhdXQnOwokbGFuZ1sncGVyX3BhZ2UnXSA9ICdwYXIgcGFnZSc7CiRsYW5nWydwZXJfdGVtcGxhdGUnXSA9ICdwYXIgZ2FiYXJpdCc7CiRsYW5nWydib3RoMSddID0gJ2dhYmFyaXQgT1UgcGFnZSc7CiRsYW5nWydib3RoMiddID0gJ2dhYmFyaXQgRVQgcGFnZSc7CiRsYW5nWydjb250ZW50J10gPSAnQ29udGVudSc7CiRsYW5nWydjb250ZW50MiddID0gJ0NvbnRlbnUgYXZhbmMmZWFjdXRlOyc7CiRsYW5nWydwcmVmcyddID0gJ1ImZWFjdXRlO2dsYWdlcyc7CiRsYW5nWydtdWx0aV9pbnB1dCddID0gJ0VudHImZWFjdXRlO2VzIG11bHRpcGxlcyc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdHYWJhcml0cyBwb3VyIGVudHImZWFjdXRlO2VzIG11bHRpcGxlcyc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXQnXSA9ICdBam91dGVyIGRlcyBlbnRyJmVhY3V0ZTtlcyBtdWx0aXBsZXMnOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddID0gJ0Fqb3V0ZXIgdW4gbm91dmVhdSBnYWJhcml0IHBvdXIgZW50ciZlYWN1dGU7ZXMgbXVsdGlwbGVzJzsKJGxhbmdbJ2lucHV0X2lkJ10gPSAnSUQgZW50ciZlYWN1dGU7ZXMnOwokbGFuZ1snaW5wdXRfZmllbGRzJ10gPSAnQ2hhbXBzIHBvdXIgRW50ciZlYWN1dGU7ZXMnOwokbGFuZ1sndHBsX25hbWUnXSA9ICdOb20gZHUgZ2FiYXJpdCc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ0xlIGNoYW1wIEdhYmFyaXQgZXN0IHJlcXVpcyBldCBuZSBwZXV0ICZlY2lyYzt0cmUgdmlkZSc7CiRsYW5nWydlcnJvcl9pbnB1dF9maWVsZHMnXSA9ICdMZXMgY2hhbXBzIEVudHImZWFjdXRlO2VzIHNvbnQgcmVxdWlzIGV0IG5lIHBldXZlbnQgJmVjaXJjO3RyZSBsYWlzcyZlYWN1dGU7cyB2aWRlcy4nOwokbGFuZ1snZXJyb3JfaW5wdXRfaWQnXSA9ICdBdWN1biBJRCBlbnRyJmVhY3V0ZTtlcyBuJiMwMzk7YSAmZWFjdXRlO3QmZWFjdXRlOyBmb3Vybmkgb3UgbGUgY29udGVudSBleGlzdGUgZCZlYWN1dGU7aiZhZ3JhdmU7Lic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdJRCBlbnRyJmVhY3V0ZTtlcyBkJmVhY3V0ZTtqJmFncmF2ZTsgdXRpbGlzJmVhY3V0ZTsuIFMmZWFjdXRlO2xlY3Rpb25uZXogdW4gSUQgZGlmZiZlYWN1dGU7cmVudC4gKGRvaXQgJmVjaXJjO3RyZSB1bmlxdWUpJzsKJGxhbmdbJ211bHRpX2lucHV0X2FkZGVkJ10gPSAnRW50ciZlYWN1dGU7ZXMgbXVsdGlwbGVzIGFqb3V0JmVhY3V0ZTtlcy4nOwokbGFuZ1snbXVsdGlfaW5wdXRfZGVsZXRlZCddID0gJ0VudHImZWFjdXRlO2VzIG11bHRpcGxlcyBzdXBwcmltJmVhY3V0ZTtlcy4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdXBkYXRlZCddID0gJ0VudHImZWFjdXRlO2VzIG11bHRpcGxlcyBtaXNlcyAmYWdyYXZlOyBqb3VyLic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfYWRkZWQnXSA9ICdHYWJhcml0IHBvdXIgZW50ciZlYWN1dGU7ZXMgbXVsdGlwbGVzIGFqb3V0JmVhY3V0ZTsuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF91cGRhdGVkJ10gPSAnR2FiYXJpdCBwb3VyIGVudHImZWFjdXRlO2VzIG11bHRpcGxlcyBtaXMgJmFncmF2ZTsgam91ci4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnXSA9ICdHYWJhcml0IHBvdXIgZW50ciZlYWN1dGU7ZXMgbXVsdGlwbGVzIHN1cHByaW0mZWFjdXRlOy4nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnRWZmYWNlciBsZXMgJmVhY3V0ZTtsJmVhY3V0ZTttZW50cyBzJmVhY3V0ZTtsZWN0aW9ubiZlYWN1dGU7cyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZSddID0gJ0QmZWFjdXRlO3NpcmV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNldCAmZWFjdXRlO2wmZWFjdXRlO21lbnQ/JzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJ10gPSAnRCZlYWN1dGU7c2lyZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgbGVzICZlYWN1dGU7bCZlYWN1dGU7bWVudHMgcyZlYWN1dGU7bGVjdGlvbm4mZWFjdXRlO3M/JzsKJGxhbmdbJ3VzZV9jb250ZW50dHlwZSddID0gJ1V0aWxpc2VyIGxlIHR5cGUgZGUgY29udGVudSc7CiRsYW5nWydoZWxwX3RwbF92YXJzJ10gPSAnPHA+PHN0cm9uZz5UZW1wbGF0ZSB2YXJzOjwvc3Ryb25nPjwvcD4NCjxwPjxwcmU+PGNvZGU+eyRpbnB1dHN9PC9jb2RlPjwvcHJlPiBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBkZWZpbmVkIGlucHV0IGVsZW1lbnRzIG9mIHRoYXQgbXVsdGkgaW5wdXQgYmxvY2suPGJyIC8+DQpFYWNoIGlucHV0IGVsZW1lbnQgaXMgYW4gYXJyYXkgdGhhdCBjb250YWlucyBhbGwgaXRzIHBhcmFtcy4gPGJyIC8+DQpTZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgaW5mby48YnIgLz4NCkFkZGl0aW9uYWwgcGFyYW0gaXMgJnF1b3Q7aW5wdXQmcXVvdDsgdGhhdCB3aWxsIHByaW50IG91dCB0aGUgaW5wdXQgZWxlbWVudC48YnIgLz4NClRvIGFjY2VzcyB0aGUgcGFyYW1zIHVzZSB0aGUgZG90IHN5bnRheC48YnIgLz4NCkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT57Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19DQoJeyRlbG0ubGFiZWx9OiZuYnNwO3skZWxtLmlucHV0fTxiciAvPg0Key9mb3JlYWNofTwvY29kZT48L3ByZT4nOwokbGFuZ1snaGVscCddID0gJzxiciAvPg0KPGgzPlF1ZSBmYWl0IGNlIG1vZHVsZSA/PC9oMz4NCjxwPlRoaXMgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICZxdW90O0NvbnRlbnQmcXVvdDsgb2YgQ01TbXMuPGJyIC8+DQpJdCBwcm92aWRlcyBtb3JlIGZsZXhpYmlsaXR5IGJ5IGNyZWF0aW5nIGN1c3RvbSBpbnB1dCBjb250cm9scyBpbiBiYWNrZW5kLjxiciAvPg0KVXNlcnMgY2FuIGFkZCBkcm9wZG93bnMsIG11bHRpcGxlIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcywgZ3JvdXAgY29udGVudCBibG9ja3MgDQppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgDQp1c2luZyBhZGRpdGlvbmFsIHBhcmFtcyBpbiB0aGUgdGVtcGxhdGUgd2hlbiBjYWxsaW5nIHRoZSBjb250ZW50LjxiciAvPg0KSXQgYWxzbyBhZGRzIGFiaWxpdHkgdG8gZ3JhbnQgYWNjZXNzIG9mIHBhZ2VzIHRvIGNlcnRhaW4gdXNlcnMgb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgb3IgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSBzaG93aW5nIHRoZSBsb2dpbiBmb3JtIG9yIA0KanVzdCByZWRpcmVjdCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuPGJyIC8+DQpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgDQpwYXJlbnQgcGFnZXMuPC9wPg0KPHA+PGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVG8gZ2V0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb250ZW50IHR5cGUgDQppbiBmcm9udGVuZCB5b3UgbmVlZCB0byBjYWxsIHlvdXIgY29udGVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBZHZhbmNlZENvbnRlbnR9IA0KKGNhc2Ugc2Vuc2l0aXZlISkuPGJyIC8+DQpPdGhlcndpc2UgaXQgbWF5IGJlaGF2ZSBsaWtlIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBwbHVnaW4uPC9lbT48L3A+DQo8cD5Zb3UgY2FuIGV2ZW4gdXNlIHNtYXJ0eSBsb2dpYyBpbiBwYXJhbWV0ZXIgdmFsdWVzLiBUaGF0IG1lYW5zIHlvdSBjYW4gdXNlIHRoZSANCnJlc3VsdCBvZiBhIHBsdWdpbiwgYW4gdWR0IG9yIGV2ZW4gYSBtb2R1bGUgb3IganVzdCB0aGUgY29udGVudCBvZiBhIGdsb2JhbCANCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+DQo8aDM+Q29tbWVudCBsJiMwMzk7dXRpbGlzZXIgPzwvaDM+DQo8cD5BZnRlciBpbnN0YWxsYXRpb24gdGhlIG1vZHVsZSBzZXR0aW5ncyBjYW4gYmUgZm91bmQgaW4gJnF1b3Q7RXh0ZW5zaW9ucy0+QWR2YW5jZWRDb250ZW50JnF1b3Q7LjwvcD4NCjxwPkFkZGl0aW9uYWxseSB5b3Ugd2lsbCBoYXZlIGEgbmV3IGNvbnRlbnQgdHlwZSAmcXVvdDtBZHZhbmNlZENvbnRlbnQmcXVvdDsgYXZhaWxhYmxlIA0Kd2hlbiBhZGRpbmcvZWRpdGluZyBhIHBhZ2UuPGJyIC8+DQo8cD5BZGQgdGhlIGZvbGxvd2luZyBwYXJhbXMgdG8geW91ciBjb250ZW50IHRhZyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUsIA0KY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhbmQgc2VlIHdoYXQgaGFwcGVucyANCmluIGJhY2tlbmQuLi48L3A+DQo8aDM+V2hhdCBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGU/PC9oMz4NCjxwPmFsbCBwYXJhbXMgYXJlIG9wdGlvbmFsPC9wPg0KPHA+PHN0cm9uZz5EZWZhdWx0IHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9jazwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBbGxvd3MgeW91IHRvIGhhdmUgbW9yZSB0aGFuIG9uZSBjb250ZW50IGJsb2NrIHBlciBwYWdlLiBJZiBtdWx0aXBsZSBjb250ZW50IHRhZ3MgYXJlIHB1dCBvbiBhIHRlbXBsYXRlLCB0aGF0IG51bWJlciBvZiBlZGl0IGJveGVzIHdpbGwgYmUgZGlzcGxheWVkIGlmIHRoZSBwYWdlIGlzIGVkaXRlZC48YnIgLz4NCgkJCQllLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90O308L2NvZGU+PGJyIC8+DQoJCQkJTm93LCBpZiB5b3UgZWRpdCBhIHBhZ2UgdGhlcmUgd2lsbCBiYSBhIHRleHRhcmVhIGNhbGxlZCAmcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90Oy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGUgbmFtZSBvZiB0aGUgY29udGVudCBibG9jayBtYXkgY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3JlcyAobm8gd2hpdGVzcGFjZXMsIHNwZWNpYWwgY2hhcnMsIHVtbGF1dHMgZXRjLikuIE90aGVyd2lzZSBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIHByb3BlciBuYW1lIChzaW1pbGFyIHRvIHRoZSBwYWdlIGFsaWFzKS48L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pnd5c2l3eWc8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPklmIHNldCB0byBmYWxzZSwgdGhlbiBhIHd5c2l3eWcgd2lsbCBuZXZlciBiZSB1c2VkIHdoaWxlIGVkaXRpbmcgdGhpcyBibG9jay4gSWYgdHJ1ZSwgdGhlbiBpdCBhY3RzIGFzIG5vcm1hbC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+b25lbGluZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIHRydWUsIHRoZW4gb25seSBvbmUgZWRpdCBsaW5lIHdpbGwgYmUgc2hvd24gd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiBmYWxzZSwgdGhlbiBpdCBhY3RzIGFzIG5vcm1hbC4gT25seSB3b3JrcyB3aGVuIGJsb2NrIHBhcmFtZXRlciBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPkRlZmF1bHQgY29udGVudCB3aGVuIGNyZWF0aW5nIGEgbmV3IHBhZ2UuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmxhYmVsPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlByb21wdCBmb3IgdGhpcyBjb250ZW50IGJsb2NrLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGFueSBleHByZXNzaW9uLiBJZiBibGFuaywgdGhlIHVuY29udmVydGVkIGJsb2NrIG5hbWUgaXMgdXNlZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YXNzaWduPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFzc2lnbnMgdGhlIGNvbnRlbnQgdG8gYSBzbWFydHkgcGFyYW1ldGVyLCB3aGljaCB5b3UgY2FuIHRoZW4gdXNlIGluIG90aGVyIGFyZWFzIG9mIHRoZSBwYWdlLCBvciB1c2UgdG8gdGVzdCB3aGV0aGVyIGNvbnRlbnQgZXhpc3RzIGluIGl0IG9yIG5vdC48YnIgLz4NCgkJCQlFeGFtcGxlIG9mIHBhc3NpbmcgcGFnZSBjb250ZW50IHRvIGEgVXNlciBEZWZpbmVkIFRhZyBhcyBhIHBhcmFtZXRlcjo8YnIgLz4NCgkJCQk8Y29kZT57Y29udGVudCBhc3NpZ249cGFnZWNvbnRlbnR9PGJyIC8+DQoJCQkJe3RhYmxlX29mX2NvbnRlbnRzIHRoZXBhZ2Vjb250ZW50PSZxdW90OyRwYWdlY29udGVudCZxdW90O308L2NvZGU+PGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gRm9yIHNvbWUgcmVhc29uIHRoaXMgcGFyYW0gZG9lcyBub3Qgd29yayBhdCB0aGUgbW9tZW50IHdpdGggdGhlIG1vZHVsZSBwbHVnaW4ge0F2YW5jZWRDb250ZW50fS4gVXNlIDxiciAvPjxjb2RlPntjYXB0dXJlIGFzc2lnbj0mcXVvdDtmb28mcXVvdDt9e0FkdmFuY2VkQ29udGVudH17L2NhcHR1cmV9PC9jb2RlPiA8YnIgLz5pbnN0ZWFkLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+QWR2YW5jZWQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3R5cGU8L3R0PiAodGV4dCxjaGVja2JveCxkcm9wZG93bixzZWxlY3RfbXVsdGlwbGUsZGF0ZSkgDQoJCTx1bD4NCgkJCTxsaT5BbGxvd3MgeW91IHRvIHNwZWNpZnkgd2hhdCBjb250ZW50IGNvbnRyb2wgdHlwZSBpcyB1c2VkIGluIHRoZSBiYWNrIGVuZC4gU3VwcG9ydHMgYmxvY2stcGFyYW1ldGVycyB0byBpbmNsdWRlIGFkZGl0aW9uYWwgb3B0aW9ucy48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cGFnZV90YWI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBwYXJhbWV0ZXIgc2V0cyB0aGUgdGFiIGluIHdoaWNoIHRoZSBjb250ZW50IGJsb2NrIGlzIGRpc3BsYXllZCBpbiB0aGUgYmFja2VuZC48YnIgLz4NCgkJCQlQb3NzaWJsZSB2YWx1ZXMgYXJlICZxdW90O21haW4mcXVvdDsgKCA9IFRhYiAmcXVvdDtNYWluIE1lbnUmcXVvdDspLCAmcXVvdDtvcHRpb25zJnF1b3Q7ICggPSBUYWIgJnF1b3Q7T3B0aW9ucyZxdW90OyksIG9yIGFueSBvdGhlciBhcmJpdHJhcnkgdmFsdWU8YnIgLz4NCgkJCQk8ZW0+ZS5nLiB5b3UgY2FuIGFkZCBhIGNoZWNrYm94IHRvIHRoZSBvcHRpb25zIHRhYiBvciBjcmVhdGUgbmV3IHRhYnM8L2VtPi4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190YWI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgdGhlIGJsb2NrcyB3aXRoaW4gYSBwYWdlIHRhYiBjYW4gYmUgZnVydGhlciBkaXZpZGVkIGludG8gdGFicyBvciBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlci4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfZ3JvdXA8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgbXVsdGlwbGUgYmxvY2tzIGNhbiBiZSBncm91cGVkIGluIGEgZmllbGRzZXQuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFjdGl2ZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQWxsb3dzIHlvdSB0byBkaXNhYmxlIGEgY29udGVudCBibG9jay4gRGlzYWJsZWQgY29udGVudCBibG9ja3Mgd29uJiMwMzk7dCBiZSBzaG93biBpbiBiYWNrZW5kIGFzIHdlbGwgYXMgaW4gZnJvbnRlbmQuIChvbmx5IHdvcmtzIHdpdGgge0FkdmFuY2VkQ29udGVudH0gcGx1Z2luKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0eWxlPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0aGUgaW5saW5lIHN0eWxlIG9mIHRoZSBlbGVtZW50IGluIGJhY2tlbmQuIDxiciAvPg0KCQkJCWUuZy46IG1ha2UgYSBub3RlIHJlZCB3aXRoIDxjb2RlPnN0eWxlPSYjMDM5O2NvbG9yOiNGRjAwMDA7JiMwMzk7PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl9ncm91cHM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfdXNlcnM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiB1c2VyIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGlzIGJsb2NrLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBpZiB0aGUgcGFyYW1zIDx0dD5lZGl0b3JfdXNlcnM8L3R0PiBhbmQgPHR0PmVkaXRvcl9ncm91cHM8L3R0PiBhcmUgZW1wdHkgdGhlIGJsb2NrIG1heSBiZSBlZGl0ZWQgYnkgYW55IHVzZXIgd2l0aCBzdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gZWRpdCBhIHBhZ2U8L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+IChub3QgcmVhZHkgeWV0KQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBsaXN0IG9mIGZldSBncm91cHMgc2VwYXJhdGVkIGJ5IGEgY29tbWEuPGJyIC8+DQoJCQkJVGhpcyBncmFudHMgYWNjZXNzIHRvIHRoaXMgY29udGVudCBibG9jayBvbmx5IHRvIGNlcnRhaW4gZmV1IGdyb3Vwcy48YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWN0aW9uPC90dD4gKHRydWUvZmFsc2UpICAobm90IHJlYWR5IHlldCkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNwZWNpZnkgaWYgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIGZldSBtb2R1bGUgd2lsbCBiZSBzaG93biBvciBub3QuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWxsb3dfbm9uZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+U2V0IHRvIHRydWUgaWYgdGhlIHVzZXIgbWF5IGVudGVyIGVtcHR5IHZhbHVlcy4gPGJyIC8+SWYgc2V0IHRvIGZhbHNlIGFuZCB2YWx1ZSBpcyBlbXB0eSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgcGFyYW0gJnF1b3Q7ZGVmYXVsdCZxdW90OyB3aWxsIGJlIHVzZWQuIDxiciAvPklmIHNldCB0byB0cnVlIGFuZCBibG9jayBpcyBvZiB0eXBlIGltYWdlL2ZpbGUgdGhlIG9wdGlvbiAmcXVvdDtub25lJnF1b3Q7IChtb2RlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7KSBvciBhIGJ1dHRvbiB0byBjbGVhciB0aGUgc2VsZWN0ZWQgZmlsZS9pbWFnZSB2YWx1ZSAobW9kZT0mcXVvdDtmaWxlcGlja2VyJnF1b3Q7KSB3aWxsIGJlIGRpc3BsYXllZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c21hcnR5PC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUdXJuIHNtYXJ0eSBwcm9jZXNzaW5nIG9mIHZhbHVlcyBvbi9vZmYuPGJyIC8+DQoJCQkJSWYgc2V0IHRvIHRydWUgYW55IGdpdmVuIHZhbHVlIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBzbWFydHkgZW5naW5lLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGU6IDwvc3Ryb25nPiBOb3RpY2UgdGhhdCB5b3UgY2Fubm90IHVzZSB0aGUgZGVmYXVsdCBzbWFydHkgZGVsaW1pdGVycyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0ZW1wbGF0ZS4gVGhpcyB3aWxsIGNhdXNlIHNtYXJ0eSBlcnJvcnMgaW4gZnJvbnRlbmQuPGJyIC8+DQoJCQkJU28geW91IG5lZWQgdG8gdXNlIDo6OiBhcyBkZWxpbWl0ZXIgaW5zdGVhZC48YnIgLz48L2VtPg0KCQkJCUUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O0NhdGVnb3JpZXMmcXVvdDsgbGFiZWw9JnF1b3Q7U2VsZWN0IGEgY2F0ZWdvcnkmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDs6OjpnbG9iYWxfY29udGVudCBuYW1lPSYjMDM5O2NhdGVnb3J5bGlzdCYjMDM5Ozo6OiZxdW90OyBzbWFydHk9JnF1b3Q7dHJ1ZSZxdW90O308L2NvZGU+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVzY3JpcHRpb248L3R0PiAoc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPkFsbG93cyB5b3UgdG8gYWRkIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gdG8gdGhhdCBibG9jayBmb3IgeW91ciBlZGl0b3JzLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2NoZWNrYm94JnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQljaGVja3MvdW5jaGVja3MgdGhlIGNoZWNrYm94IGJ5IGRlZmF1bHQgd2hlbiBhZGRpbmcgYSBwYWdlPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVXNlICZxdW90OzEmcXVvdDsgZm9yIGNoZWNrZWQgYW5kICZxdW90OzAmcXVvdDsgZm9yIHVuY2hlY2tlZCBieSBkZWZhdWx0PGJyIC8+PC9lbT4NCgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9JnF1b3Q7Y2hlY2tib3gmcXVvdDsgZGVmYXVsdD0xfTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2Ryb3Bkb3duJnF1b3Q7LyZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5JdGVtIGxhYmVsKHMpIG9mIHRoZSBmaWVsZChzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlcmUgYXJlIGxlc3MgdmFsdWVzIHRoYW4gaXRlbXMgdGhlIGl0ZW0gbGFiZWxzIHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXMgKGFuZCB2aXNlIHZlcnNhKS48L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWxpbWl0ZXI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+QSBzaWduIG9yIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZXZpZGUgdGhlIGl0ZW1zL3ZhbHVlcyAoZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpDQoJCTx1bD4NCgkJCTxsaT5IZWlnaHQgb2YgY29udGVudCBibG9jayBpbiBiYWNrIGVuZCBpZiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gaXMgc2V0LiA8ZW0+KERlZmF1bHQgaXMgbnVtYmVyIG9mIGl0ZW1zKTwvZW0+PC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGVfaXRlbXM8L3R0PiAodHJ1ZS9mYWxzZSkgLSBzZWxlY3RfbXVsdGlwbGUgb25seQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJSWYgc2V0IHRvIHRydWUgdGhlIGl0ZW1zIHdvbiYjMDM5O3QgYmUgc2hvd24gYXMgYSBtdWx0aXBsZSBzZWxlY3QgaW5wdXQgd2l0aCBvcHRpb25zIGJ1dCBhcyBhIGxpc3Qgb2YgY2hlY2tib3hlcyB0aGF0IGNhbiBiZSByZW9yZGVyZWQuPGJyIC8+RWFjaCByb3cgY29udGFpbnMgdGhlIGl0ZW0gbGFiZWwgYW5kIGEgY2hlY2tib3ggd2l0aCB0aGUgaXRlbSB2YWx1ZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBvbmx5IHRoZSBvcmRlciBvZiB0aGUgPHN0cm9uZz5zZWxlY3RlZDwvc3Ryb25nPiBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgYWx3YXlzIGRpc3BsYXllZCBvbiB0aGUgdG9wIG9mIHRoZSBsaXN0IHdoZW4gcmVsb2FkaW5nIHRoZSBlZGl0IHBhZ2UuPGJyIC8+DQoJCQkJVW5zZWxlY3RlZCBpdGVtcyB3aWxsIGFwcGVuZGVkIGluIHRoYXQgb3JkZXIgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGU8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGUgZGVmYXVsdCBkaXNwbGF5IG9mIHRoZSBibG9jayBpbiBiYWNrZW5kLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7ZGF0ZSZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwX2hvdXJzPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlzdGVwcyBvZiBob3VycyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RhcnRfaG91cjwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IGhvdXIgb2YgdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVuZF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIGhvdXIgb2YgdGhlIGNsb2NrIGRyb3Bkb3duIChkZWZhdWx0IGlzIDEyIG9yIDIzKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3cyNGg8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlzZXQgdG8gZmFsc2UgaWYgQU0vUE0gaXMgdXNlZC4gKGRlZmF1bHQgaXMgdHJ1ZSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwX21pbnV0ZXM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIG1pbnV0ZXMgaW4gdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAxMCkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9taW51dGU8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBzdGFydCBtaW51dGUgb2YgdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIGVuZCBtaW51dGUgb2YgdGhlIGNsb2NrIGRyb3Bkb3duIChkZWZhdWx0IGlzIDU5KQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3dfY2xvY2s8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlzZXQgdG8gZmFsc2UgaWYgbm8gdGltZSBkcm9wZG93biBzaG91bGQgYmUgZGlzcGxheWVkIChkZWZhdWx0IGlzIHRydWUpPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gSWYgc2V0IHRvIGZhbHNlIDAwOjAwIG8mIzAzOTtjbG9jayB3aWxsIGJlIHVzZWQ8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRhdGVfZm9ybWF0PC90dD4gKHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGUgc3RyZnRpbWUgZGF0ZSBmb3JtYXQgdG8gc2hvdyBpbiBmcm9udGVuZC4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KCTxsaT5UaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+DQoJPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPC91bD4NCjxiciAvPg0KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPg0KCUFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLjxiciAvPg0KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPg0KCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mPGJyIC8+DQoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjxiciAvPg0KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4NCglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTxiciAvPg0KCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlPGJyIC8+DQoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4NCglPciByZWFkIGl0IG9ubGluZTogPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5odHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEw8L2E+PGJyIC8+DQoJUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQo8L3A+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTAsIEdlb3JnIEJ1c2NoIChOYU4pLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KPGJyIC8+JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzxiciAvPg0KPHA+PHN0cm9uZz5Nb2R1bGUgcmVsZWFzZXM8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+MC42IChPY3QgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX2dyb3VwPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBSZW1vdmVkIGZpbGUgcGlja2VyIChhbmQgYXNzb2NpYXRlZCBibG9ja190eXBlcyBpbWFnZS9maWxlKSAtIHVzZSBHQkZpbGVQaWNrZXIgaW5zdGVhZC48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNSAoU2VwdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyOTIgKG1lbW9yeSBpc3N1ZSk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjU0IChkaXNhYmxlIHd5c2l3eWcgbm90IHdvcmtpbmcpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMCAodXJsb25seSBub3Qgd29ya2luZyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzExIChpbWFnZSBwYXRocyBub3Qgc3RvcmVkICYjMDM5O2NvcnJlY3RseSYjMDM5Oyk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjYxIChBZGQgc29ydCB0byBpbWFnZSB0eXBlIC0gbm90aWNlIHRoZSBjaGFuZ2Ugb2YgcGFyYW0gZmlsdGVyKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+YWRkZWQgcGFyYW1zIGV4Y2x1ZGVfcHJlZml4LCBpbmNsdWRlX3ByZWZpeCwgZXhjbHVkZV9zdWZpeCwgaW5jbHVkZV9zdWZpeDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjUzIChUZXh0IGlucHV0IHRvIGRlZmluZSBhZGQgcGFyYW1zIHRvIHJlZGlyZWN0IGZ1bmN0aW9uKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQwIChEZWZhdWx0IHZhbHVlcyBvZiBBZHZhbmNlZENvbnRlbnQgcGFnZSBvcHRpb25zKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQxIChwdXQgRmV1QWNjZXNzIGluIEJsb2NrdGFiKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgYXJlIHNob3duIGluIHNlcGFyYXRlIHRhYjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBBZGRlZCBuZXcgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhlIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIHRhYjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtIGZpbHRlciAodXNlIG5ldyBwYXJhbXMgaW5zdGVhZCk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcGF0aCB0byBmaWxlcyBhcmUgc3RvcmVkIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBwYXJhbSBkaXIgb2YgYmxvY2sgdHlwZSBmaWxlL2ltYWdlIG5lZWRzIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpciBvbmx5ICh0aGVyZSBpcyBubyBpbWFnZSB1cGxvYWRzIGRpciB1c2VkIGFueW1vcmUpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjQuMSAoQXVndXN0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MTUxOiBmaXhlZCBzdHlsZXNoZWV0IGlzc3VlIHdpdGggZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbnMgb2YgY29udGVudCBibG9ja3MgaW4gSUUvU2FmYXJpLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTE2MjogUEhQIHdhcm5pbmdzIGlmIGJhY2tlbmQgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICZxdW90O01hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyZxdW90OyBvcGVuIGFuIGFkdmFuY2VkIGNvbnRlbnQgcGFnZSBhbmQgbXVsdGlwbGUgY29udGVudCBibG9ja3Mgb2Ygc2FtZSBuYW1lIHdlcmUgdXNlZCBpbiB0ZW1wbGF0ZS48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGV4dHJhIGZpZWxkcyBjb3VsZCBub3QgYmUgdXBkYXRlZC48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGZldSBhY2Nlc3MgZGlkIG5vdCB3b3JrLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2RlbGV0ZSZxdW90OyB0byBsZXQgdXNlcnMgZGVsZXRlIGZpbGVzIGV2ZW4gaWYgbm8gcGVybWlzc2lvbiAmcXVvdDtNb2RpZnkgRmlsZXMmcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7Y3JlYXRlX2RpcnMmcXVvdDsgdG8gbGV0IHVzZXJzIGNyZWF0ZV9kaXJzIGV2ZW4gaWYgbm8gcGVybWlzc2lvbiAmcXVvdDtNb2RpZnkgRmlsZXMmcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgbmV3IGJsb2NrdHlwZSAmcXVvdDtub3RlJnF1b3Q7IHRvIGNyZWF0ZSBzb21lIHNpbmdsZSBub3RlcyBmb3IgeW91ciBlZGl0b3JzPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIGRlcGVuZGVuY3kgb2YgRmlsZU1hbmFnZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYmxvY2sgb2YgdHlwZSBmaWxlIG9yIGltYWdlIHN0b3JlcyByZWxhdGl2ZSB1cmwgbm93PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGJsb2NrIHR5cGUgaW1hZ2Ugc2hvd3MgdGh1bWJuYWlsIGluIGJhY2tlbmQgcHJldmlldyBpbnN0ZWFkIG9mIGZ1bGwgaW1hZ2U8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNCAoSnVseSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5JbXBvcnRhbnQgbm90aWNlOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGNoYW5nZWQgcGFyYW0gJnF1b3Q7dHlwZSZxdW90OyB0byAmcXVvdDtibG9ja190eXBlJnF1b3Q7IHNpbmNlIGl0IGludGVyZmVyZXMgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MTAxOiBwYWdlX3RhYiAmcXVvdDtvcHRpb25zJnF1b3Q7IHdhcyBzaG93biB0byB1c2VycyB3aXRoIG5vIHBlcm1pc3Npb24gdG8gZWRpdCBwYWdlIG9wdGlvbnMgaWYgYSBjb250ZW50IGJsb2NrIHdhcyBhc3NpZ25lZCB0byB0aGF0IHRhYi48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwOTc6IGxpbmsgdG8gbWlzc2luZyBjc3MgcmVtb3ZlZDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBtaW1lLXR5cGUgaXNzdWUgKGFkZGVkIHByZWZlcmVuY2UgdG8gdG9nZ2xlIG1pbWUtdHlwZSB1c2FnZSBvbi9vZmYpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIHBhdGggaXNzdWUgd2hlcmUgdGh1bWJuYWlscyB3ZXJlIG5vdCBzaG93bjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBjb21wYXRpYmlsaXR5IHdpdGggQ01TbXMgMS44PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIG90aGVyIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgTUxFIHN1cHBvcnQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7c2hvd19jbG9jayZxdW90OyB0byBlbmFibGUvZGlzYWJsZSB0aGUgdGltZSBkcm9wZG93biBvZiBibG9ja3R5cGVzICZxdW90O2RhdGUmcXVvdDsgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtkYXRlX2Zvcm1hdCZxdW90OyB0byBmb3JtYXQgdGltZXN0YW1wIG9mIGJsb2NrdHlwZXMgJnF1b3Q7ZGF0ZSZxdW90OyBpbiBmcm9udGVuZDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtkZXNjcmlwdGlvbiZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBidWxrIGZ1bmN0aW9uIHRvIHNldCBhbGwgcGFnZXMgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjQgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUwNDU6IFdoZW4gc3dpdGNoaW5nIGZyb20gQ29udGVudCAtPiBBZHZhbmNlZCBDb250ZW50IGxvdHMgb2YgUEhQIGVycm9yczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA1NjogcGFnZV90YWJzIG5vdCB3b3JraW5nIGZvciB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gJnF1b3Q7TWFuYWdlIEFsbCBDb250ZW50JnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDczOiBpbmNvcnJlY3QgZGlzcGxheSBvZiBmaWxlcyB3aGVuIG9wZW5pbmcgZmlsZXBpY2tlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBtaW5vciBidWcgd2hlcmUgdGhlIG9wdGlvbiAmcXVvdDthbGxvd19ub25lJnF1b3Q7IG9mIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZSB3YXMgbm90IHNob3duIHdoZW4gdGVtcGxhdGUgaGFzIGJlZW4gZWRpdGVkPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgZmlsZW1hbmFnZW1lbnQgYW5kIHVwbG9hZCBmdW5jdGlvbnMgdG8gY29udGVudCBibG9ja3Mgb2YgdHlwZSBpbWFnZS9maWxlPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJyZWFkY3VtYnMgdG8gZmlsZXBpY2tlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZG1pbnMgbWF5IGJyb3dzZSB0aGUgZW50aXJlIGRpciB0cmVlIGluIGZpbGVwaWNrZXIgZmlsZSBicm93c2VyIHJlZ2FyZGxlc3Mgb2YgdGVtcGxhdGUgcGFyYW1zPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIG1pbWUgdHlwZSBjaGVja2luZyB0byBnZXQgZmlsZSB0eXBlPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHJhd3VybGVuY29kZSBpbiBzcmMgYXR0cmlicyB0byBkaXNwbGF5IGltYWdlcyB3aXRoIHdlaXJkIGZpbGVuYW1lcy48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5taXNjZWxsYW5lb3VzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgT09QIHN0dWZmIChwcml2YXRlL3B1YmxpYy9wcm90ZWN0ZWQpIHRvIGdhaW4gbW9yZSBjb21wYXRpYmlsaXR5IHdpdGggUEhQNDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIGFqYXggZnVuY3Rpb25zIHRvIHJldHVybiB4bWwgdmFsdWVzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgdXNhZ2Ugb2YgSW1hZ2VNYW5hZ2VyIG9uY2UgYW5kIGZvciBhbGwuIChjYXVzZWQgb25seSB0cm91YmxlKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjMgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCTx1bD4NCgkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCTx1bD4NCgkJCQk8bGk+PHA+LSBhbGlhcyB3YXMgbm90IGFsd2F5cyBjb252ZXJ0ZWQgcHJvcGVybHk8L3A+PC9saT4NCgkJCQk8bGk+PHA+LSB1bnN1Ym1pdHRlZCBjb250ZW50IGdvdCBsb3N0IGlmIHN3aXRjaGluZyBmcm9tIENvbnRlbnQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQk8L3VsPg0KCQk8L2xpPg0KCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJPHVsPg0KCQkJCTxsaT48cD4tIGFkZGVkIHN0YXJ0L2VuZCBkYXRlPC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aW1lcGlja2VyOyByZXBsYWNlZCBieSBhIHNpbXBsZSBkcm9wZG93bjwvcD48L2xpPg0KCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9pbWFnZX08L3A+PC9saT4NCgkJCTwvdWw+DQoJCTwvbGk+DQoJPC91bD4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMiAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBjaGFuZ2luZyBiYWNrIHRvIGRlZmF1bHQgY29udGVudCB0eXBlIG9yIGNoYW5naW5nIHRlbXBsYXRlIGNhdXNlZCBmYXRhbCBlcnJvcnM8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggc21hcnR5IHByb2Nlc3Npbmcgd2hlbiBzYXZpbmcgYSBwYWdlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHByZXZpZXcgdGFiPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZS1hZGRlZCBleHBhbmQvY29sbGFwc2UgYnV0dG9uIHRvIHRvZ2dsZSBjb250ZW50IGJsb2NrcyBpbiBiYWNrZW5kPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbXMgZWRpdG9yX2dyb3Vwcy9lZGl0b3JfdXNlcnMgdG8gc3BlY2lmeSBjZXJ0YWluIHVzZXJzL2dyb3VwcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgY2VydGFpbiBibG9ja3M8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW1zIHNlbGVjdGVkL2NoZWNrZWQ7IHVzZSBwYXJhbSBkZWZhdWx0IGluc3RlYWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGJsb2NrIGlkcyB3aWxsIGJlIGNvbnZlcnRlZCBmcm9tIGJsb2NrIG5hbWUgdXNpbmcgY29yZSBmdW5jdGlvbiBtdW5nZV9zdHJpbmdfdG9fdXJsICh0byByZW1vdmUgc3BlY2lhbCBjaGFycywgd2hpdGVzcGFjZXMsIHVtbGF1dHMgZXRjLik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyBvZiBibG9ja3R5cGUgZHJvcGRvd24vc2VsZWN0X211bHRpcGxlIHdoZXJlIGZpcnN0IGl0ZW0gaGFkIGFuIGVtcHR5IGxhYmVsIGlmIG9ubHkgdGhlIHBhcmFtICZxdW90O3ZhbHVlcyZxdW90OyBpcyB1c2VkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBzb21lIHRlbXBsYXRlIHZhcnMgb2YgdGhlIGZyb250ZW5kIHRvIGJlIGFsc28gYWNjZXNzaWJsZSBpbiBiYWNrZW5kIChlLmcuOiAkcGFnZV9hbGlhcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2FsbG93X25vbmUmcXVvdDsgdG8gYWxsIGNvbnRlbnQgYmxvY2sgdHlwZXMgdG8gc3BlY2lmeSBpZiB0aGUgcHJlZGVmaW5lZCBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZCBpZiBubyB2YWx1ZSBpcyBlbnRlcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZW1wdHkgdmFsdWVzIHdlcmUgbmV2ZXIgYmUgc3RvcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZGVmYXVsdCB2YWx1ZSBpbiBmcm9udGVuZCB3YXMgaWdub3JlZCBpZiB0aGUgJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyBwYXJhbSB3YXMgY2hhbmdlZCBhZnRlciBhbiBlbXB0eSB2YWx1ZSBoYXMgYmVlbiBzdG9yZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O3NvcnRhYmxlX2l0ZW1zJnF1b3Q7IHRvIGNyZWF0ZSBhIHNvcnRhYmxlIG11bHRpcGxlIHNlbGVjdCBsaXN0IChzZWxlY3QgbGlzdCB3aWxsIHJlc3VsdCBpbiBhIHRhYmxlIHdpdGggY2hlY2tib3hlczsgb25seSBvcmRlciBvZiBzZWxlY3RlZCBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgc2hvd2VkIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3Q7IHVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgdGVtcGxhdGUpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMSAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgcmVvcmRlcmluZyBzdHVmZiBmb3Igbm93IChjYXVzZXMgdHJvdWJsZSBhdCB0aGlzIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSBkYiBzdHVmZiAocGFyYW1zIG9mIGNvbnRlbnQgYmxvY2tzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGVtcGxhdGUgd29uJiMwMzk7dCBiZSBzYXZlZCBpbiBtb2R1bGUgZGIgdGFibGUgYW55bW9yZSAtPiBob3BlZnVsbHkgc3BlZWQgdXAgbG9hZGluZyB0aW1lKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBkdXBsaWNhdGUgY29udGVudCBibG9ja3M8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz5BZHZhbmNlZENvbnRlbnQgMC4zIChNYXkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSByZXdyaXRlIGNvZGU8L3A+PC9saT4NCgkJCTxsaT48cD4tIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW5hbWVkIHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gdXNpbmcgc2VwYXJhdGUgbW9kdWxlIHRlbXBsYXRlIG5vdyB0byBkc3BsYXkgY29udGVudCBibG9ja3M8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbW92ZWQgcGFnZSBhbGlhcyBpbmhlcml0YW5jZTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPHVsPg0KCTxsaT48cD48c3Ryb25nPlhDb250ZW50IEJFVEEgMyAoQXByaWwgMjAxMCAtIGRpc2NvbnRpbnVlZCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBNYWpvciBCdWdmaXggKG1pc3NpbmcgJnF1b3Q7OyZxdW90OyBhbmQgc3RyYW5nZSBpbnZpc2libGUgaW52YWxpZCBjaGFycyk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPlhDb250ZW50IEJFVEEgMiAoQXByaWwgMjAxMCAtIGRpc2NvbnRpbnVlZCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHBhcmFtICZxdW90O2RlbGltaXRlciZxdW90OzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgJnF1b3Q7U2hvdyBsb2dpbiBmb3JtJnF1b3Q7PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBwYWdlIGFsaWFzIHRvIGFkZCBpdCBhcyBwcmVmZml4OyBzbyBpZiB5b3UgaGF2ZSBhIHBhZ2UgY2FsbGVkICZxdW90O21lbWJlcnMmcXVvdDsgYW5kIHNlbGVjdCBmb3IgZWFjaCBjaGlsZCBwYWdlICZxdW90O2luaGVyaXQgcGFnZSBhbGlhcyZxdW90OyBhbGwgY2hpbGQgcGFnZXMgYWxpYXNlcyB3aWxsIHN0YXJ0IHdpdGggJnF1b3Q7bWVtYmVyc18mcXVvdDs7IG1ha2VzIGZpbHRlcmluZyBvZiBtZW51IGVudHJpZXMgd2l0aCBNZW51TWFuYWdlciBwYXJhbSAmcXVvdDtleGNsdWRlcHJlZmZpeCZxdW90OyBvciAmcXVvdDtpbmNsdWRlcHJlZmZpeCZxdW90OyBlYXNpZXIuPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlczwvcD48L2xpPiANCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIChBcHJpbCAyMDEwKTo8L3N0cm9uZz4gaW5pdGlhbCByZWxlYXNlPC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBjb252ZXJ0ZWQgdGhlIHNpbmdsZSBmaWxlIGludG8gYSBtb2R1bGU8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgcGFyYW1zOyBzZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgZGV0YWlsczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5TaW5nbGUgZmlsZSByZWxlYXNlcyAoZGlzY29udGludWVkKTwvc3Ryb25nPi4uLjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+MS40IChNYXJjaCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGNsZWFudXAgY29kZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlcyAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCByZWRpcmVjdCBwYWdlIGlmIGZldSBpcyBub3QgbG9nZ2VkIGluIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIGZldV9hY2Nlc3MgYW5kIHJlZGlyZWN0X3BhZ2UgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjY2VzcyAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWN0aW9uIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHJlZGlyZWN0X3BhZ2UgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfb25seSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBzbWFydHkgbG9naWMgaW4gYmFja2VuZCAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gc3R5bGUgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZpbHRlciAoZmlsdGVyaW5nIGltYWdlcyBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gSW1nTW9kZSAoZHJvcGRvd24gb3IgSW1hZ2VNYW5hZ2VyKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gc21hcnR5T24gKGZvciBwcm9jZXNzaW5nIHNtYXJ0eSB2YXJzIG9mIHRoZSB0ZW1wYXRlIGluIGJhY2tlbmQpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4xLjMgKEFwcmlsIDIwMDkpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gQ01TbXMgMS42LiogcmVhZHkgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgZmV1IGFjY2VzcyBvcHRpb24gLSAoTmFOKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPjEuMiAoTWFyY2ggMjAwOSk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gQSBzaW5nbGUgZmlsZSBDb250ZW50Mi5pbmMucGhwIHRoYXQgbmVlZHMgdG8gYmUgcGFjZWQgaW4gbGliL2NsYXNzZXMvY29udGVudHR5cGVzLjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbGF5b3V0L29wdGlvbnMgb2YgYmFja2VuZCBwYW5lbCBjYW4gYmUgY29udHJvbGVkIGJ5IGFkZGl0aW9uYWwgc21hcnR5IHBhcmFtcyBpbiB0aGUgdGVtcGxhdGU7IGludGVncmF0ZWQgdGhlIHtjb250ZW50X2ltYWdlfSB0YWcgLSAobW9kIGJ5IE5hTik8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjxiciAvPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjM3NzUxMDg2MzM4ODQ5MDEwMDAuMTIzNTM5MTM2My4xMjk2MDUxMzU2LjEyOTYwNzE4MDUuOTInOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjk2MDcxODA1LjkyLjQxLnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1kZXYuY21zbWFkZXNpbXBsZS5vcmd8dXRtY2N0PS9wcm9qZWN0cy9jb250ZW50Mnx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sncWNhJ10gPSAnUDAtMTg2MzEwOTU0LTEyNTcyNDM5ODUxNzcnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0NvbnRlbnV0byBBdmFuemF0byc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bG8gQWR2YW5jZWRDb250ZW50ICVzIGluc3RhbGxhdG8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bG8gQWR2YW5jZWRDb250ZW50ICVzIGRpc2luc3RhbGxhdG8nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bG8gQWR2YW5jZWRDb250ZW50IGFnZ2lvcm5hdG8gYWxsYSB2ZXJzaW9uZSAlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsbyBBZHZhbmNlZENvbnRlbnQgJXMgaW5zdGFsbGF0by4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01vZHVsbyBBZHZhbmNlZENvbnRlbnQgJXMgZGlzaW5zdGFsbGF0by4nOwokbGFuZ1snY29uZmlybXVuaW5zdGFsbCddID0gJ1ZvbGV0ZSBkYXZ2ZXJvIGRpc2luc3RhbGxhcmUgaWwgbW9kdWxvIEFkdmFuY2VkQ29udGVudD8nOwokbGFuZ1snbm90aWNlX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz5Ob3RhOjwvc3Ryb25nPiBRdWVzdG8gYmxvY2NvIHZpZW5lIHV0aWxpenphdG8gcGkmdWdyYXZlOyB2b2x0ZSBuZWkgdGVtcGxhdGUuIFF1aSB2ZWRldGUgc29sbyBpbCBwcmltbyBibG9jY28uPC9lbT4nOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSA9ICc8ZW0+PHN0cm9uZz5Ob3RhOjwvc3Ryb25nPiBDYW5ub3QgdXNlIGJhc2ljIGNvbnRlbnQgcHJvcGVydHkgbmFtZSAmIzAzOTslcyYjMDM5OyBhcyB2YWx1ZSBvZiBwYXJhbSAmIzAzOTtibG9jayYjMDM5Oy4gPGJyIC8+VGhpcyBibG9jayBpcyBkaXNhYmxlZC4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlIGFuZCBjaG9zZSBhIGRpZmZlcmVudCB2YWx1ZSBvZiBwYXJhbSAmIzAzOTtibG9jayYjMDM5Oy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnRW5kIGRhdGUgbXVzdCBiZSBsYXRlciB0aGFuIHN0YXJ0IGRhdGUuJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ0N1cnJlbnQgZGlyZWN0b3J5JzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICdJbWFnZXNpemUnOwokbGFuZ1snc2l6ZSddID0gJ0ZpbGVzaXplJzsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSA9ICdJbmhlcml0IGZyb20gcGFyZW50JzsKJGxhbmdbJ25vbmUnXSA9ICdub25lJzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdpbnZhbGlkJzsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBJbnZhbGlkIHZhbHVlICYjMDM5OyVzJiMwMzk7IG9mIHBhcmFtIGJsb2NrX3R5cGUgaW4gYmxvY2sgJiMwMzk7JXMmIzAzOTsuPGJyIC8+Q2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcyddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBJbnN1ZmZpY2llbnQgcGFyYW1zLiA8YnIgLz5NaXNzaW5nIHBhcmFtICYjMDM5OyVzJiMwMzk7IGZvciBibG9jayAmIzAzOTslcyYjMDM5Oy4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ1llcyc7CiRsYW5nWydubyddID0gJ05vJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQgYWNjZXNzJzsKJGxhbmdbJ3JlZGlyZWN0cGFnZSddID0gJ1JlZGlyZWN0IFBhZ2UgaWYgbm8gYWNjZXNzJzsKJGxhbmdbJ3Nob3dsb2dpbmZvcm0nXSA9ICdTaG93IGxvZ2luIGZvcm0nOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAnUmVnaXN0ZXJlZCB1c2VycyBvbmx5JzsKJGxhbmdbJ2Jsb2NrJ10gPSAnQmxvY2snOwokbGFuZ1sndXNlZXhwaXJlZGF0ZSddID0gJ1VzZSBleHBpcmUgZGF0ZSc7CiRsYW5nWydzdGFydGRhdGUnXSA9ICdTdGFydCBEYXRlJzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICdFbmQgRGF0ZSc7CiRsYW5nWydibG9ja2NvbnRlbnQnXSA9ICdCbG9jayBDb250ZW50JzsKJGxhbmdbJ3NldHBhZ2VpbmFjdGl2ZSddID0gJ1NldCBQYWdlIHRvIEluYWN0aXZlJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICdEZWxldGUgUGFnZSc7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdVbmluc3RhbGwgYWN0aW9uJzsKJGxhbmdbJ3NldGNvbnRlbnQxJ10gPSAnU2V0IGFsbCBQYWdlcyBvZiBBZHZhbmNlZENvbnRlbnQgYmFjayB0byB0eXBlIENvbnRlbnQnOwokbGFuZ1snc2V0Y29udGVudDInXSA9ICdTZXQgYWxsIFBhZ2VzIG9mIEFkdmFuY2VkQ29udGVudCBiYWNrIHRvIHR5cGUgQ29udGVudCBhbmQgcmVtb3ZlIGFkZGl0aW9uYWwgY29udGVudCBibG9ja3MnOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnUHJlZmVyZW5jZXMgdXBkYXRlZCc7CiRsYW5nWydzdWNjZXNzJ10gPSAnT2snOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvcic7CiRsYW5nWydkZWxldGVwYWdlcyddID0gJ0RlbGV0ZSBhbGwgcGFnZXMgb2YgdHlwZSBBZHZhbmNlZENvbnRlbnQnOwokbGFuZ1snaW1wb3J0cGFnZXMnXSA9ICdTZXQgYWxsIFBhZ2VzIG9mIHR5cGUgJXMgdG8gdHlwZSAlcy4nOwokbGFuZ1sncGFnZXNpbXBvcnRlZCddID0gJ0FsbCBjb250ZW50IHBhZ2VzIHNldCB0byBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ2NvbmZpcm1pbXBvcnQnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgYWxsIGNvbnRlbnQgcGFnZXM/JzsKJGxhbmdbJ3RvZ2dsZV9tZXNzYWdlJ10gPSAnSGlkZSB0aGlzIG1lc3NhZ2UnOwokbGFuZ1snY29udGVudHNldHRpbmdzJ10gPSAnRGVmYXVsdCBBZHZhbmNlZENvbnRlbnQgc2V0dGluZ3MnOwokbGFuZ1sncmVkaXJlY3RwYXJhbXMnXSA9ICdVUkwgcGFyYW1zIHRvIGFwcGVuZCB3aGVuIHJlZGlyZWN0aW5nJzsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gPSAnVXNlIHNtYXJ0eSB0byBwcm9jZXNzIHRoZSBwYXJhbXMnOwokbGFuZ1snZXJyb3JfbG9hZGluZ19tb2R1bGUnXSA9ICc8ZW0+PHN0cm9uZz5FcnJvcjo8L3N0cm9uZz4gQ291bGQgbm90IGxvYWQgbW9kdWxlICYjMDM5OyVzJiMwMzk7LiAoRGVmaW5lZCBmb3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsgaW4geW91ciBwYWdlIHRlbXBsYXRlLik8L2VtPic7CiRsYW5nWydlcnJvcl9jb250ZW50YmxvY2tfc3VwcG9ydCddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBNb2R1bGUgJiMwMzk7JXMmIzAzOTsgZG9lcyBub3Qgc3VwcG9ydCBjb250ZW50YmxvY2tzLiAoRGVmaW5lZCBmb3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsgaW4geW91ciBwYWdlIHRlbXBsYXRlLik8L2VtPic7CiRsYW5nWydzdWNjZXNzX2ltcG9ydHBhZ2VzJ10gPSAnQWxsIHBhZ2VzIG9mIHR5cGUgJXMgc3VjY2VzZnVsbHkgY2hhbmdlZCB0byAlcyc7CiRsYW5nWydzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJ10gPSAnU2hvdyBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWInOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddID0gJyVzIGRpc3BsYXkgc2V0dGluZ3MnOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdTYXZlIGNvbGxwYXNlIHN0YXR1cyBvZiAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ2NvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ2Jsb2NrX21lc3NhZ2UnXSA9ICdjb250ZW50IGJsb2NrIG1lc3NhZ2UnOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gPSAnYmxvY2sgZ3JvdXBzJzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdDb2xsYXBzZSAlcyBieSBkZWZhdWx0JzsKJGxhbmdbJ3Blcl9wYWdlJ10gPSAncGVyIHBhZ2UnOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gPSAncGVyIHRlbXBsYXRlJzsKJGxhbmdbJ2JvdGgxJ10gPSAndGVtcGxhdGUgT1IgcGFnZSAnOwokbGFuZ1snYm90aDInXSA9ICd0ZW1wbGF0ZSBBTkQgcGFnZSc7CiRsYW5nWydjb250ZW50J10gPSAnQ29udGVudCc7CiRsYW5nWydjb250ZW50MiddID0gJ0FkdmFuY2VkIENvbnRlbnQnOwokbGFuZ1sncHJlZnMnXSA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydtdWx0aV9pbnB1dCddID0gJ011bHRpIElucHV0cyc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdNdWx0aSBJbnB1dCBUZW1wbGF0ZXMnOwokbGFuZ1snYWRkX211bHRpX2lucHV0J10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXRfdHBsJ10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCB0ZW1wbGF0ZSc7CiRsYW5nWydpbnB1dF9pZCddID0gJ0lucHV0IElEJzsKJGxhbmdbJ2lucHV0X2ZpZWxkcyddID0gJ0lucHV0IGZpZWxkcyc7CiRsYW5nWyd0cGxfbmFtZSddID0gJ1RlbXBsYXRlIG5hbWUnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5JzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddID0gJ0lucHV0IGZpZWxkcyBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5Lic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZCddID0gJ05vIGlucHV0IGlkIGdpdmVuIG9yIGlucHV0IGlkIGFscmVhZHkgZXhpc3RzLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdJbnB1dCBJRCBpcyBhbHJlYWR5IGluIHVzZS4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZS4gKG11c3QgYmUgdW5pcXVlKSc7CiRsYW5nWydtdWx0aV9pbnB1dF9hZGRlZCddID0gJ011bHRpIElucHV0IGFkZGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgZGVsZXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdXBkYXRlZCddID0gJ011bHRpIElucHV0IHVwZGF0ZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9hZGRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIGFkZGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfdXBkYXRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIHVwZGF0ZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgZGVsZXRlZC4nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnRGVsZXRlIHNlbGVjdGVkIGl0ZW1zJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlJ10gPSAnRG8geW91IHJlYWxseSB3YW50IGRvIGRlbGV0ZSB0aGlzIGl0ZW0/JzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJ10gPSAnRG8geW91IHJlYWxseSB3YW50IGRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgaXRlbXM/JzsKJGxhbmdbJ3VzZV9jb250ZW50dHlwZSddID0gJ1VzZSBjb250ZW50dHlwZSc7CiRsYW5nWydoZWxwX3RwbF92YXJzJ10gPSAnPHA+PHN0cm9uZz5UZW1wbGF0ZSB2YXJzOjwvc3Ryb25nPjwvcD4NCjxwPjxwcmU+PGNvZGU+eyRpbnB1dHN9PC9jb2RlPjwvcHJlPiBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBkZWZpbmVkIGlucHV0IGVsZW1lbnRzIG9mIHRoYXQgbXVsdGkgaW5wdXQgYmxvY2suPGJyIC8+DQpFYWNoIGlucHV0IGVsZW1lbnQgaXMgYW4gYXJyYXkgdGhhdCBjb250YWlucyBhbGwgaXRzIHBhcmFtcy4gPGJyIC8+DQpTZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgaW5mby48YnIgLz4NCkFkZGl0aW9uYWwgcGFyYW0gaXMgJnF1b3Q7aW5wdXQmcXVvdDsgdGhhdCB3aWxsIHByaW50IG91dCB0aGUgaW5wdXQgZWxlbWVudC48YnIgLz4NClRvIGFjY2VzcyB0aGUgcGFyYW1zIHVzZSB0aGUgZG90IHN5bnRheC48YnIgLz4NCkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT57Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19DQoJeyRlbG0ubGFiZWx9OiZuYnNwO3skZWxtLmlucHV0fTxiciAvPg0Key9mb3JlYWNofTwvY29kZT48L3ByZT4nOwokbGFuZ1snaGVscCddID0gJzxiciAvPg0KPGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+DQo8cD5UaGlzIGlzIGEgbW9kaWZpY2F0aW9uIG9mIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSAmcXVvdDtDb250ZW50JnF1b3Q7IG9mIENNU21zLjxiciAvPg0KSXQgcHJvdmlkZXMgbW9yZSBmbGV4aWJpbGl0eSBieSBjcmVhdGluZyBjdXN0b20gaW5wdXQgY29udHJvbHMgaW4gYmFja2VuZC48YnIgLz4NClVzZXJzIGNhbiBhZGQgZHJvcGRvd25zLCBtdWx0aXBsZSBzZWxlY3QgbGlzdHMsIGNoZWNrYm94ZXMsIGdyb3VwIGNvbnRlbnQgYmxvY2tzIA0KaW4gc2VwYXJhdGUgcGFnZSB0YWJzLCBibG9jayB0YWJzIGluc2lkZSBhIHBhZ2UgdGFiIG9yIGluIGZpZWxkc2V0cyBieSBqdXN0IA0KdXNpbmcgYWRkaXRpb25hbCBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlIHdoZW4gY2FsbGluZyB0aGUgY29udGVudC48YnIgLz4NCkl0IGFsc28gYWRkcyBhYmlsaXR5IHRvIGdyYW50IGFjY2VzcyBvZiBwYWdlcyB0byBjZXJ0YWluIHVzZXJzIG9mIHRoZSANCkZyb250RW5kVXNlcnMgbW9kdWxlIGFuZCBoaWRlIHRoZSBjb250ZW50LCByZXBsYWNlIGl0IGJ5IHRoZSBsb2dpbiBmb3JtIG9mIHRoZSANCkZyb250RW5kVXNlcnMgbW9kdWxlIG9yIHJlZGlyZWN0IHRvIGEgc3BlY2lmaWVkIHBhZ2Ugc2hvd2luZyB0aGUgbG9naW4gZm9ybSBvciANCmp1c3QgcmVkaXJlY3Qgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlLjxiciAvPg0KUGFnZSBwcm9wZXJ0eSBvZiBGcm9udEVuZFVzZXJzIGFjY2VzcyBhbmQgcmVkaXJlY3QgcGFnZSBjYW4gYmUgaW5oZXJpdGVkIGJ5IA0KcGFyZW50IHBhZ2VzLjwvcD4NCjxwPjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVG8gZ2V0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb250ZW50IHR5cGUgDQppbiBmcm9udGVuZCB5b3UgbmVlZCB0byBjYWxsIHlvdXIgY29udGVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBZHZhbmNlZENvbnRlbnR9IA0KKGNhc2Ugc2Vuc2l0aXZlISkuPGJyIC8+DQpPdGhlcndpc2UgaXQgbWF5IGJlaGF2ZSBsaWtlIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBwbHVnaW4uPC9lbT48L3A+DQo8cD5Zb3UgY2FuIGV2ZW4gdXNlIHNtYXJ0eSBsb2dpYyBpbiBwYXJhbWV0ZXIgdmFsdWVzLiBUaGF0IG1lYW5zIHlvdSBjYW4gdXNlIHRoZSANCnJlc3VsdCBvZiBhIHBsdWdpbiwgYW4gdWR0IG9yIGV2ZW4gYSBtb2R1bGUgb3IganVzdCB0aGUgY29udGVudCBvZiBhIGdsb2JhbCANCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+DQo8aDM+SG93IGlzIGl0IHVzZWQ/PC9oMz4NCjxwPkFmdGVyIGluc3RhbGxhdGlvbiB0aGUgbW9kdWxlIHNldHRpbmdzIGNhbiBiZSBmb3VuZCBpbiAmcXVvdDtFeHRlbnNpb25zLT5BZHZhbmNlZENvbnRlbnQmcXVvdDsuPC9wPg0KPHA+QWRkaXRpb25hbGx5IHlvdSB3aWxsIGhhdmUgYSBuZXcgY29udGVudCB0eXBlICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhdmFpbGFibGUgDQp3aGVuIGFkZGluZy9lZGl0aW5nIGEgcGFnZS48YnIgLz4NCjxwPkFkZCB0aGUgZm9sbG93aW5nIHBhcmFtcyB0byB5b3VyIGNvbnRlbnQgdGFnIGluIHlvdXIgcGFnZSB0ZW1wbGF0ZSwgDQpjaGFuZ2UgdGhlIGNvbnRlbnQgdHlwZSBvZiB5b3VyIHBhZ2UgdG8gJnF1b3Q7QWR2YW5jZWRDb250ZW50JnF1b3Q7IGFuZCBzZWUgd2hhdCBoYXBwZW5zIA0KaW4gYmFja2VuZC4uLjwvcD4NCjxoMz5XaGF0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZT88L2gzPg0KPHA+YWxsIHBhcmFtcyBhcmUgb3B0aW9uYWw8L3A+DQo8cD48c3Ryb25nPkRlZmF1bHQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIGNvbnRlbnQgYmxvY2sgcGVyIHBhZ2UuIElmIG11bHRpcGxlIGNvbnRlbnQgdGFncyBhcmUgcHV0IG9uIGEgdGVtcGxhdGUsIHRoYXQgbnVtYmVyIG9mIGVkaXQgYm94ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaWYgdGhlIHBhZ2UgaXMgZWRpdGVkLjxiciAvPg0KCQkJCWUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O1NlY29uZCBDb250ZW50IGJsb2NrJnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQlOb3csIGlmIHlvdSBlZGl0IGEgcGFnZSB0aGVyZSB3aWxsIGJhIGEgdGV4dGFyZWEgY2FsbGVkICZxdW90O1NlY29uZCBDb250ZW50IGJsb2NrJnF1b3Q7LjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhlIG5hbWUgb2YgdGhlIGNvbnRlbnQgYmxvY2sgbWF5IGNvbnRhaW4gb25seSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgdW5kZXJzY29yZXMgKG5vIHdoaXRlc3BhY2VzLCBzcGVjaWFsIGNoYXJzLCB1bWxhdXRzIGV0Yy4pLiBPdGhlcndpc2UgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBwcm9wZXIgbmFtZSAoc2ltaWxhciB0byB0aGUgcGFnZSBhbGlhcykuPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD53eXNpd3lnPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gZmFsc2UsIHRoZW4gYSB3eXNpd3lnIHdpbGwgbmV2ZXIgYmUgdXNlZCB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIHRydWUsIHRoZW4gaXQgYWN0cyBhcyBub3JtYWwuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm9uZWxpbmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPklmIHNldCB0byB0cnVlLCB0aGVuIG9ubHkgb25lIGVkaXQgbGluZSB3aWxsIGJlIHNob3duIHdoaWxlIGVkaXRpbmcgdGhpcyBibG9jay4gSWYgZmFsc2UsIHRoZW4gaXQgYWN0cyBhcyBub3JtYWwuIE9ubHkgd29ya3Mgd2hlbiBibG9jayBwYXJhbWV0ZXIgaXMgdXNlZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5EZWZhdWx0IGNvbnRlbnQgd2hlbiBjcmVhdGluZyBhIG5ldyBwYWdlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5sYWJlbDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5Qcm9tcHQgZm9yIHRoaXMgY29udGVudCBibG9jay4gUG9zc2libGUgdmFsdWVzIGFyZSBhbnkgZXhwcmVzc2lvbi4gSWYgYmxhbmssIHRoZSB1bmNvbnZlcnRlZCBibG9jayBuYW1lIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFzc2lnbjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBc3NpZ25zIHRoZSBjb250ZW50IHRvIGEgc21hcnR5IHBhcmFtZXRlciwgd2hpY2ggeW91IGNhbiB0aGVuIHVzZSBpbiBvdGhlciBhcmVhcyBvZiB0aGUgcGFnZSwgb3IgdXNlIHRvIHRlc3Qgd2hldGhlciBjb250ZW50IGV4aXN0cyBpbiBpdCBvciBub3QuPGJyIC8+DQoJCQkJRXhhbXBsZSBvZiBwYXNzaW5nIHBhZ2UgY29udGVudCB0byBhIFVzZXIgRGVmaW5lZCBUYWcgYXMgYSBwYXJhbWV0ZXI6PGJyIC8+DQoJCQkJPGNvZGU+e2NvbnRlbnQgYXNzaWduPXBhZ2Vjb250ZW50fTxiciAvPg0KCQkJCXt0YWJsZV9vZl9jb250ZW50cyB0aGVwYWdlY29udGVudD0mcXVvdDskcGFnZWNvbnRlbnQmcXVvdDt9PC9jb2RlPjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gRm9yIHNvbWUgcmVhc29uIHRoaXMgcGFyYW0gZG9lcyBub3Qgd29yayBhdCB0aGUgbW9tZW50IHdpdGggdGhlIG1vZHVsZSBwbHVnaW4ge0F2YW5jZWRDb250ZW50fS4gVXNlIDxiciAvPjxjb2RlPntjYXB0dXJlIGFzc2lnbj0mcXVvdDtmb28mcXVvdDt9e0FkdmFuY2VkQ29udGVudH17L2NhcHR1cmV9PC9jb2RlPiA8YnIgLz5pbnN0ZWFkLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+QWR2YW5jZWQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3R5cGU8L3R0PiAodGV4dCxjaGVja2JveCxkcm9wZG93bixzZWxlY3RfbXVsdGlwbGUsZGF0ZSxtdWx0aV9pbnB1dCkgDQoJCTx1bD4NCgkJCTxsaT5BbGxvd3MgeW91IHRvIHNwZWNpZnkgd2hhdCBjb250ZW50IGNvbnRyb2wgdHlwZSBpcyB1c2VkIGluIHRoZSBiYWNrIGVuZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cGFnZV90YWI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBwYXJhbWV0ZXIgc2V0cyB0aGUgdGFiIGluIHdoaWNoIHRoZSBjb250ZW50IGJsb2NrIGlzIGRpc3BsYXllZCBpbiB0aGUgYmFja2VuZC48YnIgLz4NCgkJCQlQb3NzaWJsZSB2YWx1ZXMgYXJlICZxdW90O21haW4mcXVvdDsgKCA9IFRhYiAmcXVvdDtNYWluIE1lbnUmcXVvdDspLCAmcXVvdDtvcHRpb25zJnF1b3Q7ICggPSBUYWIgJnF1b3Q7T3B0aW9ucyZxdW90OyksIG9yIGFueSBvdGhlciBhcmJpdHJhcnkgdmFsdWU8YnIgLz4NCgkJCQk8ZW0+ZS5nLiB5b3UgY2FuIGFkZCBhIGNoZWNrYm94IHRvIHRoZSBvcHRpb25zIHRhYiBvciBjcmVhdGUgbmV3IHRhYnM8L2VtPi4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190YWI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgdGhlIGJsb2NrcyB3aXRoaW4gYSBwYWdlIHRhYiBjYW4gYmUgZnVydGhlciBkaXZpZGVkIGludG8gdGFicyBvciBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlci4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfZ3JvdXA8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgbXVsdGlwbGUgYmxvY2tzIGNhbiBiZSBncm91cGVkIGluIGEgZmllbGRzZXQuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFjdGl2ZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQWxsb3dzIHlvdSB0byBkaXNhYmxlIGEgY29udGVudCBibG9jay4gRGlzYWJsZWQgY29udGVudCBibG9ja3Mgd29uJiMwMzk7dCBiZSBzaG93biBpbiBiYWNrZW5kIGFzIHdlbGwgYXMgaW4gZnJvbnRlbmQuIChvbmx5IHdvcmtzIHdpdGgge0FkdmFuY2VkQ29udGVudH0gcGx1Z2luKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl9ncm91cHM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfdXNlcnM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiB1c2VyIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGlzIGJsb2NrLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHRoZSBwYXJhbXMgPHR0PmVkaXRvcl91c2VyczwvdHQ+IGFuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IGFyZSBlbXB0eSB0aGUgYmxvY2sgbWF5IGJlIGVkaXRlZCBieSBhbnkgdXNlciB3aXRoIHN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byBlZGl0IGEgcGFnZTwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4NCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgbGlzdCBvZiBmZXUgZ3JvdXAgaWRzIHNlcGFyYXRlZCBieSBhIGNvbW1hLjxiciAvPg0KCQkJCVRoaXMgc2hvd3MgdGhlIGNvbnRlbnQgYmxvY2sgb25seSB0byBjZXJ0YWluIGZldSBncm91cHMuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjdGlvbjwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJU3BlY2lmeSBpZiB0aGUgbG9naW4gZm9ybSBvZiB0aGUgZmV1IG1vZHVsZSB3aWxsIGJlIHNob3duIG9yIG5vdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBsb2dpbiBmb3JtIHdpbGwgb25seSBiZSBzaG93biBvbmUgdGltZS48YnIgLz4NCgkJCQlJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYmxvY2tzIHdpdGggbGltaXRlZCBmZXVfYWNjZXNzIGFuZCBmZXVfYWN0aW9uIHNldCB0byB0cnVlIG9ubHkgdGhlIGZpcnN0IGJsb2NrcyBsb2dpbiBmb3JtIHdpbGwgYmUgc2hvd24gYW5kIGFsbCBvdGhlciBibG9ja3Mgd2lsbCBqdXN0IGJlIGVtcHR5LjwvZW0+PGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWxsb3dfbm9uZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+U2V0IHRvIHRydWUgaWYgdGhlIHVzZXIgbWF5IGVudGVyIGVtcHR5IHZhbHVlcy4gPGJyIC8+SWYgc2V0IHRvIGZhbHNlIGFuZCB2YWx1ZSBpcyBlbXB0eSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgcGFyYW0gJnF1b3Q7ZGVmYXVsdCZxdW90OyB3aWxsIGJlIHVzZWQuIDxiciAvPklmIHNldCB0byB0cnVlIGFuZCBibG9jayBpcyBvZiB0eXBlIGltYWdlL2ZpbGUgdGhlIG9wdGlvbiAmcXVvdDtub25lJnF1b3Q7IChtb2RlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7KSBvciBhIGJ1dHRvbiB0byBjbGVhciB0aGUgc2VsZWN0ZWQgZmlsZS9pbWFnZSB2YWx1ZSAobW9kZT0mcXVvdDtmaWxlcGlja2VyJnF1b3Q7KSB3aWxsIGJlIGRpc3BsYXllZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c21hcnR5PC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUdXJuIHNtYXJ0eSBwcm9jZXNzaW5nIG9mIHZhbHVlcyBvbi9vZmYuPGJyIC8+DQoJCQkJSWYgc2V0IHRvIHRydWUgYW55IGdpdmVuIHZhbHVlIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBzbWFydHkgZW5naW5lLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTogPC9zdHJvbmc+IENvbnNpZGVyIHRoYXQgeW91IGNhbm5vdCB1c2UgdGhlIGRlZmF1bHQgc21hcnR5IGRlbGltaXRlcnMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdGVtcGxhdGUuIFRoaXMgd2lsbCBjYXVzZSBzbWFydHkgZXJyb3JzIGluIGZyb250ZW5kLjxiciAvPg0KCQkJCVNvIHlvdSBuZWVkIHRvIHVzZSA6OjogYXMgZGVsaW1pdGVyIGluc3RlYWQuPGJyIC8+PC9lbT4NCgkJCQlFLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtDYXRlZ29yaWVzJnF1b3Q7IGxhYmVsPSZxdW90O1NlbGVjdCBhIGNhdGVnb3J5JnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDsgaXRlbXM9JnF1b3Q7Ojo6Z2xvYmFsX2NvbnRlbnQgbmFtZT0mIzAzOTtjYXRlZ29yeWxpc3QmIzAzOTs6OjomcXVvdDsgc21hcnR5PSZxdW90O3RydWUmcXVvdDt9PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlc2NyaXB0aW9uPC90dD4gKHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT5BbGxvd3MgeW91IHRvIGFkZCBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIHRvIHRoYXQgYmxvY2sgZm9yIHlvdXIgZWRpdG9ycy48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+Y29sbGFwc2U8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNldCB0byB0cnVlL2ZhbHNlIHRvIGRpc3BsYXkgYmxvY2sgaW4gYmFja2VuZCBpbiBjb2xsYXBzZWQvZXhwYW5kZWQgbW9kZSBieSBkZWZhdWx0LjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gd2lsbCBiZSBhbHdheXMgZmFsc2UgaWYgbm9fY29sbGFwc2U9dHJ1ZSBpcyB1c2VkLjwvZW0+PGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bm9fY29sbGFwc2U8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNldCB0byBmYWxzZSB0byBkaXNhYmxlIGZvbGRpbmcgb2YgYmxvY2tzLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgc2V0IHRvIHRydWUgcGFyYW0gY29sbGFwc2UgaXMgYWx3YXlzIGZhbHNlLjwvZW0+PGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cmVxdWlyZWQ8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNldCB0byB0cnVlIGlmIHRoaXMgYmxvY2sgbWF5IG5vdCBiZSBlbXB0eS48YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2NoZWNrYm94JnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQljaGVja3MvdW5jaGVja3MgdGhlIGNoZWNrYm94IGJ5IGRlZmF1bHQgd2hlbiBhZGRpbmcgYSBwYWdlPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBVc2UgJnF1b3Q7MSZxdW90OyBmb3IgY2hlY2tlZCBhbmQgJnF1b3Q7MCZxdW90OyBmb3IgdW5jaGVja2VkIGJ5IGRlZmF1bHQ8YnIgLz48L2VtPg0KCQkJCUUuZy4gPGNvZGU+e2NvbnRlbnQgYmxvY2tfdHlwZT0mcXVvdDtjaGVja2JveCZxdW90OyBkZWZhdWx0PTF9PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7ZHJvcGRvd24mcXVvdDsvJnF1b3Q7c2VsZWN0X211bHRpcGxlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pml0ZW1zPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPkl0ZW0gbGFiZWwocykgb2YgdGhlIGZpZWxkKHMpIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZXM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+VmFsdWUocykgb2YgdGhlIGl0ZW1zIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGVyZSBhcmUgbGVzcyB2YWx1ZXMgdGhhbiBpdGVtcyB0aGUgaXRlbSBsYWJlbHMgd2lsbCBiZSB1c2VkIGFzIHZhbHVlcyAoYW5kIHZpc2UgdmVyc2EpLjwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVByZXNlbGVjdGVkIHZhbHVlKHMpIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlbGltaXRlcjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5BIHNpZ24gb3Igc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldmlkZSB0aGUgaXRlbXMvdmFsdWVzIChkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNpemU8L3R0PiAoaW50ZWdlcikNCgkJPHVsPg0KCQkJPGxpPkhlaWdodCBvZiBjb250ZW50IGJsb2NrIGluIGJhY2sgZW5kIGlmIDxjb2RlPmJsb2NrX3R5cGU9JnF1b3Q7c2VsZWN0X211bHRpcGxlJnF1b3Q7PC9jb2RlPiBpcyBzZXQuIDxlbT4oRGVmYXVsdCBpcyBudW1iZXIgb2YgaXRlbXMpPC9lbT48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zb3J0YWJsZV9pdGVtczwvdHQ+ICh0cnVlL2ZhbHNlKSAtIHNlbGVjdF9tdWx0aXBsZSBvbmx5DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSB0aGUgaXRlbXMgd29uJiMwMzk7dCBiZSBzaG93biBhcyBhIG11bHRpcGxlIHNlbGVjdCBpbnB1dCB3aXRoIG9wdGlvbnMgYnV0IGFzIGEgbGlzdCBvZiBjaGVja2JveGVzIHRoYXQgY2FuIGJlIHJlb3JkZXJlZC48YnIgLz5FYWNoIHJvdyBjb250YWlucyB0aGUgaXRlbSBsYWJlbCBhbmQgYSBjaGVja2JveCB3aXRoIHRoZSBpdGVtIHZhbHVlLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gb25seSB0aGUgb3JkZXIgb2YgdGhlIDxzdHJvbmc+c2VsZWN0ZWQ8L3N0cm9uZz4gaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIGFsd2F5cyBkaXNwbGF5ZWQgb24gdGhlIHRvcCBvZiB0aGUgbGlzdCB3aGVuIHJlbG9hZGluZyB0aGUgZWRpdCBwYWdlLjxiciAvPg0KCQkJCVVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIHRlbXBsYXRlPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2RhdGUmcXVvdDs6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RlcF9ob3VyczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgaG91cnMgaW4gdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAxKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBzdGFydCBob3VyIG9mIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMCkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfaG91cjwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIGVuZCBob3VyIG9mIHRoZSBjbG9jayBkcm9wZG93biAoZGVmYXVsdCBpcyAxMiBvciAyMykNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaG93MjRoPC90dD4gKHRydWUvZmFsc2UpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc2V0IHRvIGZhbHNlIGlmIEFNL1BNIGlzIHVzZWQuIChkZWZhdWx0IGlzIHRydWUpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RlcF9taW51dGVzPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlzdGVwcyBvZiBtaW51dGVzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMTApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RhcnRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgbWludXRlIG9mIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMCkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVuZF9taW51dGU8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgbWludXRlIG9mIHRoZSBjbG9jayBkcm9wZG93biAoZGVmYXVsdCBpcyA1OSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaG93X2Nsb2NrPC90dD4gKHRydWUvZmFsc2UpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc2V0IHRvIGZhbHNlIGlmIG5vIHRpbWUgZHJvcGRvd24gc2hvdWxkIGJlIGRpc3BsYXllZCAoZGVmYXVsdCBpcyB0cnVlKTxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gSWYgc2V0IHRvIGZhbHNlIDAwOjAwIG8mIzAzOTtjbG9jayB3aWxsIGJlIHVzZWQ8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRhdGVfZm9ybWF0PC90dD4gKHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGUgc3RyZnRpbWUgZGF0ZSBmb3JtYXQgdG8gc2hvdyBpbiBmcm9udGVuZC4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O211bHRpX2lucHV0JnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0czwvdHQ+IChjc3Ygb2YgaW5wdXQgaWRzIHlvdSBjcmVhdGVkIGluIHRoZSBiYWNrZW5kKSANCgkJPGJyIC8+PGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnZhbHVlX2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIHZhbHVlcyBvZiB0aGUgaW5wdXRzIG9mIG9uZSBtdWx0aV9pbnB1dCB3aGVuIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuPGJyIC8+DQoJCQkJRGVmYXVsdCBpcyAmcXVvdDs8IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGxpbWl0ZXIgLS0+JnF1b3Q7DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aW5wdXRfZGVsaW1pdGVyPC90dD4gKGFueSBzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBkZWZpbmVzIGEgc3RyaW5nIHRoYXQgZGV2aWRlcyB0aGUgbXVsdGlfaW5wdXRzIHlvdSBkZWZpbmVkIGZvciB0aGlzIGNvbnRlbnQgYmxvY2sgd2hlbiBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLjxiciAvPg0KCQkJCURlZmF1bHQgaXMgJnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF9kZWxsaW1pdGVyIC0tPiZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+V2hhdCBpcyBhIG11bHRpX2lucHV0IGZvcj88L3N0cm9uZz48L3A+DQoJCTxwPkEgbXVsdGlfaW5wdXQgYmxvY2sgaXMgYSBjb250ZW50IGJsb2NrIHRoYXQgY29uc2lzdHMgb2YgZGlmZmVyZW50IGlucHV0IGZpZWxkcy4gPGJyIC8+DQoJCVlvdSBjYW4gZGVmaW5lIHRoZW0gaW4gdGhlIG1vZHVsZSBhZG1pbmlzdHJhdGlvbiB1c2luZyB0aGUgc2FtZSBzeW50YXggeW91IHVzZSBpbiBhIHRlbXBsYXRlIHdoZW4gZGVmaW5pbmcgYSBjb250ZW50IGJsb2NrLjxiciAvPg0KCQlNdWx0aSBpbnB1dHMgY2FuIGJlIHVzZWQgaWYgeW91IHdhbnQgdG8gc3RvcmUgZGlmZmVyZW50IHZhbHVlcyBpbiBvbmUgY29udGVudCBibG9jayBhbmQgcHJvdmlkZSBkaWZmZXJlbnQgaW5wdXQgdHlwZXMgZm9yIGVhY2ggdmFsdWVzLjxiciAvPg0KCQlUaGlzIGNhbiBiZSB1c2VmdWxsIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIGRyb3Bkb3duIHRvIHNlbGVjdCBhIG1vZHVsZSB0byBiZSBzaG93biBpbiBmcm9udGVuZCBhbmQgdGV4dCBpbnB1dCB0byBkZWZpbmUgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLjxiciAvPg0KCQlFeGFtcGxlIGZvciBhIG11bHRpX2lucHV0IGluIHBhZ2UgdGVtcGxhdGU6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlJnF1b3Q7IGxhYmVsPSZxdW90O1BhZ2UgbW9kdWxlcyZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDttb2R1bGUsbW9kdWxlLG1vZHVsZSxtb2R1bGUmcXVvdDt9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJCTxwPkV4YW1wbGUgZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtdWx0aV9pbnB1dCBuYW1lZCAmcXVvdDttb2R1bGUmcXVvdDs6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHNlbGVjdGlvbiZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90O3xOZXdzfEdhbGxlcnl8TWVudSZxdW90O30NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHBhcmFtcyZxdW90OyBibG9ja190eXBlPSZxdW90O3RleHQmcXVvdDsgb25lbGluZT10cnVlfQ0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IGVkaXQgYSBwYWdlPzwvcD4NCgkJPHA+SXQgd2lsbCBzaG93IHlvdSBhIGZpZWxkc2V0IHdpdGggbGVnZW5kICZxdW90O1BhZ2UgbW9kdWxlcyZxdW90Oy4gPGJyIC8+DQoJCUluc2lkZSB0aGlzIGZpZWxkc2V0IGl0IHNob3dzIHRoZSBtdWx0aV9pbnB1dCBuYW1lZCAmcXVvdDttb2R1bGUmcXVvdDsgZm91ciB0aW1lcy48YnIgLz4NCgkJVGhhdCBtZWFucyB5b3Ugc2VlIGZvdXIgbGluZXMgd2l0aCB0d28gaW5wdXQgZmllbGRzLiBBIGRyb3Bkb3duIGFuZCBhIHRleHQgaW5wdXQuPC9wPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IHNhdmUgYSBwYWdlPzwvcD4NCgkJPHA+VGhlIG1vZHVsZSBzdG9yZXMgdGhlIHZhbHVlcyBhcyBvbmUgc2luZ2xlIGNvbnRlbnQgcHJvcGVydHkgKGFrYSBjb250ZW50YmxvY2spIGFuZCBzZXBhcmF0ZXMgdGhlIGlucHV0cyBieSBhIGdpdmVuIGRlbGltaXRlci48YnIgLz4NCgkJTGV0JiMwMzk7cyBhc3N1bWUgeW91IHNlbGVjdCB0aGUgTmV3cyBtb2R1bGUgZm91ciB0aW1lcyB3aXRoIGRpZmZlcmVudCBtb2R1bGUgcGFyYW1zIGxpa2UgY2F0ZWdvcnk9JnF1b3Q7MSZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7MiZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7MyZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7NCZxdW90Oy48YnIgLz4NCgkJSW4gdGhlIGRhdGFiYXNlIGl0IHN0b3JlcyB0aGlzIHN0cmluZzo8L3A+DQoJCTxwcmU+DQoJCTxjb2RlPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9JnF1b3Q7MSZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPjxiciAvPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9JnF1b3Q7MiZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPjxiciAvPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9JnF1b3Q7MyZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPjxiciAvPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9JnF1b3Q7NCZxdW90Ow0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5JbiB5b3VyIHBhZ2UgdGVtcGxhdGUgeW91IGNhbiBleHBsb2RlIHRoZSBjb250ZW50IGJ5IHRoZSBkZWxpbWl0ZXJzIGFuZCBjYWxsIHRoZSBzZWxlY3RlZCBtb2R1bGVzLjwvcD4NCgkJPHA+RnVsbCBFeGFtcGxlOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXsqIGRlZmluZSB0aGUgY29udGVudCBibG9jayAqfQ0KCQl7Y29udGVudCBibG9jaz0mcXVvdDtteV9tb2R1bGVzJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7bXVsdGlfaW5wdXQmcXVvdDsgaW5wdXRzPSZxdW90O01vZHVsZSxNb2R1bGUsTW9kdWxlLE1vZHVsZSZxdW90OyBhc3NpZ249JnF1b3Q7bW9kdWxlcyZxdW90O30NCgkJDQoJCXsqIGV4cGxvZGUgYmxvY2sgY29udGVudCBpbiBhbiBhcnJheSB0byBnZXQgdGhlIGlucHV0IGdyb3VwcyAqfQ0KCQl7YXNzaWduIHZhcj1tb2R1bGVzIHZhbHVlPSZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPiZxdW90O3xleHBsb2RlOiRtb2R1bGVzfQ0KCQkNCgkJeyogbG9vcCB0aHJvdWdoIHRoZSBzZWxlY3RlZCBtb2R1bGVzICp9DQoJCXtmb3JlYWNoIGZyb209JG1vZHVsZXMgaXRlbT0mcXVvdDttb2R1bGUmcXVvdDt9DQoJCQl7aWYgJG1vZHVsZSAhPSAmIzAzOTsmIzAzOTt9DQoJCQkNCgkJCQl7KiBleHBsb2RlIHRoZSBpbnB1dCB2YWx1ZXMgaW4gbW9kdWxuYW1lIGFuZCBtb2R1bGUgcGFyYW1ldGVycyAqfQ0KCQkJCXthc3NpZ24gdmFyPW1vZHVsZV9pdGVtcyB2YWx1ZT0mcXVvdDs8IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLT4mcXVvdDt8ZXhwbG9kZTokbW9kdWxlfQ0KCQkJCQ0KCQkJCXtpZiRtb2R1bGVfaXRlbXNbMF0gIT0gJiMwMzk7JiMwMzk7fQ0KCQkJCQ0KCQkJCQl7KiBjYWxsIHRoZSBtb2R1bGUgKn0NCgkJCQkJe2lmIGlzc2V0KCRtb2R1bGVfaXRlbXNbMV0pfQ0KCQkJCQkJe2V2YWwgdmFyPSRzbWFydHkubGRlbGltfGNhdDomIzAzOTtjbXNfbW9kdWxlIG1vZHVsZT0mcXVvdDsmIzAzOTt8Y2F0OiRtb2R1bGVfaXRlbXNbMF18Y2F0OiYjMDM5OyZxdW90OyAmIzAzOTt8Y2F0OiRtb2R1bGVfaXRlbXNbMV18Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7ZWxzZX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6JiMwMzk7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7JiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDomIzAzOTsmcXVvdDsmIzAzOTt8Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7L2lmfQ0KCQkJCQkNCgkJCQl7L2lmfQ0KCQkJCQ0KCQkJey9pZn0NCgkJDQoJCXsvZm9yZWFjaH0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgk8L2xpPg0KPC91bD4NCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KCTxsaT5UaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+DQoJPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPC91bD4NCjxiciAvPg0KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPg0KCUFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLjxiciAvPg0KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPg0KCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mPGJyIC8+DQoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjxiciAvPg0KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4NCglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTxiciAvPg0KCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlPGJyIC8+DQoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4NCglPciByZWFkIGl0IG9ubGluZTogPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5odHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEw8L2E+PGJyIC8+DQoJUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQo8L3A+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTAsIEdlb3JnIEJ1c2NoIChOYU4pLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KPGJyIC8+JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzxiciAvPg0KPHA+PHN0cm9uZz5Nb2R1bGUgcmVsZWFzZXM8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+MC43LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgaXRlbSAjNTY1MTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3M8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZXF1aXJlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC43IChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSBidWdmaXhlcyBmb3IgQ01TbXMgMS45KyAobmVlZHMgQ01TbXMgMS45IG1pbmltdW0gbm93KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHN1cHBvcnQgb2Yge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gbm9fY29sbGFwc2U8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNi4yIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4IChzaG93ZWQgdGFicyBvZiBwcmV2aW91cyB0ZW1wbGF0ZSB3aGVuIHRlbXBsYXRlIHdhcyBjaGFuZ2VkKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC42LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGUgbXVsdGlfaW5wdXQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNiAoT2N0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19ncm91cDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gUmVtb3ZlZCBmaWxlIHBpY2tlciAoYW5kIGFzc29jaWF0ZWQgYmxvY2tfdHlwZXMgaW1hZ2UvZmlsZSkgLSB1c2UgR0JGaWxlUGlja2VyIGluc3RlYWQuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjUgKFNlcHQgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjkyIChtZW1vcnkgaXNzdWUpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI1NCAoZGlzYWJsZSB3eXNpd3lnIG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTAgKHVybG9ubHkgbm90IHdvcmtpbmcpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMSAoaW1hZ2UgcGF0aHMgbm90IHN0b3JlZCAmIzAzOTtjb3JyZWN0bHkmIzAzOTspPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI2MSAoQWRkIHNvcnQgdG8gaW1hZ2UgdHlwZSAtIG5vdGljZSB0aGUgY2hhbmdlIG9mIHBhcmFtIGZpbHRlcik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIHBhcmFtcyBleGNsdWRlX3ByZWZpeCwgaW5jbHVkZV9wcmVmaXgsIGV4Y2x1ZGVfc3VmaXgsIGluY2x1ZGVfc3VmaXg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI1MyAoVGV4dCBpbnB1dCB0byBkZWZpbmUgYWRkIHBhcmFtcyB0byByZWRpcmVjdCBmdW5jdGlvbik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MCAoRGVmYXVsdCB2YWx1ZXMgb2YgQWR2YW5jZWRDb250ZW50IHBhZ2Ugb3B0aW9ucyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MSAocHV0IEZldUFjY2VzcyBpbiBCbG9ja3RhYik8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIGFyZSBzaG93biBpbiBzZXBhcmF0ZSB0YWI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gQWRkZWQgbmV3IHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoZSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbSBmaWx0ZXIgKHVzZSBuZXcgcGFyYW1zIGluc3RlYWQpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhdGggdG8gZmlsZXMgYXJlIHN0b3JlZCByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcGFyYW0gZGlyIG9mIGJsb2NrIHR5cGUgZmlsZS9pbWFnZSBuZWVkcyB0byBiZSByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXIgb25seSAodGhlcmUgaXMgbm8gaW1hZ2UgdXBsb2FkcyBkaXIgdXNlZCBhbnltb3JlKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40LjEgKEF1Z3VzdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTE1MTogZml4ZWQgc3R5bGVzaGVldCBpc3N1ZSB3aXRoIGV4cGFuZC9jb2xsYXBzZSBidXR0b25zIG9mIGNvbnRlbnQgYmxvY2tzIGluIElFL1NhZmFyaS48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUxNjI6IFBIUCB3YXJuaW5ncyBpZiBiYWNrZW5kIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAmcXVvdDtNYW5hZ2UgQWxsIEFkdmFuY2VkQ29udGVudCBCbG9ja3MmcXVvdDsgb3BlbiBhbiBhZHZhbmNlZCBjb250ZW50IHBhZ2UgYW5kIG11bHRpcGxlIGNvbnRlbnQgYmxvY2tzIG9mIHNhbWUgbmFtZSB3ZXJlIHVzZWQgaW4gdGVtcGxhdGUuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBleHRyYSBmaWVsZHMgY291bGQgbm90IGJlIHVwZGF0ZWQuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBmZXUgYWNjZXNzIGRpZCBub3Qgd29yay48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtkZWxldGUmcXVvdDsgdG8gbGV0IHVzZXJzIGRlbGV0ZSBmaWxlcyBldmVuIGlmIG5vIHBlcm1pc3Npb24gJnF1b3Q7TW9kaWZ5IEZpbGVzJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2NyZWF0ZV9kaXJzJnF1b3Q7IHRvIGxldCB1c2VycyBjcmVhdGVfZGlycyBldmVuIGlmIG5vIHBlcm1pc3Npb24gJnF1b3Q7TW9kaWZ5IEZpbGVzJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIG5ldyBibG9ja3R5cGUgJnF1b3Q7bm90ZSZxdW90OyB0byBjcmVhdGUgc29tZSBzaW5nbGUgbm90ZXMgZm9yIHlvdXIgZWRpdG9yczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBkZXBlbmRlbmN5IG9mIEZpbGVNYW5hZ2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGJsb2NrIG9mIHR5cGUgZmlsZSBvciBpbWFnZSBzdG9yZXMgcmVsYXRpdmUgdXJsIG5vdzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayB0eXBlIGltYWdlIHNob3dzIHRodW1ibmFpbCBpbiBiYWNrZW5kIHByZXZpZXcgaW5zdGVhZCBvZiBmdWxsIGltYWdlPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjQgKEp1bHkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+SW1wb3J0YW50IG5vdGljZTo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIHBhcmFtICZxdW90O3R5cGUmcXVvdDsgdG8gJnF1b3Q7YmxvY2tfdHlwZSZxdW90OyBzaW5jZSBpdCBpbnRlcmZlcmVzIHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTEwMTogcGFnZV90YWIgJnF1b3Q7b3B0aW9ucyZxdW90OyB3YXMgc2hvd24gdG8gdXNlcnMgd2l0aCBubyBwZXJtaXNzaW9uIHRvIGVkaXQgcGFnZSBvcHRpb25zIGlmIGEgY29udGVudCBibG9jayB3YXMgYXNzaWduZWQgdG8gdGhhdCB0YWIuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDk3OiBsaW5rIHRvIG1pc3NpbmcgY3NzIHJlbW92ZWQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgbWltZS10eXBlIGlzc3VlIChhZGRlZCBwcmVmZXJlbmNlIHRvIHRvZ2dsZSBtaW1lLXR5cGUgdXNhZ2Ugb24vb2ZmKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBwYXRoIGlzc3VlIHdoZXJlIHRodW1ibmFpbHMgd2VyZSBub3Qgc2hvd248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgY29tcGF0aWJpbGl0eSB3aXRoIENNU21zIDEuODwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBvdGhlciBtaW5vciBidWdmaXhlczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIE1MRSBzdXBwb3J0PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O3Nob3dfY2xvY2smcXVvdDsgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHRpbWUgZHJvcGRvd24gb2YgYmxvY2t0eXBlcyAmcXVvdDtkYXRlJnF1b3Q7IGluIGJhY2tlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGF0ZV9mb3JtYXQmcXVvdDsgdG8gZm9ybWF0IHRpbWVzdGFtcCBvZiBibG9ja3R5cGVzICZxdW90O2RhdGUmcXVvdDsgaW4gZnJvbnRlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgYnVsayBmdW5jdGlvbiB0byBzZXQgYWxsIHBhZ2VzIHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy40IChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MDQ1OiBXaGVuIHN3aXRjaGluZyBmcm9tIENvbnRlbnQgLT4gQWR2YW5jZWQgQ29udGVudCBsb3RzIG9mIFBIUCBlcnJvcnM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNTY6IHBhZ2VfdGFicyBub3Qgd29ya2luZyBmb3IgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICZxdW90O01hbmFnZSBBbGwgQ29udGVudCZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA3MzogaW5jb3JyZWN0IGRpc3BsYXkgb2YgZmlsZXMgd2hlbiBvcGVuaW5nIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgbWlub3IgYnVnIHdoZXJlIHRoZSBvcHRpb24gJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyBvZiBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGUgd2FzIG5vdCBzaG93biB3aGVuIHRlbXBsYXRlIGhhcyBiZWVuIGVkaXRlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGZpbGVtYW5hZ2VtZW50IGFuZCB1cGxvYWQgZnVuY3Rpb25zIHRvIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBicmVhZGN1bWJzIHRvIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRtaW5zIG1heSBicm93c2UgdGhlIGVudGlyZSBkaXIgdHJlZSBpbiBmaWxlcGlja2VyIGZpbGUgYnJvd3NlciByZWdhcmRsZXNzIG9mIHRlbXBsYXRlIHBhcmFtczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBtaW1lIHR5cGUgY2hlY2tpbmcgdG8gZ2V0IGZpbGUgdHlwZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCByYXd1cmxlbmNvZGUgaW4gc3JjIGF0dHJpYnMgdG8gZGlzcGxheSBpbWFnZXMgd2l0aCB3ZWlyZCBmaWxlbmFtZXMuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+bWlzY2VsbGFuZW91czo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIE9PUCBzdHVmZiAocHJpdmF0ZS9wdWJsaWMvcHJvdGVjdGVkKSB0byBnYWluIG1vcmUgY29tcGF0aWJpbGl0eSB3aXRoIFBIUDQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBhamF4IGZ1bmN0aW9ucyB0byByZXR1cm4geG1sIHZhbHVlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHVzYWdlIG9mIEltYWdlTWFuYWdlciBvbmNlIGFuZCBmb3IgYWxsLiAoY2F1c2VkIG9ubHkgdHJvdWJsZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4zIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgk8dWw+DQoJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWxpYXMgd2FzIG5vdCBhbHdheXMgY29udmVydGVkIHByb3Blcmx5PC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gdW5zdWJtaXR0ZWQgY29udGVudCBnb3QgbG9zdCBpZiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCTx1bD4NCgkJCQk8bGk+PHA+LSBhZGRlZCBzdGFydC9lbmQgZGF0ZTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHJlbW92ZWQgdGltZXBpY2tlcjsgcmVwbGFjZWQgYnkgYSBzaW1wbGUgZHJvcGRvd248L3A+PC9saT4NCgkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfaW1hZ2V9PC9wPjwvbGk+DQoJCQk8L3VsPg0KCQk8L2xpPg0KCTwvdWw+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjIgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgY2hhbmdpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgdHlwZSBvciBjaGFuZ2luZyB0ZW1wbGF0ZSBjYXVzZWQgZmF0YWwgZXJyb3JzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nIHdoZW4gc2F2aW5nIGEgcGFnZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwcmV2aWV3IHRhYjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmUtYWRkZWQgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiB0byB0b2dnbGUgY29udGVudCBibG9ja3MgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW1zIGVkaXRvcl9ncm91cHMvZWRpdG9yX3VzZXJzIHRvIHNwZWNpZnkgY2VydGFpbiB1c2Vycy9ncm91cHMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IGNlcnRhaW4gYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtcyBzZWxlY3RlZC9jaGVja2VkOyB1c2UgcGFyYW0gZGVmYXVsdCBpbnN0ZWFkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBibG9jayBpZHMgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSBibG9jayBuYW1lIHVzaW5nIGNvcmUgZnVuY3Rpb24gbXVuZ2Vfc3RyaW5nX3RvX3VybCAodG8gcmVtb3ZlIHNwZWNpYWwgY2hhcnMsIHdoaXRlc3BhY2VzLCB1bWxhdXRzIGV0Yy4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgb2YgYmxvY2t0eXBlIGRyb3Bkb3duL3NlbGVjdF9tdWx0aXBsZSB3aGVyZSBmaXJzdCBpdGVtIGhhZCBhbiBlbXB0eSBsYWJlbCBpZiBvbmx5IHRoZSBwYXJhbSAmcXVvdDt2YWx1ZXMmcXVvdDsgaXMgdXNlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgc29tZSB0ZW1wbGF0ZSB2YXJzIG9mIHRoZSBmcm9udGVuZCB0byBiZSBhbHNvIGFjY2Vzc2libGUgaW4gYmFja2VuZCAoZS5nLjogJHBhZ2VfYWxpYXMpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDthbGxvd19ub25lJnF1b3Q7IHRvIGFsbCBjb250ZW50IGJsb2NrIHR5cGVzIHRvIHNwZWNpZnkgaWYgdGhlIHByZWRlZmluZWQgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHVzZWQgaWYgbm8gdmFsdWUgaXMgZW50ZXJlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGVtcHR5IHZhbHVlcyB3ZXJlIG5ldmVyIGJlIHN0b3JlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGRlZmF1bHQgdmFsdWUgaW4gZnJvbnRlbmQgd2FzIGlnbm9yZWQgaWYgdGhlICZxdW90O2FsbG93X25vbmUmcXVvdDsgcGFyYW0gd2FzIGNoYW5nZWQgYWZ0ZXIgYW4gZW1wdHkgdmFsdWUgaGFzIGJlZW4gc3RvcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtzb3J0YWJsZV9pdGVtcyZxdW90OyB0byBjcmVhdGUgYSBzb3J0YWJsZSBtdWx0aXBsZSBzZWxlY3QgbGlzdCAoc2VsZWN0IGxpc3Qgd2lsbCByZXN1bHQgaW4gYSB0YWJsZSB3aXRoIGNoZWNrYm94ZXM7IG9ubHkgb3JkZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIHNob3dlZCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0OyB1bnNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIHRlbXBsYXRlKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjEgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIHJlb3JkZXJpbmcgc3R1ZmYgZm9yIG5vdyAoY2F1c2VzIHRyb3VibGUgYXQgdGhpcyB0aW1lKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgZGIgc3R1ZmYgKHBhcmFtcyBvZiBjb250ZW50IGJsb2NrcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRlbXBsYXRlIHdvbiYjMDM5O3QgYmUgc2F2ZWQgaW4gbW9kdWxlIGRiIHRhYmxlIGFueW1vcmUgLT4gaG9wZWZ1bGx5IHNwZWVkIHVwIGxvYWRpbmcgdGltZSk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggZHVwbGljYXRlIGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+QWR2YW5jZWRDb250ZW50IDAuMyAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gcmV3cml0ZSBjb2RlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBidWdmaXhlczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVuYW1lZCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIHVzaW5nIHNlcGFyYXRlIG1vZHVsZSB0ZW1wbGF0ZSBub3cgdG8gZHNwbGF5IGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhZ2UgYWxpYXMgaW5oZXJpdGFuY2U8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjx1bD4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDMgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gTWFqb3IgQnVnZml4IChtaXNzaW5nICZxdW90OzsmcXVvdDsgYW5kIHN0cmFuZ2UgaW52aXNpYmxlIGludmFsaWQgY2hhcnMpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDIgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwYXJhbSAmcXVvdDtkZWxpbWl0ZXImcXVvdDs8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggc21hcnR5IHByb2Nlc3Npbmc8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mICZxdW90O1Nob3cgbG9naW4gZm9ybSZxdW90OzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgcGFnZSBhbGlhcyB0byBhZGQgaXQgYXMgcHJlZmZpeDsgc28gaWYgeW91IGhhdmUgYSBwYWdlIGNhbGxlZCAmcXVvdDttZW1iZXJzJnF1b3Q7IGFuZCBzZWxlY3QgZm9yIGVhY2ggY2hpbGQgcGFnZSAmcXVvdDtpbmhlcml0IHBhZ2UgYWxpYXMmcXVvdDsgYWxsIGNoaWxkIHBhZ2VzIGFsaWFzZXMgd2lsbCBzdGFydCB3aXRoICZxdW90O21lbWJlcnNfJnF1b3Q7OyBtYWtlcyBmaWx0ZXJpbmcgb2YgbWVudSBlbnRyaWVzIHdpdGggTWVudU1hbmFnZXIgcGFyYW0gJnF1b3Q7ZXhjbHVkZXByZWZmaXgmcXVvdDsgb3IgJnF1b3Q7aW5jbHVkZXByZWZmaXgmcXVvdDsgZWFzaWVyLjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXM8L3A+PC9saT4gDQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAoQXByaWwgMjAxMCk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gY29udmVydGVkIHRoZSBzaW5nbGUgZmlsZSBpbnRvIGEgbW9kdWxlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW5hbWVkIHBhcmFtczsgc2VlIG1vZHVsZSBoZWxwIGZvciBtb3JlIGRldGFpbHM8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+U2luZ2xlIGZpbGUgcmVsZWFzZXMgKGRpc2NvbnRpbnVlZCk8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPg0KCQk8cD48c3Ryb25nPjEuNCAoTWFyY2ggMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBjbGVhbnVwIGNvZGUgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXMgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcmVkaXJlY3QgcGFnZSBpZiBmZXUgaXMgbm90IGxvZ2dlZCBpbiAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBmZXVfYWNjZXNzIGFuZCByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3MgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbiAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX29ubHkgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgc21hcnR5IGxvZ2ljIGluIGJhY2tlbmQgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHN0eWxlIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmaWx0ZXIgKGZpbHRlcmluZyBpbWFnZXMgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIEltZ01vZGUgKGRyb3Bkb3duIG9yIEltYWdlTWFuYWdlcikgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHNtYXJ0eU9uIChmb3IgcHJvY2Vzc2luZyBzbWFydHkgdmFycyBvZiB0aGUgdGVtcGF0ZSBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MS4zIChBcHJpbCAyMDA5KTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIENNU21zIDEuNi4qIHJlYWR5IC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGZldSBhY2Nlc3Mgb3B0aW9uIC0gKE5hTik8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz4xLjIgKE1hcmNoIDIwMDkpOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIEEgc2luZ2xlIGZpbGUgQ29udGVudDIuaW5jLnBocCB0aGF0IG5lZWRzIHRvIGJlIHBhY2VkIGluIGxpYi9jbGFzc2VzL2NvbnRlbnR0eXBlcy48L3A+PC9saT4NCgkJCTxsaT48cD4tIGxheW91dC9vcHRpb25zIG9mIGJhY2tlbmQgcGFuZWwgY2FuIGJlIGNvbnRyb2xlZCBieSBhZGRpdGlvbmFsIHNtYXJ0eSBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlOyBpbnRlZ3JhdGVkIHRoZSB7Y29udGVudF9pbWFnZX0gdGFnIC0gKG1vZCBieSBOYU4pPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8YnIgLz4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My41NjMyMzg0MDEwMTUxNDk0MDAuMTIyNjMzNDc1MS4xMjg5OTAxMjU5LjEyODk5MjI2MTUuODQnOwokbGFuZ1sncWNhJ10gPSAnUDAtMjAwNzY4NjkyMC0xMjUxMTkwODE1MDI3JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI4OTkwMTI4NC44My41LnV0bWNzcj1mZWVkYnVybmVyfHV0bWNjbj1GZWVkOiBjbXNtYWRlc2ltcGxlL2Jsb2cgKENNUyBNYWRlIFNpbXBsZSl8dXRtY21kPWZlZWQnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ja_JP.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0FkdmFuY2VkIENvbnRlbnQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBpbnN0YWxsZWQnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIHVuaW5zdGFsbGVkJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCB1cGdyYWRlZCB0byAlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyB1bmluc3RhbGxlZC4nOwokbGFuZ1snY29uZmlybXVuaW5zdGFsbCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB1bmluc3RhbGwgdGhlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQ/JzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz7ms6jmhI86PC9zdHJvbmc+IHtjb250ZW50IGJsb2NrPVwnJXNcJyAuLi4gfSBpcyBhbWJpZ291cy4gQmxvY2sgbmFtZXMgbXVzdCBiZSB1bmlxdWUuIDxiciAvPlRoaXMgYmxvY2sgaXMgZGlzYWJsZWQuIE9ubHkgZmlyc3QgYmxvY2sgd2lsbCBiZSBzaG93bi4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlIGFuZCBjaG9zZSBhIGRpZmZlcmVudCB2YWx1ZSBvZiBwYXJhbSBcJ2Jsb2NrXCcuPC9lbT4nOwokbGFuZ1snbm90aWNlX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz7ms6jmhI86PC9zdHJvbmc+IFRoaXMgYmxvY2sgaXMgdXNlZCBtdWx0aXBsZSB0aW1lcyBpbiB0ZW1wbGF0ZS4gWW91IG9ubHkgc2VlIHRoZSBmaXJzdCBibG9jayBoZXJlLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2Jhc2ljYXR0cmliJ10gPSAnPGVtPjxzdHJvbmc+5rOo5oSPOjwvc3Ryb25nPiBDYW5ub3QgdXNlIGJhc2ljIGNvbnRlbnQgcHJvcGVydHkgbmFtZSBcJyVzXCcgYXMgdmFsdWUgb2YgcGFyYW0gXCdibG9ja1wnLiA8YnIgLz5UaGlzIGJsb2NrIGlzIGRpc2FibGVkLiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUgYW5kIGNob3NlIGEgZGlmZmVyZW50IHZhbHVlIG9mIHBhcmFtIFwnYmxvY2tcJy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnRW5kIGRhdGUgbXVzdCBiZSBsYXRlciB0aGFuIHN0YXJ0IGRhdGUuJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ+OCq+ODrOODs+ODiOODh+OCo+ODrOOCr+ODiOODqic7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAn55S75YOP44K144Kk44K6JzsKJGxhbmdbJ3NpemUnXSA9ICfjg5XjgqHjgqTjg6vjgrXjgqTjgronOwokbGFuZ1snaW5oZXJpdF9mcm9tX3BhcmVudCddID0gJ0luaGVyaXQgZnJvbSBwYXJlbnQnOwokbGFuZ1snbm9uZSddID0gJ+OBquOBlyc7CiRsYW5nWydpbnZhbGlkJ10gPSAn54Sh5Yq5JzsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBJbnZhbGlkIHZhbHVlIFwnJXNcJyBvZiBwYXJhbSBibG9ja190eXBlIGluIGJsb2NrIFwnJXNcJy48YnIgLz5DaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4nOwokbGFuZ1sneWVzJ10gPSAn44Gv44GEJzsKJGxhbmdbJ25vJ10gPSAn44GE44GE44GIJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQgYWNjZXNzJzsKJGxhbmdbJ3JlZGlyZWN0cGFnZSddID0gJ1JlZGlyZWN0IFBhZ2UgaWYgbm8gYWNjZXNzJzsKJGxhbmdbJ3Nob3dsb2dpbmZvcm0nXSA9ICdTaG93IGxvZ2luIGZvcm0nOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAnUmVnaXN0ZXJlZCB1c2VycyBvbmx5JzsKJGxhbmdbJ2Jsb2NrJ10gPSAn44OW44Ot44OD44KvJzsKJGxhbmdbJ3VzZWV4cGlyZWRhdGUnXSA9ICdVc2UgZXhwaXJlIGRhdGUnOwokbGFuZ1snc3RhcnRkYXRlJ10gPSAn6ZaL5aeL5pelJzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICfntYLkuobml6UnOwokbGFuZ1snYmxvY2tjb250ZW50J10gPSAn44OW44Ot44OD44Kv44O744Kz44Oz44OG44Oz44OEJzsKJGxhbmdbJ3NldHBhZ2VpbmFjdGl2ZSddID0gJ1NldCBQYWdlIHRvIEluYWN0aXZlJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICfliYrpmaTjg5rjg7zjgrgnOwokbGFuZ1sndW5pbnN0YWxsYWN0aW9uJ10gPSAnVW5pbnN0YWxsIGFjdGlvbic7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ1NldCBhbGwgUGFnZXMgdG8gdHlwZSBDb250ZW50JzsKJGxhbmdbJ3NldGNvbnRlbnQyJ10gPSAnU2V0IGFsbCBQYWdlcyB0byB0eXBlIENvbnRlbnQgYW5kIHJlbW92ZSBhZGRpdGlvbmFsIGNvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuY2VzIHVwZGF0ZWQnOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICdGaWxlIG9wZXJhdGlvbnMnOwokbGFuZ1sndXBsb2FkbmV3ZmlsZSddID0gJ1VwbG9hZCBhIG5ldyBmaWxlJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJ0NyZWF0ZSBhIG5ldyBkaXJlY3RvcnknOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ+OCouODg+ODl+ODreODvOODiSc7CiRsYW5nWydjcmVhdGVkaXInXSA9ICfkvZzmiJAnOwokbGFuZ1snc3VjY2VzcyddID0gJ+OCquODvOOCseODvCc7CiRsYW5nWydlcnJvciddID0gJ+OCqOODqeODvCc7CiRsYW5nWydmaWxldXBsb2FkZWQnXSA9ICdGaWxlIFwnJXNcJyB1cGxvYWRlZCc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdObyBkaXJuYW1lIHByb3ZpZGVkJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0Rpcm5hbWUgXCclc1wnIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ25ld2RpcmNyZWF0ZWQnXSA9ICdOZXcgZGlyIFwnJXNcJyBzdWNjZXNzZnVsbHkgY3JlYXRlZCc7CiRsYW5nWyduZXdkaXJmYWlsZWQnXSA9ICdBbiBlcnJvciBvY2N1cmVkIHRyeWluZyB0byBjcmVhdGUgZGlyIFwnJXNcJyc7CiRsYW5nWydub2ZpbGUnXSA9ICdObyBmaWxlIHdhcyB1cGxvYWRlZCc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnVXBsb2FkZWQgZmlsZSBcJyVzXCcgaXMgdG9vIGJpZyc7CiRsYW5nWydjb250YWluc2lsbGVnYWxjaGFycyddID0gJ0ZpbGVuYW1lIFwnJXNcJyBjb250YWlucyBvbmUgb3IgbW9yZSBpbGxlZ2FsIGNoYXJhY3RlcnMgKFwnLCIsKywqLFxcLC8sJiwkKSc7CiRsYW5nWyd1cGxvYWRmYWlsZWQnXSA9ICdFcnJvciBtb3ZpbmcgdXBsb2FkZWQgZmlsZSBcJyVzXCcgaW50byBwbGFjZSc7CiRsYW5nWydjb25maXJtZGVsZXRlJ10gPSAnQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGUgZmlsZSBcXFwnJXNcXFwnPyc7CiRsYW5nWydkZWxldGVmaWxlc3VjY2VzcyddID0gJ0ZpbGUgXCclc1wnIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVmaWxlZmFpbGVkJ10gPSAnRmlsZSBcJyVzXCcgY291bGQgbm90IGJlIGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlc3ViZGlyZmFpbGVkJ10gPSAnRGlyIFwnJXNcJyBjb3VsZCBub3QgYmUgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVzdWJkaXJzdWNjZXNzJ10gPSAnRGlyIFwnJXNcJyB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snY29uZmlybWRlbGV0ZWRpciddID0gJ0FyZSB5b3Ugc3VyZSB0byBkZWxldGUgdGhlIGRpcmVjdG9yeSBcXFwnJXNcXFwnPyc7CiRsYW5nWydkZWxldGVkaXInXSA9ICdEZWxldGUgZW1wdHkgc3ViZGlyJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICfjg5XjgqHjgqTjg6vliYrpmaQnOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnUmVzdHJpY3QgdXNlclwncyBkaXIgYWNjZXNzJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ1Nob3cgZmlsZW1hbmFnZW1lbnQgb3B0aW9ucyc7CiRsYW5nWydzaG93dGh1bWJuYWlsZmlsZXMnXSA9ICdTaG93IHRodW1ibmFpbHMnOwokbGFuZ1snYWxsb3dzY2FsaW5nJ10gPSAnQWxsb3cgb24tdGhlLWZseSByZXNpemluZyBvZiB1cGxvYWRlZCBpbWFnZXMnOwokbGFuZ1snc2NhbGluZ3dpZHRoJ10gPSAnU2NhbGluZyB3aWR0aCc7CiRsYW5nWydzY2FsaW5naGVpZ2h0J10gPSAnU2NhbGluZyBoZWlnaHQnOwokbGFuZ1snZGVmYXVsdGRpbWVuc2lvbnMnXSA9ICdEZWZhdWx0IGRpbWVuc2lvbnMnOwokbGFuZ1snYXV0byddID0gJ+iHquWLlSc7CiRsYW5nWydyZWxhdGl2ZXVybHMnXSA9ICdSZWxhdGl2ZSB1cmxzJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ0ZpbGVwaWNrZXIgc3R5bGUnOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdGaWxlcGlja2VyIHNpemUnOwokbGFuZ1snZmlsZW5hbWVvbmx5J10gPSAnU2hvdyBmaWxlbmFtZXMnOwokbGFuZ1sndGh1bWJuYWlsc29ubHknXSA9ICdTaG93IHRodW1ibmFpbHMnOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzdGV4dCddID0gJ1Nob3cgdGh1bWJuYWlsLWZpbGVzIGFzIHJlZ3VsYXIgZmlsZXMnOwokbGFuZ1snZmlsZW5hbWVhbmR0aHVtYm5haWxzJ10gPSAnU2hvdyBib3RoIGZpbGVuYW1lcyBhbmQgdGh1bWJuYWlscyc7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAnQ3JlYXRlIHRodW1ibmFpbHMnOwokbGFuZ1snZmlsZXBpY2tlcnNldHRpbmdzJ10gPSAnRmlsZVBpY2tlciBzZXR0aW5ncyc7CiRsYW5nWydyZXNpemV0byddID0gJ1Jlc2l6ZSBpbWFnZSB0byc7CiRsYW5nWydrZWVwYXNwZWN0cmF0aW8nXSA9ICdLZWVwIGFzcGVjdCByYXRpbyc7CiRsYW5nWydhbGxvd3Vwc2NhbGluZyddID0gJ0FsbG93IHVwc2NhbGluZyc7CiRsYW5nWydkZWNpbWFsZGVsaW1pdGVyJ10gPSAnLic7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywnOwokbGFuZ1snZGlybm90Zm91bmQnXSA9ICdEaXJlY3RvcnkgXCclc1wnIG5vdCBmb3VuZCEnOwokbGFuZ1snc2VsZWN0aW1hZ2UnXSA9ICdCcm93c2UgaW1hZ2VzJzsKJGxhbmdbJ3NlbGVjdGZpbGUnXSA9ICdCcm93c2UgZmlsZXMnOwokbGFuZ1snZGVsZXRlcGFnZXMnXSA9ICdEZWxldGUgYWxsIHBhZ2VzIG9mIHR5cGUgQWR2YW5jZWRDb250ZW50JzsKJGxhbmdbJ3VzZW1pbWV0eXBlJ10gPSAnVXNlIG1pbWUtdHlwZSB0byBnZXQgZmlsZSB0eXBlJzsKJGxhbmdbJ2ltcG9ydHBhZ2VzJ10gPSAnU2V0IGFsbCBQYWdlcyBvZiB0eXBlIGNvbnRlbnQgdG8gdHlwZSBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ3BhZ2VzaW1wb3J0ZWQnXSA9ICdBbGwgY29udGVudCBwYWdlcyBzZXQgdG8gQWR2YW5jZWRDb250ZW50Lic7CiRsYW5nWydjb25maXJtaW1wb3J0J10gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGNoYW5nZSB0aGUgY29udGVudCB0eXBlIG9mIGFsbCBjb250ZW50IHBhZ2VzPyc7CiRsYW5nWydub21pbWV0eXBlJ10gPSAnTm8gbWltZS10eXBlIGZ1bmN0aW9uIGF2YWlsYWJsZSBvciBub3QgY29uZmlndXJlZCBwcm9wZXJseS4gVGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkLic7CiRsYW5nWyd0b2dnbGVfbWVzc2FnZSddID0gJ0hpZGUgdGhpcyBtZXNzYWdlJzsKJGxhbmdbJ2NvbnRlbnRzZXR0aW5ncyddID0gJ0RlZmF1bHQgQWR2YW5jZWRDb250ZW50IHNldHRpbmdzJzsKJGxhbmdbJ3JlZGlyZWN0cGFyYW1zJ10gPSAnVVJMIHBhcmFtcyB0byBhcHBlbmQgd2hlbiByZWRpcmVjdGluZyc7CiRsYW5nWydldmFsdWF0ZXNtYXJ0eSddID0gJ1VzZSBzbWFydHkgdG8gcHJvY2VzcyB0aGUgcGFyYW1zJzsKJGxhbmdbJ25vaW1hZ2VmaWxlJ10gPSAnXCclc1wnIGlzIG5vdCBhbiBpbWFnZSBmaWxlJzsKJGxhbmdbJ2ZpbGV0eXBlbm90YWxsb3dlZCddID0gJ0ZpbGV0eXBlIFwnJXNcJyBpcyBub3QgYWxsb3dlZCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjEwMjU5MTU3MzAuMTI4Mzc4Mzk4Ni4xMjgzNzgzOTg2LjEyODM3ODM5ODYuMSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI4Mzc4Mzk4Nic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI4Mzc4Mzk4Ni4xLjEudXRtY3NyPShkaXJlY3QpfHV0bWNjbj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTQ5NDk1ODE5NC0xMjgzNzgzOTg2OTA2JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0FkdmFuY2VkIENvbnRlbnQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBpbnN0YWxsZWQnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIHVuaW5zdGFsbGVkJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCB1cGdyYWRlZCB0byAlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyB1bmluc3RhbGxlZC4nOwokbGFuZ1snY29uZmlybXVuaW5zdGFsbCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB1bmluc3RhbGwgdGhlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQ/JzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHtjb250ZW50IGJsb2NrPSYjMDM5OyVzJiMwMzk7IC4uLiB9IGlzIGFtYmlnb3VzLiBCbG9jayBuYW1lcyBtdXN0IGJlIHVuaXF1ZS4gPGJyIC8+VGhpcyBibG9jayBpcyBkaXNhYmxlZC4gT25seSBmaXJzdCBibG9jayB3aWxsIGJlIHNob3duLiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUgYW5kIGNob3NlIGEgZGlmZmVyZW50IHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LjwvZW0+JzsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBUaGlzIGJsb2NrIGlzIHVzZWQgbXVsdGlwbGUgdGltZXMgaW4gdGVtcGxhdGUuIFlvdSBvbmx5IHNlZSB0aGUgZmlyc3QgYmxvY2sgaGVyZS48L2VtPic7CiRsYW5nWydlcnJvcl9iYXNpY2F0dHJpYiddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gQ2Fubm90IHVzZSBiYXNpYyBjb250ZW50IHByb3BlcnR5IG5hbWUgJiMwMzk7JXMmIzAzOTsgYXMgdmFsdWUgb2YgcGFyYW0gJiMwMzk7YmxvY2smIzAzOTsuIDxiciAvPlRoaXMgYmxvY2sgaXMgZGlzYWJsZWQuIENoZWNrIHlvdXIgcGFnZSB0ZW1wbGF0ZSBhbmQgY2hvc2UgYSBkaWZmZXJlbnQgdmFsdWUgb2YgcGFyYW0gJiMwMzk7YmxvY2smIzAzOTsuPC9lbT4nOwokbGFuZ1snZXJyb3JfZXhwaXJlZGF0ZSddID0gJ0VuZCBkYXRlIG11c3QgYmUgbGF0ZXIgdGhhbiBzdGFydCBkYXRlLic7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdDdXJyZW50IGRpcmVjdG9yeSc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnSW1hZ2VzaXplJzsKJGxhbmdbJ3NpemUnXSA9ICdGaWxlc2l6ZSc7CiRsYW5nWydpbmhlcml0X2Zyb21fcGFyZW50J10gPSAnSW5oZXJpdCBmcm9tIHBhcmVudCc7CiRsYW5nWydub25lJ10gPSAnbm9uZSc7CiRsYW5nWydpbnZhbGlkJ10gPSAnaW52YWxpZCc7CiRsYW5nWyd5ZXMnXSA9ICdZZXMnOwokbGFuZ1snbm8nXSA9ICdObyc7CiRsYW5nWydmcm9udGVuZGFjY2VzcyddID0gJ0Zyb250ZW5kIGFjY2Vzcyc7CiRsYW5nWydyZWRpcmVjdHBhZ2UnXSA9ICdSZWRpcmVjdCBQYWdlIGlmIG5vIGFjY2Vzcyc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnU2hvdyBsb2dpbiBmb3JtJzsKJGxhbmdbJ3JlZ2lzdGVyZWR1c2VycyddID0gJ1JlZ2lzdGVyZWQgdXNlcnMgb25seSc7CiRsYW5nWydibG9jayddID0gJ0Jsb2NrJzsKJGxhbmdbJ3VzZWV4cGlyZWRhdGUnXSA9ICdVc2UgZXhwaXJlIGRhdGUnOwokbGFuZ1snc3RhcnRkYXRlJ10gPSAnU3RhcnQgRGF0ZSc7CiRsYW5nWydlbmRkYXRlJ10gPSAnRW5kIERhdGUnOwokbGFuZ1snYmxvY2tjb250ZW50J10gPSAnQmxvY2sgQ29udGVudCc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdTZXQgUGFnZSB0byBJbmFjdGl2ZSc7CiRsYW5nWydkZWxldGVwYWdlJ10gPSAnRGVsZXRlIFBhZ2UnOwokbGFuZ1sndW5pbnN0YWxsYWN0aW9uJ10gPSAnVW5pbnN0YWxsIGFjdGlvbic7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ1NldCBhbGwgUGFnZXMgdG8gdHlwZSBDb250ZW50JzsKJGxhbmdbJ3NldGNvbnRlbnQyJ10gPSAnU2V0IGFsbCBQYWdlcyB0byB0eXBlIENvbnRlbnQgYW5kIHJlbW92ZSBhZGRpdGlvbmFsIGNvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuY2VzIHVwZGF0ZWQnOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICdGaWxlIG9wZXJhdGlvbnMnOwokbGFuZ1sndXBsb2FkbmV3ZmlsZSddID0gJ1VwbG9hZCBhIG5ldyBmaWxlJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJ0NyZWF0ZSBhIG5ldyBkaXJlY3RvcnknOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ1VwbG9hZCc7CiRsYW5nWydjcmVhdGVkaXInXSA9ICdDcmVhdGUnOwokbGFuZ1snc3VjY2VzcyddID0gJ09rJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3InOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAnRmlsZSB1cGxvYWRlZCc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdObyBkaXJuYW1lIHByb3ZpZGVkJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0Rpcm5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05ldyBkaXIgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnQW4gZXJyb3Igb2NjdXJlZCB0cnlpbmcgdG8gY3JlYXRlIGRpcic7CiRsYW5nWydub2ZpbGUnXSA9ICdObyBmaWxlIHdhcyB1cGxvYWRlZCc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnVXBsb2FkZWQgZmlsZSBpcyB0b28gYmlnJzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAnRmlsZW5hbWUgY29udGFpbnMgb25lIG9yIG1vcmUgaWxsZWdhbCBjaGFyYWN0ZXJzICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnRXJyb3IgbW92aW5nIHVwbG9hZGVkIGZpbGUgaW50byBwbGFjZSc7CiRsYW5nWydjb25maXJtZGVsZXRlJ10gPSAnQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGUgZmlsZSAlcz8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICd3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ2NvdWxkIG5vdCBiZSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcmZhaWxlZCddID0gJ2NvdWxkIG5vdCBiZSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcnN1Y2Nlc3MnXSA9ICd3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snY29uZmlybWRlbGV0ZWRpciddID0gJ0FyZSB5b3Ugc3VyZSB0byBkZWxldGUgdGhlIGRpcmVjdG9yeSAlcz8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnRGVsZXRlIGVtcHR5IHN1YmRpcic7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnRGVsZXRlIEZpbGUnOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnUmVzdHJpY3QgdXNlciYjMDM5O3MgZGlyIGFjY2Vzcyc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnQnXSA9ICdTaG93IGZpbGVtYW5hZ2VtZW50IG9wdGlvbnMnOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzJ10gPSAnU2hvdyB0aHVtYm5haWxzJzsKJGxhbmdbJ2FsbG93c2NhbGluZyddID0gJ0FsbG93IG9uLXRoZS1mbHkgcmVzaXppbmcgb2YgdXBsb2FkZWQgaW1hZ2VzJzsKJGxhbmdbJ3NjYWxpbmd3aWR0aCddID0gJ1NjYWxpbmcgd2lkdGgnOwokbGFuZ1snc2NhbGluZ2hlaWdodCddID0gJ1NjYWxpbmcgaGVpZ2h0JzsKJGxhbmdbJ2RlZmF1bHRkaW1lbnNpb25zJ10gPSAnRGVmYXVsdCBkaW1lbnNpb25zJzsKJGxhbmdbJ2F1dG8nXSA9ICdBdXRvJzsKJGxhbmdbJ3JlbGF0aXZldXJscyddID0gJ1JlbGF0aXZlIHVybHMnOwokbGFuZ1snZmlsZXBpY2tlcnN0eWxlJ10gPSAnRmlsZXBpY2tlciBzdHlsZSc7CiRsYW5nWydmaWxlcGlja2Vyc2l6ZSddID0gJ0ZpbGVwaWNrZXIgc2l6ZSc7CiRsYW5nWydmaWxlbmFtZW9ubHknXSA9ICdTaG93IGZpbGVuYW1lcyc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ1Nob3cgdGh1bWJuYWlscyc7CiRsYW5nWydzaG93dGh1bWJuYWlsZmlsZXN0ZXh0J10gPSAnU2hvdyB0aHVtYm5haWwtZmlsZXMgYXMgcmVndWxhciBmaWxlcyc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICdTaG93IGJvdGggZmlsZW5hbWVzIGFuZCB0aHVtYm5haWxzJzsKJGxhbmdbJ21ha2V0aHVtYm5haWwnXSA9ICdDcmVhdGUgdGh1bWJuYWlscyc7CiRsYW5nWydmaWxlcGlja2Vyc2V0dGluZ3MnXSA9ICdGaWxlUGlja2VyIHNldHRpbmdzJzsKJGxhbmdbJ3Jlc2l6ZXRvJ10gPSAnUmVzaXplIGltYWdlIHRvJzsKJGxhbmdbJ2tlZXBhc3BlY3RyYXRpbyddID0gJ0tlZXAgYXNwZWN0IHJhdGlvJzsKJGxhbmdbJ2FsbG93dXBzY2FsaW5nJ10gPSAnQWxsb3cgdXBzY2FsaW5nJzsKJGxhbmdbJ2RlY2ltYWxkZWxpbWl0ZXInXSA9ICcuJzsKJGxhbmdbJ3Rob3VzYW5kZGVsaW1pdGVyJ10gPSAnLCc7CiRsYW5nWydkaXJub3Rmb3VuZCddID0gJ0RpcmVjdG9yeSAmIzAzOTslcyYjMDM5OyBub3QgZm91bmQhJzsKJGxhbmdbJ3NlbGVjdGltYWdlJ10gPSAnQnJvd3NlIGltYWdlcyc7CiRsYW5nWydzZWxlY3RmaWxlJ10gPSAnQnJvd3NlIGZpbGVzJzsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gPSAnRGVsZXRlIGFsbCBwYWdlcyBvZiB0eXBlIEFkdmFuY2VkQ29udGVudCc7CiRsYW5nWyd1c2VtaW1ldHlwZSddID0gJ1VzZSBtaW1lLXR5cGUgdG8gZ2V0IGZpbGUgdHlwZSc7CiRsYW5nWydpbXBvcnRwYWdlcyddID0gJ1NldCBhbGwgUGFnZXMgb2YgdHlwZSBjb250ZW50IHRvIHR5cGUgQWR2YW5jZWRDb250ZW50Lic7CiRsYW5nWydwYWdlc2ltcG9ydGVkJ10gPSAnQWxsIGNvbnRlbnQgcGFnZXMgc2V0IHRvIEFkdmFuY2VkQ29udGVudC4nOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byBjaGFuZ2UgdGhlIGNvbnRlbnQgdHlwZSBvZiBhbGwgY29udGVudCBwYWdlcz8nOwokbGFuZ1snbm9taW1ldHlwZSddID0gJ05vIG1pbWUtdHlwZSBmdW5jdGlvbiBhdmFpbGFibGUgb3Igbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuIFRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZC4nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICdIaWRlIHRoaXMgbWVzc2FnZSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyODEyMDQwMTQuMzExMi43MS51dG1jc3I9Zm9ydW0uY21zbWFkZXNpbXBsZS5vcmd8dXRtY2NuPShyZWZlcnJhbCl8dXRtY21kPXJlZmVycmFsfHV0bWNjdD0vaW5kZXgucGhwJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTc5MDUyNjIzMDg0MTEwMTAwLjEyMTA0MjM1NzcuMTI4MTQ3NTUwMy4xMjgxNTU2Nzg0LjMxMjknOwokbGFuZ1sncWNhJ10gPSAnMTIxMDk3MTY5MC0yNzMwODA3My04MTk1MjgzMic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuNi4xMC4xMjgxNTU2Nzg0JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0FkdmFuY2VkIENvbnRlbnQgJzsKJGxhbmdbJ2FkdmFuY2VkY29udGVudF90YWJuYW1lJ10gPSAnR2VhdmFuY2VlcmRlIE9wdGllcyc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGlzIGdlJml1bWw7bnN0YWxsZWVyZCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaXMgZ2VkZSZpdW1sO25zdGFsbGVlcmQnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50IGlzIGJpamdld2Vya3QgbmFhciAlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaXMgZ2UmaXVtbDtuc3RhbGxlZXJkJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGlzIGdlZGUmaXVtbDtuc3RhbGxlZXJkJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICdXZWV0IHUgemVrZXIgZGF0IHUgZGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudCB3aWx0IGRlJml1bWw7bnN0YWxsZXJlbj8nOwokbGFuZ1snbm90aWNlX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz5MZXQgb3A6PC9zdHJvbmc+IERpdCBibG9rIGtvbXQgbWVlcmRlcmUga2VyZW4gdm9vciBpbiBoZXQgc2phYmxvb24uIEFsbGVlbiBoZXQgZWVyc3RlIGJsb2sgd29yZHQgaGllciBnZXRvb25kLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2Jhc2ljYXR0cmliJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBDYW5ub3QgdXNlIGJhc2ljIGNvbnRlbnQgcHJvcGVydHkgbmFtZSAmIzAzOTslcyYjMDM5OyBhcyB2YWx1ZSBvZiBwYXJhbSAmIzAzOTtibG9jayYjMDM5Oy4gPGJyIC8+VGhpcyBibG9jayBpcyBkaXNhYmxlZC4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlIGFuZCBjaG9zZSBhIGRpZmZlcmVudCB2YWx1ZSBvZiBwYXJhbSAmIzAzOTtibG9jayYjMDM5Oy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnRWluZGRhdHVtIG1vZXQgbmEgZGUgc3RhcnRkYXR1bSB2YWxsZW4nOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAnSHVpZGlnZSBkaXJlY3RvcnknOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0FmYmVlbGRpbmcgQWZtZXRpbmdlbic7CiRsYW5nWydzaXplJ10gPSAnQmVzdGFuZHNncm9vdHRlJzsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSA9ICdOZWVtIG92ZXIgdmFuIGRlIG91ZGVyJzsKJGxhbmdbJ25vbmUnXSA9ICdnZWVuJzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdmb3V0JzsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBJbnZhbGlkIHZhbHVlICYjMDM5OyVzJiMwMzk7IG9mIHBhcmFtIGJsb2NrX3R5cGUgaW4gYmxvY2sgJiMwMzk7JXMmIzAzOTsuPGJyIC8+Q2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcyddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBJbnN1ZmZpY2llbnQgcGFyYW1zLiA8YnIgLz5NaXNzaW5nIHBhcmFtICYjMDM5OyVzJiMwMzk7IGZvciBibG9jayAmIzAzOTslcyYjMDM5Oy4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ0phJzsKJGxhbmdbJ25vJ10gPSAnTmVlJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQgVG9lZ2FuZyc7CiRsYW5nWydyZWRpcmVjdHBhZ2UnXSA9ICdWZXJ3aWp6ZW4gbmFhciBwYWdpbmEgaW5kaWVuIGdlZW4gdG9lZ2FuZyc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnVG9vbiBsb2dpbiBmb3JtdWxpZXInOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAnQWxsZWVuIGdlcmVnaXN0cmVlcmRlIGdlYnJ1aWtlcnMnOwokbGFuZ1snYmxvY2snXSA9ICdCbG9jayAnOwokbGFuZ1sndXNlZXhwaXJlZGF0ZSddID0gJ0dlYnJ1aWsgdmVybG9vcGRhdHVtJzsKJGxhbmdbJ3N0YXJ0ZGF0ZSddID0gJ1N0YXJ0IERhdHVtJzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICdFaW5kIERhdHVtJzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ0Jsb2NrIEluaG91ZCc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdQYWdpbmEgSW5hY3RpZWYnOwokbGFuZ1snZGVsZXRlcGFnZSddID0gJ1ZlcndpamRlciBQYWdpbmEnOwokbGFuZ1sndW5pbnN0YWxsYWN0aW9uJ10gPSAnRGUmaXVtbDtuc3RhbGxlZXIgYmV3ZXJraW5nJzsKJGxhbmdbJ3NldGNvbnRlbnQxJ10gPSAnU3RlbCBhbGxlIHBhZ2luYSYjMDM5O3MgaW4gbWV0IGhldCB0eXBlIENvbnRlbnQnOwokbGFuZ1snc2V0Y29udGVudDInXSA9ICdTdGVsIGFsbGUgcGFnaW5hJiMwMzk7cyBpbiBtZXQgaGV0IHR5cGUgQ29udGVudCBlbiB2ZXJ3aWpkZXIgYWxsZSBleHRyYSBjb250ZW50IGJsb2Nrcyc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdWb29ya2V1cmVuIGJpamdld2Vya3QnOwokbGFuZ1snc3VjY2VzcyddID0gJ09rJmVhY3V0ZTsnOwokbGFuZ1snZXJyb3InXSA9ICdGb3V0JzsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gPSAnVmVyd2lqZGVyIGFsbGUgcGFnaW5hJiMwMzk7cyBtZXQgaGV0IHR5cGUgQWR2YW5jZWRDb250ZW50JzsKJGxhbmdbJ2ltcG9ydHBhZ2VzJ10gPSAnU3RlbCBhbGxlIHBhZ2luYSYjMDM5O3MgaW4gbWV0IGhldCB0eXBlICVzIG5hYXIgaGV0IHR5cGUgJXMuJzsKJGxhbmdbJ3BhZ2VzaW1wb3J0ZWQnXSA9ICdBbGxlIENvbnRlbnQgcGFnaW5hJiMwMzk7cyBpbmdlc3RlbGQgYWxzIEFkdmFuY2VkQ29udGVudC4nOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBoZXQgY29udGVudHR5cGUgdmFuIGFsbGUgcGFnaW5hJiMwMzk7cyB3aWwgd2lqemlnZW4/JzsKJGxhbmdbJ3RvZ2dsZV9tZXNzYWdlJ10gPSAnVmVyYmVyZyBkaXQgYmVyaWNodCc7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICdTdGFuZGFhcmQgQWR2YW5jZWRDb250ZW50IEluc3RlbGxpbmdlbic7CiRsYW5nWydyZWRpcmVjdHBhcmFtcyddID0gJ1VSTCBwYXJhbXMgdG8gYXBwZW5kIHdoZW4gcmVkaXJlY3RpbmcgKHBhcmFtMT12YWx1ZTEgcGFyYW0yPXZhbHVlMiAuLi4pJzsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gPSAnVXNlIHNtYXJ0eSB0byBjcmVhdGUgdGhlIHBhcmFtcyc7CiRsYW5nWydlcnJvcl9sb2FkaW5nX21vZHVsZSddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBDb3VsZCBub3QgbG9hZCBtb2R1bGUgJiMwMzk7JXMmIzAzOTsuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0J10gPSAnPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IE1vZHVsZSAmIzAzOTslcyYjMDM5OyBkb2VzIG5vdCBzdXBwb3J0IGNvbnRlbnRibG9ja3MuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnXSA9ICdBbGxlIHBhZ2luYSYjMDM5O3MgdmFuIGhldCB0eXBlICVzIHppam4gc3VjY2Vzdm9sIGdld2lqemlnZCBuYWFyICVzJzsKJGxhbmdbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSA9ICdHZWVmIEFkdmFuY2VkQ29udGVudCBvcHRpZXMgdGFiYmxhZCB3ZWVyJzsKJGxhbmdbJ2Rpc3BsYXlfc2V0dGluZ3MnXSA9ICclcyB3ZWVyZ2F2ZSBpbnN0ZWxsaW5nZW4nOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdTbGEgZGUgaW5rbGFwc3RhdHVzIG9wIHZhbiAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ2NvbnRlbnQgYmxva2tlbic7CiRsYW5nWydibG9ja19tZXNzYWdlJ10gPSAnY29udGVudCBibG9rIGJlcmljaHQnOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gPSAnYmxvayBncm9lcGVuJzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdLbGFwICVzIHN0YW5kYWFyZCBpbic7CiRsYW5nWydwZXJfcGFnZSddID0gJ3BlciBwYWdpbmEnOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gPSAncGVyIHNqYWJsb29uJzsKJGxhbmdbJ2JvdGgxJ10gPSAnc2phYmxvb24gT0YgcGFnaW5hICc7CiRsYW5nWydib3RoMiddID0gJ3NqYWJsb29uIEVOIHBhZ2luYSc7CiRsYW5nWydjb250ZW50J10gPSAnSW5ob3VkJzsKJGxhbmdbJ2NvbnRlbnQyJ10gPSAnQWR2YW5jZWQgQ29udGVudCAnOwokbGFuZ1sncHJlZnMnXSA9ICdJbnN0ZWxsaW5nZW4nOwokbGFuZ1snbXVsdGlfaW5wdXQnXSA9ICdNdWx0aSBpbnB1dCc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdNdWx0aSBpbnB1dHRlbXBsYXRlcyc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXQnXSA9ICdWb2VnIG5pZXV3ZSBtdWx0aSBpbnB1dCB0b2UnOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddID0gJ1ZvZWcgbmlldXdlIG11bHRpIGlucHV0dGVtcGxhdGUgdG9lJzsKJGxhbmdbJ2lucHV0X2lkJ10gPSAnSW52b2VyIElEJzsKJGxhbmdbJ2lucHV0X2ZpZWxkcyddID0gJ0ludm9lciB2ZWxkZW4nOwokbGFuZ1sndHBsX25hbWUnXSA9ICdTamFibG9vbiBuYWFtJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnRGUgdGVtcGxhdGUgdmVyZWlzdCBkaXQgdmVsZCBlbiBoZXQgbWFnIG5pZXQgbGVlZ2dlbGF0ZW4gd29yZGVuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddID0gJ0ludm9lcnZlbGRlbiBpcyBlZW4gdmVyZWlzdCB2ZWxkIGVuIG1hZyBuaWV0IGxlZWdnZWxhdGVuIHdvcmRlbi4nOwokbGFuZ1snZXJyb3JfaW5wdXRfaWQnXSA9ICdHZWVuIGludm9lciBpZCBnZWdldmVuIG9mIGludm9lciBpZCBiZXN0YWF0IGFsLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdJbnZvZXIgSUQgaXMgYWwgaW4gZ2VicnVpay4gS2llcyBlZW4gYW5kZXJlIChtb2V0IHVuaWVrIHppam4pLic7CiRsYW5nWydtdWx0aV9pbnB1dF9hZGRlZCddID0gJ011bHRpIElucHV0IHRvZWdldm9lZ2QuJzsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCB2ZXJ3aWpkZXJkLic7CiRsYW5nWydtdWx0aV9pbnB1dF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgYmlqZ2V3ZXJrdC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgdG9lZ2V2b2VnZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX3VwZGF0ZWQnXSA9ICdNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBiaWpnZXdlcmt0Lic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIHZlcndpamRlcmQuJzsKJGxhbmdbJ2RlbGV0ZV9zZWxlY3RlZCddID0gJ1ZlcndpamRlciBnZXNlbGVjdGVlcmRlIGl0ZW1zJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlJ10gPSAnV2VldCB1IHpla2VyIGRhdCB1IGRpdCB3aWx0IHZlcndpamRlcmVuPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkZXplIHdpbHQgdmVyd2lqZGVyZW4/JzsKJGxhbmdbJ3VzZV9jb250ZW50dHlwZSddID0gJ0dlYnJ1aWsgQ29udGVudCBUeXBlJzsKJGxhbmdbJ2hlbHBfdHBsX3ZhcnMnXSA9ICc8cD48c3Ryb25nPlRlbXBsYXRlIHZhcnM6PC9zdHJvbmc+PC9wPg0KPHA+PHByZT48Y29kZT57JGlucHV0c308L2NvZGU+PC9wcmU+IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGRlZmluZWQgaW5wdXQgZWxlbWVudHMgb2YgdGhhdCBtdWx0aSBpbnB1dCBibG9jay48YnIgLz4NCkVhY2ggaW5wdXQgZWxlbWVudCBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBpdHMgcGFyYW1zLiA8YnIgLz4NClNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBpbmZvLjxiciAvPg0KQWRkaXRpb25hbCBwYXJhbSBpcyAmcXVvdDtpbnB1dCZxdW90OyB0aGF0IHdpbGwgcHJpbnQgb3V0IHRoZSBpbnB1dCBlbGVtZW50LjxiciAvPg0KVG8gYWNjZXNzIHRoZSBwYXJhbXMgdXNlIHRoZSBkb3Qgc3ludGF4LjxiciAvPg0KRXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0NCgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9PGJyIC8+DQp7L2ZvcmVhY2h9PC9jb2RlPjwvcHJlPic7CiRsYW5nWydoZWxwJ10gPSAnPGJyIC8+DQo8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4NCjxwPlRoaXMgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICZxdW90O0NvbnRlbnQmcXVvdDsgb2YgQ01TbXMuPGJyIC8+DQpJdCBwcm92aWRlcyBtb3JlIGZsZXhpYmlsaXR5IGJ5IGNyZWF0aW5nIGN1c3RvbSBpbnB1dCBjb250cm9scyBpbiBiYWNrZW5kLjxiciAvPg0KVXNlcnMgY2FuIGFkZCBkcm9wZG93bnMsIG11bHRpcGxlIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcywgZ3JvdXAgY29udGVudCBibG9ja3MgDQppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgDQp1c2luZyBhZGRpdGlvbmFsIHBhcmFtcyBpbiB0aGUgdGVtcGxhdGUgd2hlbiBjYWxsaW5nIHRoZSBjb250ZW50LjxiciAvPg0KSXQgYWxzbyBhZGRzIGFiaWxpdHkgdG8gZ3JhbnQgYWNjZXNzIG9mIHBhZ2VzIHRvIGNlcnRhaW4gdXNlcnMgb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgb3IgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSBzaG93aW5nIHRoZSBsb2dpbiBmb3JtIG9yIA0KanVzdCByZWRpcmVjdCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuPGJyIC8+DQpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgDQpwYXJlbnQgcGFnZXMuPC9wPg0KPHA+PGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVG8gZ2V0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb250ZW50IHR5cGUgDQppbiBmcm9udGVuZCB5b3UgbmVlZCB0byBjYWxsIHlvdXIgY29udGVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBZHZhbmNlZENvbnRlbnR9IA0KKGNhc2Ugc2Vuc2l0aXZlISkuPGJyIC8+DQpPdGhlcndpc2UgaXQgbWF5IGJlaGF2ZSBsaWtlIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBwbHVnaW4uPC9lbT48L3A+DQo8cD5Zb3UgY2FuIGV2ZW4gdXNlIHNtYXJ0eSBsb2dpYyBpbiBwYXJhbWV0ZXIgdmFsdWVzLiBUaGF0IG1lYW5zIHlvdSBjYW4gdXNlIHRoZSANCnJlc3VsdCBvZiBhIHBsdWdpbiwgYW4gdWR0IG9yIGV2ZW4gYSBtb2R1bGUgb3IganVzdCB0aGUgY29udGVudCBvZiBhIGdsb2JhbCANCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+DQo8aDM+SG93IGlzIGl0IHVzZWQ/PC9oMz4NCjxwPkFmdGVyIGluc3RhbGxhdGlvbiB0aGUgbW9kdWxlIHNldHRpbmdzIGNhbiBiZSBmb3VuZCBpbiAmcXVvdDtFeHRlbnNpb25zLT5BZHZhbmNlZENvbnRlbnQmcXVvdDsuPC9wPg0KPHA+QWRkaXRpb25hbGx5IHlvdSB3aWxsIGhhdmUgYSBuZXcgY29udGVudCB0eXBlICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhdmFpbGFibGUgDQp3aGVuIGFkZGluZy9lZGl0aW5nIGEgcGFnZS48YnIgLz4NCjxwPkFkZCB0aGUgZm9sbG93aW5nIHBhcmFtcyB0byB5b3VyIGNvbnRlbnQgdGFnIGluIHlvdXIgcGFnZSB0ZW1wbGF0ZSwgDQpjaGFuZ2UgdGhlIGNvbnRlbnQgdHlwZSBvZiB5b3VyIHBhZ2UgdG8gJnF1b3Q7QWR2YW5jZWRDb250ZW50JnF1b3Q7IGFuZCBzZWUgd2hhdCBoYXBwZW5zIA0KaW4gYmFja2VuZC4uLjwvcD4NCjxoMz5XaGF0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZT88L2gzPg0KPHA+YWxsIHBhcmFtcyBhcmUgb3B0aW9uYWw8L3A+DQo8cD48c3Ryb25nPkRlZmF1bHQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIGNvbnRlbnQgYmxvY2sgcGVyIHBhZ2UuIElmIG11bHRpcGxlIGNvbnRlbnQgdGFncyBhcmUgcHV0IG9uIGEgdGVtcGxhdGUsIHRoYXQgbnVtYmVyIG9mIGVkaXQgYm94ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaWYgdGhlIHBhZ2UgaXMgZWRpdGVkLjxiciAvPg0KCQkJCWUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O1NlY29uZCBDb250ZW50IGJsb2NrJnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQlOb3csIGlmIHlvdSBlZGl0IGEgcGFnZSB0aGVyZSB3aWxsIGJhIGEgdGV4dGFyZWEgY2FsbGVkICZxdW90O1NlY29uZCBDb250ZW50IGJsb2NrJnF1b3Q7LjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChubyB3aGl0ZXNwYWNlcywgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBldGMuKS4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvcGVyIG5hbWUgKHNpbWlsYXIgdG8gdGhlIHBhZ2UgYWxpYXMpLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gdHJ1ZSwgdGhlbiBvbmx5IG9uZSBlZGl0IGxpbmUgd2lsbCBiZSBzaG93biB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIGZhbHNlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLiBPbmx5IHdvcmtzIHdoZW4gYmxvY2sgcGFyYW1ldGVyIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+RGVmYXVsdCBjb250ZW50IHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFnZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQXNzaWducyB0aGUgY29udGVudCB0byBhIHNtYXJ0eSBwYXJhbWV0ZXIsIHdoaWNoIHlvdSBjYW4gdGhlbiB1c2UgaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHBhZ2UsIG9yIHVzZSB0byB0ZXN0IHdoZXRoZXIgY29udGVudCBleGlzdHMgaW4gaXQgb3Igbm90LjxiciAvPg0KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPg0KCQkJCTxjb2RlPntjb250ZW50IGFzc2lnbj1wYWdlY29udGVudH08YnIgLz4NCgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9JnF1b3Q7JHBhZ2Vjb250ZW50JnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBGb3Igc29tZSByZWFzb24gdGhpcyBwYXJhbSBkb2VzIG5vdCB3b3JrIGF0IHRoZSBtb21lbnQgd2l0aCB0aGUgbW9kdWxlIHBsdWdpbiB7QXZhbmNlZENvbnRlbnR9LiBVc2UgPGJyIC8+PGNvZGU+e2NhcHR1cmUgYXNzaWduPSZxdW90O2ZvbyZxdW90O317QWR2YW5jZWRDb250ZW50fXsvY2FwdHVyZX08L2NvZGU+IDxiciAvPmluc3RlYWQuPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5BZHZhbmNlZCBwYXJhbXM6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdHlwZTwvdHQ+ICh0ZXh0LGNoZWNrYm94LGRyb3Bkb3duLHNlbGVjdF9tdWx0aXBsZSxkYXRlLG11bHRpX2lucHV0KSANCgkJPHVsPg0KCQkJPGxpPkFsbG93cyB5b3UgdG8gc3BlY2lmeSB3aGF0IGNvbnRlbnQgY29udHJvbCB0eXBlIGlzIHVzZWQgaW4gdGhlIGJhY2sgZW5kLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5wYWdlX3RhYjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGlzIHBhcmFtZXRlciBzZXRzIHRoZSB0YWIgaW4gd2hpY2ggdGhlIGNvbnRlbnQgYmxvY2sgaXMgZGlzcGxheWVkIGluIHRoZSBiYWNrZW5kLjxiciAvPg0KCQkJCVBvc3NpYmxlIHZhbHVlcyBhcmUgJnF1b3Q7bWFpbiZxdW90OyAoID0gVGFiICZxdW90O01haW4gTWVudSZxdW90OyksICZxdW90O29wdGlvbnMmcXVvdDsgKCA9IFRhYiAmcXVvdDtPcHRpb25zJnF1b3Q7KSwgb3IgYW55IG90aGVyIGFyYml0cmFyeSB2YWx1ZTxiciAvPg0KCQkJCTxlbT5lLmcuIHlvdSBjYW4gYWRkIGEgY2hlY2tib3ggdG8gdGhlIG9wdGlvbnMgdGFiIG9yIGNyZWF0ZSBuZXcgdGFiczwvZW0+Lg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3RhYjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5XaXRoIHRoaXMgcGFyYW1ldGVyLCB0aGUgYmxvY2tzIHdpdGhpbiBhIHBhZ2UgdGFiIGNhbiBiZSBmdXJ0aGVyIGRpdmlkZWQgaW50byB0YWJzIG9yIGNhbiBiZSBncm91cGVkIHRvZ2V0aGVyLiBBbnkgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCBhcyBhIHBvc3NpYmxlIHZhbHVlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja19ncm91cDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5XaXRoIHRoaXMgcGFyYW1ldGVyLCBtdWx0aXBsZSBibG9ja3MgY2FuIGJlIGdyb3VwZWQgaW4gYSBmaWVsZHNldC4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWN0aXZlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBbGxvd3MgeW91IHRvIGRpc2FibGUgYSBjb250ZW50IGJsb2NrLiBEaXNhYmxlZCBjb250ZW50IGJsb2NrcyB3b24mIzAzOTt0IGJlIHNob3duIGluIGJhY2tlbmQgYXMgd2VsbCBhcyBpbiBmcm9udGVuZC4gKG9ubHkgd29ya3Mgd2l0aCB7QWR2YW5jZWRDb250ZW50fSBwbHVnaW4pPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3R5bGU8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc2V0IHRoZSBpbmxpbmUgc3R5bGUgb2YgdGhlIGVsZW1lbnQgaW4gYmFja2VuZC4gPGJyIC8+DQoJCQkJZS5nLjogbWFrZSBhIG5vdGUgcmVkIHdpdGggPGNvZGU+c3R5bGU9JiMwMzk7Y29sb3I6I0ZGMDAwMDsmIzAzOTs8L2NvZGU+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGdyb3VwIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGlzIGJsb2NrLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl91c2VyczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHVzZXIgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IHRoaXMgYmxvY2suDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IGlmIHRoZSBwYXJhbXMgPHR0PmVkaXRvcl91c2VyczwvdHQ+IGFuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IGFyZSBlbXB0eSB0aGUgYmxvY2sgbWF5IGJlIGVkaXRlZCBieSBhbnkgdXNlciB3aXRoIHN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byBlZGl0IGEgcGFnZTwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4gKG5vdCByZWFkeSB5ZXQpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGxpc3Qgb2YgZmV1IGdyb3VwcyBzZXBhcmF0ZWQgYnkgYSBjb21tYS48YnIgLz4NCgkJCQlUaGlzIGdyYW50cyBhY2Nlc3MgdG8gdGhpcyBjb250ZW50IGJsb2NrIG9ubHkgdG8gY2VydGFpbiBmZXUgZ3JvdXBzLjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkgIChub3QgcmVhZHkgeWV0KQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJU3BlY2lmeSBpZiB0aGUgbG9naW4gZm9ybSBvZiB0aGUgZmV1IG1vZHVsZSB3aWxsIGJlIHNob3duIG9yIG5vdC48YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hbGxvd19ub25lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5TZXQgdG8gdHJ1ZSBpZiB0aGUgdXNlciBtYXkgZW50ZXIgZW1wdHkgdmFsdWVzLiA8YnIgLz5JZiBzZXQgdG8gZmFsc2UgYW5kIHZhbHVlIGlzIGVtcHR5IHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBwYXJhbSAmcXVvdDtkZWZhdWx0JnF1b3Q7IHdpbGwgYmUgdXNlZC4gPGJyIC8+SWYgc2V0IHRvIHRydWUgYW5kIGJsb2NrIGlzIG9mIHR5cGUgaW1hZ2UvZmlsZSB0aGUgb3B0aW9uICZxdW90O25vbmUmcXVvdDsgKG1vZGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDspIG9yIGEgYnV0dG9uIHRvIGNsZWFyIHRoZSBzZWxlY3RlZCBmaWxlL2ltYWdlIHZhbHVlIChtb2RlPSZxdW90O2ZpbGVwaWNrZXImcXVvdDspIHdpbGwgYmUgZGlzcGxheWVkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zbWFydHk8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVR1cm4gc21hcnR5IHByb2Nlc3Npbmcgb2YgdmFsdWVzIG9uL29mZi48YnIgLz4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSBhbnkgZ2l2ZW4gdmFsdWUgd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhlIHNtYXJ0eSBlbmdpbmUuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90ZTogPC9zdHJvbmc+IE5vdGljZSB0aGF0IHlvdSBjYW5ub3QgdXNlIHRoZSBkZWZhdWx0IHNtYXJ0eSBkZWxpbWl0ZXJzIHRoYXQgYXJlIHVzZWQgaW4gdGhlIHRlbXBsYXRlLiBUaGlzIHdpbGwgY2F1c2Ugc21hcnR5IGVycm9ycyBpbiBmcm9udGVuZC48YnIgLz4NCgkJCQlTbyB5b3UgbmVlZCB0byB1c2UgOjo6IGFzIGRlbGltaXRlciBpbnN0ZWFkLjxiciAvPjwvZW0+DQoJCQkJRS5nLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7Q2F0ZWdvcmllcyZxdW90OyBsYWJlbD0mcXVvdDtTZWxlY3QgYSBjYXRlZ29yeSZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90Ozo6Omdsb2JhbF9jb250ZW50IG5hbWU9JiMwMzk7Y2F0ZWdvcnlsaXN0JiMwMzk7Ojo6JnF1b3Q7IHNtYXJ0eT0mcXVvdDt0cnVlJnF1b3Q7fTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZXNjcmlwdGlvbjwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7Y2hlY2tib3gmcXVvdDs6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCWNoZWNrcy91bmNoZWNrcyB0aGUgY2hlY2tib3ggYnkgZGVmYXVsdCB3aGVuIGFkZGluZyBhIHBhZ2U8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBVc2UgJnF1b3Q7MSZxdW90OyBmb3IgY2hlY2tlZCBhbmQgJnF1b3Q7MCZxdW90OyBmb3IgdW5jaGVja2VkIGJ5IGRlZmF1bHQ8YnIgLz48L2VtPg0KCQkJCUUuZy4gPGNvZGU+e2NvbnRlbnQgYmxvY2tfdHlwZT0mcXVvdDtjaGVja2JveCZxdW90OyBkZWZhdWx0PTF9PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7ZHJvcGRvd24mcXVvdDsvJnF1b3Q7c2VsZWN0X211bHRpcGxlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pml0ZW1zPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPkl0ZW0gbGFiZWwocykgb2YgdGhlIGZpZWxkKHMpIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZXM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+VmFsdWUocykgb2YgdGhlIGl0ZW1zIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGVyZSBhcmUgbGVzcyB2YWx1ZXMgdGhhbiBpdGVtcyB0aGUgaXRlbSBsYWJlbHMgd2lsbCBiZSB1c2VkIGFzIHZhbHVlcyAoYW5kIHZpc2UgdmVyc2EpLjwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVByZXNlbGVjdGVkIHZhbHVlKHMpIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlbGltaXRlcjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5BIHNpZ24gb3Igc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldmlkZSB0aGUgaXRlbXMvdmFsdWVzIChkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNpemU8L3R0PiAoaW50ZWdlcikNCgkJPHVsPg0KCQkJPGxpPkhlaWdodCBvZiBjb250ZW50IGJsb2NrIGluIGJhY2sgZW5kIGlmIDxjb2RlPmJsb2NrX3R5cGU9JnF1b3Q7c2VsZWN0X211bHRpcGxlJnF1b3Q7PC9jb2RlPiBpcyBzZXQuIDxlbT4oRGVmYXVsdCBpcyBudW1iZXIgb2YgaXRlbXMpPC9lbT48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zb3J0YWJsZV9pdGVtczwvdHQ+ICh0cnVlL2ZhbHNlKSAtIHNlbGVjdF9tdWx0aXBsZSBvbmx5DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSB0aGUgaXRlbXMgd29uJiMwMzk7dCBiZSBzaG93biBhcyBhIG11bHRpcGxlIHNlbGVjdCBpbnB1dCB3aXRoIG9wdGlvbnMgYnV0IGFzIGEgbGlzdCBvZiBjaGVja2JveGVzIHRoYXQgY2FuIGJlIHJlb3JkZXJlZC48YnIgLz5FYWNoIHJvdyBjb250YWlucyB0aGUgaXRlbSBsYWJlbCBhbmQgYSBjaGVja2JveCB3aXRoIHRoZSBpdGVtIHZhbHVlLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IG9ubHkgdGhlIG9yZGVyIG9mIHRoZSA8c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+IGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBhbHdheXMgZGlzcGxheWVkIG9uIHRoZSB0b3Agb2YgdGhlIGxpc3Qgd2hlbiByZWxvYWRpbmcgdGhlIGVkaXQgcGFnZS48YnIgLz4NCgkJCQlVbnNlbGVjdGVkIGl0ZW1zIHdpbGwgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZTwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+Y29sbGFwc2U8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoZSBkZWZhdWx0IGRpc3BsYXkgb2YgdGhlIGJsb2NrIGluIGJhY2tlbmQuDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtkYXRlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIGhvdXJzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgMTIgb3IgMjMpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBBTS9QTSBpcyB1c2VkLiAoZGVmYXVsdCBpcyB0cnVlKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgbWludXRlcyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgNTkpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBubyB0aW1lIGRyb3Bkb3duIHNob3VsZCBiZSBkaXNwbGF5ZWQgKGRlZmF1bHQgaXMgdHJ1ZSk8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJZiBzZXQgdG8gZmFsc2UgMDA6MDAgbyYjMDM5O2Nsb2NrIHdpbGwgYmUgdXNlZDwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGF0ZV9mb3JtYXQ8L3R0PiAoc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoZSBzdHJmdGltZSBkYXRlIGZvcm1hdCB0byBzaG93IGluIGZyb250ZW5kLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7bXVsdGlfaW5wdXQmcXVvdDs6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aW5wdXRzPC90dD4gKGNzdiBvZiBpbnB1dCBpZHMgeW91IGNyZWF0ZWQgaW4gdGhlIGJhY2tlbmQpIA0KCQk8YnIgLz48YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVfZGVsaW1pdGVyPC90dD4gKGFueSBzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBkZWZpbmVzIGEgc3RyaW5nIHRoYXQgZGV2aWRlcyB0aGUgdmFsdWVzIG9mIHRoZSBpbnB1dHMgb2Ygb25lIG11bHRpX2lucHV0IHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICZxdW90OyZhbXA7bHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGxpbWl0ZXIgLS0mYW1wO2d0OyZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIG11bHRpX2lucHV0cyB5b3UgZGVmaW5lZCBmb3IgdGhpcyBjb250ZW50IGJsb2NrIHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICZxdW90OyZhbXA7bHQ7IS0tIG11bHRpX2lucHV0X2RlbGxpbWl0ZXIgLS0mYW1wO2d0OyZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+V2hhdCBpcyBhIG11bHRpX2lucHV0IGZvcj88L3N0cm9uZz48L3A+DQoJCTxwPkEgbXVsdGlfaW5wdXQgYmxvY2sgaXMgYSBjb250ZW50IGJsb2NrIHRoYXQgY29uc2lzdHMgb2YgZGlmZmVyZW50IGlucHV0IGZpZWxkcy4gPGJyIC8+DQoJCVlvdSBjYW4gZGVmaW5lIHRoZW0gaW4gdGhlIG1vZHVsZSBhZG1pbmlzdHJhdGlvbiB1c2luZyB0aGUgc2FtZSBzeW50YXggeW91IHVzZSBpbiBhIHRlbXBsYXRlIHdoZW4gZGVmaW5pbmcgYSBjb250ZW50IGJsb2NrLjxiciAvPg0KCQlNdWx0aSBpbnB1dHMgY2FuIGJlIHVzZWQgaWYgeW91IHdhbnQgdG8gc3RvcmUgZGlmZmVyZW50IHZhbHVlcyBpbiBvbmUgY29udGVudCBibG9jayBhbmQgcHJvdmlkZSBkaWZmZXJlbnQgaW5wdXQgdHlwZXMgZm9yIGVhY2ggdmFsdWVzLjxiciAvPg0KCQlUaGlzIGNhbiBiZSB1c2VmdWxsIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIGRyb3Bkb3duIHRvIHNlbGVjdCBhIG1vZHVsZSB0byBiZSBzaG93biBpbiBmcm9udGVuZCBhbmQgdGV4dCBpbnB1dCB0byBkZWZpbmUgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLjxiciAvPg0KCQlFeGFtcGxlIGZvciBhIG11bHRpX2lucHV0IGluIHBhZ2UgdGVtcGxhdGU6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlJnF1b3Q7IGxhYmVsPSZxdW90O1BhZ2UgbW9kdWxlcyZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDttb2R1bGUsbW9kdWxlLG1vZHVsZSxtb2R1bGUmcXVvdDt9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJCTxwPkV4YW1wbGUgZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtdWx0aV9pbnB1dCBuYW1lZCAmcXVvdDttb2R1bGUmcXVvdDs6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHNlbGVjdGlvbiZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90O3xOZXdzfEdhbGxlcnl8TWVudSZxdW90O30NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHBhcmFtcyZxdW90OyBibG9ja190eXBlPSZxdW90O3RleHQmcXVvdDsgb25lbGluZT10cnVlfQ0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IGVkaXQgYSBwYWdlPzwvcD4NCgkJPHA+SXQgd2lsbCBzaG93IHlvdSBhIGZpZWxkc2V0IHdpdGggbGVnZW5kICZxdW90O1BhZ2UgbW9kdWxlcyZxdW90Oy4gPGJyIC8+DQoJCUluc2lkZSB0aGlzIGZpZWxkc2V0IGl0IHNob3dzIHRoZSBtdWx0aV9pbnB1dCBuYW1lZCAmcXVvdDttb2R1bGUmcXVvdDsgZm91ciB0aW1lcy48YnIgLz4NCgkJVGhhdCBtZWFucyB5b3Ugc2VlIGZvdXIgbGluZXMgd2l0aCB0d28gaW5wdXQgZmllbGRzLiBBIGRyb3Bkb3duIGFuZCBhIHRleHQgaW5wdXQuPC9wPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IHNhdmUgYSBwYWdlPzwvcD4NCgkJPHA+VGhlIG1vZHVsZSBzdG9yZXMgdGhlIHZhbHVlcyBhcyBvbmUgc2luZ2xlIGNvbnRlbnQgcHJvcGVydHkgKGFrYSBjb250ZW50YmxvY2spIGFuZCBzZXBhcmF0ZXMgdGhlIGlucHV0cyBieSBhIGdpdmVuIGRlbGltaXRlci48YnIgLz4NCgkJTGV0JiMwMzk7cyBhc3N1bWUgeW91IHNlbGVjdCB0aGUgTmV3cyBtb2R1bGUgZm91ciB0aW1lcyB3aXRoIGRpZmZlcmVudCBtb2R1bGUgcGFyYW1zIGxpa2UgY2F0ZWdvcnk9JnF1b3Q7MSZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7MiZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7MyZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7NCZxdW90Oy48YnIgLz4NCgkJSW4gdGhlIGRhdGFiYXNlIGl0IHN0b3JlcyB0aGlzIHN0cmluZzo8L3A+DQoJCTxwcmU+DQoJCTxjb2RlPg0KCQlOZXdzJmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmFtcDtndDtjYXRlZ29yeT0mcXVvdDsxJnF1b3Q7JmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmFtcDtndDs8YnIgLz4NCgkJTmV3cyZhbXA7bHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZhbXA7Z3Q7Y2F0ZWdvcnk9JnF1b3Q7MiZxdW90OyZhbXA7bHQ7IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLSZhbXA7Z3Q7PGJyIC8+DQoJCU5ld3MmYW1wO2x0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mYW1wO2d0O2NhdGVnb3J5PSZxdW90OzMmcXVvdDsmYW1wO2x0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mYW1wO2d0OzxiciAvPg0KCQlOZXdzJmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmFtcDtndDtjYXRlZ29yeT0mcXVvdDs0JnF1b3Q7DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJCTxwPkluIHlvdXIgcGFnZSB0ZW1wbGF0ZSB5b3UgY2FuIGV4cGxvZGUgdGhlIGNvbnRlbnQgYnkgdGhlIGRlbGltaXRlcnMgYW5kIGNhbGwgdGhlIHNlbGVjdGVkIG1vZHVsZXMuPC9wPg0KCQk8cD5GdWxsIEV4YW1wbGU6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJeyogZGVmaW5lIHRoZSBjb250ZW50IGJsb2NrICp9DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O215X21vZHVsZXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDttdWx0aV9pbnB1dCZxdW90OyBpbnB1dHM9JnF1b3Q7TW9kdWxlLE1vZHVsZSxNb2R1bGUsTW9kdWxlJnF1b3Q7IGFzc2lnbj0mcXVvdDttb2R1bGVzJnF1b3Q7fQ0KCQkNCgkJeyogZXhwbG9kZSBibG9jayBjb250ZW50IGluIGFuIGFycmF5IHRvIGdldCB0aGUgaW5wdXQgZ3JvdXBzICp9DQoJCXthc3NpZ24gdmFyPW1vZHVsZXMgdmFsdWU9JnF1b3Q7JmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmFtcDtndDsmcXVvdDt8ZXhwbG9kZTokbW9kdWxlc30NCgkJDQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQ0KCQl7Zm9yZWFjaCBmcm9tPSRtb2R1bGVzIGl0ZW09JnF1b3Q7bW9kdWxlJnF1b3Q7fQ0KCQkJe2lmICRtb2R1bGUgIT0gJiMwMzk7JiMwMzk7fQ0KCQkJDQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0NCgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9JnF1b3Q7JmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmFtcDtndDsmcXVvdDt8ZXhwbG9kZTokbW9kdWxlfQ0KCQkJCQ0KCQkJCXtpZiRtb2R1bGVfaXRlbXNbMF0gIT0gJiMwMzk7JiMwMzk7fQ0KCQkJCQ0KCQkJCQl7KiBjYWxsIHRoZSBtb2R1bGUgKn0NCgkJCQkJe2lmIGlzc2V0KCRtb2R1bGVfaXRlbXNbMV0pfQ0KCQkJCQkJe2V2YWwgdmFyPSRzbWFydHkubGRlbGltfGNhdDomIzAzOTtjbXNfbW9kdWxlIG1vZHVsZT0mcXVvdDsmIzAzOTt8Y2F0OiRtb2R1bGVfaXRlbXNbMF18Y2F0OiYjMDM5OyZxdW90OyAmIzAzOTt8Y2F0OiRtb2R1bGVfaXRlbXNbMV18Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7ZWxzZX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6JiMwMzk7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7JiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDomIzAzOTsmcXVvdDsmIzAzOTt8Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7L2lmfQ0KCQkJCQkNCgkJCQl7L2lmfQ0KCQkJCQ0KCQkJey9pZn0NCgkJDQoJCXsvZm9yZWFjaH0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgk8L2xpPg0KPC91bD4NCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KCTxsaT5UaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+DQoJPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPC91bD4NCjxiciAvPg0KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPg0KCUFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLjxiciAvPg0KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPg0KCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mPGJyIC8+DQoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjxiciAvPg0KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4NCglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTxiciAvPg0KCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlPGJyIC8+DQoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4NCglPciByZWFkIGl0IG9ubGluZTogPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5odHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEw8L2E+PGJyIC8+DQoJUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQo8L3A+DQo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDEwLCBHZW9yZyBCdXNjaCAoTmFOKS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCjxiciAvPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8YnIgLz4NCjxwPjxzdHJvbmc+TW9kdWxlIHJlbGVhc2VzPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT48cD48c3Ryb25nPjAuNy4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIGl0ZW0gIzU2NTE8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVxdWlyZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KDQoJPGxpPjxwPjxzdHJvbmc+MC43IChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSBidWdmaXhlcyBmb3IgQ01TbXMgMS45KyAobmVlZHMgQ01TbXMgMS45IG1pbmltdW0gbm93KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWRkZWQgc3VwcG9ydCBvZiB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC42LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGUgbXVsdGlfaW5wdXQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNiAoT2N0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19ncm91cDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gUmVtb3ZlZCBmaWxlIHBpY2tlciAoYW5kIGFzc29jaWF0ZWQgYmxvY2tfdHlwZXMgaW1hZ2UvZmlsZSkgLSB1c2UgR0JGaWxlUGlja2VyIGluc3RlYWQuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjUgKFNlcHQgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjkyIChtZW1vcnkgaXNzdWUpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI1NCAoZGlzYWJsZSB3eXNpd3lnIG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTAgKHVybG9ubHkgbm90IHdvcmtpbmcpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMSAoaW1hZ2UgcGF0aHMgbm90IHN0b3JlZCAmIzAzOTtjb3JyZWN0bHkmIzAzOTspPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI2MSAoQWRkIHNvcnQgdG8gaW1hZ2UgdHlwZSAtIG5vdGljZSB0aGUgY2hhbmdlIG9mIHBhcmFtIGZpbHRlcik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIHBhcmFtcyBleGNsdWRlX3ByZWZpeCwgaW5jbHVkZV9wcmVmaXgsIGV4Y2x1ZGVfc3VmaXgsIGluY2x1ZGVfc3VmaXg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI1MyAoVGV4dCBpbnB1dCB0byBkZWZpbmUgYWRkIHBhcmFtcyB0byByZWRpcmVjdCBmdW5jdGlvbik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MCAoRGVmYXVsdCB2YWx1ZXMgb2YgQWR2YW5jZWRDb250ZW50IHBhZ2Ugb3B0aW9ucyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MSAocHV0IEZldUFjY2VzcyBpbiBCbG9ja3RhYik8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIGFyZSBzaG93biBpbiBzZXBhcmF0ZSB0YWI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gQWRkZWQgbmV3IHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoZSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbSBmaWx0ZXIgKHVzZSBuZXcgcGFyYW1zIGluc3RlYWQpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhdGggdG8gZmlsZXMgYXJlIHN0b3JlZCByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcGFyYW0gZGlyIG9mIGJsb2NrIHR5cGUgZmlsZS9pbWFnZSBuZWVkcyB0byBiZSByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXIgb25seSAodGhlcmUgaXMgbm8gaW1hZ2UgdXBsb2FkcyBkaXIgdXNlZCBhbnltb3JlKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40LjEgKEF1Z3VzdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTE1MTogZml4ZWQgc3R5bGVzaGVldCBpc3N1ZSB3aXRoIGV4cGFuZC9jb2xsYXBzZSBidXR0b25zIG9mIGNvbnRlbnQgYmxvY2tzIGluIElFL1NhZmFyaS48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUxNjI6IFBIUCB3YXJuaW5ncyBpZiBiYWNrZW5kIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAmcXVvdDtNYW5hZ2UgQWxsIEFkdmFuY2VkQ29udGVudCBCbG9ja3MmcXVvdDsgb3BlbiBhbiBhZHZhbmNlZCBjb250ZW50IHBhZ2UgYW5kIG11bHRpcGxlIGNvbnRlbnQgYmxvY2tzIG9mIHNhbWUgbmFtZSB3ZXJlIHVzZWQgaW4gdGVtcGxhdGUuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBleHRyYSBmaWVsZHMgY291bGQgbm90IGJlIHVwZGF0ZWQuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBmZXUgYWNjZXNzIGRpZCBub3Qgd29yay48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtkZWxldGUmcXVvdDsgdG8gbGV0IHVzZXJzIGRlbGV0ZSBmaWxlcyBldmVuIGlmIG5vIHBlcm1pc3Npb24gJnF1b3Q7TW9kaWZ5IEZpbGVzJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2NyZWF0ZV9kaXJzJnF1b3Q7IHRvIGxldCB1c2VycyBjcmVhdGVfZGlycyBldmVuIGlmIG5vIHBlcm1pc3Npb24gJnF1b3Q7TW9kaWZ5IEZpbGVzJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIG5ldyBibG9ja3R5cGUgJnF1b3Q7bm90ZSZxdW90OyB0byBjcmVhdGUgc29tZSBzaW5nbGUgbm90ZXMgZm9yIHlvdXIgZWRpdG9yczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBkZXBlbmRlbmN5IG9mIEZpbGVNYW5hZ2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGJsb2NrIG9mIHR5cGUgZmlsZSBvciBpbWFnZSBzdG9yZXMgcmVsYXRpdmUgdXJsIG5vdzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayB0eXBlIGltYWdlIHNob3dzIHRodW1ibmFpbCBpbiBiYWNrZW5kIHByZXZpZXcgaW5zdGVhZCBvZiBmdWxsIGltYWdlPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjQgKEp1bHkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+SW1wb3J0YW50IG5vdGljZTo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIHBhcmFtICZxdW90O3R5cGUmcXVvdDsgdG8gJnF1b3Q7YmxvY2tfdHlwZSZxdW90OyBzaW5jZSBpdCBpbnRlcmZlcmVzIHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTEwMTogcGFnZV90YWIgJnF1b3Q7b3B0aW9ucyZxdW90OyB3YXMgc2hvd24gdG8gdXNlcnMgd2l0aCBubyBwZXJtaXNzaW9uIHRvIGVkaXQgcGFnZSBvcHRpb25zIGlmIGEgY29udGVudCBibG9jayB3YXMgYXNzaWduZWQgdG8gdGhhdCB0YWIuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDk3OiBsaW5rIHRvIG1pc3NpbmcgY3NzIHJlbW92ZWQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgbWltZS10eXBlIGlzc3VlIChhZGRlZCBwcmVmZXJlbmNlIHRvIHRvZ2dsZSBtaW1lLXR5cGUgdXNhZ2Ugb24vb2ZmKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBwYXRoIGlzc3VlIHdoZXJlIHRodW1ibmFpbHMgd2VyZSBub3Qgc2hvd248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgY29tcGF0aWJpbGl0eSB3aXRoIENNU21zIDEuODwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBvdGhlciBtaW5vciBidWdmaXhlczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIE1MRSBzdXBwb3J0PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O3Nob3dfY2xvY2smcXVvdDsgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHRpbWUgZHJvcGRvd24gb2YgYmxvY2t0eXBlcyAmcXVvdDtkYXRlJnF1b3Q7IGluIGJhY2tlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGF0ZV9mb3JtYXQmcXVvdDsgdG8gZm9ybWF0IHRpbWVzdGFtcCBvZiBibG9ja3R5cGVzICZxdW90O2RhdGUmcXVvdDsgaW4gZnJvbnRlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgYnVsayBmdW5jdGlvbiB0byBzZXQgYWxsIHBhZ2VzIHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy40IChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MDQ1OiBXaGVuIHN3aXRjaGluZyBmcm9tIENvbnRlbnQgLT4gQWR2YW5jZWQgQ29udGVudCBsb3RzIG9mIFBIUCBlcnJvcnM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNTY6IHBhZ2VfdGFicyBub3Qgd29ya2luZyBmb3IgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICZxdW90O01hbmFnZSBBbGwgQ29udGVudCZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA3MzogaW5jb3JyZWN0IGRpc3BsYXkgb2YgZmlsZXMgd2hlbiBvcGVuaW5nIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgbWlub3IgYnVnIHdoZXJlIHRoZSBvcHRpb24gJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyBvZiBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGUgd2FzIG5vdCBzaG93biB3aGVuIHRlbXBsYXRlIGhhcyBiZWVuIGVkaXRlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGZpbGVtYW5hZ2VtZW50IGFuZCB1cGxvYWQgZnVuY3Rpb25zIHRvIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBicmVhZGN1bWJzIHRvIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRtaW5zIG1heSBicm93c2UgdGhlIGVudGlyZSBkaXIgdHJlZSBpbiBmaWxlcGlja2VyIGZpbGUgYnJvd3NlciByZWdhcmRsZXNzIG9mIHRlbXBsYXRlIHBhcmFtczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBtaW1lIHR5cGUgY2hlY2tpbmcgdG8gZ2V0IGZpbGUgdHlwZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCByYXd1cmxlbmNvZGUgaW4gc3JjIGF0dHJpYnMgdG8gZGlzcGxheSBpbWFnZXMgd2l0aCB3ZWlyZCBmaWxlbmFtZXMuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+bWlzY2VsbGFuZW91czo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIE9PUCBzdHVmZiAocHJpdmF0ZS9wdWJsaWMvcHJvdGVjdGVkKSB0byBnYWluIG1vcmUgY29tcGF0aWJpbGl0eSB3aXRoIFBIUDQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBhamF4IGZ1bmN0aW9ucyB0byByZXR1cm4geG1sIHZhbHVlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHVzYWdlIG9mIEltYWdlTWFuYWdlciBvbmNlIGFuZCBmb3IgYWxsLiAoY2F1c2VkIG9ubHkgdHJvdWJsZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4zIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgk8dWw+DQoJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWxpYXMgd2FzIG5vdCBhbHdheXMgY29udmVydGVkIHByb3Blcmx5PC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gdW5zdWJtaXR0ZWQgY29udGVudCBnb3QgbG9zdCBpZiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCTx1bD4NCgkJCQk8bGk+PHA+LSBhZGRlZCBzdGFydC9lbmQgZGF0ZTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHJlbW92ZWQgdGltZXBpY2tlcjsgcmVwbGFjZWQgYnkgYSBzaW1wbGUgZHJvcGRvd248L3A+PC9saT4NCgkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfaW1hZ2V9PC9wPjwvbGk+DQoJCQk8L3VsPg0KCQk8L2xpPg0KCTwvdWw+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjIgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgY2hhbmdpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgdHlwZSBvciBjaGFuZ2luZyB0ZW1wbGF0ZSBjYXVzZWQgZmF0YWwgZXJyb3JzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nIHdoZW4gc2F2aW5nIGEgcGFnZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwcmV2aWV3IHRhYjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmUtYWRkZWQgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiB0byB0b2dnbGUgY29udGVudCBibG9ja3MgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW1zIGVkaXRvcl9ncm91cHMvZWRpdG9yX3VzZXJzIHRvIHNwZWNpZnkgY2VydGFpbiB1c2Vycy9ncm91cHMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IGNlcnRhaW4gYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtcyBzZWxlY3RlZC9jaGVja2VkOyB1c2UgcGFyYW0gZGVmYXVsdCBpbnN0ZWFkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBibG9jayBpZHMgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSBibG9jayBuYW1lIHVzaW5nIGNvcmUgZnVuY3Rpb24gbXVuZ2Vfc3RyaW5nX3RvX3VybCAodG8gcmVtb3ZlIHNwZWNpYWwgY2hhcnMsIHdoaXRlc3BhY2VzLCB1bWxhdXRzIGV0Yy4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgb2YgYmxvY2t0eXBlIGRyb3Bkb3duL3NlbGVjdF9tdWx0aXBsZSB3aGVyZSBmaXJzdCBpdGVtIGhhZCBhbiBlbXB0eSBsYWJlbCBpZiBvbmx5IHRoZSBwYXJhbSAmcXVvdDt2YWx1ZXMmcXVvdDsgaXMgdXNlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgc29tZSB0ZW1wbGF0ZSB2YXJzIG9mIHRoZSBmcm9udGVuZCB0byBiZSBhbHNvIGFjY2Vzc2libGUgaW4gYmFja2VuZCAoZS5nLjogJHBhZ2VfYWxpYXMpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDthbGxvd19ub25lJnF1b3Q7IHRvIGFsbCBjb250ZW50IGJsb2NrIHR5cGVzIHRvIHNwZWNpZnkgaWYgdGhlIHByZWRlZmluZWQgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHVzZWQgaWYgbm8gdmFsdWUgaXMgZW50ZXJlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGVtcHR5IHZhbHVlcyB3ZXJlIG5ldmVyIGJlIHN0b3JlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGRlZmF1bHQgdmFsdWUgaW4gZnJvbnRlbmQgd2FzIGlnbm9yZWQgaWYgdGhlICZxdW90O2FsbG93X25vbmUmcXVvdDsgcGFyYW0gd2FzIGNoYW5nZWQgYWZ0ZXIgYW4gZW1wdHkgdmFsdWUgaGFzIGJlZW4gc3RvcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtzb3J0YWJsZV9pdGVtcyZxdW90OyB0byBjcmVhdGUgYSBzb3J0YWJsZSBtdWx0aXBsZSBzZWxlY3QgbGlzdCAoc2VsZWN0IGxpc3Qgd2lsbCByZXN1bHQgaW4gYSB0YWJsZSB3aXRoIGNoZWNrYm94ZXM7IG9ubHkgb3JkZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIHNob3dlZCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0OyB1bnNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIHRlbXBsYXRlKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjEgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIHJlb3JkZXJpbmcgc3R1ZmYgZm9yIG5vdyAoY2F1c2VzIHRyb3VibGUgYXQgdGhpcyB0aW1lKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgZGIgc3R1ZmYgKHBhcmFtcyBvZiBjb250ZW50IGJsb2NrcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRlbXBsYXRlIHdvbiYjMDM5O3QgYmUgc2F2ZWQgaW4gbW9kdWxlIGRiIHRhYmxlIGFueW1vcmUgLT4gaG9wZWZ1bGx5IHNwZWVkIHVwIGxvYWRpbmcgdGltZSk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggZHVwbGljYXRlIGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+QWR2YW5jZWRDb250ZW50IDAuMyAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gcmV3cml0ZSBjb2RlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBidWdmaXhlczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVuYW1lZCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIHVzaW5nIHNlcGFyYXRlIG1vZHVsZSB0ZW1wbGF0ZSBub3cgdG8gZHNwbGF5IGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhZ2UgYWxpYXMgaW5oZXJpdGFuY2U8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjx1bD4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDMgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gTWFqb3IgQnVnZml4IChtaXNzaW5nICZxdW90OzsmcXVvdDsgYW5kIHN0cmFuZ2UgaW52aXNpYmxlIGludmFsaWQgY2hhcnMpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDIgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwYXJhbSAmcXVvdDtkZWxpbWl0ZXImcXVvdDs8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggc21hcnR5IHByb2Nlc3Npbmc8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mICZxdW90O1Nob3cgbG9naW4gZm9ybSZxdW90OzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgcGFnZSBhbGlhcyB0byBhZGQgaXQgYXMgcHJlZmZpeDsgc28gaWYgeW91IGhhdmUgYSBwYWdlIGNhbGxlZCAmcXVvdDttZW1iZXJzJnF1b3Q7IGFuZCBzZWxlY3QgZm9yIGVhY2ggY2hpbGQgcGFnZSAmcXVvdDtpbmhlcml0IHBhZ2UgYWxpYXMmcXVvdDsgYWxsIGNoaWxkIHBhZ2VzIGFsaWFzZXMgd2lsbCBzdGFydCB3aXRoICZxdW90O21lbWJlcnNfJnF1b3Q7OyBtYWtlcyBmaWx0ZXJpbmcgb2YgbWVudSBlbnRyaWVzIHdpdGggTWVudU1hbmFnZXIgcGFyYW0gJnF1b3Q7ZXhjbHVkZXByZWZmaXgmcXVvdDsgb3IgJnF1b3Q7aW5jbHVkZXByZWZmaXgmcXVvdDsgZWFzaWVyLjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXM8L3A+PC9saT4gDQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAoQXByaWwgMjAxMCk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gY29udmVydGVkIHRoZSBzaW5nbGUgZmlsZSBpbnRvIGEgbW9kdWxlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW5hbWVkIHBhcmFtczsgc2VlIG1vZHVsZSBoZWxwIGZvciBtb3JlIGRldGFpbHM8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+U2luZ2xlIGZpbGUgcmVsZWFzZXMgKGRpc2NvbnRpbnVlZCk8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPg0KCQk8cD48c3Ryb25nPjEuNCAoTWFyY2ggMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBjbGVhbnVwIGNvZGUgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXMgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcmVkaXJlY3QgcGFnZSBpZiBmZXUgaXMgbm90IGxvZ2dlZCBpbiAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBmZXVfYWNjZXNzIGFuZCByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3MgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbiAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX29ubHkgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgc21hcnR5IGxvZ2ljIGluIGJhY2tlbmQgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHN0eWxlIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmaWx0ZXIgKGZpbHRlcmluZyBpbWFnZXMgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIEltZ01vZGUgKGRyb3Bkb3duIG9yIEltYWdlTWFuYWdlcikgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHNtYXJ0eU9uIChmb3IgcHJvY2Vzc2luZyBzbWFydHkgdmFycyBvZiB0aGUgdGVtcGF0ZSBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MS4zIChBcHJpbCAyMDA5KTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIENNU21zIDEuNi4qIHJlYWR5IC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGZldSBhY2Nlc3Mgb3B0aW9uIC0gKE5hTik8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz4xLjIgKE1hcmNoIDIwMDkpOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIEEgc2luZ2xlIGZpbGUgQ29udGVudDIuaW5jLnBocCB0aGF0IG5lZWRzIHRvIGJlIHBhY2VkIGluIGxpYi9jbGFzc2VzL2NvbnRlbnR0eXBlcy48L3A+PC9saT4NCgkJCTxsaT48cD4tIGxheW91dC9vcHRpb25zIG9mIGJhY2tlbmQgcGFuZWwgY2FuIGJlIGNvbnRyb2xlZCBieSBhZGRpdGlvbmFsIHNtYXJ0eSBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlOyBpbnRlZ3JhdGVkIHRoZSB7Y29udGVudF9pbWFnZX0gdGFnIC0gKG1vZCBieSBOYU4pPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8YnIgLz4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMzM1Njk4NzA4LjEyODQ1ODYyMTcuMTI5MjE2MDEwNS4xMjkyMTcwOTA1LjU1OCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyOTIxMDQ0NTIuNTUzLjQ5LnV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY249KHJlZmVycmFsKXx1dG1jbWQ9cmVmZXJyYWx8dXRtY2N0PS9pbmRleC5waHAnOwokbGFuZ1sncWNhJ10gPSAnUDAtMTU1MTMwNjE3OS0xMjg0NTg2MjE2NzExJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMS4xMC4xMjkyMTcwOTA1JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0NvbnRpbnV0IEF2YW5zYXQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgJXMgYSBmb3N0IGluc3RhbGF0JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgJXMgYSBmb3N0IGRlemluc3RhbGF0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgYSBmb3N0IGFjdHVhbGl6YXQgbGEgdmVyc2l1bmVhICVzJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgJXMgYSBmb3N0IGluc3RhbGF0Lic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgJXMgYSBmb3N0IGRlemluc3RhbGF0Lic7CiRsYW5nWydjb25maXJtdW5pbnN0YWxsJ10gPSAnU2lndXIgc2UgZG9yZXN0ZSBkZXppbnN0YWxhcmVhIG1vZHVsdWx1aSBDb250aW51dEF2YW5zYXQ/JzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpZmljYXJlOjwvc3Ryb25nPiB7Y29udGVudCBibG9jaz0mIzAzOTslcyYjMDM5OyAuLi4gfSBlc3RlIGFtYmlndXUuIE51bWVsZSBkZSBibG9jdXJpIHRyZWJ1aWUgc2EgZmllIHVuaWNlLiA8YnIgLz5BY2VzdCBibG9jIGVzdGUgZGV6YWN0aXZhdC4gTnVtYWkgcHJpbXVsIGJsb2MgdmEgZmkgYWZpc2F0LiBWZXJpZmljYSBzYWJsb251bCBwYWdpbmlpIHNpIGFsZWdlIG8gYWx0YSB2YWxvYXJlIHBlbnRydSBwYXJhbWV0cnVsICYjMDM5O2Jsb2NrJiMwMzk7LjwvZW0+JzsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gPSAnPGVtPjxzdHJvbmc+Tm90aWZpY2FyZTo8L3N0cm9uZz4gQWNlc3QgYmxvYyBlc3RlIGZvbG9zaXQgZGUgbWFpIG11bHRlIG9yaSBpbiBzYWJsb24uIEFpY2kgZXN0ZSBhZmlzYXQgbnVtYWkgcHJpbXVsIGJsb2MuPC9lbT4nOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpZmljYXJlOjwvc3Ryb25nPiBOdSBzZSBwb2F0ZSBmb2xvc2kgbnVtZWxlIGRlIHByb3ByaWV0YXRlIGRlIGNvbnRpbnV0IHNpbXBsdSAmIzAzOTslcyYjMDM5OyBjYSB2YWxvYXJlIGEgcGFyYW1ldHJ1bHVpICYjMDM5O2Jsb2NrJiMwMzk7LiA8YnIgLz5BY2VzdCBibG9jIGVzdGUgZGV6YWN0aXZhdC4gVmVyaWZpY2Egc2FibG9udWwgcGFnaW5paSBzaSBhbGVnZSBvIGFsdGEgdmFsb2FyZSBwZW50cnUgcGFyYW1ldHJ1bCAmIzAzOTtibG9jayYjMDM5Oy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnRGF0YSBkZSBmaW5hbGl6YXJlIHRyZWJ1aWUgc2EgZmllIGR1cGEgZGF0YSBkZSBwb3JuaXJlLic7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdGb2xkZXJ1bCBjdXJlbnQnOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0RpbWVuc2l1bmUgaW1hZ2luZSc7CiRsYW5nWydzaXplJ10gPSAnRGltZW5zaXVuZSBmaXNpZXInOwokbGFuZ1snaW5oZXJpdF9mcm9tX3BhcmVudCddID0gJ01vc3Rlbml0IGRlIGxhIHBhcmludGUnOwokbGFuZ1snbm9uZSddID0gJ25pbWljJzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdpbnZhbGlkKGEpJzsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWZpY2FyZTo8L3N0cm9uZz4gVmFsb2FyZSBpbnZhbGlkYSAmIzAzOTslcyYjMDM5OyBhIHBhcmFtZXRydWx1aSBibG9ja190eXBlIGluIGJsb2N1bCAmIzAzOTslcyYjMDM5Oy48YnIgLz5WZXJpZmljYSBzYWJsb251bCBwYWdpbmlpLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ0RhJzsKJGxhbmdbJ25vJ10gPSAnTnUnOwokbGFuZ1snZnJvbnRlbmRhY2Nlc3MnXSA9ICdBY2NlcyBmcm9udGVuZCc7CiRsYW5nWydyZWRpcmVjdHBhZ2UnXSA9ICdQYWdpbmEgZGUgcmVkaXJlY3Rpb25hcmUgZGFjYSBudSBzZSBwZXJtaXRlIGFjY2VzdWwnOwokbGFuZ1snc2hvd2xvZ2luZm9ybSddID0gJ0FmaXNhcmUgZm9ybXVsYXIgYXV0ZW50aWZpY2FyZSc7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdOdW1haSB1dGlsaXphdG9yaWkgaW5yZWdpc3RyYXRpJzsKJGxhbmdbJ2Jsb2NrJ10gPSAnQmxvYyc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnRm9sb3NpcmUgZGF0YSBkZSBleHBpcmFyZSc7CiRsYW5nWydzdGFydGRhdGUnXSA9ICdEYXRhIHN0YXJ0JzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICdEYXRhIG9wcmlyZSc7CiRsYW5nWydibG9ja2NvbnRlbnQnXSA9ICdDb250aW51dCBibG9jJzsKJGxhbmdbJ3NldHBhZ2VpbmFjdGl2ZSddID0gJ1NldGFyZSBwYWdpbmEgY2EgaW5hY3RpdmEnOwokbGFuZ1snZGVsZXRlcGFnZSddID0gJ1N0ZXJnZXJlIHBhZ2luYSc7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdBY3RpdW5lIGRlemluc3RhbGFyZSc7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ1NldGFyZSB0b2F0ZSBwYWdpbmlsZSBjYSB0aXAgY29udGludXQnOwokbGFuZ1snc2V0Y29udGVudDInXSA9ICdTZXRhcmUgdG9hdGUgcGFnaW5pbGUgY2EgdGlwIGNvbnRpbnV0IHNpIGlubGF0dXJhcmUgYmxvY3VyaSBkZSBjb250aW51dCBhZGl0aW9uYWxlJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmludGVsZSBhdSBmb3N0IGFjdHVhbGl6YXRlLic7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ09wZXJhdGl1bmkgZmlzaWVyZSc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnSW5jYXJjYXJlIGZpc2llciBub3UnOwokbGFuZ1snY3JlYXRlbmV3ZGlyJ10gPSAnQ3JlYXJlIGZvbGRlciBub3UnOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ0luY2FyY2FyZSc7CiRsYW5nWydjcmVhdGVkaXInXSA9ICdDcmVhcmUnOwokbGFuZ1snc3VjY2VzcyddID0gJ09LJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJvYXJlJzsKJGxhbmdbJ2ZpbGV1cGxvYWRlZCddID0gJ0Zpc2llcnVsICYjMDM5OyVzJiMwMzk7IGEgZm9zdCBpbmNhcmNhdCc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdOdSBhIGZvc3QgZGF0IHVuIG51bWUgZGUgZm9sZGVyJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ051bWVsZSBkZSBmb2xkZXIgJiMwMzk7JXMmIzAzOTsgZXhpc3RhIGRlamEnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ0ZvbGRlcnVsIG5vdSAmIzAzOTslcyYjMDM5OyBhIGZvc3QgY3JlYXQgY3Ugc3VjY2VzJzsKJGxhbmdbJ25ld2RpcmZhaWxlZCddID0gJ0EgYXBhcnV0IG8gZXJvYXJlIGxhIGNyZWFyZWEgZm9sZGVydWx1aSAmIzAzOTslcyYjMDM5Oyc7CiRsYW5nWydub2ZpbGUnXSA9ICdOdSBhIGZvc3QgaW5jYXJjYXQgbmljaXVuIGZpc2llcic7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnRmlzaWVydWwgaW5jYXJjYXQgJiMwMzk7JXMmIzAzOTsgZXN0ZSBwcmVhIG1hcmUnOwokbGFuZ1snY29udGFpbnNpbGxlZ2FsY2hhcnMnXSA9ICdOdW1lbGUgZGUgZmlzaWVyICYjMDM5OyVzJiMwMzk7IGNvbnRpbmUgdW51bCBzYXUgbWFpIG11bHRlIGNhcmFjdGVyZSBuZXBlcm1pc2UgKCYjMDM5OywmcXVvdDssKywqLFwsLywmYW1wOywkKSc7CiRsYW5nWyd1cGxvYWRmYWlsZWQnXSA9ICdFcm9hcmUgbGEgbXV0YXJlIGZpc2llcnVsdWkgaW5jYXJjYXQgJiMwMzk7JXMmIzAzOTsgbGEgbG9jdWwgbHVpJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGUnXSA9ICdTaWd1ciBkb3Jlc3RpIHN0ZXJnZXJlYSBmaXNpZXJ1bHVpIFwmIzAzOTslc1wmIzAzOTs/JzsKJGxhbmdbJ2RlbGV0ZWZpbGVzdWNjZXNzJ10gPSAnRmlzaWVydWwgJiMwMzk7JXMmIzAzOTsgYSBmb3N0IHN0ZXJzJzsKJGxhbmdbJ2RlbGV0ZWZpbGVmYWlsZWQnXSA9ICdGaXNpZXJ1bCAmIzAzOTslcyYjMDM5OyBudSBhIHB1dHV0IGZpIHN0ZXJzJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcmZhaWxlZCddID0gJ0ZvbGRlcnVsICYjMDM5OyVzJiMwMzk7IG51IGEgcHV0dXQgZmkgc3RlcnMnOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ0ZvbGRlcnVsICYjMDM5OyVzJiMwMzk7IGEgZm9zdCBzdGVycyc7CiRsYW5nWydjb25maXJtZGVsZXRlZGlyJ10gPSAnU2lndXIgZG9yZXN0aSBzdGVyZ2VyZWEgZm9sZGVydWx1aSBcJiMwMzk7JXNcJiMwMzk7Pyc7CiRsYW5nWydkZWxldGVkaXInXSA9ICdTdGVyZ2VyZSBzdWJmb2xkZXJlIGdvYWxlJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdTdGVyZ2VyZSBmaXNpZXInOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnUmVzdHJpY3Rpb25hcmUgYWNjZXMgdXRpbGl6YXRvcmkgbGEgZm9sZGVyJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ0FmaXNhcmUgb3B0aXVuaSBhZG1pbmlzdHJhcmUgZmlzaWVyZSc7CiRsYW5nWydzaG93dGh1bWJuYWlsZmlsZXMnXSA9ICdBZmlzYXJlIG1pbmlhdHVyaSc7CiRsYW5nWydhbGxvd3NjYWxpbmcnXSA9ICdTZSBwZXJtaXRlIHJlZGltZW5zaW9uYXJlYSBvbi10aGUtZmx5IGEgaW1hZ2luaWxvciBpbmNhcmNhdGUnOwokbGFuZ1snc2NhbGluZ3dpZHRoJ10gPSAnTGF0aW1lIHNjYWxhcmUnOwokbGFuZ1snc2NhbGluZ2hlaWdodCddID0gJ0luYWx0aW1lIHNjYWxhcmUnOwokbGFuZ1snZGVmYXVsdGRpbWVuc2lvbnMnXSA9ICdEaW1lbnNpdW5pIGltcGxpY2l0ZSc7CiRsYW5nWydhdXRvJ10gPSAnQXV0b21hdCc7CiRsYW5nWydyZWxhdGl2ZXVybHMnXSA9ICdVUkwtdXJpIHJlbGF0aXZlJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ1N0aWwgc2VsZWN0b3IgZmlzaWVyZSc7CiRsYW5nWydmaWxlcGlja2Vyc2l6ZSddID0gJ0RpbWVuc2l1bmUgc2VsZWN0b3IgZmlzaWVyZSc7CiRsYW5nWydmaWxlbmFtZW9ubHknXSA9ICdBZmlzYXJlIG51bWUgZmlzaWVyZSc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ0FmaXNhcmUgbWluaWF0dXJpJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdBZmlzYXJlIGZpc2llcmUtbWluaWF0dXJpIGNhIGZpc2llcmUgbm9ybWFsZSc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICdBZmlzYXJlIHNpIG51bWUgZmlzaWVyZSBzaSBtaW5pYXR1cmknOwokbGFuZ1snbWFrZXRodW1ibmFpbCddID0gJ0NyZWFyZSBtaW5pYXR1cmknOwokbGFuZ1snZmlsZXBpY2tlcnNldHRpbmdzJ10gPSAnU2V0YXJpIHNlbGVjdG9yIGZpc2llcmUnOwokbGFuZ1sncmVzaXpldG8nXSA9ICdSZWRpbWVuc2lvbmFyZSBpbWFnaW5lIGxhJzsKJGxhbmdbJ2tlZXBhc3BlY3RyYXRpbyddID0gJ1NlIHBhc3RyZWF6YSBwcm9wb3J0aWEgZGltZW5zaXVuaWxvcic7CiRsYW5nWydhbGxvd3Vwc2NhbGluZyddID0gJ1NlIHBlcm1pdGUgc2NhbGFyZWEgaW4gc3VzJzsKJGxhbmdbJ2RlY2ltYWxkZWxpbWl0ZXInXSA9ICcuICc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywgJzsKJGxhbmdbJ2Rpcm5vdGZvdW5kJ10gPSAnRm9sZGVydWwgJiMwMzk7JXMmIzAzOTsgbnUgYSBmb3N0IGdhc2l0ISc7CiRsYW5nWydzZWxlY3RpbWFnZSddID0gJ1Jhc2ZvaXJlIGltYWdpbmknOwokbGFuZ1snc2VsZWN0ZmlsZSddID0gJ1Jhc2ZvaXJlIGZpc2llcmUnOwokbGFuZ1snZGVsZXRlcGFnZXMnXSA9ICdTdGVyZ2VyZSB0b2F0ZSBwYWdpbmlsZSBkZSB0aXB1bCBDb250aW51dEF2YW5zYXQnOwokbGFuZ1sndXNlbWltZXR5cGUnXSA9ICdGb2xvc2lyZSBtaW1lLXR5cGUgcGVudHJ1IGEgb2J0aW5lIHRpcHVsIGRlIGZpc2llcic7CiRsYW5nWydpbXBvcnRwYWdlcyddID0gJ1NldGFyZSB0b2F0ZSBwYWdpbmlsZSBkZSB0aXAgY29udGludXQgY2EgdGlwIENvbnRpbnV0QXZhbnNhdC4nOwokbGFuZ1sncGFnZXNpbXBvcnRlZCddID0gJ1RvYXRlIHBhZ2luaWxlIGRlIGNvbnRpbnV0IGF1IGZvc3Qgc2V0YXRlIGNhIENvbnRpbnV0YXZhbnNhdC4nOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ1NpZ3VyIGRvcmVzdGkgc2NoaW1iYXJlYSB0aXB1bHVpIHBlbnRydSB0b2F0ZSBwYWdpbmlsZSBkZSBjb250aW51dD8nOwokbGFuZ1snbm9taW1ldHlwZSddID0gJ051IGVzdGUgZGlzcG9uaWJpbGEgbmljaW8gZnVuY3RpZSBtaW1lLXR5cGUgc2F1IG51IGZ1bmN0aW9uZWF6YSBpbmNvcmVjdC4gQWNlYXN0YSBjYXJhY3RlcmlzdGljYSBlc3RlIGRlemFjdGl2YXRhLic7CiRsYW5nWyd0b2dnbGVfbWVzc2FnZSddID0gJ0FzY3VuZGUgYWNlc3QgbWVzYWonOwokbGFuZ1snY29udGVudHNldHRpbmdzJ10gPSAnU2V0YXJpIGltcGxpY2l0ZSBDb250aW51dEF2YW5zYXQnOwokbGFuZ1sncmVkaXJlY3RwYXJhbXMnXSA9ICdQYXJhbWV0cmkgVVJMIGNhcmUgc2UgYWRhdWdhIGxhIHJlZGlyZWN0YXJlJzsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gPSAnRm9sb3NpcmUgc21hcnR5IHBlbnRydSBwcm9jZXNhcmVhIHBhcmFtZXRyaWxvcic7CiRsYW5nWydub2ltYWdlZmlsZSddID0gJyYjMDM5OyVzJiMwMzk7IG51IGVzdGUgdW4gZmlzaWVyIGltYWdpbmUnOwokbGFuZ1snZmlsZXR5cGVub3RhbGxvd2VkJ10gPSAnVGlwdWwgZGUgZmlzaWVyICYjMDM5OyVzJiMwMzk7IG51IGVzdGUgcGVybWlzJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTE4MzgyMTUwNDMtMTI4MjgwNzUzMzkzNCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyODI4MDc5NzIuMS4yLnV0bWNzcj1nb29nbGV8dXRtY2NuPShvcmdhbmljKXx1dG1jbWQ9b3JnYW5pY3x1dG1jdHI9Y21zbXMnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMTkxODczODE3LjEyODI4MDc1MzQuMTI4MjgwNzUzNC4xMjgyODA3NTM0LjEnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEyLjkuMTI4MjgwNzYxNTM2OCc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ru_RU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ9Cg0LDRgdGI0LjRgNC10L3QvdC+0LUg0YHQvtC00LXRgNC20LjQvNC+0LUnOwokbGFuZ1snYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnXSA9ICfQoNCw0YHRiNC40YDQtdC90L3Ri9C1INC+0L/RhtC40LgnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAn0JzQvtC00YPQu9GMIEFkdmFuY2VkQ29udGVudCAlcyDRg9GB0YLQsNC90L7QstC70LXQvSc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ9Cc0L7QtNGD0LvRjCBBZHZhbmNlZENvbnRlbnQgJXMg0YPQtNCw0LvQtdC9JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAn0JzQvtC00YPQu9GMIEFkdmFuY2VkQ29udGVudCDQvtCx0L3QvtCy0LvQtdC9INC00L4gJXMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICfQnNC+0LTRg9C70YwgQWR2YW5jZWRDb250ZW50ICVzINGD0YHRgtCw0L3QvtCy0LvQtdC9Lic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAn0JzQvtC00YPQu9GMIEFkdmFuY2VkQ29udGVudCAlcyDRg9C00LDQu9C10L0uJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICfQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDQvNC+0LTRg9C70YwgQWR2YW5jZWRDb250ZW50Pyc7CiRsYW5nWydub3RpY2VfZHVwbGljYXRlY29udGVudCddID0gJzxlbT4gPHN0cm9uZz4g0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1OiA8L3N0cm9uZz4g0K3RgtC+0YIg0LHQu9C+0Log0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC90LXRgdC60L7Qu9GM0LrQviDRgNCw0Lcg0LIg0YjQsNCx0LvQvtC90LUuINCS0Ysg0LLQuNC00LjRgtC1INC30LTQtdGB0Ywg0YLQvtC70YzQutC+INC/0LXRgNCy0YvQuSDQsdC70L7Qui4gPC9lbT4NCic7CiRsYW5nWydlcnJvcl9iYXNpY2F0dHJpYiddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gQ2Fubm90IHVzZSBiYXNpYyBjb250ZW50IHByb3BlcnR5IG5hbWUgXCclc1wnIGFzIHZhbHVlIG9mIHBhcmFtIFwnYmxvY2tcJy4gPGJyIC8+VGhpcyBibG9jayBpcyBkaXNhYmxlZC4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlIGFuZCBjaG9zZSBhIGRpZmZlcmVudCB2YWx1ZSBvZiBwYXJhbSBcJ2Jsb2NrXCcuPC9lbT4nOwokbGFuZ1snZXJyb3JfZXhwaXJlZGF0ZSddID0gJ9CU0LDRgtCwINC+0LrQvtC90YfQsNC90LjRjyDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0L/QvtC30LbQtSDQtNCw0YLRiyDQvdCw0YfQsNC70LAuJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ9Ci0LXQutGD0YnQuNC5INC60LDRgtCw0LvQvtCzJzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICfQoNCw0LfQvNC10YAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyc7CiRsYW5nWydzaXplJ10gPSAn0KDQsNC30LzQtdGAINGE0LDQudC70LAnOwokbGFuZ1snaW5oZXJpdF9mcm9tX3BhcmVudCddID0gJ9Cd0LDRgdC70LXQtNC+0LLQsNGC0Ywg0L7RgiDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0LPQvic7CiRsYW5nWydub25lJ10gPSAn0L3QuNGH0LXQs9C+JzsKJGxhbmdbJ2ludmFsaWQnXSA9ICfQvdC10LLQtdGA0L3Qvic7CiRsYW5nWydpbnZhbGlkX2Jsb2NrdHlwZSddID0gJzxlbT48c3Ryb25nPtCe0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtTo8L3N0cm9uZz4g0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1IFwnJXNcJyDQv9Cw0YDQsNC80LXRgtGA0LAgYmxvY2tfdHlwZSDQsiDQsdC70L7QutC1IFwnJXNcJy48YnIgLz7Qn9GA0L7QstC10YDRjNGC0LUg0LLQsNGIINGI0LDQsdC70L7QvSDRgdGC0YDQsNC90LjRhtGLLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcyddID0gJzxlbT48c3Ryb25nPtCe0YjQuNCx0LrQsDo8L3N0cm9uZz4g0J3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC/0LDRgNCw0LzQtdGC0YDQvtCyLiA8YnIgLz7QntGC0YHRg9GC0YHRgtCy0YPQtdGCINC/0LDRgNCw0LzQtdGC0YAgXCclc1wnINC00LvRjyDQsdC70L7QutCwIFwnJXNcJy4g0J/RgNC+0LLQtdGA0YzRgtC1INCy0LDRiCDRiNCw0LHQu9C+0L0g0YHRgtGA0LDQvdC40YbRiy48L2VtPic7CiRsYW5nWyd5ZXMnXSA9ICfQlNCwJzsKJGxhbmdbJ25vJ10gPSAn0J3QtdGCJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQg0LTQvtGB0YLRg9C/JzsKJGxhbmdbJ3JlZGlyZWN0cGFnZSddID0gJ1JlZGlyZWN0IFBhZ2UsINC10YHQu9C4INC90LXRgiDQtNC+0YHRgtGD0L/QsCc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAn0J/QvtC60LDQt9Cw0YLRjCDRhNC+0YDQvNGDINCy0YXQvtC00LAnOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAn0KLQvtC70YzQutC+INC00LvRjyDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LknOwokbGFuZ1snYmxvY2snXSA9ICfQkdC70L7Quic7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAn0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC00LDRgtGDINC+0LrQvtC90YfQsNC90LjRjyc7CiRsYW5nWydzdGFydGRhdGUnXSA9ICfQlNCw0YLQsCDQvdCw0YfQsNC70LAnOwokbGFuZ1snZW5kZGF0ZSddID0gJ9CU0LDRgtCwINC+0LrQvtC90YfQsNC90LjRjyc7CiRsYW5nWydibG9ja2NvbnRlbnQnXSA9ICfQkdC70L7QuiDRgdC+0LTQtdGA0LbQuNC80L7QtSc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICfQo9GB0YLQsNC90L7QstC40YLRjCDRjdGC0YMg0YHRgtGA0LDQvdC40YbRgywg0LrQsNC6INC90LXQsNC60YLQuNCy0L3Rg9GOJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICfQo9C00LDQu9C40YLRjCDRgdGC0YDQsNC90LjRhtGDJzsKJGxhbmdbJ3VuaW5zdGFsbGFjdGlvbiddID0gJ9Cj0LTQsNC70LjRgtGMINC00LXQudGB0YLQstC40LUnOwokbGFuZ1snc2V0Y29udGVudDEnXSA9ICfQo9GB0YLQsNC90L7QstC40YLRjCDQstGB0LUg0YHRgtGA0LDQvdC40YbRiyDRgtC40L/QsCBBZHZhbmNlZENvbnRlbnQg0L7QsdGA0LDRgtC90L4g0Log0YLQuNC/0YMgQ29udGVudCc7CiRsYW5nWydzZXRjb250ZW50MiddID0gJ9Cj0YHRgtCw0L3QvtCy0LjRgtGMINCy0YHQtSDRgdGC0YDQsNC90LjRhtGLINGC0LjQv9CwIEFkdmFuY2VkQ29udGVudCDQvtCx0YDQsNGC0L3QviDQuiDRgtC40L/RgyBDb250ZW50INC4INGD0LTQsNC70LjRgtGMINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LUg0LHQu9C+0LrQuCDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+JzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCDQvtCx0L3QvtCy0LvQtdC90YsnOwokbGFuZ1snc3VjY2VzcyddID0gJ9Ce0JonOwokbGFuZ1snZXJyb3InXSA9ICfQntGI0LjQsdC60LAnOwokbGFuZ1snZGVsZXRlcGFnZXMnXSA9ICfQo9C00LDQu9C40YLRjCDQstGB0LUg0YHRgtGA0LDQvdC40YbRiyDRgtC40L/QsCBBZHZhbmNlZENvbnRlbnQnOwokbGFuZ1snaW1wb3J0cGFnZXMnXSA9ICfQo9GB0YLQsNC90L7QstC40YLRjCDQstGB0LUg0YHRgtGA0LDQvdC40YbRiyDRgtC40L/QsCAlcyDQuiDRgtC40L/RgyAlcy4nOwokbGFuZ1sncGFnZXNpbXBvcnRlZCddID0gJ9CS0YHQtSDRgdC+0LTQtdGA0LbQuNC80L7QtSDRgdGC0YDQsNC90LjRhiwg0YPRgdGC0LDQvdC+0LLQu9C10L3QviDQsiBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ2NvbmZpcm1pbXBvcnQnXSA9ICfQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQuNC30LzQtdC90LjRgtGMINGC0LjQvyDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INC00LvRjyDQstGB0LXRhSDRgdGC0YDQsNC90LjRhj8nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICfQodC60YDRi9GC0Ywg0Y3RgtC+INGB0L7QvtCx0YnQtdC90LjQtSc7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICfQndCw0YHRgtGA0L7QudC60LggQWR2YW5jZWRDb250ZW50INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOJzsKJGxhbmdbJ3JlZGlyZWN0cGFyYW1zJ10gPSAn0LTQvtCx0LDQstC40YLRjCDQv9Cw0YDQsNC80LXRgtGA0YsgVVJMINC/0YDQuCDQv9C10YDQtdC90LDQv9GA0LDQstC70LXQvdC40LgnOwokbGFuZ1snZXZhbHVhdGVzbWFydHknXSA9ICfQmNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgU21hcnR5INC00LvRjyDQvtCx0YDQsNCx0L7RgtC60Lgg0L/QsNGA0LDQvNC10YLRgNC+0LInOwokbGFuZ1snZXJyb3JfbG9hZGluZ19tb2R1bGUnXSA9ICc8ZW0+PHN0cm9uZz7QntGI0LjQsdC60LA6PC9zdHJvbmc+INCd0LUg0LzQvtCz0YMg0LfQsNCz0YDRg9C30LjRgtGMINC80L7QtNGD0LvRjCBcJyVzXCcuICjQntC/0YDQtdC00LXQu9C10L3QviDQtNC70Y8g0LHQu9C+0LrQsCBcJyVzXCcg0LIg0LLQsNGI0LXQvCDRiNCw0LHQu9C+0L3QtSDRgdGC0YDQsNC90LjRhtGLLik8L2VtPic7CiRsYW5nWydlcnJvcl9jb250ZW50YmxvY2tfc3VwcG9ydCddID0gJzxlbT48c3Ryb25nPtCe0YjQuNCx0LrQsDo8L3N0cm9uZz4g0JzQvtC00YPQu9GMIFwnJXNcJyDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgiDQsdC70L7QutC4INC60L7QvdGC0LXQvdGC0LAuICjQntC/0YDQtdC00LXQu9C10L3QviDQtNC70Y8g0LHQu9C+0LrQsCBcJyVzXCcg0LIg0LLQsNGI0LXQvCDRiNCw0LHQu9C+0L3QtSDRgdGC0YDQsNC90LjRhtGLLik8L2VtPic7CiRsYW5nWydzdWNjZXNzX2ltcG9ydHBhZ2VzJ10gPSAn0JLRgdC1INGB0YLRgNCw0L3QuNGG0Ysg0YLQuNC/0LAgJXMg0YPRgdC/0LXRiNC90L4g0L/RgNC40LLQtdC00LXQvdGLINC6INGC0LjQv9GDICVzJzsKJGxhbmdbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSA9ICfQn9C+0LrQsNC30LDRgtGMINCy0LrQu9Cw0LTQutGDINC/0LDRgNCw0LzQtdGC0YDQvtCyIEFkdmFuY2VkQ29udGVudCc7CiRsYW5nWydkaXNwbGF5X3NldHRpbmdzJ10gPSAnJXMgZGlzcGxheSBzZXR0aW5ncyc7CiRsYW5nWydzYXZlX2NvbGxhcHNlX3N0YXR1cyddID0gJ9Ch0L7RhdGA0LDQvdC40YLRjCDRgdGC0LDRgtGD0YEgY29sbHBhc2Ug0LTQu9GPICVzJzsKJGxhbmdbJ2NvbnRlbnRfYmxvY2tzJ10gPSAn0LHQu9C+0LrQuCDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+JzsKJGxhbmdbJ2Jsb2NrX21lc3NhZ2UnXSA9ICfRgdC+0LTQtdGA0LbQuNC80L7QtSDQsdC70L7QutCwINGB0L7QvtCx0YnQtdC90LjRjyc7CiRsYW5nWydibG9ja19ncm91cHMnXSA9ICfQsdC70L7QuiDQs9GA0YPQv9C/JzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdDb2xsYXBzZSAlcyDQv9C+INGD0LzQvtC70YfQsNC90LjRjic7CiRsYW5nWydwZXJfcGFnZSddID0gJ9C90LAg0YHRgtGA0LDQvdC40YbRgyc7CiRsYW5nWydwZXJfdGVtcGxhdGUnXSA9ICfQvdCwINGI0LDQsdC70L7QvSc7CiRsYW5nWydib3RoMSddID0gJ3RlbXBsYXRlIE9SIHBhZ2UgJzsKJGxhbmdbJ2JvdGgyJ10gPSAndGVtcGxhdGUgQU5EIHBhZ2UnOwokbGFuZ1snY29udGVudCddID0gJ9Ch0L7QtNC10YDQttC40LzQvtC1JzsKJGxhbmdbJ2NvbnRlbnQyJ10gPSAn0KDQsNGB0YjQuNGA0LXQvdC90L7QtSDRgdC+0LTQtdGA0LbQuNC80L7QtSc7CiRsYW5nWydwcmVmcyddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCc7CiRsYW5nWydtdWx0aV9pbnB1dCddID0gJ011bHRpIElucHV0cyc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdNdWx0aSBJbnB1dCBUZW1wbGF0ZXMnOwokbGFuZ1snYWRkX211bHRpX2lucHV0J10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXRfdHBsJ10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCB0ZW1wbGF0ZSc7CiRsYW5nWydpbnB1dF9pZCddID0gJ0lucHV0IElEJzsKJGxhbmdbJ2lucHV0X2ZpZWxkcyddID0gJ9Cf0L7Qu9GPINCy0LLQvtC00LAnOwokbGFuZ1sndHBsX25hbWUnXSA9ICfQmNC80Y8g0YjQsNCx0LvQvtC90LAnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICfQqNCw0LHQu9C+0L0g0LjQvNC10LXRgiDQvdC10L7QsdGF0L7QtNC40LzRi9C1INC/0L7Qu9GPINC4INC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDQv9GD0YHRgtGL0LwnOwokbGFuZ1snZXJyb3JfaW5wdXRfZmllbGRzJ10gPSAnSW5wdXQgZmllbGRzIGlzIGEgcmVxdWlyZWQgZmllbGQgYW5kIG1heSBub3QgYmUgZW1wdHkuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2lkJ10gPSAnTm8gaW5wdXQgaWQgZ2l2ZW4gb3IgaW5wdXQgaWQgYWxyZWFkeSBleGlzdHMuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2lkX2V4aXN0cyddID0gJ0lucHV0IElEIGlzIGFscmVhZHkgaW4gdXNlLiBDaG9vc2UgYSBkaWZmZXJlbnQgb25lLiAobXVzdCBiZSB1bmlxdWUpJzsKJGxhbmdbJ211bHRpX2lucHV0X2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgYWRkZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCBkZWxldGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdXBkYXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgYWRkZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgdXBkYXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBkZWxldGVkLic7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSA9ICfQo9C00LDQu9C40YLRjCDQstGL0LHRgNCw0L3QvdGL0LUg0Y3Qu9C10LzQtdC90YLRiyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZSddID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGB0LTQtdC70LDRgtGMINGD0LTQsNC70LjRgtGMINGN0YLQvtGCINGN0LvQtdC80LXQvdGCPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINCy0YvQsdGA0LDQvdC90YvQtSDRjdC70LXQvNC10L3RgtGLPyc7CiRsYW5nWyd1c2VfY29udGVudHR5cGUnXSA9ICfQmNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgY29udGVudHR5cGUnOwokbGFuZ1snaGVscF90cGxfdmFycyddID0gJzxwPjxzdHJvbmc+VGVtcGxhdGUgdmFyczo8L3N0cm9uZz48L3A+DQo8cD48cHJlPjxjb2RlPnskaW5wdXRzfTwvY29kZT48L3ByZT4gaXMgYW4gYXJyYXkgdGhhdCBjb250YWlucyBhbGwgZGVmaW5lZCBpbnB1dCBlbGVtZW50cyBvZiB0aGF0IG11bHRpIGlucHV0IGJsb2NrLjxiciAvPg0KRWFjaCBpbnB1dCBlbGVtZW50IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGl0cyBwYXJhbXMuIDxiciAvPg0KU2VlIG1vZHVsZSBoZWxwIGZvciBtb3JlIGluZm8uPGJyIC8+DQpBZGRpdGlvbmFsIHBhcmFtIGlzICJpbnB1dCIgdGhhdCB3aWxsIHByaW50IG91dCB0aGUgaW5wdXQgZWxlbWVudC48YnIgLz4NClRvIGFjY2VzcyB0aGUgcGFyYW1zIHVzZSB0aGUgZG90IHN5bnRheC48YnIgLz4NCkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT57Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19DQoJeyRlbG0ubGFiZWx9OiZuYnNwO3skZWxtLmlucHV0fTxiciAvPg0Key9mb3JlYWNofTwvY29kZT48L3ByZT4gJzsKJGxhbmdbJ2hlbHAnXSA9ICc8YnIgLz4NCjxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPg0KPHA+VGhpcyBpcyBhIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUgIkNvbnRlbnQiIG9mIENNU21zLjxiciAvPg0KSXQgcHJvdmlkZXMgbW9yZSBmbGV4aWJpbGl0eSBieSBjcmVhdGluZyBjdXN0b20gaW5wdXQgY29udHJvbHMgaW4gYmFja2VuZC48YnIgLz4NClVzZXJzIGNhbiBhZGQgZHJvcGRvd25zLCBtdWx0aXBsZSBzZWxlY3QgbGlzdHMsIGNoZWNrYm94ZXMsIGdyb3VwIGNvbnRlbnQgYmxvY2tzIA0KaW4gc2VwYXJhdGUgcGFnZSB0YWJzLCBibG9jayB0YWJzIGluc2lkZSBhIHBhZ2UgdGFiIG9yIGluIGZpZWxkc2V0cyBieSBqdXN0IA0KdXNpbmcgYWRkaXRpb25hbCBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlIHdoZW4gY2FsbGluZyB0aGUgY29udGVudC48YnIgLz4NCkl0IGFsc28gYWRkcyBhYmlsaXR5IHRvIGdyYW50IGFjY2VzcyBvZiBwYWdlcyB0byBjZXJ0YWluIHVzZXJzIG9mIHRoZSANCkZyb250RW5kVXNlcnMgbW9kdWxlIGFuZCBoaWRlIHRoZSBjb250ZW50LCByZXBsYWNlIGl0IGJ5IHRoZSBsb2dpbiBmb3JtIG9mIHRoZSANCkZyb250RW5kVXNlcnMgbW9kdWxlIG9yIHJlZGlyZWN0IHRvIGEgc3BlY2lmaWVkIHBhZ2Ugc2hvd2luZyB0aGUgbG9naW4gZm9ybSBvciANCmp1c3QgcmVkaXJlY3Qgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlLjxiciAvPg0KUGFnZSBwcm9wZXJ0eSBvZiBGcm9udEVuZFVzZXJzIGFjY2VzcyBhbmQgcmVkaXJlY3QgcGFnZSBjYW4gYmUgaW5oZXJpdGVkIGJ5IA0KcGFyZW50IHBhZ2VzLjwvcD4NCjxwPjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVG8gZ2V0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb250ZW50IHR5cGUgDQppbiBmcm9udGVuZCB5b3UgbmVlZCB0byBjYWxsIHlvdXIgY29udGVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBZHZhbmNlZENvbnRlbnR9IA0KKGNhc2Ugc2Vuc2l0aXZlISkuPGJyIC8+DQpPdGhlcndpc2UgaXQgbWF5IGJlaGF2ZSBsaWtlIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBwbHVnaW4uPC9lbT48L3A+DQo8cD5Zb3UgY2FuIGV2ZW4gdXNlIHNtYXJ0eSBsb2dpYyBpbiBwYXJhbWV0ZXIgdmFsdWVzLiBUaGF0IG1lYW5zIHlvdSBjYW4gdXNlIHRoZSANCnJlc3VsdCBvZiBhIHBsdWdpbiwgYW4gdWR0IG9yIGV2ZW4gYSBtb2R1bGUgb3IganVzdCB0aGUgY29udGVudCBvZiBhIGdsb2JhbCANCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+DQo8aDM+SG93IGlzIGl0IHVzZWQ/PC9oMz4NCjxwPkFmdGVyIGluc3RhbGxhdGlvbiB0aGUgbW9kdWxlIHNldHRpbmdzIGNhbiBiZSBmb3VuZCBpbiAiRXh0ZW5zaW9ucy0+QWR2YW5jZWRDb250ZW50Ii48L3A+DQo8cD5BZGRpdGlvbmFsbHkgeW91IHdpbGwgaGF2ZSBhIG5ldyBjb250ZW50IHR5cGUgIkFkdmFuY2VkQ29udGVudCIgYXZhaWxhYmxlIA0Kd2hlbiBhZGRpbmcvZWRpdGluZyBhIHBhZ2UuPGJyIC8+DQo8cD5BZGQgdGhlIGZvbGxvd2luZyBwYXJhbXMgdG8geW91ciBjb250ZW50IHRhZyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUsIA0KY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICJBZHZhbmNlZENvbnRlbnQiIGFuZCBzZWUgd2hhdCBoYXBwZW5zIA0KaW4gYmFja2VuZC4uLjwvcD4NCjxoMz5XaGF0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZT88L2gzPg0KPHA+YWxsIHBhcmFtcyBhcmUgb3B0aW9uYWw8L3A+DQo8cD48c3Ryb25nPkRlZmF1bHQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIGNvbnRlbnQgYmxvY2sgcGVyIHBhZ2UuIElmIG11bHRpcGxlIGNvbnRlbnQgdGFncyBhcmUgcHV0IG9uIGEgdGVtcGxhdGUsIHRoYXQgbnVtYmVyIG9mIGVkaXQgYm94ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaWYgdGhlIHBhZ2UgaXMgZWRpdGVkLjxiciAvPg0KCQkJCWUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSJTZWNvbmQgQ29udGVudCBibG9jayJ9PC9jb2RlPjxiciAvPg0KCQkJCU5vdywgaWYgeW91IGVkaXQgYSBwYWdlIHRoZXJlIHdpbGwgYmEgYSB0ZXh0YXJlYSBjYWxsZWQgIlNlY29uZCBDb250ZW50IGJsb2NrIi48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChubyB3aGl0ZXNwYWNlcywgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBldGMuKS4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvcGVyIG5hbWUgKHNpbWlsYXIgdG8gdGhlIHBhZ2UgYWxpYXMpLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gdHJ1ZSwgdGhlbiBvbmx5IG9uZSBlZGl0IGxpbmUgd2lsbCBiZSBzaG93biB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIGZhbHNlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLiBPbmx5IHdvcmtzIHdoZW4gYmxvY2sgcGFyYW1ldGVyIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+RGVmYXVsdCBjb250ZW50IHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFnZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQXNzaWducyB0aGUgY29udGVudCB0byBhIHNtYXJ0eSBwYXJhbWV0ZXIsIHdoaWNoIHlvdSBjYW4gdGhlbiB1c2UgaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHBhZ2UsIG9yIHVzZSB0byB0ZXN0IHdoZXRoZXIgY29udGVudCBleGlzdHMgaW4gaXQgb3Igbm90LjxiciAvPg0KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPg0KCQkJCTxjb2RlPntjb250ZW50IGFzc2lnbj1wYWdlY29udGVudH08YnIgLz4NCgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9IiRwYWdlY29udGVudCJ9PC9jb2RlPjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gRm9yIHNvbWUgcmVhc29uIHRoaXMgcGFyYW0gZG9lcyBub3Qgd29yayBhdCB0aGUgbW9tZW50IHdpdGggdGhlIG1vZHVsZSBwbHVnaW4ge0F2YW5jZWRDb250ZW50fS4gVXNlIDxiciAvPjxjb2RlPntjYXB0dXJlIGFzc2lnbj0iZm9vIn17QWR2YW5jZWRDb250ZW50fXsvY2FwdHVyZX08L2NvZGU+IDxiciAvPmluc3RlYWQuPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5BZHZhbmNlZCBwYXJhbXM6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdHlwZTwvdHQ+ICh0ZXh0LGNoZWNrYm94LGRyb3Bkb3duLHNlbGVjdF9tdWx0aXBsZSxkYXRlLG11bHRpX2lucHV0KSANCgkJPHVsPg0KCQkJPGxpPkFsbG93cyB5b3UgdG8gc3BlY2lmeSB3aGF0IGNvbnRlbnQgY29udHJvbCB0eXBlIGlzIHVzZWQgaW4gdGhlIGJhY2sgZW5kLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5wYWdlX3RhYjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGlzIHBhcmFtZXRlciBzZXRzIHRoZSB0YWIgaW4gd2hpY2ggdGhlIGNvbnRlbnQgYmxvY2sgaXMgZGlzcGxheWVkIGluIHRoZSBiYWNrZW5kLjxiciAvPg0KCQkJCVBvc3NpYmxlIHZhbHVlcyBhcmUgIm1haW4iICggPSBUYWIgIk1haW4gTWVudSIpLCAib3B0aW9ucyIgKCA9IFRhYiAiT3B0aW9ucyIpLCBvciBhbnkgb3RoZXIgYXJiaXRyYXJ5IHZhbHVlPGJyIC8+DQoJCQkJPGVtPmUuZy4geW91IGNhbiBhZGQgYSBjaGVja2JveCB0byB0aGUgb3B0aW9ucyB0YWIgb3IgY3JlYXRlIG5ldyB0YWJzPC9lbT4uDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIHRoZSBibG9ja3Mgd2l0aGluIGEgcGFnZSB0YWIgY2FuIGJlIGZ1cnRoZXIgZGl2aWRlZCBpbnRvIHRhYnMgb3IgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX2dyb3VwPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIG11bHRpcGxlIGJsb2NrcyBjYW4gYmUgZ3JvdXBlZCBpbiBhIGZpZWxkc2V0LiBBbnkgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCBhcyBhIHBvc3NpYmxlIHZhbHVlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hY3RpdmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gZGlzYWJsZSBhIGNvbnRlbnQgYmxvY2suIERpc2FibGVkIGNvbnRlbnQgYmxvY2tzIHdvblwndCBiZSBzaG93biBpbiBiYWNrZW5kIGFzIHdlbGwgYXMgaW4gZnJvbnRlbmQuIChvbmx5IHdvcmtzIHdpdGgge0FkdmFuY2VkQ29udGVudH0gcGx1Z2luKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl9ncm91cHM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfdXNlcnM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiB1c2VyIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGlzIGJsb2NrLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHRoZSBwYXJhbXMgPHR0PmVkaXRvcl91c2VyczwvdHQ+IGFuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IGFyZSBlbXB0eSB0aGUgYmxvY2sgbWF5IGJlIGVkaXRlZCBieSBhbnkgdXNlciB3aXRoIHN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byBlZGl0IGEgcGFnZTwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4NCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgbGlzdCBvZiBmZXUgZ3JvdXAgaWRzIHNlcGFyYXRlZCBieSBhIGNvbW1hLjxiciAvPg0KCQkJCVRoaXMgc2hvd3MgdGhlIGNvbnRlbnQgYmxvY2sgb25seSB0byBjZXJ0YWluIGZldSBncm91cHMuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjdGlvbjwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJU3BlY2lmeSBpZiB0aGUgbG9naW4gZm9ybSBvZiB0aGUgZmV1IG1vZHVsZSB3aWxsIGJlIHNob3duIG9yIG5vdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBsb2dpbiBmb3JtIHdpbGwgb25seSBiZSBzaG93biBvbmUgdGltZS48YnIgLz4NCgkJCQlJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYmxvY2tzIHdpdGggbGltaXRlZCBmZXVfYWNjZXNzIGFuZCBmZXVfYWN0aW9uIHNldCB0byB0cnVlIG9ubHkgdGhlIGZpcnN0IGJsb2NrcyBsb2dpbiBmb3JtIHdpbGwgYmUgc2hvd24gYW5kIGFsbCBvdGhlciBibG9ja3Mgd2lsbCBqdXN0IGJlIGVtcHR5LjwvZW0+PGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWxsb3dfbm9uZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+U2V0IHRvIHRydWUgaWYgdGhlIHVzZXIgbWF5IGVudGVyIGVtcHR5IHZhbHVlcy4gPGJyIC8+SWYgc2V0IHRvIGZhbHNlIGFuZCB2YWx1ZSBpcyBlbXB0eSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgcGFyYW0gImRlZmF1bHQiIHdpbGwgYmUgdXNlZC4gPGJyIC8+SWYgc2V0IHRvIHRydWUgYW5kIGJsb2NrIGlzIG9mIHR5cGUgaW1hZ2UvZmlsZSB0aGUgb3B0aW9uICJub25lIiAobW9kZT0iZHJvcGRvd24iKSBvciBhIGJ1dHRvbiB0byBjbGVhciB0aGUgc2VsZWN0ZWQgZmlsZS9pbWFnZSB2YWx1ZSAobW9kZT0iZmlsZXBpY2tlciIpIHdpbGwgYmUgZGlzcGxheWVkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zbWFydHk8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVR1cm4gc21hcnR5IHByb2Nlc3Npbmcgb2YgdmFsdWVzIG9uL29mZi48YnIgLz4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSBhbnkgZ2l2ZW4gdmFsdWUgd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhlIHNtYXJ0eSBlbmdpbmUuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOiA8L3N0cm9uZz4gQ29uc2lkZXIgdGhhdCB5b3UgY2Fubm90IHVzZSB0aGUgZGVmYXVsdCBzbWFydHkgZGVsaW1pdGVycyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0ZW1wbGF0ZS4gVGhpcyB3aWxsIGNhdXNlIHNtYXJ0eSBlcnJvcnMgaW4gZnJvbnRlbmQuPGJyIC8+DQoJCQkJU28geW91IG5lZWQgdG8gdXNlIDo6OiBhcyBkZWxpbWl0ZXIgaW5zdGVhZC48YnIgLz48L2VtPg0KCQkJCUUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSJDYXRlZ29yaWVzIiBsYWJlbD0iU2VsZWN0IGEgY2F0ZWdvcnkiIGJsb2NrX3R5cGU9ImRyb3Bkb3duIiBpdGVtcz0iOjo6Z2xvYmFsX2NvbnRlbnQgbmFtZT1cJ2NhdGVnb3J5bGlzdFwnOjo6IiBzbWFydHk9InRydWUifTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZXNjcmlwdGlvbjwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZS9mYWxzZSB0byBkaXNwbGF5IGJsb2NrIGluIGJhY2tlbmQgaW4gY29sbGFwc2VkL2V4cGFuZGVkIG1vZGUgYnkgZGVmYXVsdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHdpbGwgYmUgYWx3YXlzIGZhbHNlIGlmIG5vX2NvbGxhcHNlPXRydWUgaXMgdXNlZC48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBmb2xkaW5nIG9mIGJsb2Nrcy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHNldCB0byB0cnVlIHBhcmFtIGNvbGxhcHNlIGlzIGFsd2F5cyBmYWxzZS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnJlcXVpcmVkPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZSBpZiB0aGlzIGJsb2NrIG1heSBub3QgYmUgZW1wdHkuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAiY2hlY2tib3giOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQljaGVja3MvdW5jaGVja3MgdGhlIGNoZWNrYm94IGJ5IGRlZmF1bHQgd2hlbiBhZGRpbmcgYSBwYWdlPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBVc2UgIjEiIGZvciBjaGVja2VkIGFuZCAiMCIgZm9yIHVuY2hlY2tlZCBieSBkZWZhdWx0PGJyIC8+PC9lbT4NCgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9ImNoZWNrYm94IiBkZWZhdWx0PTF9PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgImRyb3Bkb3duIi8ic2VsZWN0X211bHRpcGxlIjo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5JdGVtIGxhYmVsKHMpIG9mIHRoZSBmaWVsZChzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlcmUgYXJlIGxlc3MgdmFsdWVzIHRoYW4gaXRlbXMgdGhlIGl0ZW0gbGFiZWxzIHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXMgKGFuZCB2aXNlIHZlcnNhKS48L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWxpbWl0ZXI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+QSBzaWduIG9yIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZXZpZGUgdGhlIGl0ZW1zL3ZhbHVlcyAoZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpDQoJCTx1bD4NCgkJCTxsaT5IZWlnaHQgb2YgY29udGVudCBibG9jayBpbiBiYWNrIGVuZCBpZiA8Y29kZT5ibG9ja190eXBlPSJzZWxlY3RfbXVsdGlwbGUiPC9jb2RlPiBpcyBzZXQuIDxlbT4oRGVmYXVsdCBpcyBudW1iZXIgb2YgaXRlbXMpPC9lbT48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zb3J0YWJsZV9pdGVtczwvdHQ+ICh0cnVlL2ZhbHNlKSAtIHNlbGVjdF9tdWx0aXBsZSBvbmx5DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSB0aGUgaXRlbXMgd29uXCd0IGJlIHNob3duIGFzIGEgbXVsdGlwbGUgc2VsZWN0IGlucHV0IHdpdGggb3B0aW9ucyBidXQgYXMgYSBsaXN0IG9mIGNoZWNrYm94ZXMgdGhhdCBjYW4gYmUgcmVvcmRlcmVkLjxiciAvPkVhY2ggcm93IGNvbnRhaW5zIHRoZSBpdGVtIGxhYmVsIGFuZCBhIGNoZWNrYm94IHdpdGggdGhlIGl0ZW0gdmFsdWUuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBvbmx5IHRoZSBvcmRlciBvZiB0aGUgPHN0cm9uZz5zZWxlY3RlZDwvc3Ryb25nPiBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgYWx3YXlzIGRpc3BsYXllZCBvbiB0aGUgdG9wIG9mIHRoZSBsaXN0IHdoZW4gcmVsb2FkaW5nIHRoZSBlZGl0IHBhZ2UuPGJyIC8+DQoJCQkJVW5zZWxlY3RlZCBpdGVtcyB3aWxsIGFwcGVuZGVkIGluIHRoYXQgb3JkZXIgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGU8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgImRhdGUiOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIGhvdXJzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgMTIgb3IgMjMpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBBTS9QTSBpcyB1c2VkLiAoZGVmYXVsdCBpcyB0cnVlKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgbWludXRlcyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgNTkpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBubyB0aW1lIGRyb3Bkb3duIHNob3VsZCBiZSBkaXNwbGF5ZWQgKGRlZmF1bHQgaXMgdHJ1ZSk8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IElmIHNldCB0byBmYWxzZSAwMDowMCBvXCdjbG9jayB3aWxsIGJlIHVzZWQ8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRhdGVfZm9ybWF0PC90dD4gKHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGUgc3RyZnRpbWUgZGF0ZSBmb3JtYXQgdG8gc2hvdyBpbiBmcm9udGVuZC4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICJtdWx0aV9pbnB1dCI6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aW5wdXRzPC90dD4gKGNzdiBvZiBpbnB1dCBpZHMgeW91IGNyZWF0ZWQgaW4gdGhlIGJhY2tlbmQpIA0KCQk8YnIgLz48YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVfZGVsaW1pdGVyPC90dD4gKGFueSBzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBkZWZpbmVzIGEgc3RyaW5nIHRoYXQgZGV2aWRlcyB0aGUgdmFsdWVzIG9mIHRoZSBpbnB1dHMgb2Ygb25lIG11bHRpX2lucHV0IHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICI8IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGxpbWl0ZXIgLS0+Ig0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIG11bHRpX2lucHV0cyB5b3UgZGVmaW5lZCBmb3IgdGhpcyBjb250ZW50IGJsb2NrIHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICI8IS0tIG11bHRpX2lucHV0X2RlbGxpbWl0ZXIgLS0+Ig0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+V2hhdCBpcyBhIG11bHRpX2lucHV0IGZvcj88L3N0cm9uZz48L3A+DQoJCTxwPkEgbXVsdGlfaW5wdXQgYmxvY2sgaXMgYSBjb250ZW50IGJsb2NrIHRoYXQgY29uc2lzdHMgb2YgZGlmZmVyZW50IGlucHV0IGZpZWxkcy4gPGJyIC8+DQoJCVlvdSBjYW4gZGVmaW5lIHRoZW0gaW4gdGhlIG1vZHVsZSBhZG1pbmlzdHJhdGlvbiB1c2luZyB0aGUgc2FtZSBzeW50YXggeW91IHVzZSBpbiBhIHRlbXBsYXRlIHdoZW4gZGVmaW5pbmcgYSBjb250ZW50IGJsb2NrLjxiciAvPg0KCQlNdWx0aSBpbnB1dHMgY2FuIGJlIHVzZWQgaWYgeW91IHdhbnQgdG8gc3RvcmUgZGlmZmVyZW50IHZhbHVlcyBpbiBvbmUgY29udGVudCBibG9jayBhbmQgcHJvdmlkZSBkaWZmZXJlbnQgaW5wdXQgdHlwZXMgZm9yIGVhY2ggdmFsdWVzLjxiciAvPg0KCQlUaGlzIGNhbiBiZSB1c2VmdWxsIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIGRyb3Bkb3duIHRvIHNlbGVjdCBhIG1vZHVsZSB0byBiZSBzaG93biBpbiBmcm9udGVuZCBhbmQgdGV4dCBpbnB1dCB0byBkZWZpbmUgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLjxiciAvPg0KCQlFeGFtcGxlIGZvciBhIG11bHRpX2lucHV0IGluIHBhZ2UgdGVtcGxhdGU6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9Im1vZHVsZSIgbGFiZWw9IlBhZ2UgbW9kdWxlcyIgYmxvY2tfdHlwZT0ibXVsdGlfaW5wdXQiIGlucHV0cz0ibW9kdWxlLG1vZHVsZSxtb2R1bGUsbW9kdWxlIn0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+RXhhbXBsZSBmb3IgdGhlIGRlZmluaXRpb24gb2YgdGhlIG11bHRpX2lucHV0IG5hbWVkICJtb2R1bGUiOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSJtb2R1bGUgc2VsZWN0aW9uIiBibG9ja190eXBlPSJkcm9wZG93biIgaXRlbXM9InxOZXdzfEdhbGxlcnl8TWVudSJ9DQoJCXtjb250ZW50IGJsb2NrPSJtb2R1bGUgcGFyYW1zIiBibG9ja190eXBlPSJ0ZXh0IiBvbmVsaW5lPXRydWV9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJCTxwPldoYXQgaGFwcGVucyBpZiB5b3UgZWRpdCBhIHBhZ2U/PC9wPg0KCQk8cD5JdCB3aWxsIHNob3cgeW91IGEgZmllbGRzZXQgd2l0aCBsZWdlbmQgIlBhZ2UgbW9kdWxlcyIuIDxiciAvPg0KCQlJbnNpZGUgdGhpcyBmaWVsZHNldCBpdCBzaG93cyB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgIm1vZHVsZSIgZm91ciB0aW1lcy48YnIgLz4NCgkJVGhhdCBtZWFucyB5b3Ugc2VlIGZvdXIgbGluZXMgd2l0aCB0d28gaW5wdXQgZmllbGRzLiBBIGRyb3Bkb3duIGFuZCBhIHRleHQgaW5wdXQuPC9wPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IHNhdmUgYSBwYWdlPzwvcD4NCgkJPHA+VGhlIG1vZHVsZSBzdG9yZXMgdGhlIHZhbHVlcyBhcyBvbmUgc2luZ2xlIGNvbnRlbnQgcHJvcGVydHkgKGFrYSBjb250ZW50YmxvY2spIGFuZCBzZXBhcmF0ZXMgdGhlIGlucHV0cyBieSBhIGdpdmVuIGRlbGltaXRlci48YnIgLz4NCgkJTGV0XCdzIGFzc3VtZSB5b3Ugc2VsZWN0IHRoZSBOZXdzIG1vZHVsZSBmb3VyIHRpbWVzIHdpdGggZGlmZmVyZW50IG1vZHVsZSBwYXJhbXMgbGlrZSBjYXRlZ29yeT0iMSIsIGNhdGVnb3J5PSIyIiwgY2F0ZWdvcnk9IjMiLCBjYXRlZ29yeT0iNCIuPGJyIC8+DQoJCUluIHRoZSBkYXRhYmFzZSBpdCBzdG9yZXMgdGhpcyBzdHJpbmc6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSIxIjwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPjxiciAvPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9IjIiPCEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0+PGJyIC8+DQoJCU5ld3M8IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLT5jYXRlZ29yeT0iMyI8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSI0Ig0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5JbiB5b3VyIHBhZ2UgdGVtcGxhdGUgeW91IGNhbiBleHBsb2RlIHRoZSBjb250ZW50IGJ5IHRoZSBkZWxpbWl0ZXJzIGFuZCBjYWxsIHRoZSBzZWxlY3RlZCBtb2R1bGVzLjwvcD4NCgkJPHA+RnVsbCBFeGFtcGxlOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXsqIGRlZmluZSB0aGUgY29udGVudCBibG9jayAqfQ0KCQl7Y29udGVudCBibG9jaz0ibXlfbW9kdWxlcyIgYmxvY2tfdHlwZT0ibXVsdGlfaW5wdXQiIGlucHV0cz0iTW9kdWxlLE1vZHVsZSxNb2R1bGUsTW9kdWxlIiBhc3NpZ249Im1vZHVsZXMifQ0KCQkNCgkJeyogZXhwbG9kZSBibG9jayBjb250ZW50IGluIGFuIGFycmF5IHRvIGdldCB0aGUgaW5wdXQgZ3JvdXBzICp9DQoJCXthc3NpZ24gdmFyPW1vZHVsZXMgdmFsdWU9IjwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPiJ8ZXhwbG9kZTokbW9kdWxlc30NCgkJDQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQ0KCQl7Zm9yZWFjaCBmcm9tPSRtb2R1bGVzIGl0ZW09Im1vZHVsZSJ9DQoJCQl7aWYgJG1vZHVsZSAhPSBcJ1wnfQ0KCQkJDQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0NCgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9IjwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPiJ8ZXhwbG9kZTokbW9kdWxlfQ0KCQkJCQ0KCQkJCXtpZiRtb2R1bGVfaXRlbXNbMF0gIT0gXCdcJ30NCgkJCQkNCgkJCQkJeyogY2FsbCB0aGUgbW9kdWxlICp9DQoJCQkJCXtpZiBpc3NldCgkbW9kdWxlX2l0ZW1zWzFdKX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6XCdjbXNfbW9kdWxlIG1vZHVsZT0iXCd8Y2F0OiRtb2R1bGVfaXRlbXNbMF18Y2F0OlwnIiBcJ3xjYXQ6JG1vZHVsZV9pdGVtc1sxXXxjYXQ6JHNtYXJ0eS5yZGVsaW19DQoJCQkJCXtlbHNlfQ0KCQkJCQkJe2V2YWwgdmFyPSRzbWFydHkubGRlbGltfGNhdDpcJ2Ntc19tb2R1bGUgbW9kdWxlPSJcJ3xjYXQ6JG1vZHVsZV9pdGVtc1swXXxjYXQ6XCciXCd8Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7L2lmfQ0KCQkJCQkNCgkJCQl7L2lmfQ0KCQkJCQ0KCQkJey9pZn0NCgkJDQoJCXsvZm9yZWFjaH0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgk8L2xpPg0KPC91bD4NCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KCTxsaT5UaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+DQoJPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPC91bD4NCjxiciAvPg0KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPg0KCUFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLjxiciAvPg0KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPg0KCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mPGJyIC8+DQoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjxiciAvPg0KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4NCglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTxiciAvPg0KCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlPGJyIC8+DQoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4NCglPciByZWFkIGl0IG9ubGluZTogPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5odHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEw8L2E+PGJyIC8+DQoJUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQo8L3A+DQo8cD5Db3B5cmlnaHQgwqkgMjAxMCwgR2VvcmcgQnVzY2ggKE5hTikuIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQo8YnIgLz4gJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzxiciAvPg0KPHA+PHN0cm9uZz5Nb2R1bGUgcmVsZWFzZXM8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+MC43LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgaXRlbSAjNTY1MTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3M8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZXF1aXJlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC43IChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSBidWdmaXhlcyBmb3IgQ01TbXMgMS45KyAobmVlZHMgQ01TbXMgMS45IG1pbmltdW0gbm93KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHN1cHBvcnQgb2Yge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gbm9fY29sbGFwc2U8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNi4yIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4IChzaG93ZWQgdGFicyBvZiBwcmV2aW91cyB0ZW1wbGF0ZSB3aGVuIHRlbXBsYXRlIHdhcyBjaGFuZ2VkKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC42LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGUgbXVsdGlfaW5wdXQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNiAoT2N0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19ncm91cDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gUmVtb3ZlZCBmaWxlIHBpY2tlciAoYW5kIGFzc29jaWF0ZWQgYmxvY2tfdHlwZXMgaW1hZ2UvZmlsZSkgLSB1c2UgR0JGaWxlUGlja2VyIGluc3RlYWQuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjUgKFNlcHQgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjkyIChtZW1vcnkgaXNzdWUpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI1NCAoZGlzYWJsZSB3eXNpd3lnIG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTAgKHVybG9ubHkgbm90IHdvcmtpbmcpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMSAoaW1hZ2UgcGF0aHMgbm90IHN0b3JlZCBcJ2NvcnJlY3RseVwnKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNjEgKEFkZCBzb3J0IHRvIGltYWdlIHR5cGUgLSBub3RpY2UgdGhlIGNoYW5nZSBvZiBwYXJhbSBmaWx0ZXIpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBwYXJhbXMgZXhjbHVkZV9wcmVmaXgsIGluY2x1ZGVfcHJlZml4LCBleGNsdWRlX3N1Zml4LCBpbmNsdWRlX3N1Zml4PC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNTMgKFRleHQgaW5wdXQgdG8gZGVmaW5lIGFkZCBwYXJhbXMgdG8gcmVkaXJlY3QgZnVuY3Rpb24pPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDAgKERlZmF1bHQgdmFsdWVzIG9mIEFkdmFuY2VkQ29udGVudCBwYWdlIG9wdGlvbnMpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDEgKHB1dCBGZXVBY2Nlc3MgaW4gQmxvY2t0YWIpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyBhcmUgc2hvd24gaW4gc2VwYXJhdGUgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIEFkZGVkIG5ldyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGUgQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW0gZmlsdGVyICh1c2UgbmV3IHBhcmFtcyBpbnN0ZWFkKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBwYXRoIHRvIGZpbGVzIGFyZSBzdG9yZWQgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhcmFtIGRpciBvZiBibG9jayB0eXBlIGZpbGUvaW1hZ2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyIG9ubHkgKHRoZXJlIGlzIG5vIGltYWdlIHVwbG9hZHMgZGlyIHVzZWQgYW55bW9yZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNC4xIChBdWd1c3QgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxNTE6IGZpeGVkIHN0eWxlc2hlZXQgaXNzdWUgd2l0aCBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyBvZiBjb250ZW50IGJsb2NrcyBpbiBJRS9TYWZhcmkuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MTYyOiBQSFAgd2FybmluZ3MgaWYgYmFja2VuZCB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gIk1hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyIgb3BlbiBhbiBhZHZhbmNlZCBjb250ZW50IHBhZ2UgYW5kIG11bHRpcGxlIGNvbnRlbnQgYmxvY2tzIG9mIHNhbWUgbmFtZSB3ZXJlIHVzZWQgaW4gdGVtcGxhdGUuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBleHRyYSBmaWVsZHMgY291bGQgbm90IGJlIHVwZGF0ZWQuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBmZXUgYWNjZXNzIGRpZCBub3Qgd29yay48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGVsZXRlIiB0byBsZXQgdXNlcnMgZGVsZXRlIGZpbGVzIGV2ZW4gaWYgbm8gcGVybWlzc2lvbiAiTW9kaWZ5IEZpbGVzIjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiY3JlYXRlX2RpcnMiIHRvIGxldCB1c2VycyBjcmVhdGVfZGlycyBldmVuIGlmIG5vIHBlcm1pc3Npb24gIk1vZGlmeSBGaWxlcyI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgbmV3IGJsb2NrdHlwZSAibm90ZSIgdG8gY3JlYXRlIHNvbWUgc2luZ2xlIG5vdGVzIGZvciB5b3VyIGVkaXRvcnM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgZGVwZW5kZW5jeSBvZiBGaWxlTWFuYWdlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayBvZiB0eXBlIGZpbGUgb3IgaW1hZ2Ugc3RvcmVzIHJlbGF0aXZlIHVybCBub3c8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYmxvY2sgdHlwZSBpbWFnZSBzaG93cyB0aHVtYm5haWwgaW4gYmFja2VuZCBwcmV2aWV3IGluc3RlYWQgb2YgZnVsbCBpbWFnZTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40IChKdWx5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkltcG9ydGFudCBub3RpY2U6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBwYXJhbSAidHlwZSIgdG8gImJsb2NrX3R5cGUiIHNpbmNlIGl0IGludGVyZmVyZXMgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MTAxOiBwYWdlX3RhYiAib3B0aW9ucyIgd2FzIHNob3duIHRvIHVzZXJzIHdpdGggbm8gcGVybWlzc2lvbiB0byBlZGl0IHBhZ2Ugb3B0aW9ucyBpZiBhIGNvbnRlbnQgYmxvY2sgd2FzIGFzc2lnbmVkIHRvIHRoYXQgdGFiLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA5NzogbGluayB0byBtaXNzaW5nIGNzcyByZW1vdmVkPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbWUtdHlwZSBpc3N1ZSAoYWRkZWQgcHJlZmVyZW5jZSB0byB0b2dnbGUgbWltZS10eXBlIHVzYWdlIG9uL29mZik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgcGF0aCBpc3N1ZSB3aGVyZSB0aHVtYm5haWxzIHdlcmUgbm90IHNob3duPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGNvbXBhdGliaWxpdHkgd2l0aCBDTVNtcyAxLjg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gb3RoZXIgbWlub3IgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBNTEUgc3VwcG9ydDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAic2hvd19jbG9jayIgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHRpbWUgZHJvcGRvd24gb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGF0ZV9mb3JtYXQiIHRvIGZvcm1hdCB0aW1lc3RhbXAgb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gZnJvbnRlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImRlc2NyaXB0aW9uIjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBidWxrIGZ1bmN0aW9uIHRvIHNldCBhbGwgcGFnZXMgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjQgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUwNDU6IFdoZW4gc3dpdGNoaW5nIGZyb20gQ29udGVudCAtPiBBZHZhbmNlZCBDb250ZW50IGxvdHMgb2YgUEhQIGVycm9yczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA1NjogcGFnZV90YWJzIG5vdCB3b3JraW5nIGZvciB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gIk1hbmFnZSBBbGwgQ29udGVudCI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNzM6IGluY29ycmVjdCBkaXNwbGF5IG9mIGZpbGVzIHdoZW4gb3BlbmluZyBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbm9yIGJ1ZyB3aGVyZSB0aGUgb3B0aW9uICJhbGxvd19ub25lIiBvZiBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGUgd2FzIG5vdCBzaG93biB3aGVuIHRlbXBsYXRlIGhhcyBiZWVuIGVkaXRlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGZpbGVtYW5hZ2VtZW50IGFuZCB1cGxvYWQgZnVuY3Rpb25zIHRvIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBicmVhZGN1bWJzIHRvIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRtaW5zIG1heSBicm93c2UgdGhlIGVudGlyZSBkaXIgdHJlZSBpbiBmaWxlcGlja2VyIGZpbGUgYnJvd3NlciByZWdhcmRsZXNzIG9mIHRlbXBsYXRlIHBhcmFtczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBtaW1lIHR5cGUgY2hlY2tpbmcgdG8gZ2V0IGZpbGUgdHlwZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCByYXd1cmxlbmNvZGUgaW4gc3JjIGF0dHJpYnMgdG8gZGlzcGxheSBpbWFnZXMgd2l0aCB3ZWlyZCBmaWxlbmFtZXMuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+bWlzY2VsbGFuZW91czo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIE9PUCBzdHVmZiAocHJpdmF0ZS9wdWJsaWMvcHJvdGVjdGVkKSB0byBnYWluIG1vcmUgY29tcGF0aWJpbGl0eSB3aXRoIFBIUDQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBhamF4IGZ1bmN0aW9ucyB0byByZXR1cm4geG1sIHZhbHVlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHVzYWdlIG9mIEltYWdlTWFuYWdlciBvbmNlIGFuZCBmb3IgYWxsLiAoY2F1c2VkIG9ubHkgdHJvdWJsZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4zIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgk8dWw+DQoJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWxpYXMgd2FzIG5vdCBhbHdheXMgY29udmVydGVkIHByb3Blcmx5PC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gdW5zdWJtaXR0ZWQgY29udGVudCBnb3QgbG9zdCBpZiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCTx1bD4NCgkJCQk8bGk+PHA+LSBhZGRlZCBzdGFydC9lbmQgZGF0ZTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHJlbW92ZWQgdGltZXBpY2tlcjsgcmVwbGFjZWQgYnkgYSBzaW1wbGUgZHJvcGRvd248L3A+PC9saT4NCgkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfaW1hZ2V9PC9wPjwvbGk+DQoJCQk8L3VsPg0KCQk8L2xpPg0KCTwvdWw+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjIgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgY2hhbmdpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgdHlwZSBvciBjaGFuZ2luZyB0ZW1wbGF0ZSBjYXVzZWQgZmF0YWwgZXJyb3JzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nIHdoZW4gc2F2aW5nIGEgcGFnZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwcmV2aWV3IHRhYjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmUtYWRkZWQgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiB0byB0b2dnbGUgY29udGVudCBibG9ja3MgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW1zIGVkaXRvcl9ncm91cHMvZWRpdG9yX3VzZXJzIHRvIHNwZWNpZnkgY2VydGFpbiB1c2Vycy9ncm91cHMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IGNlcnRhaW4gYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtcyBzZWxlY3RlZC9jaGVja2VkOyB1c2UgcGFyYW0gZGVmYXVsdCBpbnN0ZWFkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBibG9jayBpZHMgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSBibG9jayBuYW1lIHVzaW5nIGNvcmUgZnVuY3Rpb24gbXVuZ2Vfc3RyaW5nX3RvX3VybCAodG8gcmVtb3ZlIHNwZWNpYWwgY2hhcnMsIHdoaXRlc3BhY2VzLCB1bWxhdXRzIGV0Yy4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgb2YgYmxvY2t0eXBlIGRyb3Bkb3duL3NlbGVjdF9tdWx0aXBsZSB3aGVyZSBmaXJzdCBpdGVtIGhhZCBhbiBlbXB0eSBsYWJlbCBpZiBvbmx5IHRoZSBwYXJhbSAidmFsdWVzIiBpcyB1c2VkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBzb21lIHRlbXBsYXRlIHZhcnMgb2YgdGhlIGZyb250ZW5kIHRvIGJlIGFsc28gYWNjZXNzaWJsZSBpbiBiYWNrZW5kIChlLmcuOiAkcGFnZV9hbGlhcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJhbGxvd19ub25lIiB0byBhbGwgY29udGVudCBibG9jayB0eXBlcyB0byBzcGVjaWZ5IGlmIHRoZSBwcmVkZWZpbmVkIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkIGlmIG5vIHZhbHVlIGlzIGVudGVyZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBlbXB0eSB2YWx1ZXMgd2VyZSBuZXZlciBiZSBzdG9yZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBkZWZhdWx0IHZhbHVlIGluIGZyb250ZW5kIHdhcyBpZ25vcmVkIGlmIHRoZSAiYWxsb3dfbm9uZSIgcGFyYW0gd2FzIGNoYW5nZWQgYWZ0ZXIgYW4gZW1wdHkgdmFsdWUgaGFzIGJlZW4gc3RvcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAic29ydGFibGVfaXRlbXMiIHRvIGNyZWF0ZSBhIHNvcnRhYmxlIG11bHRpcGxlIHNlbGVjdCBsaXN0IChzZWxlY3QgbGlzdCB3aWxsIHJlc3VsdCBpbiBhIHRhYmxlIHdpdGggY2hlY2tib3hlczsgb25seSBvcmRlciBvZiBzZWxlY3RlZCBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgc2hvd2VkIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3Q7IHVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgdGVtcGxhdGUpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMSAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgcmVvcmRlcmluZyBzdHVmZiBmb3Igbm93IChjYXVzZXMgdHJvdWJsZSBhdCB0aGlzIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSBkYiBzdHVmZiAocGFyYW1zIG9mIGNvbnRlbnQgYmxvY2tzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGVtcGxhdGUgd29uXCd0IGJlIHNhdmVkIGluIG1vZHVsZSBkYiB0YWJsZSBhbnltb3JlIC0+IGhvcGVmdWxseSBzcGVlZCB1cCBsb2FkaW5nIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIGR1cGxpY2F0ZSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPkFkdmFuY2VkQ29udGVudCAwLjMgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJld3JpdGUgY29kZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYnVnZml4ZXM8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSB1c2luZyBzZXBhcmF0ZSBtb2R1bGUgdGVtcGxhdGUgbm93IHRvIGRzcGxheSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYWdlIGFsaWFzIGluaGVyaXRhbmNlPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAzIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIE1ham9yIEJ1Z2ZpeCAobWlzc2luZyAiOyIgYW5kIHN0cmFuZ2UgaW52aXNpYmxlIGludmFsaWQgY2hhcnMpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDIgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwYXJhbSAiZGVsaW1pdGVyIjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgIlNob3cgbG9naW4gZm9ybSI8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIHBhZ2UgYWxpYXMgdG8gYWRkIGl0IGFzIHByZWZmaXg7IHNvIGlmIHlvdSBoYXZlIGEgcGFnZSBjYWxsZWQgIm1lbWJlcnMiIGFuZCBzZWxlY3QgZm9yIGVhY2ggY2hpbGQgcGFnZSAiaW5oZXJpdCBwYWdlIGFsaWFzIiBhbGwgY2hpbGQgcGFnZXMgYWxpYXNlcyB3aWxsIHN0YXJ0IHdpdGggIm1lbWJlcnNfIjsgbWFrZXMgZmlsdGVyaW5nIG9mIG1lbnUgZW50cmllcyB3aXRoIE1lbnVNYW5hZ2VyIHBhcmFtICJleGNsdWRlcHJlZmZpeCIgb3IgImluY2x1ZGVwcmVmZml4IiBlYXNpZXIuPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlczwvcD48L2xpPiANCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIChBcHJpbCAyMDEwKTo8L3N0cm9uZz4gaW5pdGlhbCByZWxlYXNlPC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBjb252ZXJ0ZWQgdGhlIHNpbmdsZSBmaWxlIGludG8gYSBtb2R1bGU8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgcGFyYW1zOyBzZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgZGV0YWlsczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5TaW5nbGUgZmlsZSByZWxlYXNlcyAoZGlzY29udGludWVkKTwvc3Ryb25nPi4uLjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+MS40IChNYXJjaCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGNsZWFudXAgY29kZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlcyAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCByZWRpcmVjdCBwYWdlIGlmIGZldSBpcyBub3QgbG9nZ2VkIGluIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIGZldV9hY2Nlc3MgYW5kIHJlZGlyZWN0X3BhZ2UgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjY2VzcyAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWN0aW9uIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHJlZGlyZWN0X3BhZ2UgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfb25seSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBzbWFydHkgbG9naWMgaW4gYmFja2VuZCAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gc3R5bGUgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZpbHRlciAoZmlsdGVyaW5nIGltYWdlcyBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gSW1nTW9kZSAoZHJvcGRvd24gb3IgSW1hZ2VNYW5hZ2VyKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gc21hcnR5T24gKGZvciBwcm9jZXNzaW5nIHNtYXJ0eSB2YXJzIG9mIHRoZSB0ZW1wYXRlIGluIGJhY2tlbmQpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4xLjMgKEFwcmlsIDIwMDkpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gQ01TbXMgMS42LiogcmVhZHkgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgZmV1IGFjY2VzcyBvcHRpb24gLSAoTmFOKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPjEuMiAoTWFyY2ggMjAwOSk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gQSBzaW5nbGUgZmlsZSBDb250ZW50Mi5pbmMucGhwIHRoYXQgbmVlZHMgdG8gYmUgcGFjZWQgaW4gbGliL2NsYXNzZXMvY29udGVudHR5cGVzLjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbGF5b3V0L29wdGlvbnMgb2YgYmFja2VuZCBwYW5lbCBjYW4gYmUgY29udHJvbGVkIGJ5IGFkZGl0aW9uYWwgc21hcnR5IHBhcmFtcyBpbiB0aGUgdGVtcGxhdGU7IGludGVncmF0ZWQgdGhlIHtjb250ZW50X2ltYWdlfSB0YWcgLSAobW9kIGJ5IE5hTik8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjxiciAvPiAnOwokbGFuZ1sncWNhJ10gPSAnUDAtNjM2NjExNzU4LTEyOTA3NzMwNTQwMzAnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjkzMTQyNTc5LjEyLjcudXRtY3NyPWNtc21hZGVzaW1wbGUucnV8dXRtY2NuPShyZWZlcnJhbCl8dXRtY21kPXJlZmVycmFsfHV0bWNjdD0vJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNTgxMTAzODA5LjEyOTA3NzMwNDcuMTI5MzE0MjU3OS4xMjkzMjEyNTYyLjEzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sk_SK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ1JveiZzY2Fyb247JmlhY3V0ZTtyZW4meWFjdXRlOyBvYnNhaCc7CiRsYW5nWydhZHZhbmNlZGNvbnRlbnRfdGFibmFtZSddID0gJ1JveiZzY2Fyb247JmlhY3V0ZTtyZW4mZWFjdXRlOyBuYXN0YXZlbmlhJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsICVzIG5haW4mc2Nhcm9uO3RhbG92YW4meWFjdXRlOyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIEFkdmFuY2VkQ29udGVudCAlcyBvZGluJnNjYXJvbjt0YWxvdmFuJnlhY3V0ZTsnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBha3R1YWxpem92YW4meWFjdXRlOyBuYSB2ZXJ6aXUgJXMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNb2R1bCAlcyBuYWluJnNjYXJvbjt0YWxvdmFuJnlhY3V0ZTsuJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNb2R1bCAlcyBvZGluJnNjYXJvbjt0YWxvdmFuJnlhY3V0ZTsuJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICdTdGUgc2kgaXN0JnlhY3V0ZTssIMW+ZSBjaGNldGUgbW9kdWwgb2RzdHImYWFjdXRlO25pxaU/JzsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gPSAnPGVtPjxzdHJvbmc+UG96biZhYWN1dGU7bWthOjwvc3Ryb25nPiBUZW50byBibG9rIGplIHBvdcW+aXQmeWFjdXRlOyB2aWFjbiZhYWN1dGU7c29ibmUgdiAmc2Nhcm9uO2FibCZvYWN1dGU7bmUsIHpvYnJhenVqZSBzYSBWJmFhY3V0ZTttIGliYSBwcnYmeWFjdXRlOyB6IG5pY2guPC9lbT4nOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IENhbm5vdCB1c2UgYmFzaWMgY29udGVudCBwcm9wZXJ0eSBuYW1lICYjMDM5OyVzJiMwMzk7IGFzIHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LiA8YnIgLz5UaGlzIGJsb2NrIGlzIGRpc2FibGVkLiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUgYW5kIGNob3NlIGEgZGlmZmVyZW50IHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2V4cGlyZWRhdGUnXSA9ICdEJmFhY3V0ZTt0dW0ga29uY2EgbXVzJmlhY3V0ZTsgYnnFpSBuZXNrb3Imc2Nhcm9uOyZpYWN1dGU7ICBha28gZCZhYWN1dGU7dHVtIHphxI1pYXRrdSc7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdTJnVhY3V0ZTvEjWFzbiZ5YWN1dGU7IGFkcmVzJmFhY3V0ZTtyJzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICdWZcS+a29zxaUgb2JyJmFhY3V0ZTt6a3UnOwokbGFuZ1snc2l6ZSddID0gJ1ZlxL5rb3PFpSBvYnImYWFjdXRlO3prdSc7CiRsYW5nWydpbmhlcml0X2Zyb21fcGFyZW50J10gPSAnUHJldnppYcWlIG9kIG5hZHJpYWRlbmVqJzsKJGxhbmdbJ25vbmUnXSA9ICfFvmlhZG55JzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdzIGNoeWJvdSc7CiRsYW5nWydpbnZhbGlkX2Jsb2NrdHlwZSddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gSW52YWxpZCB2YWx1ZSAmIzAzOTslcyYjMDM5OyBvZiBwYXJhbSBibG9ja190eXBlIGluIGJsb2NrICYjMDM5OyVzJiMwMzk7LjxiciAvPkNoZWNrIHlvdXIgcGFnZSB0ZW1wbGF0ZS48L2VtPic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRfYmxvY2twYXJhbXMnXSA9ICc8ZW0+PHN0cm9uZz5FcnJvcjo8L3N0cm9uZz4gSW5zdWZmaWNpZW50IHBhcmFtcy4gPGJyIC8+TWlzc2luZyBwYXJhbSAmIzAzOTslcyYjMDM5OyBmb3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsuIENoZWNrIHlvdXIgcGFnZSB0ZW1wbGF0ZS48L2VtPic7CiRsYW5nWyd5ZXMnXSA9ICcmQWFjdXRlO25vJzsKJGxhbmdbJ25vJ10gPSAnTmllJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQgcHImaWFjdXRlO3N0dXAnOwokbGFuZ1sncmVkaXJlY3RwYWdlJ10gPSAnUFJlc21lcm92YcWlIHBva2lhxL4gbmllIGplIHXFviZpYWN1dGU7dmF0ZcS+IHByaWhsJmFhY3V0ZTtzZW4meWFjdXRlOyc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnWm9icmF6acWlIGZvcm11bCZhYWN1dGU7ciBwcmlobCZhYWN1dGU7c2VuaWEnOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAnSWJhIHJlc2lzdHJvdmFuJnlhY3V0ZTsgdcW+JmlhY3V0ZTt2YXRlbGlhJzsKJGxhbmdbJ2Jsb2NrJ10gPSAnQmxvayc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnUG91xb5pxaUgZCZhYWN1dGU7dHVtIGtvbmNhJzsKJGxhbmdbJ3N0YXJ0ZGF0ZSddID0gJ1phxI0maWFjdXRlO25hJzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICdLb27EjSZpYWN1dGU7JzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ09ic2Fob3YmeWFjdXRlOyBibG9rICc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdOYXN0YXZpxaUgYWtvIG5lYWt0JmlhY3V0ZTt2bnUgJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICdPZHN0ciZhYWN1dGU7bmnFpSBzdHImYWFjdXRlO25rdSc7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdPZGluJnNjYXJvbjt0YWwmYWFjdXRlO2NpYSc7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ1NldCBhbGwgUGFnZXMgdG8gdHlwZSBDb250ZW50JzsKJGxhbmdbJ3NldGNvbnRlbnQyJ10gPSAnU2V0IGFsbCBQYWdlcyB0byB0eXBlIENvbnRlbnQgYW5kIHJlbW92ZSBhZGRpdGlvbmFsIGNvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ05hc3RhdmVuaWEgdXByYXZlbiZlYWN1dGU7JzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdPSyc7CiRsYW5nWydlcnJvciddID0gJ0NoeWJhJzsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gPSAnT2RzdHImYWFjdXRlO25pxaUgdiZzY2Fyb247ZXRreSBzdHImYWFjdXRlO25reSB6IG9ic2Fob3YmeWFjdXRlO20gdHlwb20gQWR2YW5jZWRDb250ZW50JzsKJGxhbmdbJ2ltcG9ydHBhZ2VzJ10gPSAnU2V0IGFsbCBQYWdlcyBvZiB0eXBlIGNvbnRlbnQgdG8gdHlwZSBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ3BhZ2VzaW1wb3J0ZWQnXSA9ICdWJnNjYXJvbjtldGt5IHN0ciZhYWN1dGU7bmt5IG5hc3RhdmnFpSBha28gb2JzYWhvdiZ5YWN1dGU7IHR5cCBBZHZhbmNlZENvbnRlbnQnOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ1NrdXRvxI1uZSBjaGNldGUgbmFzdGF2ecWlIG9ic2Fob3YmZWFjdXRlOyB0eXB5IHByZSB2JnNjYXJvbjtldGt5IHN0ciZhYWN1dGU7bmt5JzsKJGxhbmdbJ3RvZ2dsZV9tZXNzYWdlJ10gPSAnU2tyecWlIHQmdWFjdXRlO3RvIGluZm9ybSZhYWN1dGU7Y2l1JzsKJGxhbmdbJ2NvbnRlbnRzZXR0aW5ncyddID0gJ1ByZWRuYXN0YXZlbiZlYWN1dGU7IG5hc3RhdmVuaWEnOwokbGFuZ1sncmVkaXJlY3RwYXJhbXMnXSA9ICdVUkwgcGFyYW1zIHRvIGFwcGVuZCB3aGVuIHJlZGlyZWN0aW5nIChwYXJhbTE9dmFsdWUxIHBhcmFtMj12YWx1ZTIgLi4uKSc7CiRsYW5nWydldmFsdWF0ZXNtYXJ0eSddID0gJ1VzZSBzbWFydHkgdG8gY3JlYXRlIHRoZSBwYXJhbXMnOwokbGFuZ1snZXJyb3JfbG9hZGluZ19tb2R1bGUnXSA9ICc8ZW0+PHN0cm9uZz5DaHliYTo8L3N0cm9uZz4gTmVtJm9jaXJjO8W+ZW0gbmFocmHFpSBtb2R1bCAmIzAzOTslcyYjMDM5Oy4gKHphZGFuJnlhY3V0ZTsgcHJlIGJsb2sgJiMwMzk7JXMmIzAzOTsgc3RyJmFhY3V0ZTtua2UgJnNjYXJvbjthYmwmb2FjdXRlO255Lik8L2VtPic7CiRsYW5nWydlcnJvcl9jb250ZW50YmxvY2tfc3VwcG9ydCddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBNb2R1bGUgJiMwMzk7JXMmIzAzOTsgZG9lcyBub3Qgc3VwcG9ydCBjb250ZW50YmxvY2tzLiAoRGVmaW5lZCBmb3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsgaW4geW91ciBwYWdlIHRlbXBsYXRlLik8L2VtPic7CiRsYW5nWydzdWNjZXNzX2ltcG9ydHBhZ2VzJ10gPSAnQWxsIHBhZ2VzIG9mIHR5cGUgJXMgc3VjY2VzZnVsbHkgY2hhbmdlZCB0byAlcyc7CiRsYW5nWydzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJ10gPSAnU2hvdyBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWInOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddID0gJyVzIGRpc3BsYXkgc2V0dGluZ3MnOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdTYXZlIGNvbGxwYXNlIHN0YXR1cyBvZiAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ2NvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ2Jsb2NrX21lc3NhZ2UnXSA9ICdjb250ZW50IGJsb2NrIG1lc3NhZ2UnOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gPSAnYmxvY2sgZ3JvdXBzJzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdDb2xsYXBzZSAlcyBieSBkZWZhdWx0JzsKJGxhbmdbJ3Blcl9wYWdlJ10gPSAncGVyIHBhZ2UnOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gPSAncGVyIHRlbXBsYXRlJzsKJGxhbmdbJ2JvdGgxJ10gPSAndGVtcGxhdGUgT1IgcGFnZSAnOwokbGFuZ1snYm90aDInXSA9ICd0ZW1wbGF0ZSBBTkQgcGFnZSc7CiRsYW5nWydjb250ZW50J10gPSAnQ29udGVudCc7CiRsYW5nWydjb250ZW50MiddID0gJ0FkdmFuY2VkIENvbnRlbnQnOwokbGFuZ1sncHJlZnMnXSA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydtdWx0aV9pbnB1dCddID0gJ011bHRpIElucHV0cyc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdNdWx0aSBJbnB1dCBUZW1wbGF0ZXMnOwokbGFuZ1snYWRkX211bHRpX2lucHV0J10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXRfdHBsJ10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCB0ZW1wbGF0ZSc7CiRsYW5nWydpbnB1dF9pZCddID0gJ0lucHV0IElEJzsKJGxhbmdbJ2lucHV0X2ZpZWxkcyddID0gJ0lucHV0IGZpZWxkcyc7CiRsYW5nWyd0cGxfbmFtZSddID0gJ1RlbXBsYXRlIG5hbWUnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5JzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddID0gJ0lucHV0IGZpZWxkcyBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5Lic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZCddID0gJ05vIGlucHV0IGlkIGdpdmVuIG9yIGlucHV0IGlkIGFscmVhZHkgZXhpc3RzLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdJbnB1dCBJRCBpcyBhbHJlYWR5IGluIHVzZS4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZS4gKG11c3QgYmUgdW5pcXVlKSc7CiRsYW5nWydtdWx0aV9pbnB1dF9hZGRlZCddID0gJ011bHRpIElucHV0IGFkZGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgZGVsZXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdXBkYXRlZCddID0gJ011bHRpIElucHV0IHVwZGF0ZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9hZGRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIGFkZGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfdXBkYXRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIHVwZGF0ZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgZGVsZXRlZC4nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnT2RzdHImYWFjdXRlO25pxaUgdnlicmFuJmVhY3V0ZTsgcG9sb8W+a3knOwokbGFuZ1snY29uZmlybV9kZWxldGUnXSA9ICdDaGNldGUgc2t1dG/EjW5lIG9kc3RyJmFhY3V0ZTtuacWlIHBvbG/Fvmt1Pyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ0NoY2V0ZSAgc2t1dG/EjW5lIG9kc3RyJmFhY3V0ZTtuacWlIHZ5YnJhbiZlYWN1dGU7IHBvbG/Fvmt5Lic7CiRsYW5nWyd1c2VfY29udGVudHR5cGUnXSA9ICdQb3XFvmnFpSBvYnNhaG92JnlhY3V0ZTsgdHlwJzsKJGxhbmdbJ2hlbHBfdHBsX3ZhcnMnXSA9ICc8cD48c3Ryb25nPlRlbXBsYXRlIHZhcnM6PC9zdHJvbmc+PC9wPg0KPHA+PHByZT48Y29kZT57JGlucHV0c308L2NvZGU+PC9wcmU+IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGRlZmluZWQgaW5wdXQgZWxlbWVudHMgb2YgdGhhdCBtdWx0aSBpbnB1dCBibG9jay48YnIgLz4NCkVhY2ggaW5wdXQgZWxlbWVudCBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBpdHMgcGFyYW1zLiA8YnIgLz4NClNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBpbmZvLjxiciAvPg0KQWRkaXRpb25hbCBwYXJhbSBpcyAmcXVvdDtpbnB1dCZxdW90OyB0aGF0IHdpbGwgcHJpbnQgb3V0IHRoZSBpbnB1dCBlbGVtZW50LjxiciAvPg0KVG8gYWNjZXNzIHRoZSBwYXJhbXMgdXNlIHRoZSBkb3Qgc3ludGF4LjxiciAvPg0KRXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0NCgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9PGJyIC8+DQp7L2ZvcmVhY2h9PC9jb2RlPjwvcHJlPic7CiRsYW5nWydoZWxwJ10gPSAnPGJyIC8+DQo8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4NCjxwPlRoaXMgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICZxdW90O0NvbnRlbnQmcXVvdDsgb2YgQ01TbXMuPGJyIC8+DQpJdCBwcm92aWRlcyBtb3JlIGZsZXhpYmlsaXR5IGJ5IGNyZWF0aW5nIGN1c3RvbSBpbnB1dCBjb250cm9scyBpbiBiYWNrZW5kLjxiciAvPg0KVXNlcnMgY2FuIGFkZCBkcm9wZG93bnMsIG11bHRpcGxlIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcywgZ3JvdXAgY29udGVudCBibG9ja3MgDQppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgDQp1c2luZyBhZGRpdGlvbmFsIHBhcmFtcyBpbiB0aGUgdGVtcGxhdGUgd2hlbiBjYWxsaW5nIHRoZSBjb250ZW50LjxiciAvPg0KSXQgYWxzbyBhZGRzIGFiaWxpdHkgdG8gZ3JhbnQgYWNjZXNzIG9mIHBhZ2VzIHRvIGNlcnRhaW4gdXNlcnMgb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgb3IgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSBzaG93aW5nIHRoZSBsb2dpbiBmb3JtIG9yIA0KanVzdCByZWRpcmVjdCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuPGJyIC8+DQpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgDQpwYXJlbnQgcGFnZXMuPC9wPg0KPHA+WW91IGNhbiBldmVuIHVzZSBzbWFydHkgbG9naWMgaW4gcGFyYW1ldGVyIHZhbHVlcy4gVGhhdCBtZWFucyB5b3UgY2FuIHVzZSB0aGUgDQpyZXN1bHQgb2YgYSBwbHVnaW4sIGFuIHVkdCBvciBldmVuIGEgbW9kdWxlIG9yIGp1c3QgdGhlIGNvbnRlbnQgb2YgYSBnbG9iYWwgDQpjb250ZW50IGJsb2NrIGFzIHBhcmFtZXRlciB2YWx1ZSB0byBjcmVhdGUgZHluYW1pYyB2YWx1ZXMuPC9wPg0KPGgzPkhvdyBpcyBpdCB1c2VkPzwvaDM+DQo8cD5BZnRlciBpbnN0YWxsYXRpb24gdGhlIG1vZHVsZSBzZXR0aW5ncyBjYW4gYmUgZm91bmQgaW4gJnF1b3Q7RXh0ZW5zaW9ucy0+QWR2YW5jZWRDb250ZW50JnF1b3Q7LjwvcD4NCjxwPkFkZGl0aW9uYWxseSB5b3Ugd2lsbCBoYXZlIGEgbmV3IGNvbnRlbnQgdHlwZSAmcXVvdDtBZHZhbmNlZENvbnRlbnQmcXVvdDsgYXZhaWxhYmxlIA0Kd2hlbiBhZGRpbmcvZWRpdGluZyBhIHBhZ2UuPGJyIC8+DQo8cD5BZGQgdGhlIGZvbGxvd2luZyBwYXJhbXMgdG8geW91ciBjb250ZW50IHRhZyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUsIA0KY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhbmQgc2VlIHdoYXQgaGFwcGVucyANCmluIGJhY2tlbmQuLi48L3A+DQo8aDM+V2hhdCBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGU/PC9oMz4NCjxwPmFsbCBwYXJhbXMgYXJlIG9wdGlvbmFsPC9wPg0KPHA+PHN0cm9uZz5EZWZhdWx0IHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9jazwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBbGxvd3MgeW91IHRvIGhhdmUgbW9yZSB0aGFuIG9uZSBjb250ZW50IGJsb2NrIHBlciBwYWdlLiBJZiBtdWx0aXBsZSBjb250ZW50IHRhZ3MgYXJlIHB1dCBvbiBhIHRlbXBsYXRlLCB0aGF0IG51bWJlciBvZiBlZGl0IGJveGVzIHdpbGwgYmUgZGlzcGxheWVkIGlmIHRoZSBwYWdlIGlzIGVkaXRlZC48YnIgLz4NCgkJCQllLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90O308L2NvZGU+PGJyIC8+DQoJCQkJTm93LCBpZiB5b3UgZWRpdCBhIHBhZ2UgdGhlcmUgd2lsbCBiYSBhIHRleHRhcmVhIGNhbGxlZCAmcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90Oy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChubyB3aGl0ZXNwYWNlcywgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBldGMuKS4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvcGVyIG5hbWUgKHNpbWlsYXIgdG8gdGhlIHBhZ2UgYWxpYXMpLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gdHJ1ZSwgdGhlbiBvbmx5IG9uZSBlZGl0IGxpbmUgd2lsbCBiZSBzaG93biB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIGZhbHNlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLiBPbmx5IHdvcmtzIHdoZW4gYmxvY2sgcGFyYW1ldGVyIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+RGVmYXVsdCBjb250ZW50IHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFnZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQXNzaWducyB0aGUgY29udGVudCB0byBhIHNtYXJ0eSBwYXJhbWV0ZXIsIHdoaWNoIHlvdSBjYW4gdGhlbiB1c2UgaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHBhZ2UsIG9yIHVzZSB0byB0ZXN0IHdoZXRoZXIgY29udGVudCBleGlzdHMgaW4gaXQgb3Igbm90LjxiciAvPg0KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPg0KCQkJCTxjb2RlPntjb250ZW50IGFzc2lnbj1wYWdlY29udGVudH08YnIgLz4NCgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9JnF1b3Q7JHBhZ2Vjb250ZW50JnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IEZvciBzb21lIHJlYXNvbiB0aGlzIHBhcmFtIGRvZXMgbm90IHdvcmsgYXQgdGhlIG1vbWVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBdmFuY2VkQ29udGVudH0uIFVzZSA8YnIgLz48Y29kZT57Y2FwdHVyZSBhc3NpZ249JnF1b3Q7Zm9vJnF1b3Q7fXtBZHZhbmNlZENvbnRlbnR9ey9jYXB0dXJlfTwvY29kZT4gPGJyIC8+aW5zdGVhZC48L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPkFkdmFuY2VkIHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190eXBlPC90dD4gKHRleHQsY2hlY2tib3gsZHJvcGRvd24sc2VsZWN0X211bHRpcGxlLGRhdGUsbXVsdGlfaW5wdXQpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHdoYXQgY29udGVudCBjb250cm9sIHR5cGUgaXMgdXNlZCBpbiB0aGUgYmFjayBlbmQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnBhZ2VfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgcGFyYW1ldGVyIHNldHMgdGhlIHRhYiBpbiB3aGljaCB0aGUgY29udGVudCBibG9jayBpcyBkaXNwbGF5ZWQgaW4gdGhlIGJhY2tlbmQuPGJyIC8+DQoJCQkJUG9zc2libGUgdmFsdWVzIGFyZSAmcXVvdDttYWluJnF1b3Q7ICggPSBUYWIgJnF1b3Q7TWFpbiBNZW51JnF1b3Q7KSwgJnF1b3Q7b3B0aW9ucyZxdW90OyAoID0gVGFiICZxdW90O09wdGlvbnMmcXVvdDspLCBvciBhbnkgb3RoZXIgYXJiaXRyYXJ5IHZhbHVlPGJyIC8+DQoJCQkJPGVtPmUuZy4geW91IGNhbiBhZGQgYSBjaGVja2JveCB0byB0aGUgb3B0aW9ucyB0YWIgb3IgY3JlYXRlIG5ldyB0YWJzPC9lbT4uDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIHRoZSBibG9ja3Mgd2l0aGluIGEgcGFnZSB0YWIgY2FuIGJlIGZ1cnRoZXIgZGl2aWRlZCBpbnRvIHRhYnMgb3IgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX2dyb3VwPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIG11bHRpcGxlIGJsb2NrcyBjYW4gYmUgZ3JvdXBlZCBpbiBhIGZpZWxkc2V0LiBBbnkgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCBhcyBhIHBvc3NpYmxlIHZhbHVlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hY3RpdmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gZGlzYWJsZSBhIGNvbnRlbnQgYmxvY2suIERpc2FibGVkIGNvbnRlbnQgYmxvY2tzIHdvbiYjMDM5O3QgYmUgc2hvd24gaW4gYmFja2VuZCBhcyB3ZWxsIGFzIGluIGZyb250ZW5kLiAob25seSB3b3JrcyB3aXRoIHtBZHZhbmNlZENvbnRlbnR9IHBsdWdpbik8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IHRoaXMgYmxvY2suDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdXNlciBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGUgcGFyYW1zIDx0dD5lZGl0b3JfdXNlcnM8L3R0PiBhbmQgPHR0PmVkaXRvcl9ncm91cHM8L3R0PiBhcmUgZW1wdHkgdGhlIGJsb2NrIG1heSBiZSBlZGl0ZWQgYnkgYW55IHVzZXIgd2l0aCBzdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gZWRpdCBhIHBhZ2U8L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGxpc3Qgb2YgZmV1IGdyb3VwIGlkcyBzZXBhcmF0ZWQgYnkgYSBjb21tYS48YnIgLz4NCgkJCQlUaGlzIHNob3dzIHRoZSBjb250ZW50IGJsb2NrIG9ubHkgdG8gY2VydGFpbiBmZXUgZ3JvdXBzLjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNwZWNpZnkgaWYgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIGZldSBtb2R1bGUgd2lsbCBiZSBzaG93biBvciBub3QuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBUaGUgbG9naW4gZm9ybSB3aWxsIG9ubHkgYmUgc2hvd24gb25lIHRpbWUuPGJyIC8+DQoJCQkJSWYgdGhlcmUgYXJlIG11bHRpcGxlIGJsb2NrcyB3aXRoIGxpbWl0ZWQgZmV1X2FjY2VzcyBhbmQgZmV1X2FjdGlvbiBzZXQgdG8gdHJ1ZSBvbmx5IHRoZSBmaXJzdCBibG9ja3MgbG9naW4gZm9ybSB3aWxsIGJlIHNob3duIGFuZCBhbGwgb3RoZXIgYmxvY2tzIHdpbGwganVzdCBiZSBlbXB0eS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFsbG93X25vbmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPlNldCB0byB0cnVlIGlmIHRoZSB1c2VyIG1heSBlbnRlciBlbXB0eSB2YWx1ZXMuIDxiciAvPklmIHNldCB0byBmYWxzZSBhbmQgdmFsdWUgaXMgZW1wdHkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIHBhcmFtICZxdW90O2RlZmF1bHQmcXVvdDsgd2lsbCBiZSB1c2VkLiA8YnIgLz5JZiBzZXQgdG8gdHJ1ZSBhbmQgYmxvY2sgaXMgb2YgdHlwZSBpbWFnZS9maWxlIHRoZSBvcHRpb24gJnF1b3Q7bm9uZSZxdW90OyAobW9kZT0mcXVvdDtkcm9wZG93biZxdW90Oykgb3IgYSBidXR0b24gdG8gY2xlYXIgdGhlIHNlbGVjdGVkIGZpbGUvaW1hZ2UgdmFsdWUgKG1vZGU9JnF1b3Q7ZmlsZXBpY2tlciZxdW90Oykgd2lsbCBiZSBkaXNwbGF5ZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNtYXJ0eTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVHVybiBzbWFydHkgcHJvY2Vzc2luZyBvZiB2YWx1ZXMgb24vb2ZmLjxiciAvPg0KCQkJCUlmIHNldCB0byB0cnVlIGFueSBnaXZlbiB2YWx1ZSB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGUgc21hcnR5IGVuZ2luZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6IDwvc3Ryb25nPiBDb25zaWRlciB0aGF0IHlvdSBjYW5ub3QgdXNlIHRoZSBkZWZhdWx0IHNtYXJ0eSBkZWxpbWl0ZXJzIHRoYXQgYXJlIHVzZWQgaW4gdGhlIHRlbXBsYXRlLiBUaGlzIHdpbGwgY2F1c2Ugc21hcnR5IGVycm9ycyBpbiBmcm9udGVuZC48YnIgLz4NCgkJCQlTbyB5b3UgbmVlZCB0byB1c2UgOjo6IGFzIGRlbGltaXRlciBpbnN0ZWFkLjxiciAvPjwvZW0+DQoJCQkJRS5nLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7Q2F0ZWdvcmllcyZxdW90OyBsYWJlbD0mcXVvdDtTZWxlY3QgYSBjYXRlZ29yeSZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90Ozo6Omdsb2JhbF9jb250ZW50IG5hbWU9JiMwMzk7Y2F0ZWdvcnlsaXN0JiMwMzk7Ojo6JnF1b3Q7IHNtYXJ0eT0mcXVvdDt0cnVlJnF1b3Q7fTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZXNjcmlwdGlvbjwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZS9mYWxzZSB0byBkaXNwbGF5IGJsb2NrIGluIGJhY2tlbmQgaW4gY29sbGFwc2VkL2V4cGFuZGVkIG1vZGUgYnkgZGVmYXVsdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHdpbGwgYmUgYWx3YXlzIGZhbHNlIGlmIG5vX2NvbGxhcHNlPXRydWUgaXMgdXNlZC48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBmb2xkaW5nIG9mIGJsb2Nrcy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHNldCB0byB0cnVlIHBhcmFtIGNvbGxhcHNlIGlzIGFsd2F5cyBmYWxzZS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnJlcXVpcmVkPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZSBpZiB0aGlzIGJsb2NrIG1heSBub3QgYmUgZW1wdHkuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtjaGVja2JveCZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHRydWUvZmFsc2UpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJY2hlY2tzL3VuY2hlY2tzIHRoZSBjaGVja2JveCBieSBkZWZhdWx0IHdoZW4gYWRkaW5nIGEgcGFnZTxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVXNlICZxdW90OzEmcXVvdDsgZm9yIGNoZWNrZWQgYW5kICZxdW90OzAmcXVvdDsgZm9yIHVuY2hlY2tlZCBieSBkZWZhdWx0PGJyIC8+PC9lbT4NCgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9JnF1b3Q7Y2hlY2tib3gmcXVvdDsgZGVmYXVsdD0xfTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2Ryb3Bkb3duJnF1b3Q7LyZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5JdGVtIGxhYmVsKHMpIG9mIHRoZSBmaWVsZChzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlcmUgYXJlIGxlc3MgdmFsdWVzIHRoYW4gaXRlbXMgdGhlIGl0ZW0gbGFiZWxzIHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXMgKGFuZCB2aXNlIHZlcnNhKS48L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWxpbWl0ZXI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+QSBzaWduIG9yIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZXZpZGUgdGhlIGl0ZW1zL3ZhbHVlcyAoZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpDQoJCTx1bD4NCgkJCTxsaT5IZWlnaHQgb2YgY29udGVudCBibG9jayBpbiBiYWNrIGVuZCBpZiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gaXMgc2V0LiA8ZW0+KERlZmF1bHQgaXMgbnVtYmVyIG9mIGl0ZW1zKTwvZW0+PC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGVfaXRlbXM8L3R0PiAodHJ1ZS9mYWxzZSkgLSBzZWxlY3RfbXVsdGlwbGUgb25seQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJSWYgc2V0IHRvIHRydWUgdGhlIGl0ZW1zIHdvbiYjMDM5O3QgYmUgc2hvd24gYXMgYSBtdWx0aXBsZSBzZWxlY3QgaW5wdXQgd2l0aCBvcHRpb25zIGJ1dCBhcyBhIGxpc3Qgb2YgY2hlY2tib3hlcyB0aGF0IGNhbiBiZSByZW9yZGVyZWQuPGJyIC8+RWFjaCByb3cgY29udGFpbnMgdGhlIGl0ZW0gbGFiZWwgYW5kIGEgY2hlY2tib3ggd2l0aCB0aGUgaXRlbSB2YWx1ZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IG9ubHkgdGhlIG9yZGVyIG9mIHRoZSA8c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+IGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBhbHdheXMgZGlzcGxheWVkIG9uIHRoZSB0b3Agb2YgdGhlIGxpc3Qgd2hlbiByZWxvYWRpbmcgdGhlIGVkaXQgcGFnZS48YnIgLz4NCgkJCQlVbnNlbGVjdGVkIGl0ZW1zIHdpbGwgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZTwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtkYXRlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIGhvdXJzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgMTIgb3IgMjMpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBBTS9QTSBpcyB1c2VkLiAoZGVmYXVsdCBpcyB0cnVlKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgbWludXRlcyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgNTkpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBubyB0aW1lIGRyb3Bkb3duIHNob3VsZCBiZSBkaXNwbGF5ZWQgKGRlZmF1bHQgaXMgdHJ1ZSk8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IElmIHNldCB0byBmYWxzZSAwMDowMCBvJiMwMzk7Y2xvY2sgd2lsbCBiZSB1c2VkPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kYXRlX2Zvcm1hdDwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhlIHN0cmZ0aW1lIGRhdGUgZm9ybWF0IHRvIHNob3cgaW4gZnJvbnRlbmQuDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDttdWx0aV9pbnB1dCZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dHM8L3R0PiAoY3N2IG9mIGlucHV0IGlkcyB5b3UgY3JlYXRlZCBpbiB0aGUgYmFja2VuZCkgDQoJCTxiciAvPjxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZV9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGlzIGRlZmluZXMgYSBzdHJpbmcgdGhhdCBkZXZpZGVzIHRoZSB2YWx1ZXMgb2YgdGhlIGlucHV0cyBvZiBvbmUgbXVsdGlfaW5wdXQgd2hlbiBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLjxiciAvPg0KCQkJCURlZmF1bHQgaXMgJnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxsaW1pdGVyIC0tPiZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIG11bHRpX2lucHV0cyB5b3UgZGVmaW5lZCBmb3IgdGhpcyBjb250ZW50IGJsb2NrIHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsbGltaXRlciAtLT4mcXVvdDsNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPldoYXQgaXMgYSBtdWx0aV9pbnB1dCBmb3I/PC9zdHJvbmc+PC9wPg0KCQk8cD5BIG11bHRpX2lucHV0IGJsb2NrIGlzIGEgY29udGVudCBibG9jayB0aGF0IGNvbnNpc3RzIG9mIGRpZmZlcmVudCBpbnB1dCBmaWVsZHMuIDxiciAvPg0KCQlZb3UgY2FuIGRlZmluZSB0aGVtIGluIHRoZSBtb2R1bGUgYWRtaW5pc3RyYXRpb24gdXNpbmcgdGhlIHNhbWUgc3ludGF4IHlvdSB1c2UgaW4gYSB0ZW1wbGF0ZSB3aGVuIGRlZmluaW5nIGEgY29udGVudCBibG9jay48YnIgLz4NCgkJTXVsdGkgaW5wdXRzIGNhbiBiZSB1c2VkIGlmIHlvdSB3YW50IHRvIHN0b3JlIGRpZmZlcmVudCB2YWx1ZXMgaW4gb25lIGNvbnRlbnQgYmxvY2sgYW5kIHByb3ZpZGUgZGlmZmVyZW50IGlucHV0IHR5cGVzIGZvciBlYWNoIHZhbHVlcy48YnIgLz4NCgkJVGhpcyBjYW4gYmUgdXNlZnVsbCBpZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBkcm9wZG93biB0byBzZWxlY3QgYSBtb2R1bGUgdG8gYmUgc2hvd24gaW4gZnJvbnRlbmQgYW5kIHRleHQgaW5wdXQgdG8gZGVmaW5lIHRoZSBtb2R1bGUgcGFyYW1ldGVycy48YnIgLz4NCgkJRXhhbXBsZSBmb3IgYSBtdWx0aV9pbnB1dCBpbiBwYWdlIHRlbXBsYXRlOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSZxdW90OyBsYWJlbD0mcXVvdDtQYWdlIG1vZHVsZXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDttdWx0aV9pbnB1dCZxdW90OyBpbnB1dHM9JnF1b3Q7bW9kdWxlLG1vZHVsZSxtb2R1bGUsbW9kdWxlJnF1b3Q7fQ0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5FeGFtcGxlIGZvciB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgJnF1b3Q7bW9kdWxlJnF1b3Q7OjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBzZWxlY3Rpb24mcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDt8TmV3c3xHYWxsZXJ5fE1lbnUmcXVvdDt9DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBwYXJhbXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IG9uZWxpbmU9dHJ1ZX0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBlZGl0IGEgcGFnZT88L3A+DQoJCTxwPkl0IHdpbGwgc2hvdyB5b3UgYSBmaWVsZHNldCB3aXRoIGxlZ2VuZCAmcXVvdDtQYWdlIG1vZHVsZXMmcXVvdDsuIDxiciAvPg0KCQlJbnNpZGUgdGhpcyBmaWVsZHNldCBpdCBzaG93cyB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgJnF1b3Q7bW9kdWxlJnF1b3Q7IGZvdXIgdGltZXMuPGJyIC8+DQoJCVRoYXQgbWVhbnMgeW91IHNlZSBmb3VyIGxpbmVzIHdpdGggdHdvIGlucHV0IGZpZWxkcy4gQSBkcm9wZG93biBhbmQgYSB0ZXh0IGlucHV0LjwvcD4NCgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBzYXZlIGEgcGFnZT88L3A+DQoJCTxwPlRoZSBtb2R1bGUgc3RvcmVzIHRoZSB2YWx1ZXMgYXMgb25lIHNpbmdsZSBjb250ZW50IHByb3BlcnR5IChha2EgY29udGVudGJsb2NrKSBhbmQgc2VwYXJhdGVzIHRoZSBpbnB1dHMgYnkgYSBnaXZlbiBkZWxpbWl0ZXIuPGJyIC8+DQoJCUxldCYjMDM5O3MgYXNzdW1lIHlvdSBzZWxlY3QgdGhlIE5ld3MgbW9kdWxlIGZvdXIgdGltZXMgd2l0aCBkaWZmZXJlbnQgbW9kdWxlIHBhcmFtcyBsaWtlIGNhdGVnb3J5PSZxdW90OzEmcXVvdDssIGNhdGVnb3J5PSZxdW90OzImcXVvdDssIGNhdGVnb3J5PSZxdW90OzMmcXVvdDssIGNhdGVnb3J5PSZxdW90OzQmcXVvdDsuPGJyIC8+DQoJCUluIHRoZSBkYXRhYmFzZSBpdCBzdG9yZXMgdGhpcyBzdHJpbmc6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzEmcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzImcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzMmcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzQmcXVvdDsNCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+SW4geW91ciBwYWdlIHRlbXBsYXRlIHlvdSBjYW4gZXhwbG9kZSB0aGUgY29udGVudCBieSB0aGUgZGVsaW1pdGVycyBhbmQgY2FsbCB0aGUgc2VsZWN0ZWQgbW9kdWxlcy48L3A+DQoJCTxwPkZ1bGwgRXhhbXBsZTo8L3A+DQoJCTxwcmU+DQoJCTxjb2RlPg0KCQl7KiBkZWZpbmUgdGhlIGNvbnRlbnQgYmxvY2sgKn0NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bXlfbW9kdWxlcyZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDtNb2R1bGUsTW9kdWxlLE1vZHVsZSxNb2R1bGUmcXVvdDsgYXNzaWduPSZxdW90O21vZHVsZXMmcXVvdDt9DQoJCQ0KCQl7KiBleHBsb2RlIGJsb2NrIGNvbnRlbnQgaW4gYW4gYXJyYXkgdG8gZ2V0IHRoZSBpbnB1dCBncm91cHMgKn0NCgkJe2Fzc2lnbiB2YXI9bW9kdWxlcyB2YWx1ZT0mcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT4mcXVvdDt8ZXhwbG9kZTokbW9kdWxlc30NCgkJDQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQ0KCQl7Zm9yZWFjaCBmcm9tPSRtb2R1bGVzIGl0ZW09JnF1b3Q7bW9kdWxlJnF1b3Q7fQ0KCQkJe2lmICRtb2R1bGUgIT0gJiMwMzk7JiMwMzk7fQ0KCQkJDQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0NCgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9JnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+JnF1b3Q7fGV4cGxvZGU6JG1vZHVsZX0NCgkJCQkNCgkJCQl7aWYkbW9kdWxlX2l0ZW1zWzBdICE9ICYjMDM5OyYjMDM5O30NCgkJCQkNCgkJCQkJeyogY2FsbCB0aGUgbW9kdWxlICp9DQoJCQkJCXtpZiBpc3NldCgkbW9kdWxlX2l0ZW1zWzFdKX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6JiMwMzk7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7JiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDomIzAzOTsmcXVvdDsgJiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzFdfGNhdDokc21hcnR5LnJkZWxpbX0NCgkJCQkJe2Vsc2V9DQoJCQkJCQl7ZXZhbCB2YXI9JHNtYXJ0eS5sZGVsaW18Y2F0OiYjMDM5O2Ntc19tb2R1bGUgbW9kdWxlPSZxdW90OyYjMDM5O3xjYXQ6JG1vZHVsZV9pdGVtc1swXXxjYXQ6JiMwMzk7JnF1b3Q7JiMwMzk7fGNhdDokc21hcnR5LnJkZWxpbX0NCgkJCQkJey9pZn0NCgkJCQkJDQoJCQkJey9pZn0NCgkJCQkNCgkJCXsvaWZ9DQoJCQ0KCQl7L2ZvcmVhY2h9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJPC9saT4NCjwvdWw+DQoNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCgk8bGk+VGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvIj5odHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLzwvYT48L2xpPg0KCTxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjwvdWw+DQo8YnIgLz4NCjxwPkZlZWwgZnJlZSByZXBvcnQgYW55IGtpbmQgb2YgZmVlZGJhY2suPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD4NCglBcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy48YnIgLz4NCglUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCw8YnIgLz4NCglidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZjxiciAvPg0KCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS48YnIgLz4NCglTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPGJyIC8+DQoJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2U8YnIgLz4NCglhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZTxiciAvPg0KCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBPGJyIC8+DQoJT3IgcmVhZCBpdCBvbmxpbmU6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMPC9hPjxiciAvPg0KCVBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLg0KPC9wPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLCBHZW9yZyBCdXNjaCAoTmFOKS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCjxiciAvPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8YnIgLz4NCjxwPjxzdHJvbmc+TW9kdWxlIHJlbGVhc2VzPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT48cD48c3Ryb25nPjAuNy4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIGl0ZW0gIzU2NTE8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVxdWlyZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNyAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOSsgKG5lZWRzIENNU21zIDEuOSBtaW5pbXVtIG5vdyk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBzdXBwb3J0IG9mIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIG5vX2NvbGxhcHNlPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjYuMiAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeCAoc2hvd2VkIHRhYnMgb2YgcHJldmlvdXMgdGVtcGxhdGUgd2hlbiB0ZW1wbGF0ZSB3YXMgY2hhbmdlZCk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNi4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IGJ1Z2ZpeGVzIGZvciBDTVNtcyAxLjk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBibG9ja190eXBlIG11bHRpX2lucHV0PC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjYgKE9jdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfZ3JvdXA8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIFJlbW92ZWQgZmlsZSBwaWNrZXIgKGFuZCBhc3NvY2lhdGVkIGJsb2NrX3R5cGVzIGltYWdlL2ZpbGUpIC0gdXNlIEdCRmlsZVBpY2tlciBpbnN0ZWFkLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC41IChTZXB0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI5MiAobWVtb3J5IGlzc3VlKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyNTQgKGRpc2FibGUgd3lzaXd5ZyBub3Qgd29ya2luZyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzEwICh1cmxvbmx5IG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTEgKGltYWdlIHBhdGhzIG5vdCBzdG9yZWQgJiMwMzk7Y29ycmVjdGx5JiMwMzk7KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNjEgKEFkZCBzb3J0IHRvIGltYWdlIHR5cGUgLSBub3RpY2UgdGhlIGNoYW5nZSBvZiBwYXJhbSBmaWx0ZXIpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBwYXJhbXMgZXhjbHVkZV9wcmVmaXgsIGluY2x1ZGVfcHJlZml4LCBleGNsdWRlX3N1Zml4LCBpbmNsdWRlX3N1Zml4PC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNTMgKFRleHQgaW5wdXQgdG8gZGVmaW5lIGFkZCBwYXJhbXMgdG8gcmVkaXJlY3QgZnVuY3Rpb24pPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDAgKERlZmF1bHQgdmFsdWVzIG9mIEFkdmFuY2VkQ29udGVudCBwYWdlIG9wdGlvbnMpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDEgKHB1dCBGZXVBY2Nlc3MgaW4gQmxvY2t0YWIpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyBhcmUgc2hvd24gaW4gc2VwYXJhdGUgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIEFkZGVkIG5ldyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGUgQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW0gZmlsdGVyICh1c2UgbmV3IHBhcmFtcyBpbnN0ZWFkKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBwYXRoIHRvIGZpbGVzIGFyZSBzdG9yZWQgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhcmFtIGRpciBvZiBibG9jayB0eXBlIGZpbGUvaW1hZ2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyIG9ubHkgKHRoZXJlIGlzIG5vIGltYWdlIHVwbG9hZHMgZGlyIHVzZWQgYW55bW9yZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNC4xIChBdWd1c3QgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxNTE6IGZpeGVkIHN0eWxlc2hlZXQgaXNzdWUgd2l0aCBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyBvZiBjb250ZW50IGJsb2NrcyBpbiBJRS9TYWZhcmkuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MTYyOiBQSFAgd2FybmluZ3MgaWYgYmFja2VuZCB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gJnF1b3Q7TWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJnF1b3Q7IG9wZW4gYW4gYWR2YW5jZWQgY29udGVudCBwYWdlIGFuZCBtdWx0aXBsZSBjb250ZW50IGJsb2NrcyBvZiBzYW1lIG5hbWUgd2VyZSB1c2VkIGluIHRlbXBsYXRlLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZXh0cmEgZmllbGRzIGNvdWxkIG5vdCBiZSB1cGRhdGVkLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZmV1IGFjY2VzcyBkaWQgbm90IHdvcmsuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGVsZXRlJnF1b3Q7IHRvIGxldCB1c2VycyBkZWxldGUgZmlsZXMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBGaWxlcyZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtjcmVhdGVfZGlycyZxdW90OyB0byBsZXQgdXNlcnMgY3JlYXRlX2RpcnMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBGaWxlcyZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBuZXcgYmxvY2t0eXBlICZxdW90O25vdGUmcXVvdDsgdG8gY3JlYXRlIHNvbWUgc2luZ2xlIG5vdGVzIGZvciB5b3VyIGVkaXRvcnM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgZGVwZW5kZW5jeSBvZiBGaWxlTWFuYWdlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayBvZiB0eXBlIGZpbGUgb3IgaW1hZ2Ugc3RvcmVzIHJlbGF0aXZlIHVybCBub3c8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYmxvY2sgdHlwZSBpbWFnZSBzaG93cyB0aHVtYm5haWwgaW4gYmFja2VuZCBwcmV2aWV3IGluc3RlYWQgb2YgZnVsbCBpbWFnZTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40IChKdWx5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkltcG9ydGFudCBub3RpY2U6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBwYXJhbSAmcXVvdDt0eXBlJnF1b3Q7IHRvICZxdW90O2Jsb2NrX3R5cGUmcXVvdDsgc2luY2UgaXQgaW50ZXJmZXJlcyB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxMDE6IHBhZ2VfdGFiICZxdW90O29wdGlvbnMmcXVvdDsgd2FzIHNob3duIHRvIHVzZXJzIHdpdGggbm8gcGVybWlzc2lvbiB0byBlZGl0IHBhZ2Ugb3B0aW9ucyBpZiBhIGNvbnRlbnQgYmxvY2sgd2FzIGFzc2lnbmVkIHRvIHRoYXQgdGFiLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA5NzogbGluayB0byBtaXNzaW5nIGNzcyByZW1vdmVkPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbWUtdHlwZSBpc3N1ZSAoYWRkZWQgcHJlZmVyZW5jZSB0byB0b2dnbGUgbWltZS10eXBlIHVzYWdlIG9uL29mZik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgcGF0aCBpc3N1ZSB3aGVyZSB0aHVtYm5haWxzIHdlcmUgbm90IHNob3duPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGNvbXBhdGliaWxpdHkgd2l0aCBDTVNtcyAxLjg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gb3RoZXIgbWlub3IgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBNTEUgc3VwcG9ydDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtzaG93X2Nsb2NrJnF1b3Q7IHRvIGVuYWJsZS9kaXNhYmxlIHRoZSB0aW1lIGRyb3Bkb3duIG9mIGJsb2NrdHlwZXMgJnF1b3Q7ZGF0ZSZxdW90OyBpbiBiYWNrZW5kPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2RhdGVfZm9ybWF0JnF1b3Q7IHRvIGZvcm1hdCB0aW1lc3RhbXAgb2YgYmxvY2t0eXBlcyAmcXVvdDtkYXRlJnF1b3Q7IGluIGZyb250ZW5kPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJ1bGsgZnVuY3Rpb24gdG8gc2V0IGFsbCBwYWdlcyB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuNCAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTA0NTogV2hlbiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IC0+IEFkdmFuY2VkIENvbnRlbnQgbG90cyBvZiBQSFAgZXJyb3JzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDU2OiBwYWdlX3RhYnMgbm90IHdvcmtpbmcgZm9yIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAmcXVvdDtNYW5hZ2UgQWxsIENvbnRlbnQmcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNzM6IGluY29ycmVjdCBkaXNwbGF5IG9mIGZpbGVzIHdoZW4gb3BlbmluZyBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbm9yIGJ1ZyB3aGVyZSB0aGUgb3B0aW9uICZxdW90O2FsbG93X25vbmUmcXVvdDsgb2YgY29udGVudCBibG9ja3Mgb2YgdHlwZSBpbWFnZS9maWxlIHdhcyBub3Qgc2hvd24gd2hlbiB0ZW1wbGF0ZSBoYXMgYmVlbiBlZGl0ZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBmaWxlbWFuYWdlbWVudCBhbmQgdXBsb2FkIGZ1bmN0aW9ucyB0byBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGU8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgYnJlYWRjdW1icyB0byBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkbWlucyBtYXkgYnJvd3NlIHRoZSBlbnRpcmUgZGlyIHRyZWUgaW4gZmlsZXBpY2tlciBmaWxlIGJyb3dzZXIgcmVnYXJkbGVzcyBvZiB0ZW1wbGF0ZSBwYXJhbXM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgbWltZSB0eXBlIGNoZWNraW5nIHRvIGdldCBmaWxlIHR5cGU8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcmF3dXJsZW5jb2RlIGluIHNyYyBhdHRyaWJzIHRvIGRpc3BsYXkgaW1hZ2VzIHdpdGggd2VpcmQgZmlsZW5hbWVzLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPm1pc2NlbGxhbmVvdXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBPT1Agc3R1ZmYgKHByaXZhdGUvcHVibGljL3Byb3RlY3RlZCkgdG8gZ2FpbiBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBQSFA0PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNoYW5nZWQgYWpheCBmdW5jdGlvbnMgdG8gcmV0dXJuIHhtbCB2YWx1ZXM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCB1c2FnZSBvZiBJbWFnZU1hbmFnZXIgb25jZSBhbmQgZm9yIGFsbC4gKGNhdXNlZCBvbmx5IHRyb3VibGUpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMyAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJPHVsPg0KCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJPHVsPg0KCQkJCTxsaT48cD4tIGFsaWFzIHdhcyBub3QgYWx3YXlzIGNvbnZlcnRlZCBwcm9wZXJseTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHVuc3VibWl0dGVkIGNvbnRlbnQgZ290IGxvc3QgaWYgc3dpdGNoaW5nIGZyb20gQ29udGVudCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCTwvdWw+DQoJCTwvbGk+DQoJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWRkZWQgc3RhcnQvZW5kIGRhdGU8L3A+PC9saT4NCgkJCQk8bGk+PHA+LSByZW1vdmVkIHRpbWVwaWNrZXI7IHJlcGxhY2VkIGJ5IGEgc2ltcGxlIGRyb3Bkb3duPC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X2ltYWdlfTwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgk8L3VsPg0KCTxsaT48cD48c3Ryb25nPjAuMy4yIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGNoYW5naW5nIGJhY2sgdG8gZGVmYXVsdCBjb250ZW50IHR5cGUgb3IgY2hhbmdpbmcgdGVtcGxhdGUgY2F1c2VkIGZhdGFsIGVycm9yczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZyB3aGVuIHNhdmluZyBhIHBhZ2U8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcHJldmlldyB0YWI8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlLWFkZGVkIGV4cGFuZC9jb2xsYXBzZSBidXR0b24gdG8gdG9nZ2xlIGNvbnRlbnQgYmxvY2tzIGluIGJhY2tlbmQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtcyBlZGl0b3JfZ3JvdXBzL2VkaXRvcl91c2VycyB0byBzcGVjaWZ5IGNlcnRhaW4gdXNlcnMvZ3JvdXBzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCBjZXJ0YWluIGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbXMgc2VsZWN0ZWQvY2hlY2tlZDsgdXNlIHBhcmFtIGRlZmF1bHQgaW5zdGVhZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYmxvY2sgaWRzIHdpbGwgYmUgY29udmVydGVkIGZyb20gYmxvY2sgbmFtZSB1c2luZyBjb3JlIGZ1bmN0aW9uIG11bmdlX3N0cmluZ190b191cmwgKHRvIHJlbW92ZSBzcGVjaWFsIGNoYXJzLCB3aGl0ZXNwYWNlcywgdW1sYXV0cyBldGMuKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIG9mIGJsb2NrdHlwZSBkcm9wZG93bi9zZWxlY3RfbXVsdGlwbGUgd2hlcmUgZmlyc3QgaXRlbSBoYWQgYW4gZW1wdHkgbGFiZWwgaWYgb25seSB0aGUgcGFyYW0gJnF1b3Q7dmFsdWVzJnF1b3Q7IGlzIHVzZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHNvbWUgdGVtcGxhdGUgdmFycyBvZiB0aGUgZnJvbnRlbmQgdG8gYmUgYWxzbyBhY2Nlc3NpYmxlIGluIGJhY2tlbmQgKGUuZy46ICRwYWdlX2FsaWFzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyB0byBhbGwgY29udGVudCBibG9jayB0eXBlcyB0byBzcGVjaWZ5IGlmIHRoZSBwcmVkZWZpbmVkIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkIGlmIG5vIHZhbHVlIGlzIGVudGVyZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBlbXB0eSB2YWx1ZXMgd2VyZSBuZXZlciBiZSBzdG9yZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBkZWZhdWx0IHZhbHVlIGluIGZyb250ZW5kIHdhcyBpZ25vcmVkIGlmIHRoZSAmcXVvdDthbGxvd19ub25lJnF1b3Q7IHBhcmFtIHdhcyBjaGFuZ2VkIGFmdGVyIGFuIGVtcHR5IHZhbHVlIGhhcyBiZWVuIHN0b3JlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7c29ydGFibGVfaXRlbXMmcXVvdDsgdG8gY3JlYXRlIGEgc29ydGFibGUgbXVsdGlwbGUgc2VsZWN0IGxpc3QgKHNlbGVjdCBsaXN0IHdpbGwgcmVzdWx0IGluIGEgdGFibGUgd2l0aCBjaGVja2JveGVzOyBvbmx5IG9yZGVyIG9mIHNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBzaG93ZWQgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdDsgdW5zZWxlY3RlZCBpdGVtcyB3aWxsIGJlIGFwcGVuZGVkIGluIHRoYXQgb3JkZXIgdGhleSBhcmUgcGxhY2VkIGluIHRoZSB0ZW1wbGF0ZSk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4xIChNYXkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSByZW9yZGVyaW5nIHN0dWZmIGZvciBub3cgKGNhdXNlcyB0cm91YmxlIGF0IHRoaXMgdGltZSk8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIGRiIHN0dWZmIChwYXJhbXMgb2YgY29udGVudCBibG9ja3MgdGhhdCBhcmUgZGVmaW5lZCBpbiB0ZW1wbGF0ZSB3b24mIzAzOTt0IGJlIHNhdmVkIGluIG1vZHVsZSBkYiB0YWJsZSBhbnltb3JlIC0+IGhvcGVmdWxseSBzcGVlZCB1cCBsb2FkaW5nIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIGR1cGxpY2F0ZSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPkFkdmFuY2VkQ29udGVudCAwLjMgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJld3JpdGUgY29kZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYnVnZml4ZXM8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSB1c2luZyBzZXBhcmF0ZSBtb2R1bGUgdGVtcGxhdGUgbm93IHRvIGRzcGxheSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYWdlIGFsaWFzIGluaGVyaXRhbmNlPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAzIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIE1ham9yIEJ1Z2ZpeCAobWlzc2luZyAmcXVvdDs7JnF1b3Q7IGFuZCBzdHJhbmdlIGludmlzaWJsZSBpbnZhbGlkIGNoYXJzKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAyIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcGFyYW0gJnF1b3Q7ZGVsaW1pdGVyJnF1b3Q7PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiAmcXVvdDtTaG93IGxvZ2luIGZvcm0mcXVvdDs8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIHBhZ2UgYWxpYXMgdG8gYWRkIGl0IGFzIHByZWZmaXg7IHNvIGlmIHlvdSBoYXZlIGEgcGFnZSBjYWxsZWQgJnF1b3Q7bWVtYmVycyZxdW90OyBhbmQgc2VsZWN0IGZvciBlYWNoIGNoaWxkIHBhZ2UgJnF1b3Q7aW5oZXJpdCBwYWdlIGFsaWFzJnF1b3Q7IGFsbCBjaGlsZCBwYWdlcyBhbGlhc2VzIHdpbGwgc3RhcnQgd2l0aCAmcXVvdDttZW1iZXJzXyZxdW90OzsgbWFrZXMgZmlsdGVyaW5nIG9mIG1lbnUgZW50cmllcyB3aXRoIE1lbnVNYW5hZ2VyIHBhcmFtICZxdW90O2V4Y2x1ZGVwcmVmZml4JnF1b3Q7IG9yICZxdW90O2luY2x1ZGVwcmVmZml4JnF1b3Q7IGVhc2llci48L3A+PC9saT4NCgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+IA0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPlhDb250ZW50IEJFVEEgKEFwcmlsIDIwMTApOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGNvbnZlcnRlZCB0aGUgc2luZ2xlIGZpbGUgaW50byBhIG1vZHVsZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVuYW1lZCBwYXJhbXM7IHNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBkZXRhaWxzPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlNpbmdsZSBmaWxlIHJlbGVhc2VzIChkaXNjb250aW51ZWQpPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz4xLjQgKE1hcmNoIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gY2xlYW51cCBjb2RlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHJlZGlyZWN0IHBhZ2UgaWYgZmV1IGlzIG5vdCBsb2dnZWQgaW4gLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgZmV1X2FjY2VzcyBhbmQgcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb24gLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19vbmx5IC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHNtYXJ0eSBsb2dpYyBpbiBiYWNrZW5kIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzdHlsZSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmlsdGVyIChmaWx0ZXJpbmcgaW1hZ2VzIGluIGJhY2tlbmQpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBJbWdNb2RlIChkcm9wZG93biBvciBJbWFnZU1hbmFnZXIpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzbWFydHlPbiAoZm9yIHByb2Nlc3Npbmcgc21hcnR5IHZhcnMgb2YgdGhlIHRlbXBhdGUgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjEuMyAoQXByaWwgMjAwOSk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBDTVNtcyAxLjYuKiByZWFkeSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBmZXUgYWNjZXNzIG9wdGlvbiAtIChOYU4pPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+MS4yIChNYXJjaCAyMDA5KTo8L3N0cm9uZz4gaW5pdGlhbCByZWxlYXNlPC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBBIHNpbmdsZSBmaWxlIENvbnRlbnQyLmluYy5waHAgdGhhdCBuZWVkcyB0byBiZSBwYWNlZCBpbiBsaWIvY2xhc3Nlcy9jb250ZW50dHlwZXMuPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBsYXlvdXQvb3B0aW9ucyBvZiBiYWNrZW5kIHBhbmVsIGNhbiBiZSBjb250cm9sZWQgYnkgYWRkaXRpb25hbCBzbWFydHkgcGFyYW1zIGluIHRoZSB0ZW1wbGF0ZTsgaW50ZWdyYXRlZCB0aGUge2NvbnRlbnRfaW1hZ2V9IHRhZyAtIChtb2QgYnkgTmFOKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPGJyIC8+JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sncWNhJ10gPSAnUDAtMTYwODkyNjA0MC0xMjcxMTQ0MTc1NzgzJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNzg2Mzg1OTA0LjEyNzExNTc5OTcuMTI5NzE2Nzc4MS4xMjk3MTcwODU2LjE2Nic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyOTcxNzA4NTYuMTY2LjE1MS51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI5NzE3MDg1Nic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sl_SI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ05hcHJlZG5lIFZzZWJpbmUnOwokbGFuZ1snYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnXSA9ICdOYXByZWRuZSBOYXN0YXZpdHZlJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSBOYXByZWRuZVZzZWJpbmUgJXMgamUgaW5zdGFsaXJhbic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBOYXByZWRuZVZzZWJpbmUgJXMgemJyaXNhbic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgdXBncmFkZWQgdG8gJXMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGluc3RhbGxlZC4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgdW5pbnN0YWxsZWQuJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdW5pbnN0YWxsIHRoZSBtb2R1bGUgQWR2YW5jZWRDb250ZW50Pyc7CiRsYW5nWydub3RpY2VfZHVwbGljYXRlY29udGVudCddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhpcyBibG9jayBpcyB1c2VkIG11bHRpcGxlIHRpbWVzIGluIHRlbXBsYXRlLiBZb3Ugb25seSBzZWUgdGhlIGZpcnN0IGJsb2NrIGhlcmUuPC9lbT4nOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IENhbm5vdCB1c2UgYmFzaWMgY29udGVudCBwcm9wZXJ0eSBuYW1lICYjMDM5OyVzJiMwMzk7IGFzIHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LiA8YnIgLz5UaGlzIGJsb2NrIGlzIGRpc2FibGVkLiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUgYW5kIGNob3NlIGEgZGlmZmVyZW50IHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2V4cGlyZWRhdGUnXSA9ICdFbmQgZGF0ZSBtdXN0IGJlIGxhdGVyIHRoYW4gc3RhcnQgZGF0ZS4nOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAnQ3VycmVudCBkaXJlY3RvcnknOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0ltYWdlc2l6ZSc7CiRsYW5nWydzaXplJ10gPSAnRmlsZXNpemUnOwokbGFuZ1snaW5oZXJpdF9mcm9tX3BhcmVudCddID0gJ0luaGVyaXQgZnJvbSBwYXJlbnQnOwokbGFuZ1snbm9uZSddID0gJ25vbmUnOwokbGFuZ1snaW52YWxpZCddID0gJ2ludmFsaWQnOwokbGFuZ1snaW52YWxpZF9ibG9ja3R5cGUnXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IEludmFsaWQgdmFsdWUgJiMwMzk7JXMmIzAzOTsgb2YgcGFyYW0gYmxvY2tfdHlwZSBpbiBibG9jayAmIzAzOTslcyYjMDM5Oy48YnIgLz5DaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50X2Jsb2NrcGFyYW1zJ10gPSAnPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IEluc3VmZmljaWVudCBwYXJhbXMuIDxiciAvPk1pc3NpbmcgcGFyYW0gJiMwMzk7JXMmIzAzOTsgZm9yIGJsb2NrICYjMDM5OyVzJiMwMzk7LiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4nOwokbGFuZ1sneWVzJ10gPSAnWWVzJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwokbGFuZ1snZnJvbnRlbmRhY2Nlc3MnXSA9ICdGcm9udGVuZCBhY2Nlc3MnOwokbGFuZ1sncmVkaXJlY3RwYWdlJ10gPSAnUmVkaXJlY3QgUGFnZSBpZiBubyBhY2Nlc3MnOwokbGFuZ1snc2hvd2xvZ2luZm9ybSddID0gJ1Nob3cgbG9naW4gZm9ybSc7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdSZWdpc3RlcmVkIHVzZXJzIG9ubHknOwokbGFuZ1snYmxvY2snXSA9ICdCbG9jayc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnVXNlIGV4cGlyZSBkYXRlJzsKJGxhbmdbJ3N0YXJ0ZGF0ZSddID0gJ1N0YXJ0IERhdGUnOwokbGFuZ1snZW5kZGF0ZSddID0gJ0VuZCBEYXRlJzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ0Jsb2NrIENvbnRlbnQnOwokbGFuZ1snc2V0cGFnZWluYWN0aXZlJ10gPSAnU2V0IFBhZ2UgdG8gSW5hY3RpdmUnOwokbGFuZ1snZGVsZXRlcGFnZSddID0gJ0RlbGV0ZSBQYWdlJzsKJGxhbmdbJ3VuaW5zdGFsbGFjdGlvbiddID0gJ1VuaW5zdGFsbCBhY3Rpb24nOwokbGFuZ1snc2V0Y29udGVudDEnXSA9ICdTZXQgYWxsIFBhZ2VzIG9mIEFkdmFuY2VkQ29udGVudCBiYWNrIHRvIHR5cGUgQ29udGVudCc7CiRsYW5nWydzZXRjb250ZW50MiddID0gJ1NldCBhbGwgUGFnZXMgb2YgQWR2YW5jZWRDb250ZW50IGJhY2sgdG8gdHlwZSBDb250ZW50IGFuZCByZW1vdmUgYWRkaXRpb25hbCBjb250ZW50IGJsb2Nrcyc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQcmVmZXJlbmNlcyB1cGRhdGVkJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdPayc7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yJzsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gPSAnRGVsZXRlIGFsbCBwYWdlcyBvZiB0eXBlIEFkdmFuY2VkQ29udGVudCc7CiRsYW5nWydpbXBvcnRwYWdlcyddID0gJ1NldCBhbGwgUGFnZXMgb2YgdHlwZSAlcyB0byB0eXBlICVzLic7CiRsYW5nWydwYWdlc2ltcG9ydGVkJ10gPSAnQWxsIGNvbnRlbnQgcGFnZXMgc2V0IHRvIEFkdmFuY2VkQ29udGVudC4nOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byBjaGFuZ2UgdGhlIGNvbnRlbnQgdHlwZSBvZiBhbGwgY29udGVudCBwYWdlcz8nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICdIaWRlIHRoaXMgbWVzc2FnZSc7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICdEZWZhdWx0IEFkdmFuY2VkQ29udGVudCBzZXR0aW5ncyc7CiRsYW5nWydyZWRpcmVjdHBhcmFtcyddID0gJ1VSTCBwYXJhbXMgdG8gYXBwZW5kIHdoZW4gcmVkaXJlY3RpbmcnOwokbGFuZ1snZXZhbHVhdGVzbWFydHknXSA9ICdVc2Ugc21hcnR5IHRvIHByb2Nlc3MgdGhlIHBhcmFtcyc7CiRsYW5nWydlcnJvcl9sb2FkaW5nX21vZHVsZSddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBDb3VsZCBub3QgbG9hZCBtb2R1bGUgJiMwMzk7JXMmIzAzOTsuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0J10gPSAnPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IE1vZHVsZSAmIzAzOTslcyYjMDM5OyBkb2VzIG5vdCBzdXBwb3J0IGNvbnRlbnRibG9ja3MuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnXSA9ICdBbGwgcGFnZXMgb2YgdHlwZSAlcyBzdWNjZXNmdWxseSBjaGFuZ2VkIHRvICVzJzsKJGxhbmdbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSA9ICdTaG93IEFkdmFuY2VkQ29udGVudCBvcHRpb25zIHRhYic7CiRsYW5nWydkaXNwbGF5X3NldHRpbmdzJ10gPSAnJXMgZGlzcGxheSBzZXR0aW5ncyc7CiRsYW5nWydzYXZlX2NvbGxhcHNlX3N0YXR1cyddID0gJ1NhdmUgY29sbHBhc2Ugc3RhdHVzIG9mICVzJzsKJGxhbmdbJ2NvbnRlbnRfYmxvY2tzJ10gPSAnY29udGVudCBibG9ja3MnOwokbGFuZ1snYmxvY2tfbWVzc2FnZSddID0gJ2NvbnRlbnQgYmxvY2sgbWVzc2FnZSc7CiRsYW5nWydibG9ja19ncm91cHMnXSA9ICdibG9jayBncm91cHMnOwokbGFuZ1snY29sbGFwc2VfZGVmYXVsdCddID0gJ0NvbGxhcHNlICVzIGJ5IGRlZmF1bHQnOwokbGFuZ1sncGVyX3BhZ2UnXSA9ICdwZXIgcGFnZSc7CiRsYW5nWydwZXJfdGVtcGxhdGUnXSA9ICdwZXIgdGVtcGxhdGUnOwokbGFuZ1snYm90aDEnXSA9ICd0ZW1wbGF0ZSBPUiBwYWdlICc7CiRsYW5nWydib3RoMiddID0gJ3RlbXBsYXRlIEFORCBwYWdlJzsKJGxhbmdbJ2NvbnRlbnQnXSA9ICdDb250ZW50JzsKJGxhbmdbJ2NvbnRlbnQyJ10gPSAnQWR2YW5jZWQgQ29udGVudCc7CiRsYW5nWydwcmVmcyddID0gJ1ByZWZlcmVuY2VzJzsKJGxhbmdbJ211bHRpX2lucHV0J10gPSAnTXVsdGkgSW5wdXRzJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbCddID0gJ011bHRpIElucHV0IFRlbXBsYXRlcyc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXQnXSA9ICdBZGQgbmV3IG11bHRpIGlucHV0JzsKJGxhbmdbJ2FkZF9tdWx0aV9pbnB1dF90cGwnXSA9ICdBZGQgbmV3IG11bHRpIGlucHV0IHRlbXBsYXRlJzsKJGxhbmdbJ2lucHV0X2lkJ10gPSAnSW5wdXQgSUQnOwokbGFuZ1snaW5wdXRfZmllbGRzJ10gPSAnSW5wdXQgZmllbGRzJzsKJGxhbmdbJ3RwbF9uYW1lJ10gPSAnVGVtcGxhdGUgbmFtZSc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIGlzIGEgcmVxdWlyZWQgZmllbGQgYW5kIG1heSBub3QgYmUgZW1wdHknOwokbGFuZ1snZXJyb3JfaW5wdXRfZmllbGRzJ10gPSAnSW5wdXQgZmllbGRzIGlzIGEgcmVxdWlyZWQgZmllbGQgYW5kIG1heSBub3QgYmUgZW1wdHkuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2lkJ10gPSAnTm8gaW5wdXQgaWQgZ2l2ZW4gb3IgaW5wdXQgaWQgYWxyZWFkeSBleGlzdHMuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2lkX2V4aXN0cyddID0gJ0lucHV0IElEIGlzIGFscmVhZHkgaW4gdXNlLiBDaG9vc2UgYSBkaWZmZXJlbnQgb25lLiAobXVzdCBiZSB1bmlxdWUpJzsKJGxhbmdbJ211bHRpX2lucHV0X2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgYWRkZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCBkZWxldGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdXBkYXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgYWRkZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgdXBkYXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBkZWxldGVkLic7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSA9ICdEZWxldGUgc2VsZWN0ZWQgaXRlbXMnOwokbGFuZ1snY29uZmlybV9kZWxldGUnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgZG8gZGVsZXRlIHRoaXMgaXRlbT8nOwokbGFuZ1snY29uZmlybV9kZWxldGVfc2VsZWN0ZWQnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgZG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBpdGVtcz8nOwokbGFuZ1sndXNlX2NvbnRlbnR0eXBlJ10gPSAnVXNlIGNvbnRlbnR0eXBlJzsKJGxhbmdbJ2hlbHBfdHBsX3ZhcnMnXSA9ICc8cD48c3Ryb25nPlRlbXBsYXRlIHZhcnM6PC9zdHJvbmc+PC9wPg0KPHA+PHByZT48Y29kZT57JGlucHV0c308L2NvZGU+PC9wcmU+IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGRlZmluZWQgaW5wdXQgZWxlbWVudHMgb2YgdGhhdCBtdWx0aSBpbnB1dCBibG9jay48YnIgLz4NCkVhY2ggaW5wdXQgZWxlbWVudCBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBpdHMgcGFyYW1zLiA8YnIgLz4NClNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBpbmZvLjxiciAvPg0KQWRkaXRpb25hbCBwYXJhbSBpcyAmcXVvdDtpbnB1dCZxdW90OyB0aGF0IHdpbGwgcHJpbnQgb3V0IHRoZSBpbnB1dCBlbGVtZW50LjxiciAvPg0KVG8gYWNjZXNzIHRoZSBwYXJhbXMgdXNlIHRoZSBkb3Qgc3ludGF4LjxiciAvPg0KRXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0NCgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9PGJyIC8+DQp7L2ZvcmVhY2h9PC9jb2RlPjwvcHJlPic7CiRsYW5nWydoZWxwJ10gPSAnPGJyIC8+DQo8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4NCjxwPlRoaXMgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICZxdW90O0NvbnRlbnQmcXVvdDsgb2YgQ01TbXMuPGJyIC8+DQpJdCBwcm92aWRlcyBtb3JlIGZsZXhpYmlsaXR5IGJ5IGNyZWF0aW5nIGN1c3RvbSBpbnB1dCBjb250cm9scyBpbiBiYWNrZW5kLjxiciAvPg0KVXNlcnMgY2FuIGFkZCBkcm9wZG93bnMsIG11bHRpcGxlIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcywgZ3JvdXAgY29udGVudCBibG9ja3MgDQppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgDQp1c2luZyBhZGRpdGlvbmFsIHBhcmFtcyBpbiB0aGUgdGVtcGxhdGUgd2hlbiBjYWxsaW5nIHRoZSBjb250ZW50LjxiciAvPg0KSXQgYWxzbyBhZGRzIGFiaWxpdHkgdG8gZ3JhbnQgYWNjZXNzIG9mIHBhZ2VzIHRvIGNlcnRhaW4gdXNlcnMgb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgb3IgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSBzaG93aW5nIHRoZSBsb2dpbiBmb3JtIG9yIA0KanVzdCByZWRpcmVjdCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuPGJyIC8+DQpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgDQpwYXJlbnQgcGFnZXMuPC9wPg0KPHA+WW91IGNhbiBldmVuIHVzZSBzbWFydHkgbG9naWMgaW4gcGFyYW1ldGVyIHZhbHVlcy4gVGhhdCBtZWFucyB5b3UgY2FuIHVzZSB0aGUgDQpyZXN1bHQgb2YgYSBwbHVnaW4sIGFuIHVkdCBvciBldmVuIGEgbW9kdWxlIG9yIGp1c3QgdGhlIGNvbnRlbnQgb2YgYSBnbG9iYWwgDQpjb250ZW50IGJsb2NrIGFzIHBhcmFtZXRlciB2YWx1ZSB0byBjcmVhdGUgZHluYW1pYyB2YWx1ZXMuPC9wPg0KPGgzPkhvdyBpcyBpdCB1c2VkPzwvaDM+DQo8cD5BZnRlciBpbnN0YWxsYXRpb24gdGhlIG1vZHVsZSBzZXR0aW5ncyBjYW4gYmUgZm91bmQgaW4gJnF1b3Q7RXh0ZW5zaW9ucy0+QWR2YW5jZWRDb250ZW50JnF1b3Q7LjwvcD4NCjxwPkFkZGl0aW9uYWxseSB5b3Ugd2lsbCBoYXZlIGEgbmV3IGNvbnRlbnQgdHlwZSAmcXVvdDtBZHZhbmNlZENvbnRlbnQmcXVvdDsgYXZhaWxhYmxlIA0Kd2hlbiBhZGRpbmcvZWRpdGluZyBhIHBhZ2UuPGJyIC8+DQo8cD5BZGQgdGhlIGZvbGxvd2luZyBwYXJhbXMgdG8geW91ciBjb250ZW50IHRhZyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUsIA0KY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhbmQgc2VlIHdoYXQgaGFwcGVucyANCmluIGJhY2tlbmQuLi48L3A+DQo8aDM+V2hhdCBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGU/PC9oMz4NCjxwPmFsbCBwYXJhbXMgYXJlIG9wdGlvbmFsPC9wPg0KPHA+PHN0cm9uZz5EZWZhdWx0IHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9jazwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBbGxvd3MgeW91IHRvIGhhdmUgbW9yZSB0aGFuIG9uZSBjb250ZW50IGJsb2NrIHBlciBwYWdlLiBJZiBtdWx0aXBsZSBjb250ZW50IHRhZ3MgYXJlIHB1dCBvbiBhIHRlbXBsYXRlLCB0aGF0IG51bWJlciBvZiBlZGl0IGJveGVzIHdpbGwgYmUgZGlzcGxheWVkIGlmIHRoZSBwYWdlIGlzIGVkaXRlZC48YnIgLz4NCgkJCQllLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90O308L2NvZGU+PGJyIC8+DQoJCQkJTm93LCBpZiB5b3UgZWRpdCBhIHBhZ2UgdGhlcmUgd2lsbCBiYSBhIHRleHRhcmVhIGNhbGxlZCAmcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90Oy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChubyB3aGl0ZXNwYWNlcywgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBldGMuKS4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvcGVyIG5hbWUgKHNpbWlsYXIgdG8gdGhlIHBhZ2UgYWxpYXMpLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gdHJ1ZSwgdGhlbiBvbmx5IG9uZSBlZGl0IGxpbmUgd2lsbCBiZSBzaG93biB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIGZhbHNlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLiBPbmx5IHdvcmtzIHdoZW4gYmxvY2sgcGFyYW1ldGVyIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+RGVmYXVsdCBjb250ZW50IHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFnZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQXNzaWducyB0aGUgY29udGVudCB0byBhIHNtYXJ0eSBwYXJhbWV0ZXIsIHdoaWNoIHlvdSBjYW4gdGhlbiB1c2UgaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHBhZ2UsIG9yIHVzZSB0byB0ZXN0IHdoZXRoZXIgY29udGVudCBleGlzdHMgaW4gaXQgb3Igbm90LjxiciAvPg0KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPg0KCQkJCTxjb2RlPntjb250ZW50IGFzc2lnbj1wYWdlY29udGVudH08YnIgLz4NCgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9JnF1b3Q7JHBhZ2Vjb250ZW50JnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IEZvciBzb21lIHJlYXNvbiB0aGlzIHBhcmFtIGRvZXMgbm90IHdvcmsgYXQgdGhlIG1vbWVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBdmFuY2VkQ29udGVudH0uIFVzZSA8YnIgLz48Y29kZT57Y2FwdHVyZSBhc3NpZ249JnF1b3Q7Zm9vJnF1b3Q7fXtBZHZhbmNlZENvbnRlbnR9ey9jYXB0dXJlfTwvY29kZT4gPGJyIC8+aW5zdGVhZC48L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPkFkdmFuY2VkIHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190eXBlPC90dD4gKHRleHQsY2hlY2tib3gsZHJvcGRvd24sc2VsZWN0X211bHRpcGxlLGRhdGUsbXVsdGlfaW5wdXQpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHdoYXQgY29udGVudCBjb250cm9sIHR5cGUgaXMgdXNlZCBpbiB0aGUgYmFjayBlbmQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnBhZ2VfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgcGFyYW1ldGVyIHNldHMgdGhlIHRhYiBpbiB3aGljaCB0aGUgY29udGVudCBibG9jayBpcyBkaXNwbGF5ZWQgaW4gdGhlIGJhY2tlbmQuPGJyIC8+DQoJCQkJUG9zc2libGUgdmFsdWVzIGFyZSAmcXVvdDttYWluJnF1b3Q7ICggPSBUYWIgJnF1b3Q7TWFpbiBNZW51JnF1b3Q7KSwgJnF1b3Q7b3B0aW9ucyZxdW90OyAoID0gVGFiICZxdW90O09wdGlvbnMmcXVvdDspLCBvciBhbnkgb3RoZXIgYXJiaXRyYXJ5IHZhbHVlPGJyIC8+DQoJCQkJPGVtPmUuZy4geW91IGNhbiBhZGQgYSBjaGVja2JveCB0byB0aGUgb3B0aW9ucyB0YWIgb3IgY3JlYXRlIG5ldyB0YWJzPC9lbT4uDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIHRoZSBibG9ja3Mgd2l0aGluIGEgcGFnZSB0YWIgY2FuIGJlIGZ1cnRoZXIgZGl2aWRlZCBpbnRvIHRhYnMgb3IgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX2dyb3VwPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIG11bHRpcGxlIGJsb2NrcyBjYW4gYmUgZ3JvdXBlZCBpbiBhIGZpZWxkc2V0LiBBbnkgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCBhcyBhIHBvc3NpYmxlIHZhbHVlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hY3RpdmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gZGlzYWJsZSBhIGNvbnRlbnQgYmxvY2suIERpc2FibGVkIGNvbnRlbnQgYmxvY2tzIHdvbiYjMDM5O3QgYmUgc2hvd24gaW4gYmFja2VuZCBhcyB3ZWxsIGFzIGluIGZyb250ZW5kLiAob25seSB3b3JrcyB3aXRoIHtBZHZhbmNlZENvbnRlbnR9IHBsdWdpbik8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IHRoaXMgYmxvY2suDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdXNlciBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGUgcGFyYW1zIDx0dD5lZGl0b3JfdXNlcnM8L3R0PiBhbmQgPHR0PmVkaXRvcl9ncm91cHM8L3R0PiBhcmUgZW1wdHkgdGhlIGJsb2NrIG1heSBiZSBlZGl0ZWQgYnkgYW55IHVzZXIgd2l0aCBzdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gZWRpdCBhIHBhZ2U8L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGxpc3Qgb2YgZmV1IGdyb3VwIGlkcyBzZXBhcmF0ZWQgYnkgYSBjb21tYS48YnIgLz4NCgkJCQlUaGlzIHNob3dzIHRoZSBjb250ZW50IGJsb2NrIG9ubHkgdG8gY2VydGFpbiBmZXUgZ3JvdXBzLjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNwZWNpZnkgaWYgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIGZldSBtb2R1bGUgd2lsbCBiZSBzaG93biBvciBub3QuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBUaGUgbG9naW4gZm9ybSB3aWxsIG9ubHkgYmUgc2hvd24gb25lIHRpbWUuPGJyIC8+DQoJCQkJSWYgdGhlcmUgYXJlIG11bHRpcGxlIGJsb2NrcyB3aXRoIGxpbWl0ZWQgZmV1X2FjY2VzcyBhbmQgZmV1X2FjdGlvbiBzZXQgdG8gdHJ1ZSBvbmx5IHRoZSBmaXJzdCBibG9ja3MgbG9naW4gZm9ybSB3aWxsIGJlIHNob3duIGFuZCBhbGwgb3RoZXIgYmxvY2tzIHdpbGwganVzdCBiZSBlbXB0eS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFsbG93X25vbmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPlNldCB0byB0cnVlIGlmIHRoZSB1c2VyIG1heSBlbnRlciBlbXB0eSB2YWx1ZXMuIDxiciAvPklmIHNldCB0byBmYWxzZSBhbmQgdmFsdWUgaXMgZW1wdHkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIHBhcmFtICZxdW90O2RlZmF1bHQmcXVvdDsgd2lsbCBiZSB1c2VkLiA8YnIgLz5JZiBzZXQgdG8gdHJ1ZSBhbmQgYmxvY2sgaXMgb2YgdHlwZSBpbWFnZS9maWxlIHRoZSBvcHRpb24gJnF1b3Q7bm9uZSZxdW90OyAobW9kZT0mcXVvdDtkcm9wZG93biZxdW90Oykgb3IgYSBidXR0b24gdG8gY2xlYXIgdGhlIHNlbGVjdGVkIGZpbGUvaW1hZ2UgdmFsdWUgKG1vZGU9JnF1b3Q7ZmlsZXBpY2tlciZxdW90Oykgd2lsbCBiZSBkaXNwbGF5ZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNtYXJ0eTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVHVybiBzbWFydHkgcHJvY2Vzc2luZyBvZiB2YWx1ZXMgb24vb2ZmLjxiciAvPg0KCQkJCUlmIHNldCB0byB0cnVlIGFueSBnaXZlbiB2YWx1ZSB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGUgc21hcnR5IGVuZ2luZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6IDwvc3Ryb25nPiBDb25zaWRlciB0aGF0IHlvdSBjYW5ub3QgdXNlIHRoZSBkZWZhdWx0IHNtYXJ0eSBkZWxpbWl0ZXJzIHRoYXQgYXJlIHVzZWQgaW4gdGhlIHRlbXBsYXRlLiBUaGlzIHdpbGwgY2F1c2Ugc21hcnR5IGVycm9ycyBpbiBmcm9udGVuZC48YnIgLz4NCgkJCQlTbyB5b3UgbmVlZCB0byB1c2UgOjo6IGFzIGRlbGltaXRlciBpbnN0ZWFkLjxiciAvPjwvZW0+DQoJCQkJRS5nLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7Q2F0ZWdvcmllcyZxdW90OyBsYWJlbD0mcXVvdDtTZWxlY3QgYSBjYXRlZ29yeSZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90Ozo6Omdsb2JhbF9jb250ZW50IG5hbWU9JiMwMzk7Y2F0ZWdvcnlsaXN0JiMwMzk7Ojo6JnF1b3Q7IHNtYXJ0eT0mcXVvdDt0cnVlJnF1b3Q7fTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZXNjcmlwdGlvbjwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZS9mYWxzZSB0byBkaXNwbGF5IGJsb2NrIGluIGJhY2tlbmQgaW4gY29sbGFwc2VkL2V4cGFuZGVkIG1vZGUgYnkgZGVmYXVsdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHdpbGwgYmUgYWx3YXlzIGZhbHNlIGlmIG5vX2NvbGxhcHNlPXRydWUgaXMgdXNlZC48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBmb2xkaW5nIG9mIGJsb2Nrcy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHNldCB0byB0cnVlIHBhcmFtIGNvbGxhcHNlIGlzIGFsd2F5cyBmYWxzZS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnJlcXVpcmVkPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZSBpZiB0aGlzIGJsb2NrIG1heSBub3QgYmUgZW1wdHkuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtjaGVja2JveCZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHRydWUvZmFsc2UpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJY2hlY2tzL3VuY2hlY2tzIHRoZSBjaGVja2JveCBieSBkZWZhdWx0IHdoZW4gYWRkaW5nIGEgcGFnZTxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVXNlICZxdW90OzEmcXVvdDsgZm9yIGNoZWNrZWQgYW5kICZxdW90OzAmcXVvdDsgZm9yIHVuY2hlY2tlZCBieSBkZWZhdWx0PGJyIC8+PC9lbT4NCgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9JnF1b3Q7Y2hlY2tib3gmcXVvdDsgZGVmYXVsdD0xfTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2Ryb3Bkb3duJnF1b3Q7LyZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5JdGVtIGxhYmVsKHMpIG9mIHRoZSBmaWVsZChzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlcmUgYXJlIGxlc3MgdmFsdWVzIHRoYW4gaXRlbXMgdGhlIGl0ZW0gbGFiZWxzIHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXMgKGFuZCB2aXNlIHZlcnNhKS48L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWxpbWl0ZXI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+QSBzaWduIG9yIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZXZpZGUgdGhlIGl0ZW1zL3ZhbHVlcyAoZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpDQoJCTx1bD4NCgkJCTxsaT5IZWlnaHQgb2YgY29udGVudCBibG9jayBpbiBiYWNrIGVuZCBpZiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gaXMgc2V0LiA8ZW0+KERlZmF1bHQgaXMgbnVtYmVyIG9mIGl0ZW1zKTwvZW0+PC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGVfaXRlbXM8L3R0PiAodHJ1ZS9mYWxzZSkgLSBzZWxlY3RfbXVsdGlwbGUgb25seQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJSWYgc2V0IHRvIHRydWUgdGhlIGl0ZW1zIHdvbiYjMDM5O3QgYmUgc2hvd24gYXMgYSBtdWx0aXBsZSBzZWxlY3QgaW5wdXQgd2l0aCBvcHRpb25zIGJ1dCBhcyBhIGxpc3Qgb2YgY2hlY2tib3hlcyB0aGF0IGNhbiBiZSByZW9yZGVyZWQuPGJyIC8+RWFjaCByb3cgY29udGFpbnMgdGhlIGl0ZW0gbGFiZWwgYW5kIGEgY2hlY2tib3ggd2l0aCB0aGUgaXRlbSB2YWx1ZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IG9ubHkgdGhlIG9yZGVyIG9mIHRoZSA8c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+IGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBhbHdheXMgZGlzcGxheWVkIG9uIHRoZSB0b3Agb2YgdGhlIGxpc3Qgd2hlbiByZWxvYWRpbmcgdGhlIGVkaXQgcGFnZS48YnIgLz4NCgkJCQlVbnNlbGVjdGVkIGl0ZW1zIHdpbGwgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZTwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtkYXRlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIGhvdXJzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgMTIgb3IgMjMpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBBTS9QTSBpcyB1c2VkLiAoZGVmYXVsdCBpcyB0cnVlKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgbWludXRlcyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgNTkpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBubyB0aW1lIGRyb3Bkb3duIHNob3VsZCBiZSBkaXNwbGF5ZWQgKGRlZmF1bHQgaXMgdHJ1ZSk8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IElmIHNldCB0byBmYWxzZSAwMDowMCBvJiMwMzk7Y2xvY2sgd2lsbCBiZSB1c2VkPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kYXRlX2Zvcm1hdDwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhlIHN0cmZ0aW1lIGRhdGUgZm9ybWF0IHRvIHNob3cgaW4gZnJvbnRlbmQuDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDttdWx0aV9pbnB1dCZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dHM8L3R0PiAoY3N2IG9mIGlucHV0IGlkcyB5b3UgY3JlYXRlZCBpbiB0aGUgYmFja2VuZCkgDQoJCTxiciAvPjxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZV9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGlzIGRlZmluZXMgYSBzdHJpbmcgdGhhdCBkZXZpZGVzIHRoZSB2YWx1ZXMgb2YgdGhlIGlucHV0cyBvZiBvbmUgbXVsdGlfaW5wdXQgd2hlbiBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLjxiciAvPg0KCQkJCURlZmF1bHQgaXMgJnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxsaW1pdGVyIC0tPiZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIG11bHRpX2lucHV0cyB5b3UgZGVmaW5lZCBmb3IgdGhpcyBjb250ZW50IGJsb2NrIHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsbGltaXRlciAtLT4mcXVvdDsNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPldoYXQgaXMgYSBtdWx0aV9pbnB1dCBmb3I/PC9zdHJvbmc+PC9wPg0KCQk8cD5BIG11bHRpX2lucHV0IGJsb2NrIGlzIGEgY29udGVudCBibG9jayB0aGF0IGNvbnNpc3RzIG9mIGRpZmZlcmVudCBpbnB1dCBmaWVsZHMuIDxiciAvPg0KCQlZb3UgY2FuIGRlZmluZSB0aGVtIGluIHRoZSBtb2R1bGUgYWRtaW5pc3RyYXRpb24gdXNpbmcgdGhlIHNhbWUgc3ludGF4IHlvdSB1c2UgaW4gYSB0ZW1wbGF0ZSB3aGVuIGRlZmluaW5nIGEgY29udGVudCBibG9jay48YnIgLz4NCgkJTXVsdGkgaW5wdXRzIGNhbiBiZSB1c2VkIGlmIHlvdSB3YW50IHRvIHN0b3JlIGRpZmZlcmVudCB2YWx1ZXMgaW4gb25lIGNvbnRlbnQgYmxvY2sgYW5kIHByb3ZpZGUgZGlmZmVyZW50IGlucHV0IHR5cGVzIGZvciBlYWNoIHZhbHVlcy48YnIgLz4NCgkJVGhpcyBjYW4gYmUgdXNlZnVsbCBpZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBkcm9wZG93biB0byBzZWxlY3QgYSBtb2R1bGUgdG8gYmUgc2hvd24gaW4gZnJvbnRlbmQgYW5kIHRleHQgaW5wdXQgdG8gZGVmaW5lIHRoZSBtb2R1bGUgcGFyYW1ldGVycy48YnIgLz4NCgkJRXhhbXBsZSBmb3IgYSBtdWx0aV9pbnB1dCBpbiBwYWdlIHRlbXBsYXRlOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSZxdW90OyBsYWJlbD0mcXVvdDtQYWdlIG1vZHVsZXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDttdWx0aV9pbnB1dCZxdW90OyBpbnB1dHM9JnF1b3Q7bW9kdWxlLG1vZHVsZSxtb2R1bGUsbW9kdWxlJnF1b3Q7fQ0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5FeGFtcGxlIGZvciB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgJnF1b3Q7bW9kdWxlJnF1b3Q7OjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBzZWxlY3Rpb24mcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDt8TmV3c3xHYWxsZXJ5fE1lbnUmcXVvdDt9DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBwYXJhbXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IG9uZWxpbmU9dHJ1ZX0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBlZGl0IGEgcGFnZT88L3A+DQoJCTxwPkl0IHdpbGwgc2hvdyB5b3UgYSBmaWVsZHNldCB3aXRoIGxlZ2VuZCAmcXVvdDtQYWdlIG1vZHVsZXMmcXVvdDsuIDxiciAvPg0KCQlJbnNpZGUgdGhpcyBmaWVsZHNldCBpdCBzaG93cyB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgJnF1b3Q7bW9kdWxlJnF1b3Q7IGZvdXIgdGltZXMuPGJyIC8+DQoJCVRoYXQgbWVhbnMgeW91IHNlZSBmb3VyIGxpbmVzIHdpdGggdHdvIGlucHV0IGZpZWxkcy4gQSBkcm9wZG93biBhbmQgYSB0ZXh0IGlucHV0LjwvcD4NCgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBzYXZlIGEgcGFnZT88L3A+DQoJCTxwPlRoZSBtb2R1bGUgc3RvcmVzIHRoZSB2YWx1ZXMgYXMgb25lIHNpbmdsZSBjb250ZW50IHByb3BlcnR5IChha2EgY29udGVudGJsb2NrKSBhbmQgc2VwYXJhdGVzIHRoZSBpbnB1dHMgYnkgYSBnaXZlbiBkZWxpbWl0ZXIuPGJyIC8+DQoJCUxldCYjMDM5O3MgYXNzdW1lIHlvdSBzZWxlY3QgdGhlIE5ld3MgbW9kdWxlIGZvdXIgdGltZXMgd2l0aCBkaWZmZXJlbnQgbW9kdWxlIHBhcmFtcyBsaWtlIGNhdGVnb3J5PSZxdW90OzEmcXVvdDssIGNhdGVnb3J5PSZxdW90OzImcXVvdDssIGNhdGVnb3J5PSZxdW90OzMmcXVvdDssIGNhdGVnb3J5PSZxdW90OzQmcXVvdDsuPGJyIC8+DQoJCUluIHRoZSBkYXRhYmFzZSBpdCBzdG9yZXMgdGhpcyBzdHJpbmc6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzEmcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzImcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzMmcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzQmcXVvdDsNCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+SW4geW91ciBwYWdlIHRlbXBsYXRlIHlvdSBjYW4gZXhwbG9kZSB0aGUgY29udGVudCBieSB0aGUgZGVsaW1pdGVycyBhbmQgY2FsbCB0aGUgc2VsZWN0ZWQgbW9kdWxlcy48L3A+DQoJCTxwPkZ1bGwgRXhhbXBsZTo8L3A+DQoJCTxwcmU+DQoJCTxjb2RlPg0KCQl7KiBkZWZpbmUgdGhlIGNvbnRlbnQgYmxvY2sgKn0NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bXlfbW9kdWxlcyZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDtNb2R1bGUsTW9kdWxlLE1vZHVsZSxNb2R1bGUmcXVvdDsgYXNzaWduPSZxdW90O21vZHVsZXMmcXVvdDt9DQoJCQ0KCQl7KiBleHBsb2RlIGJsb2NrIGNvbnRlbnQgaW4gYW4gYXJyYXkgdG8gZ2V0IHRoZSBpbnB1dCBncm91cHMgKn0NCgkJe2Fzc2lnbiB2YXI9bW9kdWxlcyB2YWx1ZT0mcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT4mcXVvdDt8ZXhwbG9kZTokbW9kdWxlc30NCgkJDQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQ0KCQl7Zm9yZWFjaCBmcm9tPSRtb2R1bGVzIGl0ZW09JnF1b3Q7bW9kdWxlJnF1b3Q7fQ0KCQkJe2lmICRtb2R1bGUgIT0gJiMwMzk7JiMwMzk7fQ0KCQkJDQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0NCgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9JnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+JnF1b3Q7fGV4cGxvZGU6JG1vZHVsZX0NCgkJCQkNCgkJCQl7aWYkbW9kdWxlX2l0ZW1zWzBdICE9ICYjMDM5OyYjMDM5O30NCgkJCQkNCgkJCQkJeyogY2FsbCB0aGUgbW9kdWxlICp9DQoJCQkJCXtpZiBpc3NldCgkbW9kdWxlX2l0ZW1zWzFdKX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6JiMwMzk7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7JiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDomIzAzOTsmcXVvdDsgJiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzFdfGNhdDokc21hcnR5LnJkZWxpbX0NCgkJCQkJe2Vsc2V9DQoJCQkJCQl7ZXZhbCB2YXI9JHNtYXJ0eS5sZGVsaW18Y2F0OiYjMDM5O2Ntc19tb2R1bGUgbW9kdWxlPSZxdW90OyYjMDM5O3xjYXQ6JG1vZHVsZV9pdGVtc1swXXxjYXQ6JiMwMzk7JnF1b3Q7JiMwMzk7fGNhdDokc21hcnR5LnJkZWxpbX0NCgkJCQkJey9pZn0NCgkJCQkJDQoJCQkJey9pZn0NCgkJCQkNCgkJCXsvaWZ9DQoJCQ0KCQl7L2ZvcmVhY2h9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJPC9saT4NCjwvdWw+DQoNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCgk8bGk+VGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvIj5odHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLzwvYT48L2xpPg0KCTxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjwvdWw+DQo8YnIgLz4NCjxwPkZlZWwgZnJlZSByZXBvcnQgYW55IGtpbmQgb2YgZmVlZGJhY2suPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD4NCglBcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy48YnIgLz4NCglUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCw8YnIgLz4NCglidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZjxiciAvPg0KCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS48YnIgLz4NCglTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPGJyIC8+DQoJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2U8YnIgLz4NCglhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZTxiciAvPg0KCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBPGJyIC8+DQoJT3IgcmVhZCBpdCBvbmxpbmU6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMPC9hPjxiciAvPg0KCVBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLg0KPC9wPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLCBHZW9yZyBCdXNjaCAoTmFOKS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCjxiciAvPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8YnIgLz4NCjxwPjxzdHJvbmc+TW9kdWxlIHJlbGVhc2VzPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT48cD48c3Ryb25nPjAuNy4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIGl0ZW0gIzU2NTE8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVxdWlyZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNyAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOSsgKG5lZWRzIENNU21zIDEuOSBtaW5pbXVtIG5vdyk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBzdXBwb3J0IG9mIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIG5vX2NvbGxhcHNlPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjYuMiAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeCAoc2hvd2VkIHRhYnMgb2YgcHJldmlvdXMgdGVtcGxhdGUgd2hlbiB0ZW1wbGF0ZSB3YXMgY2hhbmdlZCk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNi4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IGJ1Z2ZpeGVzIGZvciBDTVNtcyAxLjk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBibG9ja190eXBlIG11bHRpX2lucHV0PC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjYgKE9jdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfZ3JvdXA8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIFJlbW92ZWQgZmlsZSBwaWNrZXIgKGFuZCBhc3NvY2lhdGVkIGJsb2NrX3R5cGVzIGltYWdlL2ZpbGUpIC0gdXNlIEdCRmlsZVBpY2tlciBpbnN0ZWFkLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC41IChTZXB0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI5MiAobWVtb3J5IGlzc3VlKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyNTQgKGRpc2FibGUgd3lzaXd5ZyBub3Qgd29ya2luZyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzEwICh1cmxvbmx5IG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTEgKGltYWdlIHBhdGhzIG5vdCBzdG9yZWQgJiMwMzk7Y29ycmVjdGx5JiMwMzk7KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNjEgKEFkZCBzb3J0IHRvIGltYWdlIHR5cGUgLSBub3RpY2UgdGhlIGNoYW5nZSBvZiBwYXJhbSBmaWx0ZXIpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBwYXJhbXMgZXhjbHVkZV9wcmVmaXgsIGluY2x1ZGVfcHJlZml4LCBleGNsdWRlX3N1Zml4LCBpbmNsdWRlX3N1Zml4PC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNTMgKFRleHQgaW5wdXQgdG8gZGVmaW5lIGFkZCBwYXJhbXMgdG8gcmVkaXJlY3QgZnVuY3Rpb24pPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDAgKERlZmF1bHQgdmFsdWVzIG9mIEFkdmFuY2VkQ29udGVudCBwYWdlIG9wdGlvbnMpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDEgKHB1dCBGZXVBY2Nlc3MgaW4gQmxvY2t0YWIpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyBhcmUgc2hvd24gaW4gc2VwYXJhdGUgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIEFkZGVkIG5ldyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGUgQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW0gZmlsdGVyICh1c2UgbmV3IHBhcmFtcyBpbnN0ZWFkKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBwYXRoIHRvIGZpbGVzIGFyZSBzdG9yZWQgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhcmFtIGRpciBvZiBibG9jayB0eXBlIGZpbGUvaW1hZ2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyIG9ubHkgKHRoZXJlIGlzIG5vIGltYWdlIHVwbG9hZHMgZGlyIHVzZWQgYW55bW9yZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNC4xIChBdWd1c3QgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxNTE6IGZpeGVkIHN0eWxlc2hlZXQgaXNzdWUgd2l0aCBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyBvZiBjb250ZW50IGJsb2NrcyBpbiBJRS9TYWZhcmkuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MTYyOiBQSFAgd2FybmluZ3MgaWYgYmFja2VuZCB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gJnF1b3Q7TWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJnF1b3Q7IG9wZW4gYW4gYWR2YW5jZWQgY29udGVudCBwYWdlIGFuZCBtdWx0aXBsZSBjb250ZW50IGJsb2NrcyBvZiBzYW1lIG5hbWUgd2VyZSB1c2VkIGluIHRlbXBsYXRlLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZXh0cmEgZmllbGRzIGNvdWxkIG5vdCBiZSB1cGRhdGVkLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZmV1IGFjY2VzcyBkaWQgbm90IHdvcmsuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGVsZXRlJnF1b3Q7IHRvIGxldCB1c2VycyBkZWxldGUgZmlsZXMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBGaWxlcyZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtjcmVhdGVfZGlycyZxdW90OyB0byBsZXQgdXNlcnMgY3JlYXRlX2RpcnMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBGaWxlcyZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBuZXcgYmxvY2t0eXBlICZxdW90O25vdGUmcXVvdDsgdG8gY3JlYXRlIHNvbWUgc2luZ2xlIG5vdGVzIGZvciB5b3VyIGVkaXRvcnM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgZGVwZW5kZW5jeSBvZiBGaWxlTWFuYWdlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayBvZiB0eXBlIGZpbGUgb3IgaW1hZ2Ugc3RvcmVzIHJlbGF0aXZlIHVybCBub3c8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYmxvY2sgdHlwZSBpbWFnZSBzaG93cyB0aHVtYm5haWwgaW4gYmFja2VuZCBwcmV2aWV3IGluc3RlYWQgb2YgZnVsbCBpbWFnZTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40IChKdWx5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkltcG9ydGFudCBub3RpY2U6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBwYXJhbSAmcXVvdDt0eXBlJnF1b3Q7IHRvICZxdW90O2Jsb2NrX3R5cGUmcXVvdDsgc2luY2UgaXQgaW50ZXJmZXJlcyB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxMDE6IHBhZ2VfdGFiICZxdW90O29wdGlvbnMmcXVvdDsgd2FzIHNob3duIHRvIHVzZXJzIHdpdGggbm8gcGVybWlzc2lvbiB0byBlZGl0IHBhZ2Ugb3B0aW9ucyBpZiBhIGNvbnRlbnQgYmxvY2sgd2FzIGFzc2lnbmVkIHRvIHRoYXQgdGFiLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA5NzogbGluayB0byBtaXNzaW5nIGNzcyByZW1vdmVkPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbWUtdHlwZSBpc3N1ZSAoYWRkZWQgcHJlZmVyZW5jZSB0byB0b2dnbGUgbWltZS10eXBlIHVzYWdlIG9uL29mZik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgcGF0aCBpc3N1ZSB3aGVyZSB0aHVtYm5haWxzIHdlcmUgbm90IHNob3duPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGNvbXBhdGliaWxpdHkgd2l0aCBDTVNtcyAxLjg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gb3RoZXIgbWlub3IgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBNTEUgc3VwcG9ydDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtzaG93X2Nsb2NrJnF1b3Q7IHRvIGVuYWJsZS9kaXNhYmxlIHRoZSB0aW1lIGRyb3Bkb3duIG9mIGJsb2NrdHlwZXMgJnF1b3Q7ZGF0ZSZxdW90OyBpbiBiYWNrZW5kPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2RhdGVfZm9ybWF0JnF1b3Q7IHRvIGZvcm1hdCB0aW1lc3RhbXAgb2YgYmxvY2t0eXBlcyAmcXVvdDtkYXRlJnF1b3Q7IGluIGZyb250ZW5kPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJ1bGsgZnVuY3Rpb24gdG8gc2V0IGFsbCBwYWdlcyB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuNCAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTA0NTogV2hlbiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IC0+IEFkdmFuY2VkIENvbnRlbnQgbG90cyBvZiBQSFAgZXJyb3JzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDU2OiBwYWdlX3RhYnMgbm90IHdvcmtpbmcgZm9yIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAmcXVvdDtNYW5hZ2UgQWxsIENvbnRlbnQmcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNzM6IGluY29ycmVjdCBkaXNwbGF5IG9mIGZpbGVzIHdoZW4gb3BlbmluZyBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbm9yIGJ1ZyB3aGVyZSB0aGUgb3B0aW9uICZxdW90O2FsbG93X25vbmUmcXVvdDsgb2YgY29udGVudCBibG9ja3Mgb2YgdHlwZSBpbWFnZS9maWxlIHdhcyBub3Qgc2hvd24gd2hlbiB0ZW1wbGF0ZSBoYXMgYmVlbiBlZGl0ZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBmaWxlbWFuYWdlbWVudCBhbmQgdXBsb2FkIGZ1bmN0aW9ucyB0byBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGU8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgYnJlYWRjdW1icyB0byBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkbWlucyBtYXkgYnJvd3NlIHRoZSBlbnRpcmUgZGlyIHRyZWUgaW4gZmlsZXBpY2tlciBmaWxlIGJyb3dzZXIgcmVnYXJkbGVzcyBvZiB0ZW1wbGF0ZSBwYXJhbXM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgbWltZSB0eXBlIGNoZWNraW5nIHRvIGdldCBmaWxlIHR5cGU8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcmF3dXJsZW5jb2RlIGluIHNyYyBhdHRyaWJzIHRvIGRpc3BsYXkgaW1hZ2VzIHdpdGggd2VpcmQgZmlsZW5hbWVzLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPm1pc2NlbGxhbmVvdXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBPT1Agc3R1ZmYgKHByaXZhdGUvcHVibGljL3Byb3RlY3RlZCkgdG8gZ2FpbiBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBQSFA0PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNoYW5nZWQgYWpheCBmdW5jdGlvbnMgdG8gcmV0dXJuIHhtbCB2YWx1ZXM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCB1c2FnZSBvZiBJbWFnZU1hbmFnZXIgb25jZSBhbmQgZm9yIGFsbC4gKGNhdXNlZCBvbmx5IHRyb3VibGUpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMyAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJPHVsPg0KCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJPHVsPg0KCQkJCTxsaT48cD4tIGFsaWFzIHdhcyBub3QgYWx3YXlzIGNvbnZlcnRlZCBwcm9wZXJseTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHVuc3VibWl0dGVkIGNvbnRlbnQgZ290IGxvc3QgaWYgc3dpdGNoaW5nIGZyb20gQ29udGVudCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCTwvdWw+DQoJCTwvbGk+DQoJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWRkZWQgc3RhcnQvZW5kIGRhdGU8L3A+PC9saT4NCgkJCQk8bGk+PHA+LSByZW1vdmVkIHRpbWVwaWNrZXI7IHJlcGxhY2VkIGJ5IGEgc2ltcGxlIGRyb3Bkb3duPC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X2ltYWdlfTwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgk8L3VsPg0KCTxsaT48cD48c3Ryb25nPjAuMy4yIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGNoYW5naW5nIGJhY2sgdG8gZGVmYXVsdCBjb250ZW50IHR5cGUgb3IgY2hhbmdpbmcgdGVtcGxhdGUgY2F1c2VkIGZhdGFsIGVycm9yczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZyB3aGVuIHNhdmluZyBhIHBhZ2U8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcHJldmlldyB0YWI8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlLWFkZGVkIGV4cGFuZC9jb2xsYXBzZSBidXR0b24gdG8gdG9nZ2xlIGNvbnRlbnQgYmxvY2tzIGluIGJhY2tlbmQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtcyBlZGl0b3JfZ3JvdXBzL2VkaXRvcl91c2VycyB0byBzcGVjaWZ5IGNlcnRhaW4gdXNlcnMvZ3JvdXBzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCBjZXJ0YWluIGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbXMgc2VsZWN0ZWQvY2hlY2tlZDsgdXNlIHBhcmFtIGRlZmF1bHQgaW5zdGVhZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYmxvY2sgaWRzIHdpbGwgYmUgY29udmVydGVkIGZyb20gYmxvY2sgbmFtZSB1c2luZyBjb3JlIGZ1bmN0aW9uIG11bmdlX3N0cmluZ190b191cmwgKHRvIHJlbW92ZSBzcGVjaWFsIGNoYXJzLCB3aGl0ZXNwYWNlcywgdW1sYXV0cyBldGMuKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIG9mIGJsb2NrdHlwZSBkcm9wZG93bi9zZWxlY3RfbXVsdGlwbGUgd2hlcmUgZmlyc3QgaXRlbSBoYWQgYW4gZW1wdHkgbGFiZWwgaWYgb25seSB0aGUgcGFyYW0gJnF1b3Q7dmFsdWVzJnF1b3Q7IGlzIHVzZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHNvbWUgdGVtcGxhdGUgdmFycyBvZiB0aGUgZnJvbnRlbmQgdG8gYmUgYWxzbyBhY2Nlc3NpYmxlIGluIGJhY2tlbmQgKGUuZy46ICRwYWdlX2FsaWFzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyB0byBhbGwgY29udGVudCBibG9jayB0eXBlcyB0byBzcGVjaWZ5IGlmIHRoZSBwcmVkZWZpbmVkIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkIGlmIG5vIHZhbHVlIGlzIGVudGVyZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBlbXB0eSB2YWx1ZXMgd2VyZSBuZXZlciBiZSBzdG9yZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBkZWZhdWx0IHZhbHVlIGluIGZyb250ZW5kIHdhcyBpZ25vcmVkIGlmIHRoZSAmcXVvdDthbGxvd19ub25lJnF1b3Q7IHBhcmFtIHdhcyBjaGFuZ2VkIGFmdGVyIGFuIGVtcHR5IHZhbHVlIGhhcyBiZWVuIHN0b3JlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7c29ydGFibGVfaXRlbXMmcXVvdDsgdG8gY3JlYXRlIGEgc29ydGFibGUgbXVsdGlwbGUgc2VsZWN0IGxpc3QgKHNlbGVjdCBsaXN0IHdpbGwgcmVzdWx0IGluIGEgdGFibGUgd2l0aCBjaGVja2JveGVzOyBvbmx5IG9yZGVyIG9mIHNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBzaG93ZWQgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdDsgdW5zZWxlY3RlZCBpdGVtcyB3aWxsIGJlIGFwcGVuZGVkIGluIHRoYXQgb3JkZXIgdGhleSBhcmUgcGxhY2VkIGluIHRoZSB0ZW1wbGF0ZSk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4xIChNYXkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSByZW9yZGVyaW5nIHN0dWZmIGZvciBub3cgKGNhdXNlcyB0cm91YmxlIGF0IHRoaXMgdGltZSk8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIGRiIHN0dWZmIChwYXJhbXMgb2YgY29udGVudCBibG9ja3MgdGhhdCBhcmUgZGVmaW5lZCBpbiB0ZW1wbGF0ZSB3b24mIzAzOTt0IGJlIHNhdmVkIGluIG1vZHVsZSBkYiB0YWJsZSBhbnltb3JlIC0+IGhvcGVmdWxseSBzcGVlZCB1cCBsb2FkaW5nIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIGR1cGxpY2F0ZSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPkFkdmFuY2VkQ29udGVudCAwLjMgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJld3JpdGUgY29kZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYnVnZml4ZXM8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSB1c2luZyBzZXBhcmF0ZSBtb2R1bGUgdGVtcGxhdGUgbm93IHRvIGRzcGxheSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYWdlIGFsaWFzIGluaGVyaXRhbmNlPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAzIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIE1ham9yIEJ1Z2ZpeCAobWlzc2luZyAmcXVvdDs7JnF1b3Q7IGFuZCBzdHJhbmdlIGludmlzaWJsZSBpbnZhbGlkIGNoYXJzKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAyIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcGFyYW0gJnF1b3Q7ZGVsaW1pdGVyJnF1b3Q7PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiAmcXVvdDtTaG93IGxvZ2luIGZvcm0mcXVvdDs8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIHBhZ2UgYWxpYXMgdG8gYWRkIGl0IGFzIHByZWZmaXg7IHNvIGlmIHlvdSBoYXZlIGEgcGFnZSBjYWxsZWQgJnF1b3Q7bWVtYmVycyZxdW90OyBhbmQgc2VsZWN0IGZvciBlYWNoIGNoaWxkIHBhZ2UgJnF1b3Q7aW5oZXJpdCBwYWdlIGFsaWFzJnF1b3Q7IGFsbCBjaGlsZCBwYWdlcyBhbGlhc2VzIHdpbGwgc3RhcnQgd2l0aCAmcXVvdDttZW1iZXJzXyZxdW90OzsgbWFrZXMgZmlsdGVyaW5nIG9mIG1lbnUgZW50cmllcyB3aXRoIE1lbnVNYW5hZ2VyIHBhcmFtICZxdW90O2V4Y2x1ZGVwcmVmZml4JnF1b3Q7IG9yICZxdW90O2luY2x1ZGVwcmVmZml4JnF1b3Q7IGVhc2llci48L3A+PC9saT4NCgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+IA0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPlhDb250ZW50IEJFVEEgKEFwcmlsIDIwMTApOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGNvbnZlcnRlZCB0aGUgc2luZ2xlIGZpbGUgaW50byBhIG1vZHVsZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVuYW1lZCBwYXJhbXM7IHNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBkZXRhaWxzPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlNpbmdsZSBmaWxlIHJlbGVhc2VzIChkaXNjb250aW51ZWQpPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz4xLjQgKE1hcmNoIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gY2xlYW51cCBjb2RlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHJlZGlyZWN0IHBhZ2UgaWYgZmV1IGlzIG5vdCBsb2dnZWQgaW4gLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgZmV1X2FjY2VzcyBhbmQgcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb24gLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19vbmx5IC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHNtYXJ0eSBsb2dpYyBpbiBiYWNrZW5kIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzdHlsZSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmlsdGVyIChmaWx0ZXJpbmcgaW1hZ2VzIGluIGJhY2tlbmQpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBJbWdNb2RlIChkcm9wZG93biBvciBJbWFnZU1hbmFnZXIpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzbWFydHlPbiAoZm9yIHByb2Nlc3Npbmcgc21hcnR5IHZhcnMgb2YgdGhlIHRlbXBhdGUgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjEuMyAoQXByaWwgMjAwOSk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBDTVNtcyAxLjYuKiByZWFkeSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBmZXUgYWNjZXNzIG9wdGlvbiAtIChOYU4pPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+MS4yIChNYXJjaCAyMDA5KTo8L3N0cm9uZz4gaW5pdGlhbCByZWxlYXNlPC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBBIHNpbmdsZSBmaWxlIENvbnRlbnQyLmluYy5waHAgdGhhdCBuZWVkcyB0byBiZSBwYWNlZCBpbiBsaWIvY2xhc3Nlcy9jb250ZW50dHlwZXMuPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBsYXlvdXQvb3B0aW9ucyBvZiBiYWNrZW5kIHBhbmVsIGNhbiBiZSBjb250cm9sZWQgYnkgYWRkaXRpb25hbCBzbWFydHkgcGFyYW1zIGluIHRoZSB0ZW1wbGF0ZTsgaW50ZWdyYXRlZCB0aGUge2NvbnRlbnRfaW1hZ2V9IHRhZyAtIChtb2QgYnkgTmFOKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPGJyIC8+JzsKJGxhbmdbJ3FjYSddID0gJ1AwLTcwNTI1OTYzNC0xMjkwNDEyMzI3ODM1JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI5NjAyODI5NS4xMC4xMS51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPWNtcyBtYWRlIHNpbXBsZSc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjkzODc0NDcxOC4xMjkwNDEyMzI4LjEyOTYwMzAzODUuMTI5NjAzNDA4NC4xMic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNAojIEZpbGUgICA6IG1ldGhvZC5pbnN0YWxsLnBocAojIFB1cnBvc2U6IGluc3RhbGxzIHRoZSBtb2R1bGUsIGNyZWF0ZXMgdGFibGVzIGFuZCBzZXQgcHJlZmVyZW5jZXMKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CgokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwokZGljdCAgICAgICAgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKIyBVc2VyIFNldHRpbmdzIGJsb2NrIGRpc3BsYXkKJGZsZHMgPSAidXNlcl9pZCBJLCBjb250ZW50X2lkIEksIHRlbXBsYXRlX2lkIEksIGl0ZW1faWQgWCwgaXRlbV9kaXNwbGF5IEkiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2Jsb2NrZGlzcGxheSIsCgkkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKIyBVc2VyIFNldHRpbmdzIG1lc3NhZ2UgZGlzcGxheQokZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgdGVtcGxhdGVfaWQgSSwgaXRlbV9pZCBYLCBpdGVtX2Rpc3BsYXkgSSI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbWVzc2FnZWRpc3BsYXkiLAoJJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiMgVXNlciBTZXR0aW5ncyBnb3VwIGRpc3BsYXkKJGZsZHMgPSAidXNlcl9pZCBJLCBjb250ZW50X2lkIEksIHRlbXBsYXRlX2lkIEksIGl0ZW1faWQgWCwgaXRlbV9kaXNwbGF5IEkiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2dyb3VwZGlzcGxheSIsCgkkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKIyBtdWx0aXBsZSBpbnB1dHMKJGZsZHMgPSAiaW5wdXRfaWQgQyg2NCkgS0VZLCBpbnB1dF9maWVsZHMgWCI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIiwKCSRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgojIG11bHRpcGxlIGlucHV0IHRwbCBhc3NvY3MKJGZsZHMgPSAiaW5wdXRfaWQgQyg2NCksIHRwbF9uYW1lIFgiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0X3RwbF9hc3NvY3MiLAoJJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IFByZWZlcmVuY2VzJywgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcycsICdNYW5hZ2UgQWxsIEFkdmFuY2VkQ29udGVudCBCbG9ja3MnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycsICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycsICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXQgVGVtcGxhdGVzJyk7CiR0aGlzLT5TZXRUZW1wbGF0ZSgnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnLAonPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHA+Cntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0KCXskZWxtLmxhYmVsfTombmJzcDt7JGVsbS5pbnB1dH0mbmJzcDsKey9mb3JlYWNofQo8L3A+CjwvZGl2PicpOwokdGhpcy0+QWRkTXVsdGlJbnB1dCgnU2FtcGxlSW5wdXQnLCcKe2NvbnRlbnQgYmxvY2s9Im1vZHVsZV9zZWxlY3QiIGxhYmVsPSJTZWxlY3QgYSBtb2R1bGUiIGJsb2NrX3R5cGU9ImRyb3Bkb3duIiBpdGVtcz0ifE5ld3N8TWVudSIgdmFsdWVzPSJ8TmV3c3xNZW51TWFuYWdlciJ9Cntjb250ZW50IGJsb2NrPSJtb2R1bGVfcGFyYW1zIiBsYWJlbD0iRW50ZXIgbW9kdWxlIHBhcmFtZXRlcnMgaGVyZSIgYmxvY2tfdHlwZT0idGV4dCIgb25lbGluZT10cnVlIHNpemU9IjU2In0nKTsKJHRoaXMtPkFkZFRwbEFzc29jKCdtdWx0aV9pbnB1dCcsICdTYW1wbGVJbnB1dCcsICdtdWx0aV9pbnB1dF9TYW1wbGVUZW1wbGF0ZScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9tdWx0aV9pbnB1dF90cGwnLCAnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnKTsKCiR0aGlzLT5BZGRFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRQb3N0UmVuZGVyJywgZmFsc2UgKTsKJHRoaXMtPkFkZEV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudEVkaXRQb3N0JywgZmFsc2UgKTsKCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ0FkdmFuY2VkQ29udGVudCcpLAoJJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNAojIEZpbGUgICA6IG1ldGhvZC51bmluc3RhbGwucGhwCiMgUHVycG9zZTogdW5pbnN0YWxscyB0aGUgbW9kdWxlLCByZW1vdmVzIHRhYmxlcywgcHJlZmVyZW5jZXMsIHBlcm1pc3Npb25zLi4uCiMgTGljZW5zZTogR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGRiICAgICAgID0mICR0aGlzLT5HZXREYigpOwokZGljdCAgICAgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9ibG9ja2Rpc3BsYXkiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X21lc3NhZ2VkaXNwbGF5IiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9ncm91cGRpc3BsYXkiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0cyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRfdHBsX2Fzc29jcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VuaW5zdGFsbF9hY3Rpb24nKSAhPSAnJykgewoJc3dpdGNoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1bmluc3RhbGxfYWN0aW9uJykpIHsKCQljYXNlIDE6CgkJCSMgRGVsZXRlCgkJCSMgZ2V0IGlkIG9mIGFsbCBjb250ZW50IG9mIHR5cGUgQWR2YW5jZWRDb250ZW50CgkJCSRxdWVyeSAgICA9ICJTRUxFQ1QgY29udGVudF9pZCBGUk9NICIuIGNtc19kYl9wcmVmaXgoKS4iY29udGVudCBXSEVSRSB0eXBlID0gPyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCdjb250ZW50MicpKTsKCQkJJGNvbnRlbnRzID0gYXJyYXkoKTsKCQkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKCQkJCSRjb250ZW50c1tdID0gJHJvd1snY29udGVudF9pZCddOwoJCQl9CgkJCSMgZGVsZXRlIGFsbCBjb250ZW50IG9mIHR5cGUgQWR2YW5jZWRDb250ZW50CgkJCSRxdWVyeSAgICA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuImNvbnRlbnQgV0hFUkUgdHlwZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnY29udGVudDInKSk7CgkJCQoJCQkjIGRlbGV0ZSBjb250ZW50IHByb3BzCgkJCSRxdWVyeSAgICA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuImNvbnRlbnRfcHJvcHMgV0hFUkUgY29udGVudF9pZCBJTiAoIi5pbXBsb2RlKCcsJywkY29udGVudHMpLiIpIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCQoJCQlicmVhazsKCQkJCgkJY2FzZSAyOgoJCQkjIFNldCB0byBjb250ZW50CgkJCSRxdWVyeSAgICA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuImNvbnRlbnQgU0VUIHR5cGUgPSA/IFdIRVJFIHR5cGUgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2NvbnRlbnQnLCdjb250ZW50MicpKTsKCQkJYnJlYWs7CgkJCQoJCWNhc2UgMzoKCQkJIyBnZXQgaWQgb2YgYWxsIGNvbnRlbnQgb2YgdHlwZSBBZHZhbmNlZENvbnRlbnQKCQkJJHF1ZXJ5ICAgID0gIlNFTEVDVCBjb250ZW50X2lkIEZST00gIi4gY21zX2RiX3ByZWZpeCgpLiJjb250ZW50IFdIRVJFIHR5cGUgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2NvbnRlbnQyJykpOwoJCQkkY29udGVudHMgPSBhcnJheSgpOwoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewoJCQkJJGNvbnRlbnRzW10gPSAkcm93Wydjb250ZW50X2lkJ107CgkJCX0KCQkJIyBzZXQgdG8gY29udGVudAoJCQkkcXVlcnkgICAgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJjb250ZW50IFNFVCB0eXBlID0gPyBXSEVSRSB0eXBlID0gPyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCdjb250ZW50JywnY29udGVudDInKSk7CgkJCQoJCQkjIGRlbGV0ZSBjb250ZW50IHByb3BzCgkJCSRxdWVyeSAgICA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuImNvbnRlbnRfcHJvcHMKCQkJCVdIRVJFIGNvbnRlbnRfaWQgSU4gKCIuaW1wbG9kZSgnLCcsJGNvbnRlbnRzKS4iKSBBTkQgcHJvcF9uYW1lICE9ICdjb250ZW50X2VuJyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCQkKCQkJYnJlYWs7CgkJCQoJCWRlZmF1bHQ6IGJyZWFrOwoJCQoJfQp9CgojIHJlbW92ZSBwZXJtaXNzaW9ucwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCcpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBQcmVmZXJlbmNlcycpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKTsKCiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRQb3N0UmVuZGVyJyk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRFZGl0UG9zdCcpOwoKJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCk7CgojIHJlbW92ZSBwcmVmZXJlbmNlcwokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwoKJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnQWR2YW5jZWRDb250ZW50JyksCgkkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNAojIEZpbGUgICA6IG1ldGhvZC51cGdyYWRlLnBocAojIFB1cnBvc2U6IHBlcmZvcm1zIGEgbW9kdWxlIHVwZ3JhZGUKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247CiRkYiAgICAgICAgICAgICAgPSYgJHRoaXMtPkdldERiKCk7Cgpzd2l0Y2goJGN1cnJlbnRfdmVyc2lvbikKewoJY2FzZSAnMC4zJzoKCWNhc2UgJzAuMy4xJzoKCQkKCQkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignQXBwcm92ZSBBZHZhbmNlZENvbnRlbnQnKTsKCQkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTW9kaWZ5IEFkdmFuY2VkQ29udGVudCBCbG9jayBPcmRlcicpOwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdBZGQgQWR2YW5jZWRDb250ZW50IEJsb2NrcycpOwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdEZWxldGUgQWR2YW5jZWRDb250ZW50IEJsb2NrcycpOwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNb2RpZnkgQWR2YW5jZWRDb250ZW50IEJsb2NrIE9wdGlvbnMnKTsKCQkKCQkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50RWRpdFByZScpOwoJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRFZGl0UG9zdCcpOwoJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnREZWxldGVQb3N0Jyk7CgkJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlciggJ0NvcmUnLCAnRWRpdFRlbXBsYXRlUG9zdCcpOwoJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0RlbGV0ZVRlbXBsYXRlUG9zdCcpOwoKCQkkZGljdCAgICAgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50IiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfZHJhZnRzIiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfcHJvcHMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9wcm9wc19kcmFmdHMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoCgkJCWNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9hZGR0X2VkaXRvcnMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoCgkJCWNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9hZGR0X2VkaXRvcnNfZHJhZnRzIiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkjIGdldCBwcm9wbmFtZSBvZiBhbGwgY29udGVudCBvZiB0eXBlIEFkdmFuY2VkQ29udGVudAoJCSRxdWVyeSAgICA9ICJTRUxFQ1QgQ1AucHJvcF9uYW1lLCBDLmNvbnRlbnRfaWQgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuImNvbnRlbnQgQwoJCQlMRUZUIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuImNvbnRlbnRfcHJvcHMgQ1AgT04gQ1AuY29udGVudF9pZCA9IEMuY29udGVudF9pZAoJCQlXSEVSRSBDLnR5cGUgPSA/IjsKCQkJCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2NvbnRlbnQyJykpOwoJCSRjb250ZW50cyA9IGFycmF5KCk7CgkJCgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkjIHVwZGF0ZSBwcm9wbmFtZXMgKHJlbW92aW5nIHNwZWNpYWwgY2hhcnMsIHVtbGF1dHMgYW5kIHdoaXRlc3BhY2VzKQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJjb250ZW50X3Byb3BzIFNFVCBwcm9wX25hbWUgPSA/CgkJCQlXSEVSRSBjb250ZW50X2lkID0gPyBBTkQgcHJvcF9uYW1lID0gPyI7CgkJCQkKCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkocHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcm93Wydwcm9wX25hbWUnXSkpLCRyb3dbJ2NvbnRlbnRfaWQnXSwkcm93Wydwcm9wX25hbWUnXSkpOwoJCX0KCQkKCQkkY3VycmVudF92ZXJzaW9uID0gJzAuMy4yJzsKCQkKCWNhc2UgJzAuMy4yJzoKCWNhc2UgJzAuMy4zIHByZSc6CgkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudFBvc3RSZW5kZXInLCBmYWxzZSApOwoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMC4zLjMnOwoJCQoJY2FzZSAnMC4zLjMnOgoJCSMgcmVtb3ZlIHVzZXJwcmVmcwoJCSRxdWVyeSAgICA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuInVzZXJwcmVmcyBXSEVSRSBwcmVmZXJlbmNlIExJS0UgJ0FkdmFuY2VkQ29udGVudF8lIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkKCQkjIGFkZCBuZXcgdGFibGUgZm9yIHVzZXIgcHJlZnMKCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgYmxvY2tfaWQgWCwgYmxvY2tfZGlzcGxheSBJIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2Jsb2NrZGlzcGxheSIsCgkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkY3VycmVudF92ZXJzaW9uID0gJzAuMy40JzsKCQoJY2FzZSAnMC4zLjQnOgoJY2FzZSAnMC40JzoKCQkjIGFkZCBuZXcgdGFibGUgZm9yIHVzZXIgcHJlZnMKCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgYmxvY2tfaWQgWCwgbWVzc2FnZV9kaXNwbGF5IEkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbWVzc2FnZWRpc3BsYXkiLAoJCQkkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcwLjQuMSc7CgkKCWNhc2UgJzAuNC4xJzoKCWNhc2UgJzAuNC4yJzoKCWNhc2UgJzAuNC4zJzoKCWNhc2UgJzAuNC40JzoKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJywgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpOwoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMC41JzsKCQkKCWNhc2UgJzAuNSc6CgljYXNlICcwLjUuMSc6CgkJCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3VuaW5zdGFsbF9hY3Rpb24nKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncmVzdHJpY3RkaXJzJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3Nob3dmaWxlbWFuYWdlbWVudCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdzaG93dGh1bWJuYWlsZmlsZXMnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnYWxsb3dzY2FsaW5nJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3NjYWxpbmd3aWR0aCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdzY2FsaW5naGVpZ2h0Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2ZpbGVwaWNrZXJzdHlsZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtYWtldGh1bWJuYWlsJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2ZpbGVwaWNrZXJ3aWR0aCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdmaWxlcGlja2VyaGVpZ2h0Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2ZpbGVwaWNrZXJ3aWR0aHVuaXQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZmlsZXBpY2tlcmhlaWdodHVuaXQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnYWxsb3d1cHNjYWxpbmcnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgndXNlbWltZXR5cGUnKTsKCQkKCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoJCSRkaWN0ICAgICA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfYmxvY2tkaXNwbGF5IiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbWVzc2FnZWRpc3BsYXkiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9ncm91cGRpc3BsYXkiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSMgVXNlciBTZXR0aW5ncwoJCSRmbGRzID0gInVzZXJfaWQgSSwgY29udGVudF9pZCBJLCB0ZW1wbGF0ZV9pZCBJLCBpdGVtX2lkIFgsIGl0ZW1fZGlzcGxheSBJIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2Jsb2NrZGlzcGxheSIsCgkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkjIFVzZXIgU2V0dGluZ3MKCQkkZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgdGVtcGxhdGVfaWQgSSwgaXRlbV9pZCBYLCBpdGVtX2Rpc3BsYXkgSSI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tZXNzYWdlZGlzcGxheSIsCgkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkjIFVzZXIgU2V0dGluZ3MKCQkkZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgdGVtcGxhdGVfaWQgSSwgaXRlbV9pZCBYLCBpdGVtX2Rpc3BsYXkgSSI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9ncm91cGRpc3BsYXkiLAoJCQkkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcwLjYnOwoJCQoJY2FzZSAnMC42JzoKCQkKCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoJCSRkaWN0ICAgICAgICA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkKCQkjIG11bHRpcGxlIGlucHV0cwoJCSRmbGRzID0gImlucHV0X2lkIEMoNjQpIEtFWSwgaW5wdXRfZmllbGRzIFgiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIiwKCQkJJGZsZHMsICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSMgbXVsdGlwbGUgaW5wdXQgdHBsIGFzc29jcwoJCSRmbGRzID0gImlucHV0X2lkIEMoNjQpLCB0cGxfbmFtZSBYIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0X3RwbF9hc3NvY3MiLAoJCQkkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycpOwoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXQgVGVtcGxhdGVzJywgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKTsKCQkkdGhpcy0+U2V0VGVtcGxhdGUoJ211bHRpX2lucHV0X1NhbXBsZVRlbXBsYXRlJywKJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxwPgp7Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19Cgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9Jm5ic3A7CnsvZm9yZWFjaH0KPC9wPgo8L2Rpdj4nKTsKCQkkdGhpcy0+QWRkTXVsdGlJbnB1dCgnU2FtcGxlSW5wdXQnLCcKe2NvbnRlbnQgYmxvY2s9Im1vZHVsZV9zZWxlY3QiIGxhYmVsPSJTZWxlY3QgYSBtb2R1bGUiIGJsb2NrX3R5cGU9ImRyb3Bkb3duIiBpdGVtcz0ifE5ld3N8TWVudSIgdmFsdWVzPSJ8TmV3c3xNZW51TWFuYWdlciJ9Cntjb250ZW50IGJsb2NrPSJtb2R1bGVfcGFyYW1zIiBsYWJlbD0iRW50ZXIgbW9kdWxlIHBhcmFtZXRlcnMgaGVyZSIgYmxvY2tfdHlwZT0idGV4dCIgb25lbGluZT10cnVlIHNpemU9IjU2In0nKTsKCQkkdGhpcy0+QWRkVHBsQXNzb2MoJ211bHRpX2lucHV0JywgJ1NhbXBsZUlucHV0JywgJ211bHRpX2lucHV0X1NhbXBsZVRlbXBsYXRlJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfbXVsdGlfaW5wdXRfdHBsJywgJ211bHRpX2lucHV0X1NhbXBsZVRlbXBsYXRlJyk7CgkKCQkkY3VycmVudF92ZXJzaW9uID0gJzAuNi4xJzsKCQkKCWNhc2UgJzAuNi4xJzoKCWNhc2UgJzAuNi4yJzoKCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50RWRpdFBvc3QnLCBmYWxzZSApOwoJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ1RlbXBsYXRlUHJlQ29tcGlsZScpOwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50Jyk7CgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBQcmVmZXJlbmNlcycpOwp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/addMultiInput.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjQKRmlsZSAgIDogYWRkTXVsdGlJbnB1dC50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKe2lmIGlzc2V0KCRlcnJvcm1lc3NhZ2UpICYmICRlcnJvcm1lc3NhZ2UhPScnfQo8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPnskZXJyb3JtZXNzYWdlfTwvbGk+PC91bD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0Ke2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHA+eyRtZXNzYWdlfTwvcD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0KeyRzdGFydF9mb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGlucHV0X2lkX3RleHR9PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pZF9pbnB1dH08YnIgLz48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGlucHV0X3RwbF90ZXh0fTwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdHBsX2lucHV0fTxiciAvPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskaW5wdXRfZmllbGRzX3RleHR9PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9maWVsZHNfaW5wdXR9PGJyIC8+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9Jm5ic3A7eyRjYW5jZWx9PGJyIC8+PC9wPgo8L2Rpdj4KeyRlbmRfZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/addMultiInputTpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjQKRmlsZSAgIDogYWRkTXVsdGlJbnB1dFRwbC50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKe2lmIGlzc2V0KCRlcnJvcm1lc3NhZ2UpICYmICRlcnJvcm1lc3NhZ2UhPScnfQo8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPnskZXJyb3JtZXNzYWdlfTwvbGk+PC91bD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0Ke2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHA+eyRtZXNzYWdlfTwvcD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0KeyRzdGFydF9mb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPGRpdiBjbGFzcz0icGFnZXRleHQiPnskdHBsX25hbWVfdGV4dH08L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+eyR0cGxfbmFtZV9pbnB1dH08YnIgLz48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+eyR0ZW1wbGF0ZV90ZXh0fTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZWlucHV0Ij4KCQk8dGFibGUgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcCI+CgkJCTx0Ym9keT4KCQkJCTx0cj4KCQkJCQk8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcCI+CgkJCQkJCXskdGVtcGxhdGVfaW5wdXR9CgkJCQkJPC90ZD4KCQkJCQk8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcCI+CgkJCQkJCXskaGVscF90ZXh0fQoJCQkJCTwvdGQ+CgkJCQk8L3RyPgoJCQk8L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fSZuYnNwO3skY2FuY2VsfTxiciAvPjwvZGl2Pgo8L2Rpdj4KeyRlbmRfZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/contentType.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjQKRmlsZSAgIDogY29udGVudFR5cGUudHBsCkxpY2Vuc2U6IEdQTAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKn0KCjwhLS0gU1RBUlQgUEFHRV9UQUIgeyRwYWdlX3RhYl9pZH0gLS0+Cgp7aWYgJHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuYmxvY2tfdGFic3xAY291bnQgPiAwfQoKPCEtLSBzdGFydCBibG9ja190YWJzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8IS0tIHN0YXJ0IGJsb2NrX3RhYnMgdGFiaGVhZGVycyBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KPGRpdiBpZD0icGFnZV90YWJzIj4KCTxkaXYgaWQ9ImJsb2NrX3RhYnNfeyRwYWdlX3RhYl9ucn0iIGNsYXNzPSJTdWJUYWJXcmFwcGVyIj4KCQkKCXtmb3JlYWNoIGZyb209JHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuYmxvY2tfdGFicyBpdGVtPWJsb2NrX3RhYl9pZCBuYW1lPWN1cnJlbnRfdGFifQoJCQoJCTxkaXYgaWQ9ImVkaXRhYnskcGFnZV90YWJfbnJ9X3skYmxvY2tfdGFiX2lkfSIge2lmICRzbWFydHkuZm9yZWFjaC5jdXJyZW50X3RhYi5maXJzdH1jbGFzcz0iYWN0aXZlInsvaWZ9IG9uY2xpY2s9IkFkdmFuY2VkQ29udGVudC50b2dnbGVCbG9jayh0aGlzLmlkLCAnYmxvY2tfdGFic197JHBhZ2VfdGFiX25yfScpIj4KCQkJCgkJCXskYmxvY2tfdGFicy4kYmxvY2tfdGFiX2lkLnRhYl9uYW1lfQoJCQkKCQk8L2Rpdj4KCQkKCXsvZm9yZWFjaH0KCQkKCTwvZGl2Pgo8L2Rpdj4KPCEtLSBlbmQgYmxvY2tfdGFicyB0YWJoZWFkZXJzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8IS0tIHN0YXJ0IGJsb2NrX3RhYnMgdGFiY29udGVudCBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KPGRpdiBpZD0icGFnZV9jb250ZW50IiBzdHlsZT0icGFkZGluZy1ib3R0b206MDttYXJnaW4tYm90dG9tOjIwcHg7Ij4KCQoJe2ZvcmVhY2ggZnJvbT0kcGFnZV90YWJzLiRwYWdlX3RhYl9pZC5ibG9ja190YWJzIGl0ZW09YmxvY2tfdGFiX2lkIG5hbWU9Y3VycmVudF90YWJ9CgkKCTwhLS0gc3RhcnQgYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCTxkaXYgaWQ9ImVkaXRhYnskcGFnZV90YWJfbnJ9X3skYmxvY2tfdGFiX2lkfV9jIntpZiAkc21hcnR5LmZvcmVhY2guY3VycmVudF90YWIuZmlyc3R9IHN0eWxlPSJkaXNwbGF5OmJsb2NrIntlbHNlfSBzdHlsZT0iZGlzcGxheTpub25lInsvaWZ9PgoJCQoJCXtpZiAkYmxvY2tfdGFicy4kYmxvY2tfdGFiX2lkLmJsb2NrX2dyb3Vwc3xAY291bnQgPiAwfQoJCTwhLS0gc3RhcnQgYmxvY2tfZ3JvdXBzIGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCXtmb3JlYWNoIGZyb209JGJsb2NrX3RhYnMuJGJsb2NrX3RhYl9pZC5ibG9ja19ncm91cHMgaXRlbT1ibG9ja19ncm91cF9pZH0KCQkKCQk8IS0tIHN0YXJ0IGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPGZpZWxkc2V0IHN0eWxlPSJtYXJnaW46NXB4IDMlIDE1cHggMDtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLXJpZ2h0OiAzMHB4OyI+CgkJCQk8bGVnZW5kIGNsYXNzPSJBZHZhbmNlZENvbnRlbnRfQmxvY2tHcm91cCI+CgkJCQkJeyRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLmdyb3VwX25hbWV9OgoJCQkJPC9sZWdlbmQ+CgkJCQk8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDttYXJnaW46LTIzcHggLTIzcHggMCAwO3Bvc2l0aW9uOnJlbGF0aXZlIiBvbmNsaWNrPSJqUXVlcnkoJyN7JGJsb2NrX2dyb3VwX2lkfV93cmFwcGVyJykudG9nZ2xlKCdmYXN0Jyk7IHRoaXMuY2xhc3NOYW1lID0gKHRoaXMuY2xhc3NOYW1lID09ICdub3RpZmljYXRpb25zLWhpZGUnID8gJ25vdGlmaWNhdGlvbnMtc2hvdycgOiAnbm90aWZpY2F0aW9ucy1oaWRlJyk7IGpRdWVyeS5nZXQoJ3skYmxvY2tfZ3JvdXBzLiRibG9ja19ncm91cF9pZC5wcmVmX3VybH0meyRtb2R1bGVfaWR9aXRlbV9kaXNwbGF5PScrKHRoaXMuY2xhc3NOYW1lID09ICdub3RpZmljYXRpb25zLWhpZGUnID8gMSA6IDApKTsiIGNsYXNzPSJ7aWYgJGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQuZGlzcGxheSA9PSAwfW5vdGlmaWNhdGlvbnMtc2hvd3tlbHNlfW5vdGlmaWNhdGlvbnMtaGlkZXsvaWZ9IiBpZD0idG9nZ2xlLXskYmxvY2tfZ3JvdXBfaWR9Ij48L2Rpdj4KCQkJCTwhLS0gc3RhcnQgYmxvY2tzIGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCQk8ZGl2IGlkPSJ7JGJsb2NrX2dyb3VwX2lkfV93cmFwcGVyIiBjbGFzcz0ie2lmICRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLmRpc3BsYXkgPT0gMH1pbnZpc2libGV7ZWxzZX12aXNpYmxley9pZn0iPgoJCQkJCQoJCQkJe2ZvcmVhY2ggZnJvbT0kYmxvY2tfZ3JvdXBzLiRibG9ja19ncm91cF9pZC5jb250ZW50X2Jsb2NrcyBpdGVtPWNvbnRlbnRfYmxvY2tfaWR9CgkJCQkJCgkJCQkJPCEtLSBzdGFydCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCQkJCTxzdHJvbmc+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5sYWJlbH06PC9zdHJvbmc+CgkJCQkJCTwvZGl2PgoJCQkJCQkKCQkJCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kZXNjcmlwdGlvbn0KCQkJCQkJCgkJCQkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQkJCQkKCQkJCQkJCXskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuZGVzY3JpcHRpb259CgkJCQkJCQkKCQkJCQkJPC9kaXY+CgkJCQkJCQoJCQkJCQl7L2lmfQoJCQkJCQkKCQkJCQkJPGRpdiBzdHlsZT0icGFkZGluZzogNXB4IDAgMCAwOyI+CgkJCQkJCQkKCQkJCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICE9ICcnfQoJCQkJCQkJCgkJCQkJCQk8cD57JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmlucHV0fTwvcD4KCQkJCQkJCQoJCQkJCQl7ZWxzZX0KCQkJCQkJCQoJCQkJCQkJeyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5jb250ZW50fQoJCQkJCQkJCgkJCQkJCXsvaWZ9CgkJCQkJCQkKCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPCEtLSBlbmQgYmxvY2sgeyRjb250ZW50X2Jsb2NrX2lkfSBpbiBibG9ja19ncm91cCB7JGJsb2NrX2dyb3VwX2lkfSBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCQkJCgkJCQl7L2ZvcmVhY2h9CgkJCQkKCQkJCTwvZGl2PgoJCQkJPCEtLSBlbmQgYmxvY2tzIGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCTwvZmllbGRzZXQ+CgkJPC9kaXY+CgkJPCEtLSBlbmQgYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkKCQkJey9mb3JlYWNofQoJCTwhLS0gZW5kIGJsb2NrX2dyb3VwcyBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCXsvaWZ9CgkJCgkJe2lmICRibG9ja190YWJzLiRibG9ja190YWJfaWQuY29udGVudF9ibG9ja3N8QGNvdW50ID4gMH0KCQk8IS0tIHN0YXJ0IGJsb2NrcyBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCQl7Zm9yZWFjaCBmcm9tPSRibG9ja190YWJzLiRibG9ja190YWJfaWQuY29udGVudF9ibG9ja3MgaXRlbT1jb250ZW50X2Jsb2NrX2lkfQoJCQoJCTwhLS0gc3RhcnQgYmxvY2sgeyRjb250ZW50X2Jsb2NrX2lkfSBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxmaWVsZHNldCBzdHlsZT0ibWFyZ2luOjVweCAzJSAxNXB4IDA7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDogMzBweDsiPgoJCQkJPGxlZ2VuZCBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0NvbnRlbnRCbG9jayI+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5sYWJlbH06PC9sZWdlbmQ+CgkJCQkKCQkJCXtpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuYmxvY2tfdHlwZSAmJiAhJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLm5vX2NvbGxhcHNlfQoJCQkJCgkJCQk8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDttYXJnaW46LTIzcHggLTIzcHggMCAwO3Bvc2l0aW9uOnJlbGF0aXZlIiBvbmNsaWNrPSJqUXVlcnkoJyN7JGNvbnRlbnRfYmxvY2tfaWR9X3dyYXBwZXInKS50b2dnbGUoJ2Zhc3QnKTsgdGhpcy5jbGFzc05hbWUgPSAodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAnbm90aWZpY2F0aW9ucy1zaG93JyA6ICdub3RpZmljYXRpb25zLWhpZGUnKTsgalF1ZXJ5LmdldCgneyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5wcmVmX3VybH0meyRtb2R1bGVfaWR9aXRlbV9kaXNwbGF5PScrKHRoaXMuY2xhc3NOYW1lID09ICdub3RpZmljYXRpb25zLWhpZGUnID8gMSA6IDApKTsiIGNsYXNzPSJ7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRpc3BsYXkgPT0gMH1ub3RpZmljYXRpb25zLXNob3d7ZWxzZX1ub3RpZmljYXRpb25zLWhpZGV7L2lmfSIgaWQ9InRvZ2dsZS17JGNvbnRlbnRfYmxvY2tfaWR9Ij48L2Rpdj4KCQkJCQoJCQkJey9pZn0KCQkJCQoJCQkJPGRpdiBpZD0ieyRjb250ZW50X2Jsb2NrX2lkfV93cmFwcGVyIiBjbGFzcz0ie2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kaXNwbGF5ID09IDAgJiYgISRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ub19jb2xsYXBzZX1pbnZpc2libGV7ZWxzZX12aXNpYmxley9pZn0iPgoJCQkJCQoJCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kZXNjcmlwdGlvbn0KCQkJCQkKCQkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCQkKCQkJCQl7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkJCQkKCQkJCQk8L2Rpdj4KCQkJCQkKCQkJCXsvaWZ9CgkJCQkJCgkJCQkJPGRpdiBzdHlsZT0icGFkZGluZzogNXB4IDAgMCAwOyI+CgkJCQkJCQoJCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICE9ICcnfQoJCQkJCQkKCQkJCQkJPHA+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5pbnB1dH08L3A+CgkJCQkJCQoJCQkJe2Vsc2V9CgkJCQkJCQoJCQkJCXskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuY29udGVudH0KCQkJCQkJCgkJCQl7L2lmfQoJCQkJCQkKCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2ZpZWxkc2V0PgoJCTwvZGl2PgoJCTwhLS0gZW5kIGJsb2NrIHskY29udGVudF9ibG9ja19pZH0gaW4gYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkKCQkJey9mb3JlYWNofQoJCTwhLS0gZW5kIGJsb2NrcyBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCXsvaWZ9CgkJCgk8L2Rpdj4KCTwhLS0gZW5kIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkKCXsvZm9yZWFjaH0KCQo8L2Rpdj4KPCEtLSBlbmQgYmxvY2tfdGFicyB0YWJjb250ZW50IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8IS0tIGVuZCBibG9ja190YWJzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKey9pZn0KCntpZiAkcGFnZV90YWJzLiRwYWdlX3RhYl9pZC5ibG9ja19ncm91cHN8QGNvdW50ID4gMH0KCjwhLS0gc3RhcnQgYmxvY2tfZ3JvdXBzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKCXtmb3JlYWNoIGZyb209JHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuYmxvY2tfZ3JvdXBzIGl0ZW09YmxvY2tfZ3JvdXBfaWR9CgkKPCEtLSBzdGFydCBibG9ja19ncm91cCB7JGJsb2NrX2dyb3VwX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxmaWVsZHNldCBzdHlsZT0ibWFyZ2luOjVweCAzJSAxNXB4IDA7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDogMzBweDsiPgoJCTxsZWdlbmQgY2xhc3M9IkFkdmFuY2VkQ29udGVudF9CbG9ja0dyb3VwIj4KCQkJeyRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLmdyb3VwX25hbWV9OgoJCTwvbGVnZW5kPgoJCTxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O21hcmdpbjotMjNweCAtMjNweCAwIDA7cG9zaXRpb246cmVsYXRpdmUiIG9uY2xpY2s9ImpRdWVyeSgnI3skYmxvY2tfZ3JvdXBfaWR9X3dyYXBwZXInKS50b2dnbGUoJ2Zhc3QnKTsgdGhpcy5jbGFzc05hbWUgPSAodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAnbm90aWZpY2F0aW9ucy1zaG93JyA6ICdub3RpZmljYXRpb25zLWhpZGUnKTsgalF1ZXJ5LmdldCgneyRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLnByZWZfdXJsfSZ7JG1vZHVsZV9pZH1pdGVtX2Rpc3BsYXk9JysodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAxIDogMCkpOyIgY2xhc3M9IntpZiAkYmxvY2tfZ3JvdXBzLiRibG9ja19ncm91cF9pZC5kaXNwbGF5ID09IDB9bm90aWZpY2F0aW9ucy1zaG93e2Vsc2V9bm90aWZpY2F0aW9ucy1oaWRley9pZn0iIGlkPSJ0b2dnbGUteyRibG9ja19ncm91cF9pZH0iPjwvZGl2PgoJCTwhLS0gc3RhcnQgYmxvY2tzIGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCTxkaXYgaWQ9InskYmxvY2tfZ3JvdXBfaWR9X3dyYXBwZXIiIGNsYXNzPSJ7aWYgJGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQuZGlzcGxheSA9PSAwfWludmlzaWJsZXtlbHNlfXZpc2libGV7L2lmfSI+CgkJCQoJCXtmb3JlYWNoIGZyb209JGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQuY29udGVudF9ibG9ja3MgaXRlbT1jb250ZW50X2Jsb2NrX2lkfQoJCQkKCQkJPCEtLSBzdGFydCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCgkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCTxzdHJvbmc+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5sYWJlbH06PC9zdHJvbmc+CgkJCQk8L2Rpdj4KCQkJCQoJCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkJCgkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCQoJCQkJeyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kZXNjcmlwdGlvbn0KCQkJCQkKCQkJCTwvZGl2PgoJCQkJCgkJCQl7L2lmfQoJCQkJCgkJCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA1cHggMCAwIDA7Ij4KCQkJCQkKCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICE9ICcnfQoJCQkJCQoJCQkJCTxwPnskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuaW5wdXR9PC9wPgoJCQkJCQoJCQl7ZWxzZX0KCQkJCQkKCQkJCXskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuY29udGVudH0KCQkJCQkKCQkJey9pZn0KCQkJCQkKCQkJCTwvZGl2PgoJCQkJCQoJCQk8L2Rpdj4KCQkJPCEtLSBlbmQgYmxvY2sgeyRjb250ZW50X2Jsb2NrX2lkfSBpbiBibG9ja19ncm91cCB7JGJsb2NrX2dyb3VwX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkKCQl7L2ZvcmVhY2h9CgkJCgkJPC9kaXY+CgkJPCEtLSBlbmQgYmxvY2tzIGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJPC9maWVsZHNldD4KPC9kaXY+CjwhLS0gZW5kIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgp7L2ZvcmVhY2h9CjwhLS0gZW5kIGJsb2NrX2dyb3VwcyBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4Key9pZn0KCgp7aWYgJHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuY29udGVudF9ibG9ja3N8QGNvdW50ID4gMH0KCjwhLS0gc3RhcnQgYmxvY2tzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKCXtmb3JlYWNoIGZyb209JHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuY29udGVudF9ibG9ja3MgaXRlbT1jb250ZW50X2Jsb2NrX2lkfQoJCjwhLS0gc3RhcnQgYmxvY2sgeyRjb250ZW50X2Jsb2NrX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxmaWVsZHNldCBzdHlsZT0ibWFyZ2luOjVweCAzJSAxNXB4IDA7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDogMzBweDsiPgoJCTxsZWdlbmQgY2xhc3M9IkFkdmFuY2VkQ29udGVudF9Db250ZW50QmxvY2siPnskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQubGFiZWx9OjwvbGVnZW5kPgoJCQoJCXtpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuYmxvY2tfdHlwZSAmJiAhJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLm5vX2NvbGxhcHNlfQoJCQoJCTxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O21hcmdpbjotMjNweCAtMjNweCAwIDA7cG9zaXRpb246cmVsYXRpdmUiIG9uY2xpY2s9ImpRdWVyeSgnI3skY29udGVudF9ibG9ja19pZH1fd3JhcHBlcicpLnRvZ2dsZSgnZmFzdCcpOyB0aGlzLmNsYXNzTmFtZSA9ICh0aGlzLmNsYXNzTmFtZSA9PSAnbm90aWZpY2F0aW9ucy1oaWRlJyA/ICdub3RpZmljYXRpb25zLXNob3cnIDogJ25vdGlmaWNhdGlvbnMtaGlkZScpOyBqUXVlcnkuZ2V0KCd7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLnByZWZfdXJsfSZ7JG1vZHVsZV9pZH1pdGVtX2Rpc3BsYXk9JysodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAxIDogMCkpOyIgY2xhc3M9IntpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuZGlzcGxheSA9PSAwfW5vdGlmaWNhdGlvbnMtc2hvd3tlbHNlfW5vdGlmaWNhdGlvbnMtaGlkZXsvaWZ9IiBpZD0idG9nZ2xlLXskY29udGVudF9ibG9ja19pZH0iPjwvZGl2PgoJCQoJCXsvaWZ9CgkJCgkJPGRpdiBpZD0ieyRjb250ZW50X2Jsb2NrX2lkfV93cmFwcGVyIiBjbGFzcz0ie2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kaXNwbGF5ID09IDAgJiYgISRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ub19jb2xsYXBzZX1pbnZpc2libGV7ZWxzZX12aXNpYmxley9pZn0iPgoJCQkKCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkKCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCQoJCQkJeyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kZXNjcmlwdGlvbn0KCQkJCQoJCQk8L2Rpdj4KCQkJCgkJey9pZn0KCQkJCgkJCTxkaXYgc3R5bGU9InBhZGRpbmc6IDVweCAwIDAgMDsiPgoJCQkJCgkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICE9ICcnfQoJCQkJCgkJCQk8cD57JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmlucHV0fTwvcD4KCQkJCQoJCXtlbHNlfQoJCQkJCgkJCQl7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmNvbnRlbnR9CgkJCQkKCQl7L2lmfQoJCQkJCgkJCTwvZGl2PgoJCQkKCQk8L2Rpdj4KCTwvZmllbGRzZXQ+CjwvZGl2Pgo8IS0tIGVuZCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKCXsvZm9yZWFjaH0KCjwhLS0gc3RhcnQgYmxvY2tzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKey9pZn0KCjwhLS0gRU5EIFBBR0VfVEFCIHskcGFnZV90YWJfaWR9IC0tPgo=]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjQKRmlsZSAgIDogZGVmYXVsdGFkbWluLnRwbApMaWNlbnNlOiBHUEwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSp9Cgo8ZGl2IGlkPSJBZHZhbmNlZENvbnRlbnRSZXN1bHQiPgoJe2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHAgY2xhc3M9InBhZ2VtZXNzYWdlIj57JG1lc3NhZ2V9PC9wPgoJPC9kaXY+Cgl7L2lmfQo8L2Rpdj4KCntpZiAkdGFic3xAY291bnR9Cgl7JHN0YXJ0X3RhYmhlYWRlcnN9CgkJe2ZvcmVhY2ggZnJvbT0kdGFicyBpdGVtPXRhYn0KCQkJeyR0YWIudGFiaGVhZGVyfQoJCXsvZm9yZWFjaH0KCXskZW5kX3RhYmhlYWRlcnN9Cgl7JHN0YXJ0X3RhYmNvbnRlbnR9CgkJe2ZvcmVhY2ggZnJvbT0kdGFicyBpdGVtPXRhYn0KCQkJeyR0YWIudGFiY29udGVudH0KCQl7L2ZvcmVhY2h9Cgl7JGVuZF90YWJjb250ZW50fQp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/header.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjQKRmlsZSAgIDogaGVhZGVyLnRwbApMaWNlbnNlOiBHUEwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSp9Cgo8bGluayByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJzY3JlZW4iIHR5cGU9InRleHQvY3NzIiBocmVmPSJ7cm9vdF91cmx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2Nzcy9zdHlsZS5jc3MiIC8+CjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7cm9vdF91cmx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2pzL2pzTG9hZGVyLmpzIj48L3NjcmlwdD4Ke2xpdGVyYWx9CjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCmpzTG9hZGVyLmxvYWRTY3JpcHRzKHsKCXNjcmlwdHM6IHsKCQlqUXVlcnk6IHsKCQkJdXJsOiAney9saXRlcmFsfXtyb290X3VybH17bGl0ZXJhbH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvanMvanEubWluLmpzJywKCQkJY2FsbEJhY2s6IGZ1bmN0aW9uKHJlYWR5KSB7CgkJCQlpZihyZWFkeSkgewoJCQkJCWpRdWVyeS5ub0NvbmZsaWN0KCk7CgkJCQkJanNMb2FkZXIubG9hZFNjcmlwdHMoewoJCQkJCQlzY3JpcHRzOiB7CgkJCQkJCQl1aTogewoJCQkJCQkJCXVybDogJ3svbGl0ZXJhbH17cm9vdF91cmx9e2xpdGVyYWx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2pzL2pxLnVpLmNvcmUubWluLmpzJywKCQkJCQkJCQlyZWFkeTogZnVuY3Rpb24oKSB7CgkJCQkJCQkJCXJldHVybiAodHlwZW9mIGpRdWVyeSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5LnVpICE9ICd1bmRlZmluZWQnKTsKCQkJCQkJCQl9CgkJCQkJCQl9LAoJCQkJCQkJd2lkZ2V0OiB7CgkJCQkJCQkJdXJsOiAney9saXRlcmFsfXtyb290X3VybH17bGl0ZXJhbH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvanMvanEudWkud2lkZ2V0Lm1pbi5qcycsCgkJCQkJCQkJcmVhZHk6IGZ1bmN0aW9uKCkgewoJCQkJCQkJCQlyZXR1cm4gKHR5cGVvZiBqUXVlcnkgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGpRdWVyeS53aWRnZXQgIT0gJ3VuZGVmaW5lZCcpOwoJCQkJCQkJCX0KCQkJCQkJCX0sCgkJCQkJCQltb3VzZTogewoJCQkJCQkJCXVybDogJ3svbGl0ZXJhbH17cm9vdF91cmx9e2xpdGVyYWx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2pzL2pxLnVpLm1vdXNlLm1pbi5qcycsCgkJCQkJCQkJcmVhZHk6IGZ1bmN0aW9uKCkgewoJCQkJCQkJCQlyZXR1cm4gKHR5cGVvZiBqUXVlcnkgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGpRdWVyeS51aSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5LnVpLm1vdXNlICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqUXVlcnkud2lkZ2V0ICE9ICd1bmRlZmluZWQnKTsKCQkJCQkJCQl9CgkJCQkJCQl9LAoJCQkJCQkJc29ydGFibGU6IHsKCQkJCQkJCQl1cmw6ICd7L2xpdGVyYWx9e3Jvb3RfdXJsfXtsaXRlcmFsfS9tb2R1bGVzL0FkdmFuY2VkQ29udGVudC9qcy9qcS51aS5zb3J0YWJsZS5taW4uanMnLAoJCQkJCQkJCXJlYWR5OiBmdW5jdGlvbigpIHsKCQkJCQkJCQkJcmV0dXJuICh0eXBlb2YgalF1ZXJ5ICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqUXVlcnkudWkgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGpRdWVyeS51aS5tb3VzZSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5LndpZGdldCAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5KCkuc29ydGFibGUgIT0gJ3VuZGVmaW5lZCcpOwoJCQkJCQkJCX0sCgkJCQkJCQkJY2FsbEJhY2s6IGZ1bmN0aW9uKHJlYWR5KSB7CgkJCQkJCQkJCWlmKHJlYWR5KSB7CgkJCQkJCQkJCQlqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCQkJCQkJCQkJCWpRdWVyeSgnLnNvcnRhYmxlX3dyYXBwZXInKS5zb3J0YWJsZSh7CgkJCQkJCQkJCQkJCWl0ZW1zOiAnLnNvcnRhYmxlJywKCQkJCQkJCQkJCQkJaGFuZGxlOiAnLnNvcnRhYmxlX2hhbmRsZXInLAoJCQkJCQkJCQkJCQlheGlzOiAneScKCQkJCQkJCQkJCQl9KTsKCQkJCQkJCQkJCQlqUXVlcnkoJy5zb3J0YWJsZV9oYW5kbGVyJykuZGlzYWJsZVNlbGVjdGlvbigpOwoJCQkJCQkJCQkJfSk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9LAoJCQkJCQkJYWpheFN1Ym1pdDogewoJCQkJCQkJCXVybDogJ3svbGl0ZXJhbH17cm9vdF91cmx9e2xpdGVyYWx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2pzL2pxLmZvcm0ubWluLmpzJywKCQkJCQkJCQlyZWFkeTogZnVuY3Rpb24oKSB7CgkJCQkJCQkJCXJldHVybiAodHlwZW9mIGpRdWVyeSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5KCkuYWpheFN1Ym1pdCAhPSAndW5kZWZpbmVkJyk7CgkJCQkJCQkJfQoJCQkJCQkJfSwKCQkJCQkJCWNhbGVuZGFyOiB7CgkJCQkJCQkJdXJsOiAney9saXRlcmFsfXtyb290X3VybH17bGl0ZXJhbH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvanMvanEuY2FsZW5kYXIuanMnLAoJCQkJCQkJCXJlYWR5OiBmdW5jdGlvbigpIHsKCQkJCQkJCQkJcmV0dXJuICh0eXBlb2YgalF1ZXJ5ICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqUXVlcnkoKS5jYWxlbmRhciAhPSAndW5kZWZpbmVkJyk7CgkJCQkJCQkJfSwKCQkJCQkJCQljYWxsQmFjazogZnVuY3Rpb24gKHJlYWR5KSB7CgkJCQkJCQkJCWlmKHJlYWR5KSB7CgkJCQkJCQkJCQlqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCQkJCQkJCQkJCWpRdWVyeSgnI0FkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZVBpY2tlckRpc3BsYXknKS5jYWxlbmRhcih7CgkJCQkJCQkJCQkJCXRyaWdnZXJFbGVtZW50OiAnI0FkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZVBpY2tlclRyaWdnZXInLAoJCQkJCQkJCQkJCQlkYXRlRm9ybWF0OiAnJXgnLAoJCQkJCQkJCQkJCQljbG9zZUhhbmRsZXI6IGZ1bmN0aW9uIChjYWxlbmRhcikgewoJCQkJCQkJCQkJCQkJalF1ZXJ5KCcjQWR2YW5jZWRDb250ZW50U3RhcnREYXRlJykudmFsKGV2YWwoY2FsZW5kYXIuZGF0ZS5nZXRUaW1lKCkvMTAwMCkpOwoJCQkJCQkJCQkJCQkJY2FsZW5kYXIuY29udGFpbmVyLmhpZGUoKTsKCQkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJCX0pOwoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCWpRdWVyeSgnI0FkdmFuY2VkQ29udGVudEVuZERhdGVQaWNrZXJEaXNwbGF5JykuY2FsZW5kYXIoewoJCQkJCQkJCQkJCQl0cmlnZ2VyRWxlbWVudDogJyNBZHZhbmNlZENvbnRlbnRFbmREYXRlUGlja2VyVHJpZ2dlcicsCgkJCQkJCQkJCQkJCWRhdGVGb3JtYXQ6ICcleCcsCgkJCQkJCQkJCQkJCWNsb3NlSGFuZGxlcjogZnVuY3Rpb24gKGNhbGVuZGFyKSB7CgkJCQkJCQkJCQkJCQlqUXVlcnkoJyNBZHZhbmNlZENvbnRlbnRFbmREYXRlJykudmFsKGV2YWwoY2FsZW5kYXIuZGF0ZS5nZXRUaW1lKCkvMTAwMCkpOwoJCQkJCQkJCQkJCQkJY2FsZW5kYXIuY29udGFpbmVyLmhpZGUoKTsKCQkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJCX0pOwoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCXsvbGl0ZXJhbH0KCQkJCQkJCQkJCQl7aWYgJGRhdGVfYmxvY2tzfEBjb3VudCA+IDB9CgkJCQkJCQkJCQkJe2ZvcmVhY2ggZnJvbT0kZGF0ZV9ibG9ja3MgaXRlbT1jb250ZW50X2Jsb2NrX2lkfQoJCQkJCQkJCQkJCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLm1vZGUgPT0gJ2NhbGVuZGFyJ30KCQkJCQkJCQkJCQkJCXtsaXRlcmFsfQoJCQkJCQkJCQkJCQlqUXVlcnkoJyN7L2xpdGVyYWx9eyRjb250ZW50X2Jsb2NrX2lkfXtsaXRlcmFsfV9BZHZhbmNlZENvbnRlbnREYXRlUGlja2VyRGlzcGxheScpLmNhbGVuZGFyKHsKCQkJCQkJCQkJCQkJCXRyaWdnZXJFbGVtZW50OiAnI3svbGl0ZXJhbH17JGNvbnRlbnRfYmxvY2tfaWR9e2xpdGVyYWx9X0FkdmFuY2VkQ29udGVudERhdGVQaWNrZXJUcmlnZ2VyJywKCQkJCQkJCQkJCQkJCWRhdGVGb3JtYXQ6ICcleCcsCgkJCQkJCQkJCQkJCQljbG9zZUhhbmRsZXI6IGZ1bmN0aW9uIChjYWxlbmRhcikgewoJCQkJCQkJCQkJCQkJCWpRdWVyeSgnI3svbGl0ZXJhbH17JGNvbnRlbnRfYmxvY2tfaWR9e2xpdGVyYWx9X0FkdmFuY2VkQ29udGVudERhdGUnKS52YWwoZXZhbChjYWxlbmRhci5kYXRlLmdldFRpbWUoKS8xMDAwKSk7CgkJCQkJCQkJCQkJCQkJY2FsZW5kYXIuY29udGFpbmVyLmhpZGUoKTsKCQkJCQkJCQkJCQkJCX0KCQkJCQkJCQkJCQkJfSk7CgkJCQkJCQkJCQkJCQl7L2xpdGVyYWx9CgkJCQkJCQkJCQkJCXsvaWZ9CgkJCQkJCQkJCQkJey9mb3JlYWNofQoJCQkJCQkJCQkJCXsvaWZ9CgkJCQkJCQkJCQkJe2xpdGVyYWx9CgkJCQkJCQkJCQl9KTsKCQkJCQkJCQkJfQoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0pOwoJCQkJfQoJCQl9CgkJfQoJfQp9KTsKQWR2YW5jZWRDb250ZW50ID0gewoJdG9nZ2xlQmxvY2s6IGZ1bmN0aW9uICh0YWJJZCwgbmF2YmFyX2lkKSB7CgkJdmFyIG5hdmJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hdmJhcl9pZCk7CgkJdmFyIHRhYnMgICA9IG5hdmJhci5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7CgkJCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSArPSAxKSB7CgkJCS8vdGFic1tpXS5vbm1vdXNlZG93biA9IGZ1bmN0aW9uKCkgewoJCQlmb3IgKHZhciBqID0gMDsgaiA8IHRhYnMubGVuZ3RoOyBqICs9IDEpIHsKCQkJCXRhYnNbal0uY2xhc3NOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJyc7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJzW2pdLmlkICsgIl9jIikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKCQkJfQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJJZCkuY2xhc3NOYW1lICAgICAgICAgICAgPSAnYWN0aXZlJzsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFiSWQgKyAiX2MiKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCQkJcmV0dXJuIHRydWU7CgkJCS8vfQoJCX0KCX0sCglzdWJtaXRGb3JtOiBmdW5jdGlvbiAoYnV0dG9uLCB0YXJnZXRJZCkgewoJCXZhciBmb3JtID0galF1ZXJ5KGJ1dHRvbikucGFyZW50cygnZm9ybTpmaXJzdCcpOwoJCWpRdWVyeSgnLkFkdmFuY2VkQ29udGVudF9BamF4RmllbGRzJykucmVtb3ZlKCk7CgkJaWYoZm9ybS5sZW5ndGgpIHsKCQkJaWYodGFyZ2V0SWQgIT0gJycgJiYgIWZvcm0ucGFyZW50cygnIycrdGFyZ2V0SWQpLmxlbmd0aCkgewoJCQkJalF1ZXJ5KCcjJyt0YXJnZXRJZCkuaHRtbCgnJyk7CgkJCX0KCQkJdmFyIG9wdGlvbnMgPSB7CgkJCQlzdWNjZXNzOiBmdW5jdGlvbihyZXNwb25zZVRleHQpIHsKCQkJCQlpZihyZXNwb25zZVRleHQgIT0gJycgJiYgdGFyZ2V0SWQgIT0gJycpIHsKCQkJCQkJalF1ZXJ5KCcjJyt0YXJnZXRJZCkuaHRtbChyZXNwb25zZVRleHQpOwoJCQkJCX0KCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCQkJZm9ybS5hcHBlbmQoJzxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJBZHZhbmNlZENvbnRlbnRfQWpheEZpZWxkcyIgbmFtZT0iZGlzYWJsZV90aGVtZSIgdmFsdWU9IjEiIC8+Jyk7CgkJCWZvcm0uYXBwZW5kKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0FqYXhGaWVsZHMiIG5hbWU9IicrYnV0dG9uLm5hbWUrJyIgdmFsdWU9IicrYnV0dG9uLnZhbHVlKyciIC8+Jyk7CgkJCWZvcm0uYXBwZW5kKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0FqYXhGaWVsZHMiIG5hbWU9InsvbGl0ZXJhbH17JG1vZHVsZV9pZH17bGl0ZXJhbH1hamF4IiB2YWx1ZT0iMSIgLz4nKTsKCQkJZm9ybS5hamF4U3VibWl0KG9wdGlvbnMpOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9LAoJc2VsZWN0QWxsOiBmdW5jdGlvbiAob2JqKSB7CgkJaWYgKG9iai52YWx1ZSA9PSAxKSB7CgkJCWpRdWVyeSgnaW5wdXRbbmFtZV49Iicrb2JqLmlkKyctIl0nKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpOwoJCQlvYmoudmFsdWUgPSAwOwoJCX0KCQllbHNlIHsKCQkJalF1ZXJ5KCdpbnB1dFtuYW1lXj0iJytvYmouaWQrJy0iXScpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKCQkJb2JqLnZhbHVlID0gMTsKCQl9Cgl9LAoJaW1wb3J0UGFnZXM6IGZ1bmN0aW9uKGhyZWYpIHsKCQlqUXVlcnkuZ2V0KGhyZWYgKyAnJnsvbGl0ZXJhbH17JG1vZHVsZV9pZH17bGl0ZXJhbH1kaXNhYmxlX3RoZW1lPTEmey9saXRlcmFsfXskbW9kdWxlX2lkfXtsaXRlcmFsfWFqYXg9MScsIGZ1bmN0aW9uKGRhdGEpIHsKCQkJalF1ZXJ5KCcjQWR2YW5jZWRDb250ZW50UmVzdWx0JykuaHRtbChkYXRhKTsKCQl9KTsKCQlyZXR1cm4gZmFsc2U7Cgl9Cn07CnsvbGl0ZXJhbH0KLy9dXT4KPC9zY3JpcHQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/multiContent.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCXskYWRkX2NvbnRlbnRfYmxvY2t9CjwvZGl2PgoKe2lmICRtdWx0aV9jb250ZW50X2Jsb2Nrc3xAY291bnQgPiAwfQoKPCEtLSBzdGFydCBtdWx0aSBjb250ZW50IGJsb2NrcyAtLT4KCgl7Zm9yZWFjaCBmcm9tPSRtdWx0aV9jb250ZW50X2Jsb2NrcyBpdGVtPWJsb2NrfQoJCjwhLS0gc3RhcnQgYmxvY2sgeyRibG9jay5pZH0gLS0+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGlkPSJ7JGJsb2NrLmlkfV93cmFwcGVyIntpZiAkYmxvY2suc29ydGFibGV9IGNsYXNzPSJzb3J0YWJsZSJ7L2lmfT4KCQkKCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8c3Ryb25nPnskYmxvY2subGFiZWx9Ojwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodCI+eyRyZW1vdmVfY29udGVudF9ibG9ja308L3NwYW4KCQk8L2Rpdj4KCQkKCXtpZiAkYmxvY2suZGVzY3JpcHRpb259CgkJCgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCgkJCXskYmxvY2suZGVzY3JpcHRpb259CgkJCQoJCTwvZGl2PgoJCQoJey9pZn0KCQkKCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA1cHggMCAwIDA7Ij4KCQkJCgkJCTxwPnskYmxvY2suaW5wdXR9PC9wPgoJCQkKCQk8L2Rpdj4KCQkKCTwvZGl2Pgo8L2Rpdj4KPCEtLSBlbmQgYmxvY2sgeyRibG9jay5pZH0gLS0+CgoJey9mb3JlYWNofQoKPCEtLSBlbmQgbXVsdGkgY29udGVudCBibG9ja3MgLS0+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJeyRhZGRfY29udGVudF9ibG9ja30KPC9kaXY+Cgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/multiInput.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjQKRmlsZSAgIDogbXVsdGlJbnB1dC50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHA+Cntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWlucHV0fQoJeyRpbnB1dC5sYWJlbH06Jm5ic3A7eyRpbnB1dC5pbnB1dH0mbmJzcDsKey9mb3JlYWNofQo8L3A+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/multiInputTab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjQKRmlsZSAgIDogbXVsdGlJbnB1dFRhYi50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKe2lmIGlzc2V0KCRlcnJvcm1lc3NhZ2UpICYmICRlcnJvcm1lc3NhZ2UhPScnfQo8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPnskZXJyb3JtZXNzYWdlfTwvbGk+PC91bD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0Ke2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHA+eyRtZXNzYWdlfTwvcD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCXskYWRkX211bHRpX2lucHV0fQoJPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+Cgp7aWYgJG11bHRpX2lucHV0X2FycmF5fEBjb3VudH0KeyRzdGFydF9mb3JtfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjEiPgoJCTx0aGVhZD4KCQkJPHRyPgoJCQkJPHRoPnskaW5wdXRfaWRfdGV4dH08L3RoPgoJCQkJPHRoPnskdGVtcGxhdGVfdGV4dH08L3RoPgoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj57JHNlbGVjdGFsbH08L3RoPgoJCQk8L3RyPgoJCTwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCXtmb3JlYWNoIGZyb209JG11bHRpX2lucHV0X2FycmF5IGl0ZW09Im11bHRpX2lucHV0In0KCQkKCQkJPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSI+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dC5uYW1lX2xpbmt9PC90ZD4KCQkJCTx0ZD57JG11bHRpX2lucHV0LnRlbXBsYXRlfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dC5lZGl0X2xpbmt9PC90ZD4KCQkJCTx0ZD57JG11bHRpX2lucHV0LmRlbGV0ZV9saW5rfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dC5jaGVja2JveH08L3RkPgoJCQk8L3RyPgoJCQkKCQl7L2ZvcmVhY2h9CgkJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCXskYWRkX211bHRpX2lucHV0fQoJPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMHB0OyBmbG9hdDogcmlnaHQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CgkJeyRzdWJtaXRfYnVsa2FjdGlvbn0KCTwvZGl2PgoJPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+Cgp7JGVuZF9mb3JtfQp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/multiInputTplTab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjQKRmlsZSAgIDogbXVsdGlJbnB1dFRwbFRhYi50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKe2lmIGlzc2V0KCRlcnJvcm1lc3NhZ2UpICYmICRlcnJvcm1lc3NhZ2UhPScnfQo8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPnskZXJyb3JtZXNzYWdlfTwvbGk+PC91bD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0Ke2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHA+eyRtZXNzYWdlfTwvcD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCXskYWRkX211bHRpX2lucHV0X3RwbH0KCTxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjwvZGl2PgoKe2lmICRtdWx0aV9pbnB1dF90cGxfYXJyYXl8QGNvdW50fQp7JHN0YXJ0X2Zvcm19Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMSI+CgkJPHRoZWFkPgoJCQk8dHI+CgkJCQk8dGg+eyR0ZW1wbGF0ZV9uYW1lX3RleHR9PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPnskc2VsZWN0YWxsfTwvdGg+CgkJCTwvdHI+CgkJPC90aGVhZD4KCQk8dGJvZHk+CgkJCQoJCXtmb3JlYWNoIGZyb209JG11bHRpX2lucHV0X3RwbF9hcnJheSBpdGVtPSJtdWx0aV9pbnB1dF90cGwifQoJCQkKCQkJPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSI+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dF90cGwubmFtZV9saW5rfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dF90cGwuc2V0X2RlZmF1bHRfbGlua308L3RkPgoJCQkJPHRkPnskbXVsdGlfaW5wdXRfdHBsLmVkaXRfbGlua308L3RkPgoJCQkJPHRkPnskbXVsdGlfaW5wdXRfdHBsLmRlbGV0ZV9saW5rfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dF90cGwuY2hlY2tib3h9PC90ZD4KCQkJPC90cj4KCQkJCgkJey9mb3JlYWNofQoJCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+Cgl7JGFkZF9tdWx0aV9pbnB1dF90cGx9Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAwcHQ7IGZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4KCQl7JHN1Ym1pdF9idWxrYWN0aW9ufQoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KCnskZW5kX2Zvcm19CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/prefsTab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjQKRmlsZSAgIDogcHJlZnNUYWIudHBsCkxpY2Vuc2U6IEdQTAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKn0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW1wb3J0Y29udGVudF9pbnB1dH08YnIgLz48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGltcG9ydGNvbnRlbnQyX2lucHV0fTxiciAvPjwvcD4KPC9kaXY+Cnskc3RhcnRmb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHNob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnNfdGV4dH06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zX2lucHV0fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskdW5pbnN0YWxsYWN0aW9uX3RleHR9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdW5pbnN0YWxsYWN0aW9uX2lucHV0fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskYmxvY2tfZGlzcGxheV9zZXR0aW5nc190ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGJsb2NrX2Rpc3BsYXlfc2V0dGluZ3NfaW5wdXR9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRjb2xsYXBzZV9ibG9ja19kZWZhdWx0X3RleHR9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY29sbGFwc2VfYmxvY2tfZGVmYXVsdF9pbnB1dH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc190ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc19pbnB1dH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGdyb3VwX2Rpc3BsYXlfc2V0dGluZ3NfdGV4dH06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRncm91cF9kaXNwbGF5X3NldHRpbmdzX2lucHV0fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskY29sbGFwc2VfZ3JvdXBfZGVmYXVsdF90ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvbGxhcHNlX2dyb3VwX2RlZmF1bHRfaW5wdXR9PC9wPgo8L2Rpdj4Ke2lmIGlzc2V0KCRjb250ZW50c2V0dGluZ3NfdGV4dCl9CjxmaWVsZHNldD4KCTxsZWdlbmQ+eyRjb250ZW50c2V0dGluZ3NfdGV4dH08L2xlZ2VuZD4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZldWFjY2Vzc190ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmZXVhY2Nlc3NfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRyZWRpcmVjdHBhZ2VfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcmVkaXJlY3RwYWdlX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcmVkaXJlY3RwYXJhbXNfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcmVkaXJlY3RwYXJhbXNfaW5wdXR9Jm5ic3A7eyRldmFsdWF0ZXNtYXJ0eV90ZXh0fTombmJzcDt7JGV2YWx1YXRlc21hcnR5X2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskZmV1YWN0aW9uX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZldWFjdGlvbl9pbnB1dH08L3A+Cgk8L2Rpdj4KPC9maWVsZHNldD4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRfcHJlZnN9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
</module>
