<?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.5.1</version>
  <mincmsversion>1.6.10</mincmsversion>
	<help><![CDATA[PGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJob3N0ZWRfYnV0dG9uX2lkIiB2YWx1ZT0iRkEyRDNGUExTVEFLSiIgLz4KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZW5fR0IvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lLiIgLz4KPGltZyBhbHQ9IiIgYm9yZGVyPSIwIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPgo8L2Zvcm0+PC9kaXY+PGJyIC8+CjxoMz5XYXMgbWFjaHQgZGllc2VzIE1vZHVsPzwvaDM+CjxwPkRpZXNlcyBNb2R1bCBiaWV0ZXQgZWluZW4gd2VpdGVyZW4gSW5oYWx0c3R5cGVuICJFcndlaXRlcnRlciBJbmhhbHQiLjxiciAvPgpNaXQgZGllc2VtIEluaGFsdHN0eXBlbiBrYW5uIGRpZSBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBmbGV4aWJlbCBnZXN0YWx0ZXQgd2VyZGVuLCBpbmRlbSBtYW4gaW0gU2VpdGVuLVRlbXBsYXRlIGRlbiBlaW56ZWxuZW4gSW5oYWx0c2JsJm91bWw7Y2tlbiB3ZWl0ZXJlIFBhcmFtZXRlciBoaW56dWYmdXVtbDtndC48YnIgLz4KSW5oYWx0c2JsJm91bWw7Y2tlIGsmb3VtbDtubmVuIGluIEZvcm0gdmVyc2NoaWVkZW5lciBJbnB1dC1GZWxkZXIgd2llIERyb3Bkb3ducywgTWVocmZhY2hhdXN3YWhsZmVsZGVyIG9kZXIgQ2hlY2tib3hlbiBkYXJnZXN0ZWxsdCB3ZXJkZW4uPGJyIC8+CkRpZSBJbnB1dC1GZWxkZXIgayZvdW1sO25uZW4gd2VpdGVyaGluIGluIGVpZ2VuZW4gVGFicyBhbmdlemVpZ3Qgb2RlciBpbiBHcnVwcGVuIHp1c2FtbWVuZ2VmYXNzdCB3ZXJkZW4uPGJyIC8+CkF1w59lcmRlbSBoYXQgbWFuIGRpZSBNJm91bWw7Z2xpY2hrZWl0LCBTZWl0ZW4gb2RlciBlaW56ZWxuZSBCbCZvdW1sO2NrZSBudXIgZiZ1dW1sO3IgYmVzdGltbXRlIEdydXBwZW4gZGVzIEZyb250RW5kVXNlcnMgTW9kdWxzIGZyZWl6dWdlYmVuLjxiciAvPgpXZWl0ZXJoaW4gayZvdW1sO25uZW4gU2VpdGVuIGVpbiBTdGFydC0gdW5kIGVpbiBFbmRkYXR1bSBlcmhhbHRlbiwgd29taXQgU2VpdGVuIGF1dG9tYXRpc2NoIGFrdGl2L2luYWt0aXYgd2VyZGVuLjxiciAvPgpEaWUgZXJ3ZWl0ZXJ0ZW4gRWluc3RlbGx1bmdlbiBrJm91bWw7bm5lbiB2b24gJnV1bWw7YmVyZ2VvcmRuZXRlbiBTZWl0ZW4gJnV1bWw7YmVybm9tbWVuIHdlcmRlbi48L3A+CjxwPkRpZSBQYXJhbWV0ZXIgayZvdW1sO25uZW4gYXXDn2VyZGVtIG1pdCBIaWxmZSB2b24gZWluZmFjaGVtIFNtYXJ0eS1TeW50YXggZHluYW1pc2NoZSBXZXJ0ZSBlbnRoYWx0ZW4uPGJyIC8+CkQuaC4gbWFuIGthbm4gei5CLiBkYXMgRXJnZWJuaXMgZWluZXMgYmVudXR6ZXJkZWZpbmllcnRlbiBUYWdzLCBlaW5lcyBQbHVnaW5zLCBlaW5lcyBNb2R1bHMgb2RlciBlaW5mYWNoIG51ciBlaW5lcyBHbG9iYWxlbiBJbmhhbHRzYmxvY2tlcyBhbHMgV2VydCBmJnV1bWw7ciBlaW5lbiBQYXJhbWV0ZXIgZWluc2V0emVuIGxhc3Nlbi48L3A+CjxwPjxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IEluIG1hbmNoZW4gRiZhdW1sO2xsZW4gZW1wZmllbHQgZXMgc2ljaCwgYW5zdGVsbGUgZGVzIG5vcm1hbGVuIHtjb250ZW50fSBUYWdzIGRlbiB7QWR2YW5jZWRDb250ZW50fSBUYWcgenUgYmVudXR6ZW4uIChHcm/Dny0gdW5kIEtsZWluc2NocmVpYnVuZyBiZWFjaHRlbik8YnIgLz4KRGllIEZlaGxlcm1lbGR1bmcgIlBhcmFtZXRlciBbWF0gaXMgbm90IGtub3duIGJ5IE1vZHVsZSBbTW9kdWxuYW1lXSIga2FubiBkYW1pdCB6LkIuIHVtZ2FuZ2VuIHdlcmRlbi48L2VtPjwvcD4KPGgzPldpZSB3aXJkIGVzIHZlcndlbmRldD88L2gzPgo8cD5OYWNoIGRlciBJbnN0YWxsYXRpb24gd2lyZCBkZXIgQWRtaW5pc3RyYXRpb24gZWluIHdlaXRlcmVyIE1lbiZ1dW1sO3B1bmt0ICJFcndlaXRlcnVuZ2VuLSZndDtFcndlaXRlcnRlciBJbmhhbHQiIGhpbnp1Z2VmJnV1bWw7Z3QuPGJyIC8+CkhpZXIgayZvdW1sO25uZW4gdmVyc2NoaWVkZW5lIEVpbnN0ZWxsdW5nZW4gdm9yZ2Vub21tZW4gd2VyZGVuLjxiciAvPgpCZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBzdGVodCBudW4gZWluIHdlaXRlcmVyIEluaGFsdHN0eXAgIkVyd2VpdGVydGVyIEluaGFsdCIgenVyIEF1c3dhaGwsIGRlciBkaWUgRnVua3Rpb25lbiBkZXMgTW9kdWxzIGJlcmVpdHN0ZWxsdC48L3A+CjxwPjxzdHJvbmcgc3R5bGU9ImNvbG9yOnJlZCI+V0FSTlVORyEgPC9zdHJvbmc+PGJyIC8+Cldlbm4gU2llIGRhcyBNb2R1bCBkZWluc3RhbGxpZXJlbiwgb2huZSBhbGxlIFNlaXRlbiB2b20gVHlwICdFcndlaXRlcnRlciBJbmhhbHQnIHdpZWRlciB6dXImdXVtbDtjayBhdWYgZGVuIFN0YW5kYXJkLUluaGFsdHN0eXBlbiB6dSBzZXR6ZW4sIGZ1bmt0aW9uaWVydCBJaHJlIENNU21zIEluc3RhbGxhdGlvbiBuaWNodCBtZWhyITxiciAvPgpTdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgYWxsZSBTZWl0ZW4gdm9tIFR5cCAnRXJ3ZWl0ZXJ0ZXIgSW5oYWx0JyB2b3IgZGVyIERlaW5zdGFsbGF0aW9uIHdpZWRlciBnZcOkbmRlcnQgb2RlciBnZWwmb3VtbDtzY2h0IHdlcmRlbiEgKG51dHplbiBTaWUgZGllIE1vZHVsZWluc3RlbGx1bmcgJ0FrdGlvbiBiZWltIERlaW5zdGFsbGllcmVuJyB1bWQgZGllcyBhdXRvbWF0aXNjaCB2b3J6dW5laG1lbi4pPC9wPgo8cD5NaXQgSGlsZmUgZm9sZ2VuZGVyIFBhcmFtZXRlciBiZWltIEVyc3RlbGxlbiB2b24gSW5oYWx0c2JsJm91bWw7Y2tlbiBpbSBTZWl0ZW4tVGVtcGxhdGUgayZvdW1sO25uZW4gZGllc2UgRnVua3Rpb25lbiB2ZXJ3ZW5kZXQgd2VyZGVuOjwvcD4KPGgzPldlbGNoZSBQYXJhbWV0ZXIgc2luZCB2ZXJmJnV1bWw7Z2Jhcj88L2gzPgo8cD4oYWxsZSBQYXJhbWV0ZXIgc2luZCBvcHRpb25hbCk8L3A+CjxwPjxzdHJvbmc+U3RhbmRhcmQgUGFyYW1hdGVyOjwvc3Ryb25nPjwvcD4KPHA+PGVtPjxhIGhyZWY9Imxpc3R0YWdzLnBocD9hY3Rpb249c2hvd3BsdWdpbmhlbHAmcGx1Z2luPWNvbnRlbnQiPihzaWVoZSBhdWNoIFRhZy1IaWxmZSBkZXMge2NvbnRlbnR9LVRhZ3MpPC9hPjwvZW0+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2s8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJRXJtJm91bWw7Z2xpY2h0IGRhcyBIaW56dWYmdXVtbDtnZW4gbWVocmVyZXIgSW5oYWx0c2JsJm91bWw7Y2tlLiBCZWltIEJlYXJiZWl0ZW4gZWluZXIgU2VpdGUgd2lyZCBmJnV1bWw7ciBqZWRlbiBCbG9jayBlaW4gZWlnZW5lcyBJbnB1dC1GZWxkIGFuZ2V6ZWlndC48YnIgLz4KCQkJCUJzcC46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O1p3ZWl0ZXIgSW5oYWx0c2Jsb2NrJnF1b3Q7fTwvY29kZT48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IERlciBOYW1lIGRlcyBJbmhhbHRzYmxvY2tzIGRhcmYgbnVyIEJ1Y2hzdGFiZW4sIFphaGxlbiB1bmQgVW50ZXJzdHJpY2hlIGVudGhhbHRlbi4gKGtlaW5lIExlZXItIG9kZXIgU29uZGVyemVpY2hlbiwgVW1sYXV0ZSBldGMuKS4gQW5kZXJlbmZhbGxzIHdpcmQgZGVyIEJsb2NrbmFtZSAmYXVtbDtobmxpY2ggZGVtIFNlaXRlbmFsaWFzIGVudHByZWNoZW5kIGtvbnZlcnRpZXJ0LjwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPldlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgd2lyZCBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4ga2VpbiBXWVNJV1lHIEVkaXRvciBmJnV1bWw7ciBkaWVzZW4gQmxvY2sgdmVyd2VuZGV0LjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+b25lbGluZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPldlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgd2lyZCBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gbnVyIGVpbiBlaW5mYWNoZXMgZWluemVpbGlnZXMgVGV4dC1JbnB1dC1GZWxkIGFuZ2V6ZWlndC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPlN0YWJkYXJkaW5oYWx0IGJlaW0gRXJzdGVsbGVuIG5ldWVyIFNlaXRlbi48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmxhYmVsPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EaWUgRWluZ2FiZWF1ZmZvcmRlcnVuZyBmJnV1bWw7ciBkZW4gSW5oYWx0c2Jsb2NrIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbi4gV2VubiBkaWVzZXIgUGFyYW1ldGVyIGZlaGx0LCB3aXJkIGRlciB1bmtvbnZlcnRpZXJ0ZSBXZXJ0IGRlcyBQYXJhbWV0ZXJzIGJsb2NrIHZlcndlbmRldC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFzc2lnbjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZWlzdCBkZW4gSW5oYWx0IGRpZXNlcyBCbG9ja3MgYXVmIGRlciBJbnRlcm5ldHNlaXRlIGVpbmVyIFNtYXJ0eSBWYXJpYWJsZW4genUuPGJyIC8+CgkJCQlCc3AuOiA8Y29kZT57Y29udGVudCBhc3NpZ249InBhZ2Vjb250ZW50In08YnIgLz4KCQkJCXt0YWJsZV9vZl9jb250ZW50cyB0aGVwYWdlY29udGVudD0mcXVvdDskcGFnZWNvbnRlbnQmcXVvdDt9PC9jb2RlPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPkVyd2VpdGVydGUgUGFyYW1ldGVyOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3R5cGU8L3R0PiAodGV4dCxjaGVja2JveCxkcm9wZG93bixzZWxlY3RfbXVsdGlwbGUsZGF0ZSxtdWx0aV9pbnB1dCxzbGlkZXIsY29sb3JwaWNrZXIpIAoJCTx1bD4KCQkJPGxpPkdpYnQgYW4sIGluIHdlbGNoZXIgRm9ybSBkZXIgSW5oYWx0c2Jsb2NrIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5wYWdlX3RhYjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGluIGJlc3RpbW10ZW4gVGFicyBhbmdlemVpZ3Qgd2VyZGVuLjxiciAvPgoJCQkJTSZvdW1sO2dsaWNoZSBXZXJ0ZSBzaW5kIHouQi4gJnF1b3Q7bWFpbiZxdW90OyAoID0gVGFiICZxdW90O0hhdXB0bWVuJnV1bWw7JnF1b3Q7KSwgJnF1b3Q7b3B0aW9ucyZxdW90OyAoID0gVGFiICZxdW90O09wdGlvbmVuJnF1b3Q7KSwgb2RlciBqZWRlciBhbmRlcmUgYmVsaWViaWdlIFdlcnQgKGVyemV1Z3QgYXV0b21hdGlzY2ggZWluZW4gd2VpdGVyZW4gVGFiKS48YnIgLz4KCQkJCTxlbT5NYW4ga2FubiBzb21pdCB6LkIuIGVpbmUgQ2hlY2tib3ggaW0gVGFiICJPcHRpb25lbiIgaGluenVmJnV1bWw7Z2VuIG9kZXIgZWluZW4gZWlnZW5lbiBUYWIgZXJzdGVsbGVuLjwvZW0+LgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3RhYjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+TWl0IGRpZXNlbSBQYXJhbWV0ZXIgayZvdW1sO25uZW4gZGllIEluaGFsdHNibCZvdW1sO2NrZSBub2NobWFscyBpbiB3ZWl0ZXJlICJVbnRlcnRhYnMiIGlubmVyaGFsYiBkZXIgIkhhdXB0dGFicyIgdW50ZXJ0ZWlsdCB3ZXJkZW4uPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja19ncm91cDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrYW5uIG1hbiBtZWhyZXJlIEluaGFsdHNibCZvdW1sO2NrZSBpbiBlaW5lbSBGaWVsZHNldCBncnVwcGllcmVuLjxiciAvPgoJCQkJRGllIEdydXBwZW4gayZvdW1sO25uZW4gYXVjaCBhdWYgbWVocmVyZSBUYWJzIHZlcnRlaWx0IHdlcmRlbi4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hY3RpdmU8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgaXN0IGRlciBCbG9jayBkZWFrdGl2aWVydC48YnIgLz4KCQkJCURlYWt0aXZpZXJ0ZSBJbmhhbHRzYmwmb3VtbDtja2Ugd2VyZGVuIHdlZGVyIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiwgbm9jaCBhdWYgZGVyIEludGVybmV0c2VpdGUgYW5nZXplaWd0LgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl9ncm91cHM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJRGllc2VyIFBhcmFtZXRlciBpc3QgJmF1bWw7aG5saWNoIGRlbiAiWnVzJmF1bWw7dHpsaWNoZW4gQmVhcmJlaXRlcm4iIGVpbmVyIFNlaXRlLiBFciBnaWx0IGFsbGVyZGluZ3MgbnVyIGYmdXVtbDtyIGVpbnplbG5lIEluaGFsdHNibCZvdW1sO2NrZS48YnIgLz4KCQkJCU1pdCBkaWVzZW0gUGFyYW1ldGVyIGsmb3VtbDtubmVuIEluaGFsdHNibCZvdW1sO2NrZSBudXIgdm9uIGJlc3RpbW10ZW4gQmVudXR6ZWdydXBwZW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlYXJiZWl0ZXQgd2VyZGVuLjxiciAvPgoJCQkJKE5hbWUgZGVyIEJlbnV0emVyZ3J1cHBlIGVpbnRyYWdlbjsgbWVocmVyZSBHcnVwcGVuIG1pdCBLb21tYSBnZXRyZW5udCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfdXNlcnM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJRGllc2VyIFBhcmFtZXRlciBpc3QgJmF1bWw7aG5saWNoIGRlbiAiWnVzJmF1bWw7dHpsaWNoZW4gQmVhcmJlaXRlcm4iIGVpbmVyIFNlaXRlLiBFciBnaWx0IGFsbGVyZGluZ3MgbnVyIGYmdXVtbDtyIGVpbnplbG5lIEluaGFsdHNibCZvdW1sO2NrZS48YnIgLz4KCQkJCU1pdCBkaWVzZW0gUGFyYW1ldGVyIGsmb3VtbDtubmVuIEluaGFsdHNibCZvdW1sO2NrZSBudXIgdm9uIGJlc3RpbW10ZW4gQmVudXR6ZXJuIGRlciBBZG1pbmlzdHJhdGlvbiBiZWFyYmVpdGV0IHdlcmRlbi48YnIgLz4KCQkJCShOYW1lIGRlcyBCZW51dHplcnMgZWludHJhZ2VuOyBtZWhyZXJlIEJlbnV0emVyIG1pdCBLb21tYSBnZXRyZW5udCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IHdlbm4gZGllIFBhcmFtZXRlciA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gdW5kIDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gbmljaHQgdmVyd2VuZGV0IHdlcmRlbiwgayZvdW1sO25uZW4gZGllIEJsJm91bWw7Y2tlIHZvbiBqZWRlbSBCZW51dHplciBiZWFyYmVpdGV0IHdlcmRlbi48YnIgLz4KCURpZSBXZXJ0ZSBoYWJlbiBrZWluZW4gRWluZmx1c3MsIHdlbm4gZGVyIEJlbnV0emVyIGRlciBHcnVwcGUgIkFkbWluIiBhbmdlaCZvdW1sO3J0LjxiciAvPgoJVW0gZWluZW0gQmVudXR6ZXIgenUgZXJsYXViZW4gYWxsZSBJbmhhbHRzYmwmb3VtbDtja2UgdW5hYmgmYXVtbDtuZ2lnIHZvbiBkZW4gYmVpZGVuIFBhcmFtZXRlcm4genUgYmVhcmJlaXRlbiwgbXVzcyBkZXIgQmVudXR6ZXIgZWluZXIgR3J1cHBlIGFuZ2VoJm91bWw7cmVuLCBkaWUgZGllIEJlcmVjaHRpZ3VuZyAiTWFuYWdlIGFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzIiBoYXQuPC9lbT48YnIgLz48YnIgLz4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4KCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgbGVndCBmZXN0LCB3ZWxjaGUgQmVudXR6ZXJncnVwcGVuIGRlcyBGcm9udEVuZFVzZXJzIE1vZHVscyBkaWVzZW4gQmxvY2sgYXVmIGRlciBJbnRlcm5ldHNlaXRlIHNlaGVuIGQmdXVtbDtyZmVuLjxiciAvPgoJCQkJKElEIGRlciBCZW51dHplcmdydXBwZSBhbmdlYmVuOyBtZWhyZXJlIElEcyBtaXQgS29tbWEgZ2V0cmVubnQpPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjdGlvbjwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJRGllc2VyIFBhcmFtZXRlciBnaWJ0IGFuLCBvYiBhbnN0ZWxsZSBkZXMgSW5oYWx0c2Jsb2NrcyBkYXMgTG9naW4tRm9ybXVsYXIgZGVzIEZyb250RW5kVXNlcnMgTW9kdWxzIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbCwgd2VubiBkaWVzZXIgQmxvY2sgbnVyIGYmdXVtbDtyIGJlc3RpbW10ZSBCZW51dHplcmdydXBwZW4gZnJlaWdlZ2ViZW4gdW5kIGRlciBCZXN1Y2hlciBuaWNodCBlaW5nZWxvZ2d0IGlzdC48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IERhcyBGb3JtdWxhciB3aXJkIG51ciBlaW4gZWluemlnZXMgTWFsIGFuZ2V6ZWlndC48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFsbG93X25vbmU8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT5HaWJ0IGFuLCBvYiBkZXIgQmxvY2sgbGVlciBzZWluIGRhcmYgb2RlciBuaWNodC48YnIgLz4KCQkJV2VubiBkaWVzZXIgV2VydCBhdWYgZmFsc2UgZ2VzZXR6dCB3aXJkIHVuZCBkZXIgSW5oYWx0IGRlcyBCbG9ja3MgaXN0IGxlZXIsIHdpcmQgZGVyIFdlcnQgZGVzIFBhcmFtZXRlcnMgZGVmYXVsdCB2ZXJ3ZW5kZXQuPGJyIC8+CgkJCVd1cmRlIGRlciBCbG9jayBtaXQgZGVtIFBsdWdpbiB7Y29udGVudF9pbWFnZX0gZXJzdGVsbHQsIGZlaGx0IGRpZSBPcHRpb24gIk5pY2h0cyIgaW0gQmlsZC1Ecm9wZG93bi48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNtYXJ0eTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJU2NoYWx0ZXQgZGllIFZlcmFyYmVpdHVuZyBkZXIgUGFyYW1ldGVyd2VydGUgbWl0IEhpbGZlIHZvbiBTbWFydHkgZWluL2F1cy48YnIgLz4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIHRydWUgZ2VzZXR6dCB3aXJkLCB3aXJkIGplZGVyIFBhcmFtZXRlciBtaXQgSGlsZmUgZGVyIFNtYXJ0eSBUZW1wbGF0ZSBFbmdpbmUgdmVyYXJiZWl0ZXQuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOiA8L3N0cm9uZz4gRGllIFdlcnRlIG0mdXVtbDtzc2VuIGFscyBTbWFydHktU3ludGF4IGdla2VubnplaWNobmV0IHdlcmRlbi4gSGllciBrJm91bWw7bm5lbiBhYmVyIG5pY2h0IFN0YW5kYXJkIFNtYXJ0eS1CZWdyZW56ZXIgKHsuLi59KSB2ZXJ3ZW5kZXQgd2VyZGVuLCBkYSBlcyB6dSBGZWhsZXJuIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZSBmJnV1bWw7aHJ0LjxiciAvPgoJCQkJRGFoZXIgd2VyZGVuIHN0YXR0ZGVzc2VuIGRpZSBaZWljaGVuIDo6OiBhbHMgQmVncmVuemVyIHZlcndlbmRldC48YnIgLz48L2VtPgoJCQkJQnNwLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7S2F0ZWdvcmllbiZxdW90OyBsYWJlbD0mcXVvdDtXJmF1bWw7aGxlbiBTaWUgZWluZSBLYXRlZ29yaWUmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDs6OjpnbG9iYWxfY29udGVudCBuYW1lPSYjMDM5O2NhdGVnb3J5bGlzdCYjMDM5Ozo6OiZxdW90OyBzbWFydHk9JnF1b3Q7dHJ1ZSZxdW90O308L2NvZGU+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVzY3JpcHRpb248L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT5FaW5lIGRldGFpbGllcnRlcmUgQmVzY2hyZWlidW5nIGRlcyBJbmhhbHRzYmxvY2tzLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+Y29sbGFwc2U8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCUdpYnQgYW4sIG9iIGVpbiBCbG9jayBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gZWluLSAodHJ1ZSkgb2RlciBhdXNnZWtsYXBwdCAoZmFsc2UpIHNlaW4gc29sbC48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IGlzdCBpbW1lciBmYWxzZSwgd2VubiBkZXIgUGFyYW1ldGVyIG5vX2NvbGxhcHNlPXRydWUgdmVyd2VuZGV0IHdpcmQuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ub19jb2xsYXBzZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJV2VubiBkaWVzZXIgV2VydCBhdWYgZmFsc2UgZ2VzZXR6dCBpc3QsIGthbm4gZGVyIEJsb2NrZSBuaWNodCB6dXNhbW1lbmdla2xhcHB0IHdlcmRlbi48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IHdlbm4gZGVyIFdlcnQgYXVmIHRydWUgZ2VzZXR6dCBpc3QsIGlzdCBkZXIgUGFyYW1ldGVyIGNvbGxhcHNlIGF1dG9tYXRpc2NoIGltbWVyIGZhbHNlLjwvZW0+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cmVxdWlyZWQ8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCUdpYnQgYW4sIG9iIGVpbiBCbG9jayBlaW4gUGZsaWNodGZlbGQgaXN0ICh0cnVlKSBvZGVyIG5pY2h0IChmYWxzZSkuPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+UGFyYW1ldGVyIGYmdXVtbDtyIENoZWNrYm94ZW46PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUFrdGl2aWVydC9EZWFrdGl2aWVydCBkaWUgQ2hlY2tib3ggYWxzIFN0YW5kYXJkd2VydC48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+ICZxdW90OzEmcXVvdDsgPSBha3RpdmllcnQ7ICZxdW90OzAmcXVvdDsgZGVha3RpdmllcnQ8YnIgLz48L2VtPgoJCQkJQnNwLjogPGNvZGU+e2NvbnRlbnQgYmxvY2tfdHlwZT0mcXVvdDtjaGVja2JveCZxdW90OyBkZWZhdWx0PTF9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPlBhcmFtZXRlciBmJnV1bWw7ciBDb2xvcnBpY2tlcjo8L3N0cm9uZz4ga2VpbmUgd2VpdGVyZW4gUGFyYW1ldGVyPC9wPgo8cD48c3Ryb25nPlBhcmFtZXRlciBmJnV1bWw7ciBTbGlkZXI6PC9zdHJvbmc+IChzaWVoZSBhdWNoIERva3VtZW50YXRpb24gZGVzIHZlcndlbmRldGVuIGpRdWVyeSBTbGlkZXIgUGx1Z2lucyk8L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mcm9tPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlTdGFydHdlcnQKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnRvPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlFbmR3ZXJ0CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlaw6RobHNjaHJpdHRlIGluIGRlbmVuIGRpZSBXZXJ0ZSBnZcOkbmRlcnQgd2VyZGVuCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5yb3VuZDwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJU3RlbGxlbiBuYWNoIGRlbSBLb21tYQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aGV0ZXJvZ2VuZWl0eTwvdHQ+IChzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPgoJCQkJVG9EbwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGltZW5zaW9uPC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlFaW5oZWl0IGhpbnRlciBkZW4gV2VydGVuLgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGltaXRzPC90dD4gKHRydWUvZmFsc2UpIAoJCTx1bD4KCQkJPGxpPgoJCQkJVG9EbwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2NhbGU8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVRvRG8KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNraW48L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUF1c3NlaGVuIGRlcyBzbGlkZXJzCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5jYWxjdWxhdGU8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVpbmUgSmF2YXNjcmlwdC1GdW5rdGlvbiB6dXIgQmVyZWNobnVuZyBkZXIgYW5nZXplaWd0ZW4gV2VydGUKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm9uc3RhdGVjaGFuZ2U8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVpbmUgSmF2YXNjcmlwdC1GdW5rdGlvbiBkaWUgYXVzZ2Vmw7xocnQgd2VyZGVuIHNvbGwsIHNvYmFsZCBkZXIgV2VydCBnZcOkbmRlcnQgd2lyZAoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+Y2FsbGJhY2s8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVpbmUgSmF2YXNjcmlwdC1GdW5rdGlvbiBkaWUgYXVzZ2Vmw7xocnQgd2VyZGVuIHNvbGwsIG5hY2hkZW0gZGVyIFdlcnQgZ2XDpG5kZXJ0IHd1cmRlCgkJCTwvbGk+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+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBWZXJ3ZW5kZW4gU2llIG51ciBkaWUgPHN0cm9uZz5XZXJ0ZTwvc3Ryb25nPiBkZXIgRWludHLDpGdlIGFscyBTdGFuZGFyZHdlcnQsIG5pY2h0IGRpZSBCZXplaWNobnVuZ2VuIGRlciBFaW50ciZhdW1sO2dlLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVsaW1pdGVyPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EYXMgVHJlbm56ZWljaGVuIG1pdCBkZW0gZGllIEJlemVpY2hudW5nZW4sIFdlcnRlIHVuZCBTdGFuZGFyZHdlcnRlIHZvbmVpbmFuZGVyIGdldHJlbm50IHdlcmRlbi4gKFN0YW5kYXJkIGlzdCB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNpemU8L3R0PiAoaW50ZWdlcikKCQk8dWw+CgkJCTxsaT5EaWUgSCZvdW1sO2hlIGRlcyBJbnB1dGZlbGRlcywgd2VubiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gdmVyd2VuZGV0IHdpcmQuPGVtPihTdGFuZGFyZCBpc3QgZGllIEFuemFobCBkZXIgRWludHImYXVtbDtnZSk8L2VtPjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGU8L3R0PiAodHJ1ZS9mYWxzZSkgLSBudXIgYmVpIHNlbGVjdF9tdWx0aXBsZQoJCTx1bD4KCQkJPGxpPgoJCQkJV2lyZCBkaWVzZXIgV2VydCBhdWYgdHJ1ZSBnZXNldHp0LCB3ZXJkZW4gZGllIEVpbnRyJmF1bWw7Z2UgbmljaHQgYWxzIE1laHJmYWNoYXVzd2FobGZlbGQgYW5nZXplaWd0LCBzb25kZXJuIGFscyBlaW5lIExpc3RlIG1pdCBDaGVja2JveGVuLCBkaWUgbmV1IHNvcnRpZXJ0IHdlcmRlbiBrYW5uLjxiciAvPkplZGUgWmVpbGUgZWludGgmYXVtbDtsdCBkaWUgQmV6ZWljaG51bmcgZGVzIEVpbnRyYWdzIHVuZCBlaW5lIENoZWNrYm94IG1pdCBkZW0gV2VydCBkZXMgRWludHJhZ3MuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBFcyB3aXJkIG51ciBkaWUgUmVpaGVuZm9sZ2UgZGVyIDxzdHJvbmc+YXVzZ2V3JmF1bWw7aGx0ZW48L3N0cm9uZz4gRWludHImYXVtbDtnZSBnZXNwZWljaGVydC4gQXVzZ2V3JmF1bWw7aGx0ZSBFaW50ciZhdW1sO2dlIHdlcmRlbiBpbW1lciBhbHMgZXJzdGVzIGFuZ2V6ZWlndC48YnIgLz4KCQkJCU5pY2h0IGF1c2dldyZhdW1sO2hsdGUgRWludHImYXVtbDtnZSBzdGVoZW4gZGFydW50ZXIgaW4gZGVyIFJlaWhlbmZvbGdlLCB3aWUgc2llIGltIFRlbXBsYXRlIGRlZmluaWVydCB3dXJkZW4uPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgRGF0dW1zYmwmb3VtbDtja2U6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RlcF9ob3VyczwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJWiZhdW1sO2hsc2Nocml0dGUgZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAxKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X2hvdXI8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUJlZ2lubiBkZXIgU3R1bmRlbiBpbSBVaHJ6ZWl0LURyb3Bkb3duLiAoU3RhbmRhcmQgaXN0IDApCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVuZGUgZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAxMiBvZGVyIDIzIC0gYWJoJmF1bWw7bmdpZyB2b20gUGFyYW1ldGVyIHNob3cyNGgpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgd2VyZGVuIGRpZSBTdHVuZGVuIGluIDEyaCBBbnplaWdlIG1pdCBBTS9QTSBhbmdlemVpZ3QuIChTdGFuZGFyZCBpcyB0cnVlKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJWiZhdW1sO2hsc2Nocml0dGUgZGVyIE1pbnV0ZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzIDEwKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJQmVnaW5uIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgMCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlFbmRlIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgNTkpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgaXN0LCB3aXJkIGtlaW4gVWhyemVpdC1Ecm9wZG93biBhbmdlemVpZ3QuIChTdGFuZGFyZCBpc3QgdHJ1ZSk8YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IEJlaSBmYWxzZSB3aXJkIGFscyBVaHJ6ZWl0IDAwOjAwIFVociBnZXNwZWljaGVydDwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGF0ZV9mb3JtYXQ8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCURhcyBzdHJmdGltZSBEYXR1bXNmb3JtYXQgZiZ1dW1sO3IgZGllIEFuemVpZ2UgYXVmIGRlciBJbnRlcm5ldHNlaXRlLgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgoKPHA+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+CjxiciAvPgo8cD5CaXR0ZSBtZWxkZW4gU2llIEZlaGxlciBvZGVyIFZlcmJlc3NlcnVuZ3N2b3JzY2hsJmF1bWw7Z2UgYXVmIGRlciBQcm9qZWt0LUhvbWVwYWdlLjwvcD4KPGgzPkNvcHlyaWdodCB1bmQgTGl6ZW56PC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLTIwMTEsIEdlb3JnIEJ1c2NoIChOYU4pIDxhIGhyZWY9Im1haWx0bzpnZW9yZy5idXNjaEBnbXgubmV0Ij4mbHQ7Z2VvcmcuYnVzY2hAZ214Lm5ldCZndDs8L2E+LiBBbGxlIFJlY2h0ZSB2b3JiZWhhbHRlbi48L3A+CjxwPkRpZXNlcyBNb2R1bCB3dXJkZSB1bnRlciBkZXIgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+IHZlciZvdW1sO2ZmZW50bGljaHQuIFNpZSBtJnV1bWw7c3NlbiBkaWVzZXIgTGl6ZW56IHp1c3RpbW1lbiwgYmV2b3IgU2llIGRhcyBNb2R1bCB2ZXJ3ZW5kZW4uPC9wPgo8cD4KCUxhdXQgZGVuIE51dHp1bmdzYmVzdGltbXVuZ2VuIGRlciBHUEwgd2lyZCBkaWVzZSBTb2Z0d2FyZSBzbyB2ZXImb3VtbDtmZmVudGxpY2h0IHdpZSBzaWUgaXN0LjxiciAvPgoJU2llIGVyaGVidCBrZWluZXJsZWkgQW5zcHJ1Y2ggYXVmIGVpbndhbmRmcmVpZSBGdW5rdGlvbi48YnIgLz4KCURhcyBNb2R1bCB3dXJkZSBlcnN0ZWxsdCwgaW4gZGVyIEhvZmZudW5nIG4mdXVtbDt0emxpY2ggenUgc2Vpbi48YnIgLz4KCUVzIGJlc3RlaHQga2VpbmVybGVpIEdhcmFudGllIGF1ZiBlaW5lbiBlaW53YW5kZnJlaWVuIE51dHplbi48YnIgLz4KCUJpdHRlIGxlc2VuIFNpZSBkaWUgTnV0enVuZ3NiZWRpbmd1bmdlbiBmJnV1bWw7ciBhdXNmJnV1bWw7aHJsaWNoZSBJbmZvcm1hdGlvbmVuLgo8L3A+CjxiciAvPgo8aDM+UGFyYW1ldGVyPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gRGllc2VyIFBhcmFtZXRlciBsZWd0IGRpZSBTcHJhY2hlIGZlc3QsIGRpZSB2b20gTW9kdWwgZiZ1dW1sO3IgZGllIEF1c2dhYmUgYXVmIGRlciBXZWJzZWl0ZSB2ZXJ3ZW5kZXQgd2lyZC4gRGllcyB3aXJkIGplZG9jaCBuaWNodCB2b24gYWxsZW4gTW9kdWxlbiB1bnRlcnN0JnV1bWw7dHp0IGJ6dy4gYmVuJm91bWw7dGlndC48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IEdlb3JnIEJ1c2NoIChOYU4pPGJyIC8+PGJyIC8+VmVyc2lvbiA6IDAuNi41LjE8YnIgLz48YnIgLz4mQXVtbDtuZGVydW5nc3ZlcmxhdWY6PGJyIC8+PGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJob3N0ZWRfYnV0dG9uX2lkIiB2YWx1ZT0iRkEyRDNGUExTVEFLSiIgLz4KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZW5fR0IvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lLiIgLz4KPGltZyBhbHQ9IiIgYm9yZGVyPSIwIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPgo8L2Zvcm0+PC9kaXY+PGJyIC8+CjxwPjxzdHJvbmc+TW9kdWxlIHJlbGVhc2VzPC9zdHJvbmc+Li4uPC9wPgo8dWw+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuNS4xIChTZXB0IDIwMTEpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gU2VjdXJpdHkgQnVnZml4PC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC42LjUgKE1heSAyMDExKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIFNlY3VyaXR5IEJ1Z2ZpeDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjI2NV0gQ2FsbC10aW1lIHBhc3MtYnktcmVmZXJlbmNlIHdhcm5pbmdzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gbWlzc2VkIHBhcmFtIG5vX2NvbGxhcHNlPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGhpZGUgbWVudSBlbnRyeSBpZiBubyBhY2Nlc3MgdG8gdmlldyB0aGUgcGFnZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGluaGVyaXRhbmNlIG9mIHJlZGlyZWN0IHBhcmFtcywgZXhwaXJlIGRhdGU8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBkZWZhdWx0IHNldHRpbmdzIGZvciBleHBpcmUgZGF0ZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGVzIHNsaWRlci9jb2xvcnBpY2tlciAodGhhbmtzIHRvIG5pY21hcmUpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgYSB3YXJuaW5nIHdoZW4gdW5pbnN0YWxsaW5nIHRoZSBtb2R1bGU8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuNCAoTWFyIDIwMTEpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gWyM2MjQxXSAoSXNzdWUgd2l0aCBwYXJhbSBkZWZhdWx0KTwvcD48L2xpPgoJCQkJCTxsaT48cD5mYXRhbCBlcnJvciBpbiBBZHZhbmNlZENvbnRlbnQubW9kdWxlLnBocDwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNi4zIChNYXIgMjAxMSk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBbIzU3MzRdIFBhcmFtZXRlciBibG9ja19ncm91cCBpcyBub3Qga25vd24gYnkgbW9kdWxlIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjAxNF0gaGVhZGVyIHByb2JsZW0gd2l0aCBtdWx0aS1pbnB1dDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjAzOF0gY29udGVudF9pbWFnZSByZXNwZWN0aXZlbHkgYmxvY2tfdHlwZT0iaW1hZ2UiIGRvZXNuJ3Qgd29yazwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjAzOV0gdGVtcGxhdGUgY2FuJ3QgYmUgc3dpdGNoZWQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwNjFdIGlzc3VlIHdpdGggdGhlIHJlZGlyZWN0IGZvciBmZXUgbm9uIG1hdGNoPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gWyM2MDk1XSBQYXJhbWV0ZXIgc29ydGFibGUgaXMgbm90IGtub3duIDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyBpdGVtICM1NjUxIChyZWRpcmVjdCBpZiBmcm9udGVuZCB1c2VyIGhhcyBubyBhY2NlcyB0byB0aGF0IHBhZ2UgZGlkIG5vdCB3b3JrIHByb3Blcmx5KTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHJlcXVpcmVkPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gY29sbGFwc2U8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBub19jb2xsYXBzZTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHRoaXMgbW9kdWxlIG5vdyBvbmx5IHdvcmtzIHdpdGggQ01TbXMgMS42LjkgdXAgdG8gMS44LjI8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuMiAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4IChzaG93ZWQgdGFicyBvZiBwcmV2aW91cyB0ZW1wbGF0ZSB3aGVuIHRlbXBsYXRlIHdhcyBjaGFuZ2VkKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNi4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSBidWdmaXhlcyBmb3IgQ01TbXMgMS45PC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGUgbXVsdGlfaW5wdXQ8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYgKE9jdCAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfZ3JvdXA8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBSZW1vdmVkIGZpbGUgcGlja2VyIChhbmQgYXNzb2NpYXRlZCBibG9ja190eXBlcyBpbWFnZS9maWxlKSAtIHVzZSBHQkZpbGVQaWNrZXIgaW5zdGVhZC48L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjUgKFNlcHQgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyOTIgKG1lbW9yeSBpc3N1ZSk8L3A+PC9saT4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyNTQgKGRpc2FibGUgd3lzaXd5ZyBub3Qgd29ya2luZyk8L3A+PC9saT4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTAgKHVybG9ubHkgbm90IHdvcmtpbmcpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzExIChpbWFnZSBwYXRocyBub3Qgc3RvcmVkICdjb3JyZWN0bHknKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjYxIChBZGQgc29ydCB0byBpbWFnZSB0eXBlIC0gbm90aWNlIHRoZSBjaGFuZ2Ugb2YgcGFyYW0gZmlsdGVyKTwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBwYXJhbXMgZXhjbHVkZV9wcmVmaXgsIGluY2x1ZGVfcHJlZml4LCBleGNsdWRlX3N1Zml4LCBpbmNsdWRlX3N1Zml4PC9wPjwvbGk+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI1MyAoVGV4dCBpbnB1dCB0byBkZWZpbmUgYWRkIHBhcmFtcyB0byByZWRpcmVjdCBmdW5jdGlvbik8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQwIChEZWZhdWx0IHZhbHVlcyBvZiBBZHZhbmNlZENvbnRlbnQgcGFnZSBvcHRpb25zKTwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDEgKHB1dCBGZXVBY2Nlc3MgaW4gQmxvY2t0YWIpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+TWlzYzo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgYXJlIHNob3duIGluIHNlcGFyYXRlIHRhYjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIEFkZGVkIG5ldyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGUgQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgdGFiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbSBmaWx0ZXIgKHVzZSBuZXcgcGFyYW1zIGluc3RlYWQpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcGF0aCB0byBmaWxlcyBhcmUgc3RvcmVkIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHBhcmFtIGRpciBvZiBibG9jayB0eXBlIGZpbGUvaW1hZ2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyIG9ubHkgKHRoZXJlIGlzIG5vIGltYWdlIHVwbG9hZHMgZGlyIHVzZWQgYW55bW9yZSk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjQuMSAoQXVndXN0IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gIzUxNTE6IGZpeGVkIHN0eWxlc2hlZXQgaXNzdWUgd2l0aCBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyBvZiBjb250ZW50IGJsb2NrcyBpbiBJRS9TYWZhcmkuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUxNjI6IFBIUCB3YXJuaW5ncyBpZiBiYWNrZW5kIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAiTWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzIiBvcGVuIGFuIGFkdmFuY2VkIGNvbnRlbnQgcGFnZSBhbmQgbXVsdGlwbGUgY29udGVudCBibG9ja3Mgb2Ygc2FtZSBuYW1lIHdlcmUgdXNlZCBpbiB0ZW1wbGF0ZS48L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZXh0cmEgZmllbGRzIGNvdWxkIG5vdCBiZSB1cGRhdGVkLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBmZXUgYWNjZXNzIGRpZCBub3Qgd29yay48L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImRlbGV0ZSIgdG8gbGV0IHVzZXJzIGRlbGV0ZSBmaWxlcyBldmVuIGlmIG5vIHBlcm1pc3Npb24gIk1vZGlmeSBGaWxlcyI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiY3JlYXRlX2RpcnMiIHRvIGxldCB1c2VycyBjcmVhdGVfZGlycyBldmVuIGlmIG5vIHBlcm1pc3Npb24gIk1vZGlmeSBGaWxlcyI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBuZXcgYmxvY2t0eXBlICJub3RlIiB0byBjcmVhdGUgc29tZSBzaW5nbGUgbm90ZXMgZm9yIHlvdXIgZWRpdG9yczwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgZGVwZW5kZW5jeSBvZiBGaWxlTWFuYWdlcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGJsb2NrIG9mIHR5cGUgZmlsZSBvciBpbWFnZSBzdG9yZXMgcmVsYXRpdmUgdXJsIG5vdzwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGJsb2NrIHR5cGUgaW1hZ2Ugc2hvd3MgdGh1bWJuYWlsIGluIGJhY2tlbmQgcHJldmlldyBpbnN0ZWFkIG9mIGZ1bGwgaW1hZ2U8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjQgKEp1bHkgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkltcG9ydGFudCBub3RpY2U6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGNoYW5nZWQgcGFyYW0gInR5cGUiIHRvICJibG9ja190eXBlIiBzaW5jZSBpdCBpbnRlcmZlcmVzIHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gIzUxMDE6IHBhZ2VfdGFiICJvcHRpb25zIiB3YXMgc2hvd24gdG8gdXNlcnMgd2l0aCBubyBwZXJtaXNzaW9uIHRvIGVkaXQgcGFnZSBvcHRpb25zIGlmIGEgY29udGVudCBibG9jayB3YXMgYXNzaWduZWQgdG8gdGhhdCB0YWIuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUwOTc6IGxpbmsgdG8gbWlzc2luZyBjc3MgcmVtb3ZlZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbWUtdHlwZSBpc3N1ZSAoYWRkZWQgcHJlZmVyZW5jZSB0byB0b2dnbGUgbWltZS10eXBlIHVzYWdlIG9uL29mZik8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBwYXRoIGlzc3VlIHdoZXJlIHRodW1ibmFpbHMgd2VyZSBub3Qgc2hvd248L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBjb21wYXRpYmlsaXR5IHdpdGggQ01TbXMgMS44PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gb3RoZXIgbWlub3IgYnVnZml4ZXM8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgTUxFIHN1cHBvcnQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAic2hvd19jbG9jayIgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHRpbWUgZHJvcGRvd24gb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gYmFja2VuZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJkYXRlX2Zvcm1hdCIgdG8gZm9ybWF0IHRpbWVzdGFtcCBvZiBibG9ja3R5cGVzICJkYXRlIiBpbiBmcm9udGVuZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJkZXNjcmlwdGlvbiI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBidWxrIGZ1bmN0aW9uIHRvIHNldCBhbGwgcGFnZXMgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjQgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSAjNTA0NTogV2hlbiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IC0+IEFkdmFuY2VkIENvbnRlbnQgbG90cyBvZiBQSFAgZXJyb3JzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUwNTY6IHBhZ2VfdGFicyBub3Qgd29ya2luZyBmb3IgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICJNYW5hZ2UgQWxsIENvbnRlbnQiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUwNzM6IGluY29ycmVjdCBkaXNwbGF5IG9mIGZpbGVzIHdoZW4gb3BlbmluZyBmaWxlcGlja2VyPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgbWlub3IgYnVnIHdoZXJlIHRoZSBvcHRpb24gImFsbG93X25vbmUiIG9mIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZSB3YXMgbm90IHNob3duIHdoZW4gdGVtcGxhdGUgaGFzIGJlZW4gZWRpdGVkPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIGZpbGVtYW5hZ2VtZW50IGFuZCB1cGxvYWQgZnVuY3Rpb25zIHRvIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIGJyZWFkY3VtYnMgdG8gZmlsZXBpY2tlcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkbWlucyBtYXkgYnJvd3NlIHRoZSBlbnRpcmUgZGlyIHRyZWUgaW4gZmlsZXBpY2tlciBmaWxlIGJyb3dzZXIgcmVnYXJkbGVzcyBvZiB0ZW1wbGF0ZSBwYXJhbXM8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBtaW1lIHR5cGUgY2hlY2tpbmcgdG8gZ2V0IGZpbGUgdHlwZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHJhd3VybGVuY29kZSBpbiBzcmMgYXR0cmlicyB0byBkaXNwbGF5IGltYWdlcyB3aXRoIHdlaXJkIGZpbGVuYW1lcy48L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5taXNjZWxsYW5lb3VzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSByZW1vdmVkIE9PUCBzdHVmZiAocHJpdmF0ZS9wdWJsaWMvcHJvdGVjdGVkKSB0byBnYWluIG1vcmUgY29tcGF0aWJpbGl0eSB3aXRoIFBIUDQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIGFqYXggZnVuY3Rpb25zIHRvIHJldHVybiB4bWwgdmFsdWVzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCB1c2FnZSBvZiBJbWFnZU1hbmFnZXIgb25jZSBhbmQgZm9yIGFsbC4gKGNhdXNlZCBvbmx5IHRyb3VibGUpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjMgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPgoJPHVsPgoJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCTx1bD4KCQkJCTxsaT48cD4tIGFsaWFzIHdhcyBub3QgYWx3YXlzIGNvbnZlcnRlZCBwcm9wZXJseTwvcD48L2xpPgoJCQkJPGxpPjxwPi0gdW5zdWJtaXR0ZWQgY29udGVudCBnb3QgbG9zdCBpZiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPgoJCQk8L3VsPgoJCTwvbGk+CgkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJPHVsPgoJCQkJPGxpPjxwPi0gYWRkZWQgc3RhcnQvZW5kIGRhdGU8L3A+PC9saT4KCQkJCTxsaT48cD4tIHJlbW92ZWQgdGltZXBpY2tlcjsgcmVwbGFjZWQgYnkgYSBzaW1wbGUgZHJvcGRvd248L3A+PC9saT4KCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9pbWFnZX08L3A+PC9saT4KCQkJPC91bD4KCQk8L2xpPgoJPC91bD4KCTxsaT48cD48c3Ryb25nPjAuMy4yIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBjaGFuZ2luZyBiYWNrIHRvIGRlZmF1bHQgY29udGVudCB0eXBlIG9yIGNoYW5naW5nIHRlbXBsYXRlIGNhdXNlZCBmYXRhbCBlcnJvcnM8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZyB3aGVuIHNhdmluZyBhIHBhZ2U8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwcmV2aWV3IHRhYjwvcD48L2xpPgoJCQk8bGk+PHA+LSByZS1hZGRlZCBleHBhbmQvY29sbGFwc2UgYnV0dG9uIHRvIHRvZ2dsZSBjb250ZW50IGJsb2NrcyBpbiBiYWNrZW5kPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtcyBlZGl0b3JfZ3JvdXBzL2VkaXRvcl91c2VycyB0byBzcGVjaWZ5IGNlcnRhaW4gdXNlcnMvZ3JvdXBzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCBjZXJ0YWluIGJsb2NrczwvcD48L2xpPgoJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtcyBzZWxlY3RlZC9jaGVja2VkOyB1c2UgcGFyYW0gZGVmYXVsdCBpbnN0ZWFkPC9wPjwvbGk+CgkJCTxsaT48cD4tIGJsb2NrIGlkcyB3aWxsIGJlIGNvbnZlcnRlZCBmcm9tIGJsb2NrIG5hbWUgdXNpbmcgY29yZSBmdW5jdGlvbiBtdW5nZV9zdHJpbmdfdG9fdXJsICh0byByZW1vdmUgc3BlY2lhbCBjaGFycywgd2hpdGVzcGFjZXMsIHVtbGF1dHMgZXRjLik8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIG9mIGJsb2NrdHlwZSBkcm9wZG93bi9zZWxlY3RfbXVsdGlwbGUgd2hlcmUgZmlyc3QgaXRlbSBoYWQgYW4gZW1wdHkgbGFiZWwgaWYgb25seSB0aGUgcGFyYW0gInZhbHVlcyIgaXMgdXNlZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBzb21lIHRlbXBsYXRlIHZhcnMgb2YgdGhlIGZyb250ZW5kIHRvIGJlIGFsc28gYWNjZXNzaWJsZSBpbiBiYWNrZW5kIChlLmcuOiBcJHBhZ2VfYWxpYXMpPC9wPjwvbGk+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+CjxiciAvPgo8YnIgLz4=]]></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[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNS4xCiMgRmlsZSAgIDogYWN0aW9uLmFkZE11bHRpSW5wdXQucGhwCiMgUHVycG9zZTogYWRkcyBhIG11bHRpIGlucHV0IGJsb2NrdHlwZQojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZighaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnKSkKewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9ucycpKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQp7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnYWN0aXZlX3RhYic9PidtdWx0aV9pbnB1dCcpKTsKfQoKJGVycm9yID0gZmFsc2U7CiRlcnJvcm1lc3NhZ2UgPSAnJzsKCiRpbnB1dF9pZCA9ICcnOwppZihpc3NldCgkcGFyYW1zWydpbnB1dF9pZCddKSAmJiAhZW1wdHkoJHBhcmFtc1snaW5wdXRfaWQnXSkpCnsKCSRpbnB1dF9pZCA9IHByZWdfcmVwbGFjZSgnLy0rLycsJ18nLG11bmdlX3N0cmluZ190b191cmwodHJpbSgkcGFyYW1zWydpbnB1dF9pZCddKSkpOwp9CgokaW5wdXRfZmllbGRzID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2ZpZWxkcyddKSkKewoJJGlucHV0X2ZpZWxkcyA9ICRwYXJhbXNbJ2lucHV0X2ZpZWxkcyddOwp9CgppZihpc3NldCgkcGFyYW1zWydpbnB1dF90cGwnXSkpCnsKCSRpbnB1dF90cGwgPSAkcGFyYW1zWydpbnB1dF90cGwnXTsKfQplbHNlCnsKCSRpbnB1dF90cGwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9tdWx0aV9pbnB1dF90cGwnLCdtdWx0aV9pbnB1dF9TYW1wbGVUZW1wbGF0ZScpOwp9CgojIyMgZG8gYWN0aW9uICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICYmICRwYXJhbXNbJ3N1Ym1pdCddPT10cnVlKQp7CglpZigkaW5wdXRfaWQgPT0gJycpCgl7CgkJJGVycm9yID0gdHJ1ZTsKCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl9pbnB1dF9pZCcpLic8YnIgLz4nOwoJfQoJaWYoJGlucHV0X2ZpZWxkcyA9PSAnJykKCXsKCQkkZXJyb3IgPSB0cnVlOwoJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX2lucHV0X2ZpZWxkcycpLic8YnIgLz4nOwoJfQoKCWlmKCRlcnJvcj09ZmFsc2UpCgl7CgkJaWYoISR0aGlzLT5BZGRNdWx0aUlucHV0KCRpbnB1dF9pZCwkaW5wdXRfZmllbGRzKSkKCQl7CgkJCSRlcnJvciA9IHRydWU7CgkJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX2lucHV0X2lkX2V4aXN0cycpLic8YnIgLz4nOwoJCX0KCQllbHNlIGlmKCEkdGhpcy0+QWRkVHBsQXNzb2MoJ211bHRpX2lucHV0JywkaW5wdXRfaWQsJGlucHV0X3RwbCkpCgkJewoJCQkkZXJyb3IgPSB0cnVlOwoJCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl91cGRhdGluZ19tdWx0aV9pbnB1dF9hc3NvY3MnKS4nPGJyIC8+JzsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21lc3NhZ2UnPT4nbXVsdGlfaW5wdXRfYWRkZWQnLAoJCQkJJ2FjdGl2ZV90YWInPT4nbXVsdGlfaW5wdXQnLCdzdWJtaXQnPT50cnVlKSk7CgkJfQoJfQoKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgc21hcnR5IHN0dWZmCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLAoJJ2FkZE11bHRpSW5wdXQnLCAkcmV0dXJuaWQsJ3Bvc3QnLCdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOyR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsCglsYW5nKCdzdWJtaXQnKSkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLGxhbmcoJ2NhbmNlbCcpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2lkX3RleHQnLCR0aGlzLT5sYW5nKCdpbnB1dF9pZCcpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pZF9pbnB1dCcsCgkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfaWQnLCRpbnB1dF9pZCw2NCwxMjgpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfdHBsX3RleHQnLCR0aGlzLT5sYW5nKCdtdWx0aV9pbnB1dF90cGwnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfdHBsX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF90cGwnLCAkdGhpcy0+R2V0VHBsTGlzdCgnbXVsdGlfaW5wdXQnKSwgJycsICRpbnB1dF90cGwpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfZmllbGRzX3RleHQnLCR0aGlzLT5sYW5nKCdpbnB1dF9maWVsZHMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfZmllbGRzX2lucHV0JywKCSR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwkaWQsJGlucHV0X2ZpZWxkcywnaW5wdXRfZmllbGRzJywnJywnaW5wdXRfZmllbGRzJykpOwoKaWYoJGVycm9ybWVzc2FnZSE9JycpCnsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3JtZXNzYWdlJywkZXJyb3JtZXNzYWdlKTsKfQoKIyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKZWNobyAkdGhpcy0+X3BwLiR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZE11bHRpSW5wdXQudHBsJyk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.addMultiInputTpl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNS4xCiMgRmlsZSAgIDogYWN0aW9uLmFkZE11bHRpSW5wdXRUcGwucGhwCiMgUHVycG9zZTogYWRkcyBhIHRlbXBsYXRlIGZvciBtdWx0aSBpbnB1dCBibG9ja3R5cGUKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXQgVGVtcGxhdGVzJykpCnsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3JfcGVybWlzc2lvbnMnKSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkKewoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInPT4nbXVsdGlfaW5wdXRfdHBsJykpOwp9CgokZXJyb3IgPSBmYWxzZTsKJGVycm9ybWVzc2FnZSA9ICcnOwoKJHRwbF9uYW1lID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ3RwbF9uYW1lJ10pICYmICFlbXB0eSgkcGFyYW1zWyd0cGxfbmFtZSddKSkKewoJJHRwbF9uYW1lID0gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybCh0cmltKCRwYXJhbXNbJ3RwbF9uYW1lJ10pKSk7Cn0KCiR0ZW1wbGF0ZSA9ICcnOwppZihpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSkKewoJJHRlbXBsYXRlID0gdHJpbSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKfQoKIyMjIGRvIGFjdGlvbiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSAmJiAkcGFyYW1zWydzdWJtaXQnXT09dHJ1ZSkKewoJaWYoJHRwbF9uYW1lID09ICcnKQoJewoJCSRlcnJvciA9IHRydWU7CgkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfdHBsX25hbWUnKS4nPGJyIC8+JzsKCX0KCWlmKCR0ZW1wbGF0ZSA9PSAnJykKCXsKCQkkZXJyb3IgPSB0cnVlOwoJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX3RlbXBsYXRlJykuJzxiciAvPic7Cgl9CglpZigkZXJyb3I9PWZhbHNlKQoJewoJCSR0aGlzLT5TZXRUZW1wbGF0ZSgnbXVsdGlfaW5wdXRfJy4kdHBsX25hbWUsICR0ZW1wbGF0ZSk7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21lc3NhZ2UnPT4nbXVsdGlfaW5wdXRfdHBsX2FkZGVkJywKCQkJJ2FjdGl2ZV90YWInPT4nbXVsdGlfaW5wdXRfdHBsJywnc3VibWl0Jz0+dHJ1ZSkpOwoJfQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBzbWFydHkgc3R1ZmYKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsCgknYWRkTXVsdGlJbnB1dFRwbCcsICRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7JHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywKCWxhbmcoJ3N1Ym1pdCcpKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywKCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsbGFuZygnY2FuY2VsJykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigndHBsX25hbWVfdGV4dCcsJHRoaXMtPmxhbmcoJ3RwbF9uYW1lJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RwbF9uYW1lX2lucHV0JywKCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCd0cGxfbmFtZScsJHRwbF9uYW1lLDY0LDEyOCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZV90ZXh0JyxsYW5nKCd0ZW1wbGF0ZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZV9pbnB1dCcsCgkkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsJGlkLCR0ZW1wbGF0ZSwndGVtcGxhdGUnLCcnLCd0ZW1wbGF0ZScpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaGVscF90ZXh0JywkdGhpcy0+bGFuZygnaGVscF90cGxfdmFycycpKTsKCmlmKCRlcnJvcm1lc3NhZ2UhPScnKQp7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Vycm9ybWVzc2FnZScsJGVycm9ybWVzc2FnZSk7Cn0KCiMgRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCmVjaG8gJHRoaXMtPl9wcC4kdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRNdWx0aUlucHV0VHBsLnRwbCcpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjUuMQojIEZpbGUgICA6IGFjdGlvbi5kZWZhdWx0LnBocAojICAgICAgICAgIFRoaXMgZmlsZSBpcyBhIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVmYXVsdCBwbHVnaW4ge2NvbnRlbnR9CiMgUHVycG9zZTogcGVyZm9ybXMgdGhlIGRlZmF1bHQgZnJvbnRlbmQgYWN0aW9uIGlmIHtBZHZhbmNlZENvbnRlbnR9IGlzIHVzZWQuCiMgTGljZW5zZTogR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZihpc3NldCgkcGFyYW1zWydhY3RpdmUnXSkgJiYgJHRoaXMtPklzRmFsc2UoJHBhcmFtc1snYWN0aXZlJ10pKSAKewoJcmV0dXJuOyAjIGRvbid0IHByb2Nlc3MgaW5hY3RpdmUgYmxvY2tzCn0KCiRwYWdlaW5mbyA9JiAkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddOwokcmVzdWx0ICAgPSAnJzsKCiRibG9jayA9ICdjb250ZW50X2VuJzsKJG1haW5Db250ZW50ID0gdHJ1ZTsKCiMgTUxFIHN1cHBvcnQKJG1sZSA9IGZhbHNlOwpnbG9iYWwgJGhscywgJG1sZWJsb2NrLCAkbWxlYmxvY2tmYWxsYmFjazsKaWYoaXNzZXQoJGhscykpCnsKCSRtbGUgPSB0cnVlOwp9CgppZigkbWxlICYmICRtbGVibG9jayAhPSAnJykKewoJJGJsb2NrID0gJ2NvbnRlbnQnLiRtbGVibG9jazsKfQojLS0tCgppZihpc3NldCgkcGFyYW1zWydibG9jayddKSAmJiAkcGFyYW1zWydibG9jayddICE9ICRibG9jaykKewoJJG1haW5Db250ZW50ID0gZmFsc2U7CgkkX2Jsb2NrID0gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW1zWydibG9jayddKSk7CgkkYmxvY2sgPSAkX2Jsb2NrOwoJIyBNTEUgc3VwcG9ydAoJaWYoJG1sZSkKCXsKCQkkYmxvY2sgLj0gJG1sZWJsb2NrOwoJfQoJIy0tLQp9CgokZGVmYXVsdFZhbHVlID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ2RlZmF1bHQnXSkpCnsKCSRkZWZhdWx0VmFsdWUgPSB0cmltKCRwYXJhbXNbJ2RlZmF1bHQnXSk7Cn0KCiRkb1NtYXJ0eSA9IGZhbHNlOwppZihpc3NldCgkcGFyYW1zWydzbWFydHknXSkgJiYgJHRoaXMtPklzVHJ1ZSgkcGFyYW1zWydzbWFydHknXSkgJiYgJGdDbXMtPkdldFNtYXJ0eSgpLT5nZXRfdGVtcGxhdGVfdmFycygnY29udGVudF9vYmonKS0+VHlwZSgpID09ICdjb250ZW50MicpCnsKCSRkb1NtYXJ0eSA9IHRydWU7Cn0KaWYoJGRvU21hcnR5ICYmICRnQ21zLT5HZXRTbWFydHkoKS0+Z2V0X3RlbXBsYXRlX3ZhcnMoJ2NvbnRlbnRfb2JqJyktPlR5cGUoKSA9PSAnY29udGVudDInKSAKewoJJGRlZmF1bHRWYWx1ZSA9ICRnQ21zLT5HZXRTbWFydHkoKS0+Z2V0X3RlbXBsYXRlX3ZhcnMoJ2NvbnRlbnRfb2JqJyktPkRvU21hcnR5KCRnQ21zLT5HZXRTbWFydHkoKS0+Z2V0X3RlbXBsYXRlX3ZhcnMoJ2NvbnRlbnRfb2JqJyktPl9jb250ZW50QmxvY2tzWyRibG9ja11bJ2RlZmF1bHRfdmFsdWUnXSk7Cn0KCiRhbGxvd05vbmUgPSB0cnVlOwppZihpc3NldCgkcGFyYW1zWydhbGxvd19ub25lJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRwYXJhbXNbJ2FsbG93X25vbmUnXSkpCnsKCSRhbGxvd05vbmUgPSBmYWxzZTsKfQoKaWYgKGlzc2V0KCRwYWdlaW5mbykgJiYgJHBhZ2VpbmZvICE9PSBGQUxTRSAmJiBpc3NldCgkcGFnZWluZm8tPmNvbnRlbnRfaWQpICkKewoJJGlkICAgICAgICAgPSAnJzsKCSRtb2R1bGVuYW1lID0gJyc7CgkkYWN0aW9uICAgICA9ICcnOwoJJGlubGluZSAgICAgPSBmYWxzZTsKCWlmIChpc3NldCgkX1JFUVVFU1RbJ21vZHVsZSddKSkKCXsKCQkkbW9kdWxlbmFtZSA9ICRfUkVRVUVTVFsnbW9kdWxlJ107Cgl9CgkKCWlmIChpc3NldCgkX1JFUVVFU1RbJ2lkJ10pKQoJewoJCSRpZCA9ICRfUkVRVUVTVFsnaWQnXTsKCX0KCWVsc2VpZiAoaXNzZXQoJF9SRVFVRVNUWydtYWN0J10pKQoJewoJCSRhcnkgICAgICAgID0gZXhwbG9kZSgnLCcsIGNtc19odG1sZW50aXRpZXMoJF9SRVFVRVNUWydtYWN0J10pLCA0KTsKCQkkbW9kdWxlbmFtZSA9IChpc3NldCgkYXJ5WzBdKT8kYXJ5WzBdOicnKTsKCQkkaWQgICAgICAgICA9IChpc3NldCgkYXJ5WzFdKT8kYXJ5WzFdOicnKTsKCQkkYWN0aW9uICAgICA9IChpc3NldCgkYXJ5WzJdKT8kYXJ5WzJdOicnKTsKCQkkaW5saW5lICAgICA9IChpc3NldCgkYXJ5WzNdKSAmJiAkYXJ5WzNdID09IDE/dHJ1ZTpmYWxzZSk7Cgl9CgkKCWlmIChpc3NldCgkX1JFUVVFU1RbJGlkLidhY3Rpb24nXSkpCgl7CgkJJGFjdGlvbiA9ICRfUkVRVUVTVFskaWQuJ2FjdGlvbiddOwoJfQoJZWxzZSBpZiAoaXNzZXQoJF9SRVFVRVNUWydhY3Rpb24nXSkpCgl7CgkJJGFjdGlvbiA9ICRfUkVRVUVTVFsnYWN0aW9uJ107Cgl9CgkKCWlmICghaXNzZXQoJHBhcmFtc1snYmxvY2snXSkgJiYgKCRpZCA9PSAnY250bnQwMScgfHwgKCRpZCAhPSAnJyAmJiAkaW5saW5lID09IGZhbHNlKSkpCgl7CgkJJGNtc21vZHVsZXMgPSAmJGdDbXMtPm1vZHVsZXM7CgkJCgkJaWYgKGlzc2V0KCRjbXNtb2R1bGVzKSkKCQl7CgkJCWZvcmVhY2ggKCRjbXNtb2R1bGVzIGFzICRrZXk9PiR2YWx1ZSkKCQkJewoJCQkJaWYgKHN0cnRvbG93ZXIoJG1vZHVsZW5hbWUpID09IHN0cnRvbG93ZXIoJGtleSkpCgkJCQl7CgkJCQkJJG1vZHVsZW5hbWUgPSAka2V5OwoJCQkJfQoJCQl9CgkJCQoJCQlpZiAoaXNzZXQoJG1vZHVsZW5hbWUpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGNtc21vZHVsZXNbJG1vZHVsZW5hbWVdKSkKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJGNtc21vZHVsZXNbJG1vZHVsZW5hbWVdWydvYmplY3QnXSkKCQkJCQkJJiYgJGNtc21vZHVsZXNbJG1vZHVsZW5hbWVdWydpbnN0YWxsZWQnXSA9PSB0cnVlCgkJCQkJCSYmICRjbXNtb2R1bGVzWyRtb2R1bGVuYW1lXVsnYWN0aXZlJ10gPT0gdHJ1ZQoJCQkJCQkmJiAkY21zbW9kdWxlc1skbW9kdWxlbmFtZV1bJ29iamVjdCddLT5Jc1BsdWdpbk1vZHVsZSgpKQoJCQkJCXsKCQkJCQkJQG9iX3N0YXJ0KCk7CgkJCQkJCWZvcmVhY2goJHRoaXMtPkdldEFsbG93ZWRQYXJhbWV0ZXJzKCkgYXMgJGsgPT4gJHYpIHsKCQkJCQkJCXVuc2V0KCRwYXJhbXNbJGtdKTsKCQkJCQkJfQoJCQkJCQkKCQkJCQkJJHBhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIEdldE1vZHVsZVBhcmFtZXRlcnMoJGlkKSk7CgkJCQkJCQoJCQkJCQkjIGNhbGd1eTEwMDAgLi4uIGluY3JlbWVudCB0aGUgbW9kdWxlbnVtCgkJCQkJCSMgaWYgd2UncmUgbm90IGluIGlubGluZWQgbW9kZS4KCQkJCQkJaWYoICRpZCAhPSAnY250bnQwMScgKSAKCQkJCQkJewoJCQkJCQkJKyskZ0Ntcy0+dmFyaWFibGVzWyJtb2R1bGVudW0iXTsKCQkJCQkJfQoJCQkJCQkKCQkJCQkJJHJldHVybmlkID0gJyc7CgkJCQkJCWlmIChpc3NldCgkcGFyYW1zWydyZXR1cm5pZCddKSkKCQkJCQkJewoJCQkJCQkJJHJldHVybmlkID0gJHBhcmFtc1sncmV0dXJuaWQnXTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRyZXR1cm5pZCA9ICRwYWdlaW5mby0+Y29udGVudF9pZDsKCQkJCQkJfQoJCQkJCQkkcmVzdWx0ID0gJGNtc21vZHVsZXNbJG1vZHVsZW5hbWVdWydvYmplY3QnXS0+RG9BY3Rpb25CYXNlKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCQkJCQkJaWYgKCRyZXN1bHQgIT09IEZBTFNFKQoJCQkJCQl7CgkJCQkJCQllY2hvICRyZXN1bHQ7CgkJCQkJCX0KCQkJCQkJJG1vZHJlc3VsdCA9IEBvYl9nZXRfY29udGVudHMoKTsKCQkJCQkJQG9iX2VuZF9jbGVhbigpOwoJCQkJCQkkcmVzdWx0ID0gJG1vZHJlc3VsdDsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkgICRyZXN1bHQgPSAiPCEtLSBOb3QgYSB0YWcgbW9kdWxlIC0tPlxuIjsKCQkJCQkgIEB0cmlnZ2VyX2Vycm9yKCdBdHRlbXB0IHRvIGFjY2VzcyBtb2R1bGUgJy4ka2V5Licgd2hpY2ggY291bGQgbm90IGJlIGZvdW5lIChpcyBpdCBwcm9wZXJseSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQ/Jyk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoJZWxzZQoJewoJCSRvbGR2YWx1ZSAgICAgICAgICAgICAgICAgICA9ICRnQ21zLT5HZXRTbWFydHkoKS0+Y2FjaGluZzsKCQkkZ0Ntcy0+R2V0U21hcnR5KCktPmNhY2hpbmcgPSBmYWxzZTsKCQkkY29udGVudElkICAgICAgICAgICAgICAgICAgPSAkcGFnZWluZm8tPmNvbnRlbnRfaWQ7CgkJCgkJIyBNTEUgc3VwcG9ydAoJCWlmKCRtbGUpCgkJewoJCQkkY29udGVudElkIC49ICctJy4kaGxzOwoJCX0KCQkjLS0tCgkJCgkJJHJlc3VsdCA9ICRnQ21zLT5HZXRTbWFydHkoKS0+ZmV0Y2goc3RyX3JlcGxhY2UoJyAnLCAnXycsICdjb250ZW50OicgLiAkYmxvY2spLCAnJywgJGNvbnRlbnRJZCk7CgkJCgkJIyBNTEUgc3VwcG9ydAoJCWlmKCRtbGUKCQkJJiYgJHJlc3VsdCA9PSAnJyAmJiAkbWxlYmxvY2tmYWxsYmFjayAhPSAnJwoJCQkmJiAkbWxlYmxvY2tmYWxsYmFjayAhPSAkbWxlYmxvY2spCgkJewoJCQlpZigkYmxvY2sgIT0gJ2NvbnRlbnQnLiRtbGVibG9jaykKCQkJewoJCQkJJGJsb2NrICA9ICRfYmxvY2sgLiAkbWxlYmxvY2tmYWxsYmFjazsKCQkJCSRyZXN1bHQgPSAkZ0Ntcy0+R2V0U21hcnR5KCktPmZldGNoKHN0cl9yZXBsYWNlKCcgJywgJ18nLCAnY29udGVudDonIC4gJGJsb2NrKSwgJycsICRjb250ZW50SWQpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGJsb2NrICA9ICdjb250ZW50JyAuICRtbGVibG9ja2ZhbGxiYWNrOwoJCQkJJHJlc3VsdCA9ICRnQ21zLT5HZXRTbWFydHkoKS0+ZmV0Y2goc3RyX3JlcGxhY2UoJyAnLCAnXycsICdjb250ZW50OicgLiAkYmxvY2spLCAnJywgJGNvbnRlbnRJZCk7CgkJCX0KCQl9CgkJIy0tLQoJCQoJCSRnQ21zLT5HZXRTbWFydHkoKS0+Y2FjaGluZyA9ICRvbGR2YWx1ZTsKCQkKCQlpZigkcmVzdWx0ID09ICcnICYmICEkYWxsb3dOb25lKQoJCXsKCQkJJHJlc3VsdCA9ICRkZWZhdWx0VmFsdWU7CgkJfQoJfQoJZWNobyB0cmltKCRyZXN1bHQpOwp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjUuMQojIEZpbGUgICA6IGFjdGlvbi5kZWZhdWx0YWRtaW4ucGhwCiMgUHVycG9zZTogcGVyZm9ybXMgdGhlIGRlZmF1bHQgYmFja2VuZCBhY3Rpb24gaWYgIkV4dGVuc2lvbnMtPkFkdmFuY2VkQ29udGVudCIKIyAgICAgICAgICBpcyBzZWxlY3RlZAojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZighaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnKSAKCSYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXRzJykgCgkmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycpKQp7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX3Blcm1pc3Npb25zJykpOwp9CiRhY3RpdmVfdGFiID0gJ3ByZWZzJzsKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkKewoJJGFjdGl2ZV90YWIgPSAkcGFyYW1zWydhY3RpdmVfdGFiJ107Cn0KJGVycm9ybWVzc2FnZSA9ICcnOwppZihpc3NldCgkcGFyYW1zWydlcnJvcm1lc3NhZ2UnXSkpCnsKCSRlcnJvcm1lc3NhZ2UgLj0gJHBhcmFtc1snZXJyb3JtZXNzYWdlJ10uJzxiciAvPic7Cn0KJG1lc3NhZ2UgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSkKewoJJG1lc3NhZ2UgLj0gJHBhcmFtc1snbWVzc2FnZSddLic8YnIgLz4nOwp9CiR0YWJzID0gYXJyYXkoKTsKCmlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnKSkKewoJJHRhYnNbJ3ByZWZzJ11bJ3RhYmhlYWRlciddID0gJHRoaXMtPlNldFRhYkhlYWRlcigncHJlZnMnLAoJCSR0aGlzLT5sYW5nKCdwcmVmcycpLAoJCSgkYWN0aXZlX3RhYj09J3ByZWZzJz90cnVlOicnKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsCgkJJ3NhdmVQcmVmcycsICRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbXBvcnRjb250ZW50X2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdpbXBvcnRwYWdlcycsICRyZXR1cm5pZCwKCQkJJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJycsJycsJycsJ3N5c3RlbWljb24nKSAuCgkJCScmbmJzcDsnIC4gJHRoaXMtPmxhbmcoJ2ltcG9ydHBhZ2VzJywgbGFuZygnY29udGVudCcpLCR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSksCgkJCWFycmF5KCdvbGRfdHlwZSc9Pidjb250ZW50JywnbmV3X3R5cGUnPT4nY29udGVudDInKSwKCQkJJycsCgkJCWZhbHNlLAoJCQlmYWxzZSwKCQkJJ2NsYXNzPSJBZHZhbmNlZENvbnRlbnRfQUpBWCIgb25jbGljaz0iaWYoY29uZmlybShcJycuCgkJCQkkdGhpcy0+bGFuZygnY29uZmlybWltcG9ydCcsbGFuZygnY29udGVudCcpLCR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSkgLgoJCQkJJ1wnKSkge0FkdmFuY2VkQ29udGVudC5pbXBvcnRQYWdlcyh0aGlzLmhyZWYpO30gcmV0dXJuIGZhbHNlOyInKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW1wb3J0Y29udGVudDJfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2ltcG9ydHBhZ2VzJywgJycsCgkJCSRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJykgLgoJCQknJm5ic3A7JyAuICR0aGlzLT5sYW5nKCdpbXBvcnRwYWdlcycsICR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSxsYW5nKCdjb250ZW50JykpLAoJCQlhcnJheSgnb2xkX3R5cGUnPT4nY29udGVudDInLCduZXdfdHlwZSc9Pidjb250ZW50JyksCgkJCScnLAoJCQlmYWxzZSwKCQkJZmFsc2UsCgkJCSdjbGFzcz0iQWR2YW5jZWRDb250ZW50X0FKQVgiIG9uY2xpY2s9ImlmKGNvbmZpcm0oXCcnLgoJCQkJJHRoaXMtPmxhbmcoJ2NvbmZpcm1pbXBvcnQnLCR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSxsYW5nKCdjb250ZW50JykpIC4KCQkJCSdcJykpIHtBZHZhbmNlZENvbnRlbnQuaW1wb3J0UGFnZXModGhpcy5ocmVmKTt9IHJldHVybiBmYWxzZTsiJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3VuaW5zdGFsbGFjdGlvbl90ZXh0JywgJHRoaXMtPmxhbmcoJ3VuaW5zdGFsbGFjdGlvbicpKTsKCQoJJGFjdGlvbnMgPSBhcnJheShsYW5nKCdub25lJyk9PicnLAoJCSR0aGlzLT5sYW5nKCdzZXRjb250ZW50MScpPT4yLAoJCSR0aGlzLT5sYW5nKCdzZXRjb250ZW50MicpPT4zLAoJCSR0aGlzLT5sYW5nKCdkZWxldGVwYWdlcycpPT4xKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd1bmluc3RhbGxhY3Rpb25faW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3VuaW5zdGFsbF9hY3Rpb24nLCAkYWN0aW9ucywgJycsCgkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1bmluc3RhbGxfYWN0aW9uJykpKTsKCQoJJGFjdGlvbnMgPSBhcnJheSgkdGhpcy0+bGFuZygncGVyX3BhZ2UnKT0+J2NvbnRlbnQnLAoJCSR0aGlzLT5sYW5nKCdwZXJfdGVtcGxhdGUnKT0+J3RlbXBsYXRlJywKCQkkdGhpcy0+bGFuZygnYm90aDEnKT0+J2JvdGgxJywKCQkkdGhpcy0+bGFuZygnYm90aDInKT0+J2JvdGgyJyk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignYmxvY2tfZGlzcGxheV9zZXR0aW5nc190ZXh0JywKCQkkdGhpcy0+bGFuZygnc2F2ZV9jb2xsYXBzZV9zdGF0dXMnLCAkdGhpcy0+bGFuZygnY29udGVudF9ibG9ja3MnKSkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdibG9ja19kaXNwbGF5X3NldHRpbmdzX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdibG9ja19kaXNwbGF5X3NldHRpbmdzJywgJGFjdGlvbnMsICcnLAoJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYmxvY2tfZGlzcGxheV9zZXR0aW5ncycpKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29sbGFwc2VfYmxvY2tfZGVmYXVsdF90ZXh0JywKCQkkdGhpcy0+bGFuZygnY29sbGFwc2VfZGVmYXVsdCcsJHRoaXMtPmxhbmcoJ2NvbnRlbnRfYmxvY2tzJykpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NvbGxhcHNlX2Jsb2NrX2RlZmF1bHRfaW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjb2xsYXBzZV9ibG9ja19kZWZhdWx0JywwKSAuCgkJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2NvbGxhcHNlX2Jsb2NrX2RlZmF1bHQnLCAxLAoJCQkJJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NvbGxhcHNlX2Jsb2NrX2RlZmF1bHQnLDEpKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzX3RleHQnLAoJCSR0aGlzLT5sYW5nKCdzYXZlX2NvbGxhcHNlX3N0YXR1cycsICR0aGlzLT5sYW5nKCdibG9ja19tZXNzYWdlJykpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdtZXNzYWdlX2Rpc3BsYXlfc2V0dGluZ3MnLCAkYWN0aW9ucywgJycsCgkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXNzYWdlX2Rpc3BsYXlfc2V0dGluZ3MnKSkpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dyb3VwX2Rpc3BsYXlfc2V0dGluZ3NfdGV4dCcsCgkJJHRoaXMtPmxhbmcoJ3NhdmVfY29sbGFwc2Vfc3RhdHVzJywgJHRoaXMtPmxhbmcoJ2Jsb2NrX2dyb3VwcycpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dyb3VwX2Rpc3BsYXlfc2V0dGluZ3NfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2dyb3VwX2Rpc3BsYXlfc2V0dGluZ3MnLCAkYWN0aW9ucywgJycsCgkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdncm91cF9kaXNwbGF5X3NldHRpbmdzJykpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb2xsYXBzZV9ncm91cF9kZWZhdWx0X3RleHQnLAoJCSR0aGlzLT5sYW5nKCdjb2xsYXBzZV9kZWZhdWx0JywkdGhpcy0+bGFuZygnYmxvY2tfZ3JvdXBzJykpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29sbGFwc2VfZ3JvdXBfZGVmYXVsdF9pbnB1dCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnY29sbGFwc2VfZ3JvdXBfZGVmYXVsdCcsMCkgLgoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLCAxLAoJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY29sbGFwc2VfZ3JvdXBfZGVmYXVsdCcsMSkpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnNfdGV4dCcsCgkJJHRoaXMtPmxhbmcoJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3VzZV9hZHZhbmNlZF9wYWdlb3B0aW9uc19pbnB1dCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndXNlX2FkdmFuY2VkX3BhZ2VvcHRpb25zJywwKSAuCgkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAndXNlX2FkdmFuY2VkX3BhZ2VvcHRpb25zJywgMSwKCQkJJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV9hZHZhbmNlZF9wYWdlb3B0aW9ucycsMSksJ29uY2hhbmdlPSJpZighdGhpcy5jaGVja2VkKXtqUXVlcnkoXCcjYWR2YW5jZWRfZGVmYXVsdF9vcHRpb25zIGlucHV0XCcpLmF0dHIoXCdkaXNhYmxlZFwnLFwnZGlzYWJsZWRcJyk7aWYoalF1ZXJ5KFwnI2FkdmFuY2VkX2RlZmF1bHRfb3B0aW9uc1wnKS5jc3MoXCdkaXNwbGF5XCcpICE9IFwnbm9uZVwnKXtqUXVlcnkoXCcjYWR2YW5jZWRfZGVmYXVsdF9vcHRpb25zXCcpLnNsaWRlVXAoKTt9fWVsc2V7alF1ZXJ5KFwnI2FkdmFuY2VkX2RlZmF1bHRfb3B0aW9ucyBpbnB1dFwnKS5yZW1vdmVBdHRyKFwnZGlzYWJsZWRcJyk7aWYoalF1ZXJ5KFwnI2FkdmFuY2VkX2RlZmF1bHRfb3B0aW9uc1wnKS5jc3MoXCdkaXNwbGF5XCcpID09IFwnbm9uZVwnKXtqUXVlcnkoXCcjYWR2YW5jZWRfZGVmYXVsdF9vcHRpb25zXCcpLnNsaWRlRG93bigpO319IicpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZHZhbmNlZF9kZWZhdWx0X29wdGlvbnNfc3R5bGUnLCAhJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV9hZHZhbmNlZF9wYWdlb3B0aW9ucycsMSkgPyAnc3R5bGU9ImRpc3BsYXk6bm9uZSInIDogJycpOwoJIyBkZWZhdWx0IGFkdmFuY2VkIHBhZ2VvcHRpb25zCgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29udGVudHNldHRpbmdzX3RleHQnLCAkdGhpcy0+bGFuZygnY29udGVudHNldHRpbmdzJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3VzZV9leHBpcmVfZGF0ZV90ZXh0JywgJHRoaXMtPmxhbmcoJ3VzZWV4cGlyZWRhdGUnKSk7CgkkdXNlRXhwID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV9leHBpcmVfZGF0ZScpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd1c2VfZXhwaXJlX2RhdGVfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndXNlX2V4cGlyZV9kYXRlJywKCQkJYXJyYXkoJHRoaXMtPmxhbmcoJ3llcycpPT4xLAoJCQkJJHRoaXMtPmxhbmcoJ25vJyk9PjAsCgkJCQkkdGhpcy0+bGFuZygnaW5oZXJpdF9mcm9tX3BhcmVudCcpPT4tMSksCgkJCTAsJHVzZUV4cCkpOwoJCgkkdGltZXMgPSBhcnJheSgpOwoJJHRpbWVzWyR0aGlzLT5sYW5nKCdtaW51dGVzJyldID0gJ21pbnV0ZSc7CgkkdGltZXNbJHRoaXMtPmxhbmcoJ2hvdXJzJyldICAgPSAnaG91cic7CgkkdGltZXNbJHRoaXMtPmxhbmcoJ2RheXMnKV0gICAgPSAnZGF5JzsKCSR0aW1lc1skdGhpcy0+bGFuZygnd2Vla3MnKV0gICA9ICd3ZWVrJzsKCSR0aW1lc1skdGhpcy0+bGFuZygnbW9udGhzJyldICA9ICdtb250aCc7CgkkdGltZXNbJHRoaXMtPmxhbmcoJ3llYXJzJyldICAgPSAneWVhcic7IAoJCgkkc3RhcnRfZGF0ZSA9IGV4cGxvZGUoJyAnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgic3RhcnRfZGF0ZSIsICcxIHdlZWsnKSk7CgkkZW5kX2RhdGUgICA9IGV4cGxvZGUoJyAnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZW5kX2RhdGUiLCAnMSB3ZWVrJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX3RleHQnLCAkdGhpcy0+bGFuZygnc3RhcnRkYXRlJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3N0YXJ0X2RhdGVfMScsICRzdGFydF9kYXRlWzBdLCAzLCA1KSAuCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnc3RhcnRfZGF0ZV8yJywgJHRpbWVzLCcnLCAkc3RhcnRfZGF0ZVsxXSkgLiAKCQknJm5ic3A7JyAuICR0aGlzLT5sYW5nKCdhZnRlcmN1cnJkYXRlJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9kYXRlX3RleHQnLCAkdGhpcy0+bGFuZygnZW5kZGF0ZScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2RhdGVfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZW5kX2RhdGVfMScsICRlbmRfZGF0ZVswXSwgMywgNSkgLiAKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdlbmRfZGF0ZV8yJywgJHRpbWVzLCAnJywgJGVuZF9kYXRlWzFdKSAuIAoJCScmbmJzcDsnIC4gJHRoaXMtPmxhbmcoJ2FmdGVyc3RhcnRkYXRlJykpOwoJCglpZiggJGZldXNlcnMgPSYgJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyApKQoJewoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZmV1YWNjZXNzX3RleHQnLCAkdGhpcy0+bGFuZygnZnJvbnRlbmRhY2Nlc3MnKSk7CgkJJGZldUFjY2VzcyA9IGFycmF5KCR0aGlzLT5sYW5nKCdpbmhlcml0X2Zyb21fcGFyZW50Jyk9Pi0xKTsKCQkkZmV1QWNjZXNzID0gYXJyYXlfbWVyZ2UoJGZldUFjY2VzcywkZmV1c2Vycy0+R2V0R3JvdXBMaXN0KCkpOwoJCSRzZWxlY3RlZEdyb3VwcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmZXVfYWNjZXNzJyk7CgkJJGRlbGltICAgICAgICAgID0gc3RycG9zKCRzZWxlY3RlZEdyb3VwcywnLCcpID09PSBGQUxTRSA/ICc7JyA6ICcsJzsKCQkkc2VsZWN0ZWRHcm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCRkZWxpbSwkc2VsZWN0ZWRHcm91cHMpKTsKCQkKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZldWFjY2Vzc19pbnB1dCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2ZldV9hY2Nlc3MnLCcnKS4KCQkJJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJ2ZldV9hY2Nlc3NbXScsJGZldUFjY2VzcywKCQkJCSRzZWxlY3RlZEdyb3VwcywgY291bnQoJGZldUFjY2VzcyksISR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpID8gJ2Rpc2FibGVkPSJkaXNhYmxlZCInIDogJycsMSkpOwoJCQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigncmVkaXJlY3RwYWdlX3RleHQnLCAkdGhpcy0+bGFuZygncmVkaXJlY3RwYWdlJykpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigncmVkaXJlY3RwYWdlX2lucHV0JywKCQkJJHRoaXMtPkNyZWF0ZVJlZGlyZWN0RHJvcGRvd24oJGlkLCdyZWRpcmVjdF9wYWdlJywKCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZWRpcmVjdF9wYWdlJykpKTsKCQkKCQkkaW5oZXJpdFBhcmFtcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbmhlcml0X3JlZGlyZWN0X3BhcmFtcycsMCk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbmhlcml0X3JlZGlyZWN0cGFyYW1zX3RleHQnLCAkdGhpcy0+bGFuZygnaW5oZXJpdF9mcm9tX3BhcmVudCcpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2luaGVyaXRfcmVkaXJlY3RwYXJhbXNfaW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdpbmhlcml0X3JlZGlyZWN0X3BhcmFtcycsMCkgLgoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpbmhlcml0X3JlZGlyZWN0X3BhcmFtcycsIDEsCgkJCQkkaW5oZXJpdFBhcmFtcywgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpID8gJ2Rpc2FibGVkPSJkaXNhYmxlZCInIDogJycpKTsKCQkKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlZGlyZWN0cGFyYW1zX3RleHQnLCAkdGhpcy0+bGFuZygncmVkaXJlY3RwYXJhbXMnKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdyZWRpcmVjdHBhcmFtc19pbnB1dCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAncmVkaXJlY3RfcGFyYW1zJywKCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZWRpcmVjdF9wYXJhbXMnKSwgMzIsIDEyOCwhJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV9hZHZhbmNlZF9wYWdlb3B0aW9ucycsMSkgPyAnZGlzYWJsZWQ9ImRpc2FibGVkIicgOiAnJykpOwoJCQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXZhbHVhdGVzbWFydHlfdGV4dCcsICR0aGlzLT5sYW5nKCdldmFsdWF0ZXNtYXJ0eScpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2V2YWx1YXRlc21hcnR5X2lucHV0JywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnZXZhbHVhdGVfc21hcnR5JywwKSAuCgkJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2V2YWx1YXRlX3NtYXJ0eScsIDEsCgkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZXZhbHVhdGVfc21hcnR5JyksISR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpID8gJ2Rpc2FibGVkPSJkaXNhYmxlZCInIDogJycpKTsKCQkKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZldWFjdGlvbl90ZXh0JywgJHRoaXMtPmxhbmcoJ3Nob3dsb2dpbmZvcm0nKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmZXVhY3Rpb25faW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2ZldV9hY3Rpb24nLAoJCQkJYXJyYXkoJHRoaXMtPmxhbmcoJ3llcycpPT4xLAoJCQkJCSR0aGlzLT5sYW5nKCdubycpPT4wLAoJCQkJCSR0aGlzLT5sYW5nKCdpbmhlcml0X2Zyb21fcGFyZW50Jyk9Pi0xKSwKCQkJCTAsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZldV9hY3Rpb24nLDEpLCEkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX2FkdmFuY2VkX3BhZ2VvcHRpb25zJywxKSA/ICdkaXNhYmxlZD0iZGlzYWJsZWQiJyA6ICcnKSk7CgkJCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdoaWRlX21lbnVfaXRlbV90ZXh0JywKCQkJJHRoaXMtPmxhbmcoJ2hpZGVfbWVudV9pdGVtJykpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZV9tZW51X2l0ZW1faW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2hpZGVfbWVudV9pdGVtJywKCQkJCWFycmF5KCR0aGlzLT5sYW5nKCdubycpPT4wLAoJCQkJCSR0aGlzLT5sYW5nKCdsb2dnZWRvdXQnKT0+MSwKCQkJCQkkdGhpcy0+bGFuZygnbG9nZ2VkaW4nKT0+MiwKCQkJCQkkdGhpcy0+bGFuZygnaW5oZXJpdF9mcm9tX3BhcmVudCcpPT4tMSksCgkJCQkwLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdoaWRlX21lbnVfaXRlbScsMCksISR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpID8gJ2Rpc2FibGVkPSJkaXNhYmxlZCInIDogJycpKTsKCX0KCSMtLS0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0X3ByZWZzJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdF9wcmVmcycsCgkJbGFuZygnc3VibWl0JyksJ29uY2xpY2s9InJldHVybiBBZHZhbmNlZENvbnRlbnQuc3VibWl0Rm9ybSh0aGlzLFwnQWR2YW5jZWRDb250ZW50UmVzdWx0XCcpIicpKTsKCQoJJHRhYnNbJ3ByZWZzJ11bJ3RhYmNvbnRlbnQnXSA9ICR0aGlzLT5TdGFydFRhYigncHJlZnMnKSAuCgkJJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncHJlZnNUYWIudHBsJykgLgoJCSR0aGlzLT5FbmRUYWIoKTsKfQoKaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycpKQp7CgkkdGFic1snbXVsdGlfaW5wdXQnXVsndGFiaGVhZGVyJ10gPSAkdGhpcy0+U2V0VGFiSGVhZGVyKCdtdWx0aV9pbnB1dCcsCgkJJHRoaXMtPmxhbmcoJ211bHRpX2lucHV0JyksCgkJKCRhY3RpdmVfdGFiPT0nbXVsdGlfaW5wdXQnP3RydWU6JycpKTsKCQoJJG11bHRpX2lucHV0cyA9IGFycmF5KCk7Cglmb3JlYWNoKCR0aGlzLT5HZXRNdWx0aUlucHV0TGlzdCgpIGFzICRtdWx0aV9pbnB1dCkKCXsKCQkkbXVsdGlfaW5wdXRzWyRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXV1bJ2VkaXRfbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdE11bHRpSW5wdXQnLCAkcmV0dXJuaWQsCgkJCSRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgnaW5wdXRfaWQnPT4kbXVsdGlfaW5wdXRbJ2lucHV0X2lkJ10pKTsKCQkKCQkkbXVsdGlfaW5wdXRzWyRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXV1bJ25hbWVfbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdE11bHRpSW5wdXQnLCAkcmV0dXJuaWQsICRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXSwgYXJyYXkoJ2lucHV0X2lkJz0+JG11bHRpX2lucHV0WydpbnB1dF9pZCddKSk7CgkJCgkJJG11bHRpX2lucHV0c1skbXVsdGlfaW5wdXRbJ2lucHV0X2lkJ11dWyd0ZW1wbGF0ZSddID0gc3Vic3RyKCRtdWx0aV9pbnB1dFsndHBsX25hbWUnXSxzdHJsZW4oJ211bHRpX2lucHV0XycpKTsKCQkKCQkkbXVsdGlfaW5wdXRzWyRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXV1bJ2RlbGV0ZV9saW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVNdWx0aUlucHV0JywgJHJldHVybmlkLAoJCQkkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpLAoJCQlhcnJheSgnaW5wdXRfaWQnPT4kbXVsdGlfaW5wdXRbJ2lucHV0X2lkJ10pLCR0aGlzLT5sYW5nKCdjb25maXJtX2RlbGV0ZScpKTsKCQkKCQkkbXVsdGlfaW5wdXRzWyRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXV1bJ2NoZWNrYm94J10gPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsCgkJCSJtdWx0aV9pbnB1dC0iLiRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXSwgJG11bHRpX2lucHV0WydpbnB1dF9pZCddLCAnJyk7Cgl9CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NlbGVjdGFsbCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdtdWx0aV9pbnB1dCcsdHJ1ZSxmYWxzZSwgJ2lkPSInLiRpZC4nbXVsdGlfaW5wdXQiIG9uY2xpY2s9IkFkdmFuY2VkQ29udGVudC5zZWxlY3RBbGwodGhpcykiJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdtdWx0aV9pbnB1dF9hcnJheScsJG11bHRpX2lucHV0cyk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZF9tdWx0aV9pbnB1dCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkTXVsdGlJbnB1dCcsICRyZXR1cm5pZCwKCQkJJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJycsJycsJycsJ3N5c3RlbWljb24nKSAuCgkJCScmbmJzcDsnIC4gJHRoaXMtPmxhbmcoJ2FkZF9tdWx0aV9pbnB1dCcpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwKCQknZGVsZXRlTXVsdGlJbnB1dCcsICRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9idWxrYWN0aW9uJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdF9idWxrYWN0aW9uJywkdGhpcy0+bGFuZygnZGVsZXRlX3NlbGVjdGVkJyksJycsJycsJHRoaXMtPmxhbmcoJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJykpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaWRfdGV4dCcsICR0aGlzLT5sYW5nKCdpbnB1dF9pZCcpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfdGV4dCcsIGxhbmcoJ3RlbXBsYXRlJykpOwoJJHRhYnNbJ211bHRpX2lucHV0J11bJ3RhYmNvbnRlbnQnXSA9ICR0aGlzLT5TdGFydFRhYignbXVsdGlfaW5wdXQnKSAuCgkJJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbXVsdGlJbnB1dFRhYi50cGwnKSAuCgkJJHRoaXMtPkVuZFRhYigpOwp9CgppZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXQgVGVtcGxhdGVzJykpCnsKCSR0YWJzWydtdWx0aV9pbnB1dF90cGwnXVsndGFiaGVhZGVyJ10gPSAkdGhpcy0+U2V0VGFiSGVhZGVyKCdtdWx0aV9pbnB1dF90cGwnLAoJCSR0aGlzLT5sYW5nKCdtdWx0aV9pbnB1dF90cGwnKSwKCQkoJGFjdGl2ZV90YWI9PSdtdWx0aV9pbnB1dF90cGwnP3RydWU6JycpKTsKCQoJJG11bHRpX2lucHV0X3RwbHMgPSBhcnJheSgpOwoJZm9yZWFjaCgkdGhpcy0+R2V0VGVtcGxhdGVzKCdtdWx0aV9pbnB1dCcpIGFzICR0cGwpCgl7CgkJJG11bHRpX2lucHV0X3RwbHNbJHRwbFsndHBsX2lkJ11dWydlZGl0X2xpbmsnXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRNdWx0aUlucHV0VHBsJywgJHJldHVybmlkLAoJCQkkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJycsJycsJycsJ3N5c3RlbWljb24nKSwKCQkJYXJyYXkoJ3RwbF9pZCc9PiR0cGxbJ3RwbF9pZCddKSk7CgkJCgkJJG11bHRpX2lucHV0X3RwbHNbJHRwbFsndHBsX2lkJ11dWyduYW1lX2xpbmsnXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRNdWx0aUlucHV0VHBsJywgJHJldHVybmlkLAoJCQkkdHBsWyd0cGxfbmFtZSddLAoJCQlhcnJheSgndHBsX2lkJz0+JHRwbFsndHBsX2lkJ10pKTsKCQkKCQkkbXVsdGlfaW5wdXRfdHBsc1skdHBsWyd0cGxfaWQnXV1bJ2RlbGV0ZV9saW5rJ10gPSAnJm5ic3A7JzsKCQkkbXVsdGlfaW5wdXRfdHBsc1skdHBsWyd0cGxfaWQnXV1bJ2NoZWNrYm94J10gPSAnJm5ic3AnOwoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X211bHRpX2lucHV0X3RwbCcsJ211bHRpX2lucHV0X1NhbXBsZVRlbXBsYXRlJykgIT0gJHRwbFsndHBsX2lkJ10gJiYgISR0cGxbJ2lzX3VzZWQnXSkKCQl7CgkJCSRtdWx0aV9pbnB1dF90cGxzWyR0cGxbJ3RwbF9pZCddXVsnZGVsZXRlX2xpbmsnXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwKCQkJCSdkZWxldGVNdWx0aUlucHV0VHBsJywgJHJldHVybmlkLCAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpLAoJCQkJYXJyYXkoJ3RwbF9pZCc9PiR0cGxbJ3RwbF9pZCddKSwkdGhpcy0+bGFuZygnY29uZmlybV9kZWxldGUnKSk7CgkJCSRtdWx0aV9pbnB1dF90cGxzWyR0cGxbJ3RwbF9pZCddXVsnY2hlY2tib3gnXSA9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwKCQkJCSJtdWx0aV9pbnB1dF90cGwtIi4kdHBsWyd0cGxfaWQnXSwgJHRwbFsndHBsX2lkJ10sICcnKTsKCQl9CgkJCgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfbXVsdGlfaW5wdXRfdHBsJywnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnKSAhPSAkdHBsWyd0cGxfaWQnXSkKCQl7CgkJCSRtdWx0aV9pbnB1dF90cGxzWyR0cGxbJ3RwbF9pZCddXVsnc2V0X2RlZmF1bHRfbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnc2F2ZVByZWZzJywgJHJldHVybmlkLAoJCQkJJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpLAoJCQkJYXJyYXkoJ3NldF9kZWZhdWx0Jz0+J211bHRpX2lucHV0JywndHBsX2lkJz0+JHRwbFsndHBsX2lkJ10sJ2FjdGl2ZV90YWInPT4nbXVsdGlfaW5wdXRfdHBsJykpOwoJCX0KCQllbHNlCgkJewoJCQkkbXVsdGlfaW5wdXRfdHBsc1skdHBsWyd0cGxfaWQnXV1bJ3NldF9kZWZhdWx0X2xpbmsnXSA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpOwoJCX0KCQkKCX0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignc2VsZWN0YWxsJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ211bHRpX2lucHV0X3RwbCcsdHJ1ZSxmYWxzZSwgJ2lkPSInLiRpZC4nbXVsdGlfaW5wdXRfdHBsIiBvbmNsaWNrPSJBZHZhbmNlZENvbnRlbnQuc2VsZWN0QWxsKHRoaXMpIicpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignbXVsdGlfaW5wdXRfdHBsX2FycmF5JywkbXVsdGlfaW5wdXRfdHBscyk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZF9tdWx0aV9pbnB1dF90cGwnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZE11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsCgkJCSRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJykgLgoJCQknJm5ic3A7JyAuICR0aGlzLT5sYW5nKCdhZGRfbXVsdGlfaW5wdXRfdHBsJykpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfYnVsa2FjdGlvbicsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXRfYnVsa2FjdGlvbicsJHRoaXMtPmxhbmcoJ2RlbGV0ZV9zZWxlY3RlZCcpLCcnLCcnLCR0aGlzLT5sYW5nKCdjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCcpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlX25hbWVfdGV4dCcsIGxhbmcoJ3RlbXBsYXRlJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwKCQknZGVsZXRlTXVsdGlJbnB1dFRwbCcsICRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgkKCSR0YWJzWydtdWx0aV9pbnB1dF90cGwnXVsndGFiY29udGVudCddID0gJHRoaXMtPlN0YXJ0VGFiKCdtdWx0aV9pbnB1dF90cGwnKSAuCgkJJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbXVsdGlJbnB1dFRwbFRhYi50cGwnKSAuCgkJJHRoaXMtPkVuZFRhYigpOwp9CgokdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCd0YWJzJywkdGFicyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfdGFiaGVhZGVycycsJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiaGVhZGVycycsJHRoaXMtPkVuZFRhYkhlYWRlcnMoKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfdGFiY29udGVudCcsJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiY29udGVudCcsJHRoaXMtPkVuZFRhYkNvbnRlbnQoKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX3RhYicsJHRoaXMtPkVuZFRhYigpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVJZCcsICRpZCk7CgppZihpc3NldCgkcGFyYW1zWydtZXNzYWdlJ10pKQp7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCAkdGhpcy0+bGFuZygkcGFyYW1zWydtZXNzYWdlJ10sIChpc3NldCgkcGFyYW1zWydvbGRfdHlwZSddKSAmJiBpc3NldCgkcGFyYW1zWyduZXdfdHlwZSddKSA/ICR0aGlzLT5sYW5nKCRwYXJhbXNbJ29sZF90eXBlJ10pIC4gJywnIC4gJHRoaXMtPmxhbmcoJHBhcmFtc1snbmV3X3R5cGUnXSkgOiAnJykpKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snZXJyb3JtZXNzYWdlJ10pKQp7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Vycm9ybWVzc2FnZScsICR0aGlzLT5sYW5nKCRwYXJhbXNbJ2Vycm9ybWVzc2FnZSddLCAoaXNzZXQoJHBhcmFtc1snb2xkX3R5cGUnXSkgJiYgaXNzZXQoJHBhcmFtc1snbmV3X3R5cGUnXSkgPyAkdGhpcy0+bGFuZygkcGFyYW1zWydvbGRfdHlwZSddKSAuICcsJyAuICR0aGlzLT5sYW5nKCRwYXJhbXNbJ25ld190eXBlJ10pIDogJycpKSk7Cn0KCmVjaG8gJHRoaXMtPl9wcCAuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2RlZmF1bHRhZG1pbi50cGwnKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.editMultiInput.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNS4xCiMgRmlsZSAgIDogYWN0aW9uLmVkaXRNdWx0aUlucHV0LnBocAojIFB1cnBvc2U6IGVkaXRzIGEgbXVsdGkgaW5wdXQgYmxvY2t0eXBlCiMgTGljZW5zZTogR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZighJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycpKQp7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX3Blcm1pc3Npb25zJykpOwp9CgppZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCnsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0JykpOwp9CgokZXJyb3IgPSBmYWxzZTsKJGVycm9ybWVzc2FnZSA9ICcnOwoKJGlucHV0X2lkID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2lkJ10pICYmICFlbXB0eSgkcGFyYW1zWydpbnB1dF9pZCddKSkKewoJJGlucHV0X2lkID0gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybCh0cmltKCRwYXJhbXNbJ2lucHV0X2lkJ10pKSk7Cn0KCiRtdWx0aV9pbnB1dCA9ICR0aGlzLT5HZXRNdWx0aUlucHV0RnVsbCgkaW5wdXRfaWQpOwoKaWYoaXNzZXQoJHBhcmFtc1snaW5wdXRfZmllbGRzJ10pKQp7CgkkbXVsdGlfaW5wdXRbJGlucHV0X2lkXVsnaW5wdXRfZmllbGRzJ10gPSB0cmltKCRwYXJhbXNbJ2lucHV0X2ZpZWxkcyddKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snaW5wdXRfdHBsJ10pKQp7CgkkbXVsdGlfaW5wdXRbJGlucHV0X2lkXVsndHBsX25hbWUnXSA9ICRwYXJhbXNbJ2lucHV0X3RwbCddOwp9CgojIyMgZG8gYWN0aW9uICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICYmICRwYXJhbXNbJ3N1Ym1pdCddPT10cnVlKQp7CglpZigkaW5wdXRfaWQgPT0gJycpCgl7CgkJJGVycm9yID0gdHJ1ZTsKCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl9pbnB1dF9pZCcpLic8YnIgLz4nOwoJfQoJaWYoJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ2lucHV0X2ZpZWxkcyddID09ICcnKQoJewoJCSRlcnJvciA9IHRydWU7CgkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfaW5wdXRfZmllbGRzJykuJzxiciAvPic7Cgl9CgoJaWYoJGVycm9yPT1mYWxzZSkKCXsKCQlpZighJHRoaXMtPlVwZGF0ZU11bHRpSW5wdXQoJGlucHV0X2lkLCRtdWx0aV9pbnB1dFskaW5wdXRfaWRdWydpbnB1dF9maWVsZHMnXSkpCgkJewoJCQkkZXJyb3IgPSB0cnVlOwoJCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl91cGRhdGluZ19tdWx0aV9pbnB1dCcpLic8YnIgLz4nOwoJCX0KCQllbHNlIGlmKCEkdGhpcy0+VXBkYXRlVHBsQXNzb2MoJ211bHRpX2lucHV0JywkaW5wdXRfaWQsJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ3RwbF9uYW1lJ10pKQoJCXsKCQkJJGVycm9yID0gdHJ1ZTsKCQkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfdXBkYXRpbmdfbXVsdGlfaW5wdXRfYXNzb2NzJykuJzxiciAvPic7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtZXNzYWdlJz0+J211bHRpX2lucHV0X3VwZGF0ZWQnLAoJCQkJJ2FjdGl2ZV90YWInPT4nbXVsdGlfaW5wdXQnLCdzdWJtaXQnPT50cnVlKSk7CgkJfQoJfQoKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgc21hcnR5IHN0dWZmCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLAoJJ2VkaXRNdWx0aUlucHV0JywgJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTskdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLAoJbGFuZygnc3VibWl0JykpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJyxsYW5nKCdjYW5jZWwnKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pZF90ZXh0JywkdGhpcy0+bGFuZygnaW5wdXRfaWQnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaWRfaW5wdXQnLCRpbnB1dF9pZCk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RwbF90ZXh0JywkdGhpcy0+bGFuZygnbXVsdGlfaW5wdXRfdHBsJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RwbF9pbnB1dCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaW5wdXRfdHBsJywgJHRoaXMtPkdldFRwbExpc3QoJ211bHRpX2lucHV0JyksICcnLCAkbXVsdGlfaW5wdXRbJGlucHV0X2lkXVsndHBsX25hbWUnXSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWVsZHNfdGV4dCcsJHRoaXMtPmxhbmcoJ2lucHV0X2ZpZWxkcycpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWVsZHNfaW5wdXQnLAoJJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkbXVsdGlfaW5wdXRbJGlucHV0X2lkXVsnaW5wdXRfZmllbGRzJ10sJ2lucHV0X2ZpZWxkcycsJycsJ2lucHV0X2ZpZWxkcycpLgoJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2lucHV0X2lkJywkaW5wdXRfaWQpKTsKCmlmKCRlcnJvcm1lc3NhZ2UhPScnKQp7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Vycm9ybWVzc2FnZScsJGVycm9ybWVzc2FnZSk7Cn0KCiMgRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCmVjaG8gJHRoaXMtPl9wcC4kdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRNdWx0aUlucHV0LnRwbCcpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.editMultiInputTpl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNS4xCiMgRmlsZSAgIDogYWN0aW9uLmFkZE11bHRpSW5wdXRUcGwucGhwCiMgUHVycG9zZTogZWRpdHMgYSB0ZW1wbGF0ZSBmb3IgbXVsdGkgaW5wdXQgYmxvY2t0eXBlCiMgTGljZW5zZTogR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZighJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycpKQp7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX3Blcm1pc3Npb25zJykpOwp9CgppZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCnsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0X3RwbCcpKTsKfQoKJGVycm9yID0gZmFsc2U7CiRlcnJvcm1lc3NhZ2UgPSAnJzsKCmlmKCFpc3NldCgkcGFyYW1zWyd0cGxfaWQnXSkpCnsKCXJldHVybiAkdGhpcy0+bGFuZygnZXJyb3JfaW5zdWZmaWNpZW50X3BhcmFtcycsJ3RwbF9pZCcpOwp9CgokdHBsX2lkID0gJHBhcmFtc1sndHBsX2lkJ107CgokdGVtcGxhdGUgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpCnsKCSR0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7Cn0KZWxzZQp7CgkkdGVtcGxhdGUgPSAkdGhpcy0+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[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjUuMQojIEZpbGUgICA6IGFjdGlvbi5zYXZlUHJlZnMucGhwCiMgUHVycG9zZTogc2F2ZXMgdGhlIHByZWZlcmVuY2VzIGluIHRoZSBkYXRhYmFzZQojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZighaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pIHx8IGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdF9wcmVmcyddKSkKewoJaWYoaXNzZXQoJHBhcmFtc1sndXNlX2FkdmFuY2VkX3BhZ2VvcHRpb25zJ10pKQoJewoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLCAkcGFyYW1zWyd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnXSk7Cgl9CglpZihpc3NldCgkcGFyYW1zWyd1bmluc3RhbGxfYWN0aW9uJ10pKQoJewoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1bmluc3RhbGxfYWN0aW9uJywgJHBhcmFtc1sndW5pbnN0YWxsX2FjdGlvbiddKTsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ2Jsb2NrX2Rpc3BsYXlfc2V0dGluZ3MnXSkpCgl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Jsb2NrX2Rpc3BsYXlfc2V0dGluZ3MnLCAkcGFyYW1zWydibG9ja19kaXNwbGF5X3NldHRpbmdzJ10pOwoJfQoJaWYoaXNzZXQoJHBhcmFtc1snY29sbGFwc2VfYmxvY2tfZGVmYXVsdCddKSkKCXsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29sbGFwc2VfYmxvY2tfZGVmYXVsdCcsICRwYXJhbXNbJ2NvbGxhcHNlX2Jsb2NrX2RlZmF1bHQnXSk7Cgl9CglpZihpc3NldCgkcGFyYW1zWydtZXNzYWdlX2Rpc3BsYXlfc2V0dGluZ3MnXSkpCgl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5ncycsICRwYXJhbXNbJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5ncyddKTsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ2dyb3VwX2Rpc3BsYXlfc2V0dGluZ3MnXSkpCgl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2dyb3VwX2Rpc3BsYXlfc2V0dGluZ3MnLCAkcGFyYW1zWydncm91cF9kaXNwbGF5X3NldHRpbmdzJ10pOwoJfQoJaWYoaXNzZXQoJHBhcmFtc1snY29sbGFwc2VfZ3JvdXBfZGVmYXVsdCddKSkKCXsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29sbGFwc2VfZ3JvdXBfZGVmYXVsdCcsICRwYXJhbXNbJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnXSk7Cgl9CglpZihpc3NldCgkcGFyYW1zWyd1c2VfZXhwaXJlX2RhdGUnXSkpCgl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZV9leHBpcmVfZGF0ZScsICRwYXJhbXNbJ3VzZV9leHBpcmVfZGF0ZSddKTsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ3N0YXJ0X2RhdGVfMSddKSkKCXsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3RhcnRfZGF0ZScsIGludHZhbCgkcGFyYW1zWydzdGFydF9kYXRlXzEnXSkgLiAnICcgLiAkcGFyYW1zWydzdGFydF9kYXRlXzInXSk7Cgl9CglpZihpc3NldCgkcGFyYW1zWydlbmRfZGF0ZV8xJ10pKQoJewoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbmRfZGF0ZScsIGludHZhbCgkcGFyYW1zWydlbmRfZGF0ZV8xJ10pIC4gJyAnIC4gJHBhcmFtc1snZW5kX2RhdGVfMiddKTsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ2ZldV9hY2Nlc3MnXSkpCgl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ZldV9hY2Nlc3MnLCBpbXBsb2RlKCcsJywkdGhpcy0+Q2xlYW5BcnJheSgkcGFyYW1zWydmZXVfYWNjZXNzJ10pKSk7Cgl9CglpZihpc3NldCgkcGFyYW1zWydyZWRpcmVjdF9wYWdlJ10pKQoJewoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZWRpcmVjdF9wYWdlJywgJHBhcmFtc1sncmVkaXJlY3RfcGFnZSddKTsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ2luaGVyaXRfcmVkaXJlY3RfcGFyYW1zJ10pKQoJewoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpbmhlcml0X3JlZGlyZWN0X3BhcmFtcycsICRwYXJhbXNbJ2luaGVyaXRfcmVkaXJlY3RfcGFyYW1zJ10pOwoJfQoJaWYoaXNzZXQoJHBhcmFtc1sncmVkaXJlY3RfcGFyYW1zJ10pKQoJewoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZWRpcmVjdF9wYXJhbXMnLCAkcGFyYW1zWydyZWRpcmVjdF9wYXJhbXMnXSk7Cgl9CglpZihpc3NldCgkcGFyYW1zWydldmFsdWF0ZV9zbWFydHknXSkpCgl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2V2YWx1YXRlX3NtYXJ0eScsICRwYXJhbXNbJ2V2YWx1YXRlX3NtYXJ0eSddKTsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ2ZldV9hY3Rpb24nXSkpCgl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ZldV9hY3Rpb24nLCAkcGFyYW1zWydmZXVfYWN0aW9uJ10pOwoJfQoJaWYoaXNzZXQoJHBhcmFtc1snaGlkZV9tZW51X2l0ZW0nXSkpCgl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGVfbWVudV9pdGVtJywgJHBhcmFtc1snaGlkZV9tZW51X2l0ZW0nXSk7Cgl9Cn0KaWYoaXNzZXQoJHBhcmFtc1snaXRlbV90eXBlJ10pICYmIGlzc2V0KCRwYXJhbXNbJ2l0ZW1fZGlzcGxheSddKSkKewoJJHRoaXMtPlNldEl0ZW1EaXNwbGF5KCRwYXJhbXNbJ2l0ZW1fdHlwZSddLCAkcGFyYW1zWydpdGVtX2lkJ10sICRwYXJhbXNbJ2NvbnRlbnRfaWQnXSwgJHBhcmFtc1sndGVtcGxhdGVfaWQnXSwgJHBhcmFtc1snaXRlbV9kaXNwbGF5J10pOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ3NldF9kZWZhdWx0J10pKQp7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF8nLiRwYXJhbXNbJ3NldF9kZWZhdWx0J10uJ190cGwnLCAkcGFyYW1zWyd0cGxfaWQnXSk7Cn0KaWYoaXNzZXQoJHBhcmFtc1snYWpheCddKSkKewoJZWNobyAnPGRpdiBjbGFzcz0icGFnZW1jb250YWluZXIiPjxwIGNsYXNzPSJwYWdlbWVzc2FnZSI+Jy4kdGhpcy0+bGFuZygncHJlZnN1cGRhdGVkJykuJzwvcD48L2Rpdj4nOwoJZXhpdDsKfQplbHNlCnsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtZXNzYWdlJyA9PiAncHJlZnN1cGRhdGVkJywgJ3N1Ym1pdCcgPT4gdHJ1ZSkpOwp9Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/AdvancedContent.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjUuMQojIEZpbGUgICA6IEFkdmFuY2VkQ29udGVudC5tb2R1bGUucGhwCiMgUHVycG9zZTogaW5pdGlhbCBtb2R1bGUgY2xhc3MuIHRoaXMgaXMgdGhlIGludGVyZmFjZSB0byB0aGUgTW9kdWxlIEFQSQojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpjbGFzcyBBZHZhbmNlZENvbnRlbnQgZXh0ZW5kcyBDTVNNb2R1bGUKewoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfZGlzcGxheVNldHRpbmdzID0gYXJyYXkoKTsKCXZhciAkX2ZldUdyb3VwcyAgICAgICA9IGZhbHNlOwoJdmFyICRfcHAgPSAnPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJob3N0ZWRfYnV0dG9uX2lkIiB2YWx1ZT0iRkEyRDNGUExTVEFLSiIgLz4KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZW5fR0IvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lLiIgLz4KPGltZyBhbHQ9IiIgYm9yZGVyPSIwIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPgo8L2Zvcm0+PC9kaXY+JzsKCgl2YXIgJF9pbmhlcml0YWJsZXMgPSBhcnJheSggMCA9PiBhcnJheSgKCQkJJ2ZldV9hY2Nlc3MnICAgICA9Pi0xLAoJCQkncmVkaXJlY3RfcGFnZScgID0+LTEsCgkJCSdyZWRpcmVjdF9wYXJhbXMnPT4tMSwKCQkJJ2V2YWx1YXRlX3NtYXJ0eSc9Pi0xLAoJCQknZmV1X2FjdGlvbicgICAgID0+LTEsCgkJCSdzdGFydF9kYXRlJyAgICAgPT4tMSwKCQkJJ2VuZF9kYXRlJyAgICAgICA9Pi0xLAoJCQknaGlkZV9tZW51X2l0ZW0nID0+LTEsCgkJCSd1c2VfZXhwaXJlX2RhdGUnPT4tMSkpOwoJCglmdW5jdGlvbiBBZHZhbmNlZENvbnRlbnQoKQoJewoJCXBhcmVudDo6Q01TTW9kdWxlKCk7CgkJJHRoaXMtPlJlZ2lzdGVyQ29udGVudFR5cGUoJ0NvbnRlbnQyJywgZGlybmFtZShfX0ZJTEVfXykgLgoJCQlESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2NvbnRlbnR0eXBlLkNvbnRlbnQyLnBocCcsICdBZHZhbmNlZENvbnRlbnQnKTsKCX0KCQoJZnVuY3Rpb24gR2V0TmFtZSgpCgl7CgkJcmV0dXJuICdBZHZhbmNlZENvbnRlbnQnOwoJfQoJCglmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygnQWR2YW5jZWRDb250ZW50Jyk7Cgl9CgkKCWZ1bmN0aW9uIEdldFZlcnNpb24oKQoJewoJCXJldHVybiAnMC42LjUuMSc7Cgl9CgkKCWZ1bmN0aW9uIEdldEhlbHAoKQoJewoJCSRwYXRoID0gZGlybmFtZShfX0ZJTEVfXykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2RvYycgLiBESVJFQ1RPUllfU0VQQVJBVE9SOwoJCWlmKGZpbGVfZXhpc3RzKCRwYXRoIC4gJ2hlbHBfJyAuICR0aGlzLT5jdXJsYW5nIC4gJy5odG1sJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPl9wcCAuIGZpbGVfZ2V0X2NvbnRlbnRzKCRwYXRoIC4gJ2hlbHBfJyAuICR0aGlzLT5jdXJsYW5nIC4gJy5odG1sJyk7CgkJfQoJCXJldHVybiAkdGhpcy0+X3BwIC4gZmlsZV9nZXRfY29udGVudHMoJHBhdGggLiAnaGVscF9lbl9VUy5odG1sJyk7Cgl9CgkKCWZ1bmN0aW9uIEdldEF1dGhvcigpCgl7CgkJcmV0dXJuICdHZW9yZyBCdXNjaCAoTmFOKSc7Cgl9CgkKCWZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKCXsKCQlyZXR1cm47Cgl9CgkKCWZ1bmN0aW9uIEdldENoYW5nZUxvZygpCgl7CgkJcmV0dXJuICR0aGlzLT5fcHAgLiBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKF9fRklMRV9fKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnZG9jJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnY2hhbmdlbG9nLmh0bWwnKTsKCX0KCQoJZnVuY3Rpb24gSGFzQ29udGVudFR5cGUoKQoJewoJCXJldHVybiB0cnVlOwoJfQoJCglmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgkKCWZ1bmN0aW9uIEhhc0FkbWluKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCQoJZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKCXsKCQlyZXR1cm4gJ2V4dGVuc2lvbnMnOwoJfQoJCglmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsKCX0KCQoJZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBQcmVmZXJlbmNlcycpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXQgVGVtcGxhdGVzJyk7Cgl9CgkKCWZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKCXsKCQlyZXR1cm4gIjEuNi4xMCI7Cgl9CgkKCWZ1bmN0aW9uIE1heGltdW1DTVNWZXJzaW9uKCkKCXsKCQlyZXR1cm4gIjEuOC4zIjsKCX0KCQoJZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJywgJHRoaXMtPkdldFZlcnNpb24oKSk7Cgl9CgkKCWZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnLCAkdGhpcy0+R2V0VmVyc2lvbigpKTsKCX0KCQoJZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdjb25maXJtdW5pbnN0YWxsJywkdGhpcy0+bGFuZygnd2FybmluZ3VuaW5zdGFsbCcuJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VuaW5zdGFsbF9hY3Rpb24nKSkpOwoJfQoJCglmdW5jdGlvbiBIYW5kbGVzRXZlbnRzKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCQoJZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgPSAnJykKCXsKCQlzd2l0Y2goJGFjdGlvbikgewoJCQkKCQkJY2FzZSAnaW1wb3J0cGFnZXMnOgoJCQkJJHRoaXMtPkNoZWNrUGVybWlzc2lvbigpOwoJCQkJaWYoaXNzZXQoJHBhcmFtc1snb2xkX3R5cGUnXSkgJiYgaXNzZXQoJHBhcmFtc1snbmV3X3R5cGUnXSkKCQkJCSYmICRwYXJhbXNbJ29sZF90eXBlJ10gIT0gJycgJiYgJHBhcmFtc1snbmV3X3R5cGUnXSAhPSAnJwoJCQkJJiYgJHBhcmFtc1snbmV3X3R5cGUnXSAhPSAkcGFyYW1zWydvbGRfdHlwZSddCgkJCQkmJiAoJHBhcmFtc1snbmV3X3R5cGUnXSA9PSAnY29udGVudCcgfHwgJHBhcmFtc1snbmV3X3R5cGUnXSA9PSAnY29udGVudDInKQoJCQkJJiYgKCRwYXJhbXNbJ29sZF90eXBlJ10gPT0gJ2NvbnRlbnQnIHx8ICRwYXJhbXNbJ29sZF90eXBlJ10gPT0gJ2NvbnRlbnQyJykpCgkJCQl7CgkJCQkJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCQkJCSRxdWVyeSAgICA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuImNvbnRlbnQgU0VUIHR5cGUgPSA/IFdIRVJFIHR5cGUgPSA/IjsKCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWyduZXdfdHlwZSddLCRwYXJhbXNbJ29sZF90eXBlJ10pKTsKCQkJCQlpZigkZGJyZXN1bHQpCgkJCQkJewoJCQkJCQkkbWVzc2FnZSA9ICR0aGlzLT5sYW5nKCdzdWNjZXNzX2ltcG9ydHBhZ2VzJywkdGhpcy0+bGFuZygkcGFyYW1zWydvbGRfdHlwZSddKSwgJHRoaXMtPmxhbmcoJHBhcmFtc1snbmV3X3R5cGUnXSkpOwoJCQkJCQkkX3BhcmFtcyAgPSBhcnJheSgKCQkJCQkJCSduZXdfdHlwZScgPT4gJHBhcmFtc1snbmV3X3R5cGUnXSwKCQkJCQkJCSdvbGRfdHlwZScgPT4gJHBhcmFtc1snb2xkX3R5cGUnXSwKCQkJCQkJCSdtZXNzYWdlJyAgPT4gJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJF9wYXJhbXMgPSBhcnJheSgKCQkJCQkJCSduZXdfdHlwZScgICAgID0+ICRwYXJhbXNbJ25ld190eXBlJ10sCgkJCQkJCQknb2xkX3R5cGUnICAgICA9PiAkcGFyYW1zWydvbGRfdHlwZSddLAoJCQkJCQkJJ2Vycm9ybWVzc2FnZScgPT4gJ2Vycm9yX2ltcG9ydHBhZ2VzJyk7CgkJCQkJCSRlcnJvcm1lc3NhZ2UgPSAkdGhpcy0+bGFuZygnZXJyb3JfaW1wb3J0cGFnZXMnLCR0aGlzLT5sYW5nKCRwYXJhbXNbJ29sZF90eXBlJ10pLCAkdGhpcy0+bGFuZygkcGFyYW1zWyduZXdfdHlwZSddKSk7CgkJCQkJfQoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRfcGFyYW1zICAgICAgPSBhcnJheSgnZXJyb3JtZXNzYWdlJyA9PiAnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CgkJCQkJJGVycm9ybWVzc2FnZSA9ICR0aGlzLT5sYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnLCAnbmV3X3R5cGUsIG9sZF90eXBlJyk7CgkJCQl9CgkJCQkKCQkJCWlmKGlzc2V0KCRwYXJhbXNbJ2FqYXgnXSkpCgkJCQl7CgkJCQkJQG9iX2VuZF9jbGVhbigpOwoJCQkJCUBvYl9zdGFydCgpOwoJCQkJCWlmKGlzc2V0KCRlcnJvcm1lc3NhZ2UpKQoJCQkJCXsKCQkJCQkJZWNobyAnPGRpdiBjbGFzcz0icGFnZWVycm9yY29udGFpbmVyIj48dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPicuICRlcnJvcm1lc3NhZ2UgLiAnPC9saT48L3VsPjwvZGl2Pic7CgkJCQkJfQoJCQkJCWlmKGlzc2V0KCRtZXNzYWdlKSkKCQkJCQl7CgkJCQkJCWVjaG8gJzxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj48cCBjbGFzcz0icGFnZW1lc3NhZ2UiPicuJG1lc3NhZ2UuJzwvcD48L2Rpdj4nOwoJCQkJCX0KCQkJCQlvYl9lbmRfZmx1c2goKTsKCQkJCQlleGl0OwoJCQkJfQoJCQkJJF9wYXJhbXNbJ3N1Ym1pdCddID0gdHJ1ZTsKCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRfcGFyYW1zKTsKCQkJCWJyZWFrOwoJCQkKCQkJY2FzZSAnZGVsZXRlTXVsdGlJbnB1dCc6CgkJCQkkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCk7CgkJCQkkaXRlbXMgICAgICAgID0gYXJyYXkoKTsKCQkJCSRfcGFyYW1zICAgICAgPSBhcnJheSgpOwoJCQkJJG1lc3NhZ2UgICAgICA9ICcnOwoJCQkJJGVycm9ybWVzc2FnZSA9ICcnOwoJCQkJaWYoaXNzZXQoJHBhcmFtc1snaW5wdXRfaWQnXSkpCgkJCQl7CgkJCQkJJGl0ZW1zW10gPSAkcGFyYW1zWydpbnB1dF9pZCddOwoJCQkJfQoJCQkJZWxzZSBpZihpc3NldCgkcGFyYW1zWydzdWJtaXRfYnVsa2FjdGlvbiddKSkKCQkJCXsKCQkJCQlmb3JlYWNoKCRwYXJhbXMgYXMgJHBhcmFtX25hbWUgPT4gJHBhcmFtX3ZhbHVlKQoJCQkJCXsKCQkJCQkJaWYoc3RhcnRzd2l0aCgkcGFyYW1fbmFtZSwnbXVsdGlfaW5wdXQtJykpCgkJCQkJCXsKCQkJCQkJCSRpdGVtc1tdID0gJHBhcmFtX3ZhbHVlOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJaWYoJHRoaXMtPkRlbGV0ZU11bHRpSW5wdXQoJGl0ZW1zKSkKCQkJCXsKCQkJCQkkX3BhcmFtc1snbWVzc2FnZSddID0gJ211bHRpX2lucHV0X2RlbGV0ZWQnOwoJCQkJCSRtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdtdWx0aV9pbnB1dF9kZWxldGVkJykgLiAiPGJyIC8+IjsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkX3BhcmFtc1snZXJyb3JtZXNzYWdlJ10gPSAnZXJyb3JfZGVsZXRlX211bHRpX2lucHV0JzsKCQkJCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl9kZWxldGVfbXVsdGlfaW5wdXQnKSAuICI8YnIgLz4iOwoJCQkJfQoJCQkJaWYoISR0aGlzLT5EZWxldGVUcGxBc3NvYygnbXVsdGlfaW5wdXQnLCRpdGVtcykpCgkJCQl7CgkJCQkJJF9wYXJhbXNbJ21lc3NhZ2UnXSA9ICdlcnJvcl9kZWxldGVfbXVsdGlfaW5wdXRfdHBsX2Fzc29jcyc7CgkJCQkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfZGVsZXRlX211bHRpX2lucHV0X3RwbF9hc3NvY3MnKS4gIjxiciAvPiI7CgkJCQl9CgkJCQkkX3BhcmFtc1snYWN0aXZlX3RhYiddID0gJ211bHRpX2lucHV0JzsKCQkJCQoJCQkJaWYoaXNzZXQoJHBhcmFtc1snYWpheCddKSkKCQkJCXsKCQkJCQlAb2JfZW5kX2NsZWFuKCk7CgkJCQkJQG9iX3N0YXJ0KCk7CgkJCQkJaWYoJGVycm9ybWVzc2FnZSkKCQkJCQl7CgkJCQkJCWVjaG8gJzxkaXYgY2xhc3M9InBhZ2VlcnJvcmNvbnRhaW5lciI+PHVsIGNsYXNzPSJwYWdlZXJyb3IiPjxsaT4nLiAkZXJyb3JtZXNzYWdlIC4gJzwvbGk+PC91bD48L2Rpdj4nOwoJCQkJCX0KCQkJCQlpZigkbWVzc2FnZSkKCQkJCQl7CgkJCQkJCWVjaG8gJzxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj48cCBjbGFzcz0icGFnZW1lc3NhZ2UiPicuJG1lc3NhZ2UuJzwvcD48L2Rpdj4nOwoJCQkJCX0KCQkJCQlvYl9lbmRfZmx1c2goKTsKCQkJCQlleGl0OwoJCQkJfQoJCQkJCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkX3BhcmFtcyk7CgkJCQlicmVhazsKCQkJCgkJCWNhc2UgJ2RlbGV0ZU11bHRpSW5wdXRUcGwnOgoJCQkJJHRoaXMtPkNoZWNrUGVybWlzc2lvbigpOwoJCQkJJF9wYXJhbXMgPSBhcnJheSgpOwoJCQkJJG1lc3NhZ2UgICAgICA9ICcnOwoJCQkJJGVycm9ybWVzc2FnZSA9ICcnOwoJCQkJaWYoaXNzZXQoJHBhcmFtc1sndHBsX2lkJ10pKQoJCQkJewoJCQkJCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1zWyd0cGxfaWQnXSk7CgkJCQkJJF9wYXJhbXNbJ21lc3NhZ2UnXSA9ICdtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCc7CgkJCQkJJG1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ211bHRpX2lucHV0X3RwbF9kZWxldGVkJykgLiAiPGJyIC8+IjsKCQkJCX0KCQkJCWVsc2UgaWYoaXNzZXQoJHBhcmFtc1snc3VibWl0X2J1bGthY3Rpb24nXSkpCgkJCQl7CgkJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRwYXJhbV9uYW1lID0+ICRwYXJhbV92YWx1ZSkKCQkJCQl7CgkJCQkJCWlmKHN0YXJ0c3dpdGgoJHBhcmFtX25hbWUsJ211bHRpX2lucHV0X3RwbC0nKSkKCQkJCQkJewoJCQkJCQkJJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCRwYXJhbV92YWx1ZSk7CgkJCQkJCQkkX3BhcmFtc1snbWVzc2FnZSddID0gJ211bHRpX2lucHV0X3RwbF9kZWxldGVkJzsKCQkJCQkJCSRtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCcpIC4gIjxiciAvPiI7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQkkX3BhcmFtc1snYWN0aXZlX3RhYiddID0gJ211bHRpX2lucHV0X3RwbCc7CgkJCQlpZihpc3NldCgkcGFyYW1zWydhamF4J10pKQoJCQkJewoJCQkJCUBvYl9lbmRfY2xlYW4oKTsKCQkJCQlAb2Jfc3RhcnQoKTsKCQkJCQlpZigkZXJyb3JtZXNzYWdlKQoJCQkJCXsKCQkJCQkJZWNobyAnPGRpdiBjbGFzcz0icGFnZWVycm9yY29udGFpbmVyIj48dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPicuICRlcnJvcm1lc3NhZ2UgLiAnPC9saT48L3VsPjwvZGl2Pic7CgkJCQkJfQoJCQkJCWlmKCRtZXNzYWdlKQoJCQkJCXsKCQkJCQkJZWNobyAnPGRpdiBjbGFzcz0icGFnZW1jb250YWluZXIiPjxwIGNsYXNzPSJwYWdlbWVzc2FnZSI+Jy4kbWVzc2FnZS4nPC9wPjwvZGl2Pic7CgkJCQkJfQoJCQkJCW9iX2VuZF9mbHVzaCgpOwoJCQkJCWV4aXQ7CgkJCQl9CgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkX3BhcmFtcyk7CgkJCQlicmVhazsKCQkJCQoJCQljYXNlICdkZWZhdWx0JzoKCQkJY2FzZSAnc2F2ZVByZWZzJzoKCQkJY2FzZSAnZGVmYXVsdGFkbWluJzoKCQkJY2FzZSAnYWRkTXVsdGlJbnB1dCc6CgkJCWNhc2UgJ2VkaXRNdWx0aUlucHV0JzoKCQkJY2FzZSAnYWRkTXVsdGlJbnB1dFRwbCc6CgkJCWNhc2UgJ2VkaXRNdWx0aUlucHV0VHBsJzoKCQkJCXBhcmVudDo6RG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQ6IGJyZWFrOwoJCX0KCX0KCQoJZnVuY3Rpb24gRG9FdmVudCgkb3JpZ2luYXRvciwgJGV2ZW50bmFtZSwgJiRwYXJhbXMpCgl7CgkJaWYoJGV2ZW50bmFtZSA9PSAnQ29udGVudEVkaXRQb3N0JyAmJiBiYXNlbmFtZSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkgPT0gJ2NvcHljb250ZW50LnBocCcgJiYgaXNzZXQoJHBhcmFtc1snY29udGVudCddKSAmJiBpc19vYmplY3QoJHBhcmFtc1snY29udGVudCddKSAmJiAkcGFyYW1zWydjb250ZW50J10tPlR5cGUoKSA9PSAnY29udGVudDInKQoJCXsKCQkJaWYoaXNzZXQoJF9HRVRbJ2NvbnRlbnRfaWQnXSkpCgkJCXsKCQkJCSRvbGRfY29udGVudF9pZCA9ICRfR0VUWydjb250ZW50X2lkJ107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkb2xkX2NvbnRlbnRfaWQgPSAkcGFyYW1zWydjb250ZW50J10tPklkKCk7CgkJCX0KCQkJZm9yZWFjaCgkcGFyYW1zWydjb250ZW50J10tPmdldF9jb250ZW50X2Jsb2NrcygpIGFzICRibG9ja0luZm8pCgkJCXsKCQkJCSR0aGlzLT5TZXRJdGVtRGlzcGxheSgnYmxvY2snLCAkYmxvY2tJbmZvWydpZCddLCAkcGFyYW1zWydjb250ZW50J10tPklkKCksICRwYXJhbXNbJ2NvbnRlbnQnXS0+VGVtcGxhdGVJZCgpLAoJCQkJCSR0aGlzLT5HZXRJdGVtRGlzcGxheSgnYmxvY2snLCAkYmxvY2tJbmZvWydpZCddLCAkb2xkX2NvbnRlbnRfaWQsICRwYXJhbXNbJ2NvbnRlbnQnXS0+VGVtcGxhdGVJZCgpLCAhJGJsb2NrSW5mb1snY29sbGFwc2UnXSkpOwoJCQl9CgkJCWZvcmVhY2goJHBhcmFtc1snY29udGVudCddLT5nZXRfYmxvY2tfZ3JvdXBzKCkgYXMgJGdyb3VwSW5mbykKCQkJewoJCQkJJHRoaXMtPlNldEl0ZW1EaXNwbGF5KCdncm91cCcsICRncm91cEluZm9bJ2dyb3VwX2lkJ10sICRwYXJhbXNbJ2NvbnRlbnQnXS0+SWQoKSwgJHBhcmFtc1snY29udGVudCddLT5UZW1wbGF0ZUlkKCksCgkJCQkJJHRoaXMtPkdldEl0ZW1EaXNwbGF5KCdncm91cCcsICRncm91cEluZm9bJ2dyb3VwX2lkJ10sICRvbGRfY29udGVudF9pZCwgJHBhcmFtc1snY29udGVudCddLT5UZW1wbGF0ZUlkKCksICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY29sbGFwc2VfZ3JvdXBfZGVmYXVsdCcsMSkpKTsKCQkJfQoJCX0KCQllbHNlIGlmICgkZXZlbnRuYW1lID09ICdDb250ZW50UG9zdFJlbmRlcicpCgkJewoJCQlnbG9iYWwgJGdDbXM7CgkJCSRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgkJCSRyZWRpcmVjdCA9IGZhbHNlOwoJCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJCSMgZ2V0IGFsbCBjb250ZW50IG9mIHR5cGUgYWR2YW5jZWQgdGhhdCBuZWVkIHRvIGJlIHNldCB0byBhY3RpdmUvaW5hY3RpdmUKCQkJJHF1ZXJ5ID0gIlNFTEVDVCBDLmNvbnRlbnRfaWQsIEMuYWN0aXZlCgkJCQlGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudCBDCgkJCQlMRUZUIEpPSU4gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50X3Byb3BzIFVTRV9FWFAKCQkJCQlPTiBVU0VfRVhQLmNvbnRlbnRfaWQgPSBDLmNvbnRlbnRfaWQKCQkJCUxFRlQgSk9JTiAiIC4gY21zX2RiX3ByZWZpeCgpIC4gImNvbnRlbnRfcHJvcHMgU1RBUlRfREFURQoJCQkJCU9OIFNUQVJUX0RBVEUuY29udGVudF9pZCA9IEMuY29udGVudF9pZAoJCQkJTEVGVCBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudF9wcm9wcyBFTkRfREFURQoJCQkJCU9OIEVORF9EQVRFLmNvbnRlbnRfaWQgPSBDLmNvbnRlbnRfaWQKCQkJCVdIRVJFCgkJCQkJQy50eXBlID0gPyBBTkQKCQkJCQlVU0VfRVhQLnByb3BfbmFtZSA9ID8gQU5ECgkJCQkJVVNFX0VYUC5jb250ZW50ID0gPyBBTkQgKAoJCQkJCQkoCgkJCQkJCQlTVEFSVF9EQVRFLnByb3BfbmFtZSA9ID8gQU5ECgkJCQkJCQlTVEFSVF9EQVRFLmNvbnRlbnQgPD0gPyBBTkQKCQkJCQkJCUVORF9EQVRFLnByb3BfbmFtZSA9ID8gQU5ECgkJCQkJCQlFTkRfREFURS5jb250ZW50ID4gPyBBTkQKCQkJCQkJCUMuYWN0aXZlID0gPwoJCQkJCQkpCgkJCQkJCU9SCgkJCQkJCSgKCQkJCQkJCUVORF9EQVRFLnByb3BfbmFtZSA9ID8gQU5ECgkJCQkJCQlFTkRfREFURS5jb250ZW50IDw9ID8gQU5ECgkJCQkJCQlDLmFjdGl2ZSA9ID8KCQkJCQkJKQoJCQkJCSkKCQkJCSI7CgkJCQkKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2NvbnRlbnQyJywgJ3VzZV9leHBpcmVfZGF0ZScsCgkJCQknMScsICdzdGFydF9kYXRlJywgdGltZSgpLCAnZW5kX2RhdGUnLCB0aW1lKCksIDAsICdlbmRfZGF0ZScsCgkJCQl0aW1lKCksIDEpKTsKCQkJCgkJCSRjb250ZW50cyA9IGFycmF5KCk7CgkJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCQl7CgkJCQlpZigkcm93WydhY3RpdmUnXSkKCQkJCXsKCQkJCQkkY29udGVudHNbJHJvd1snY29udGVudF9pZCddXSA9IDA7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJGNvbnRlbnRzWyRyb3dbJ2NvbnRlbnRfaWQnXV0gPSAxOwoJCQkJfQoJCQl9CgkJCWlmKGNvdW50KCRjb250ZW50cykpCgkJCXsKCQkJCSRnQ21zLT5HZXRTbWFydHkoKS0+Y2xlYXJfYWxsX2NhY2hlKCk7CgkJCQlmb3JlYWNoKCRjb250ZW50cyBhcyAkY29udGVudElkPT4kYWN0aXZlKQoJCQkJewoJCQkJCSRxdWVyeSA9ICJVUERBVEUgIi4gY21zX2RiX3ByZWZpeCgpIC4gImNvbnRlbnQKCQkJCQkJU0VUIGFjdGl2ZSA9ID8gV0hFUkUgY29udGVudF9pZCA9ID8iOwoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRhY3RpdmUsICRjb250ZW50SWQpKTsKCQkJCQlpZigkY29udGVudElkID09ICRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfaWQpCgkJCQkJewoJCQkJCQkkcmVkaXJlY3QgPSAkY29udGVudElkOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlpZigkcmVkaXJlY3QpCgkJCXsKCQkJCSR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJlZGlyZWN0KTsKCQkJfQoJCX0KCX0KCQoJZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpCgl7CgkJJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CgkJZm9yZWFjaCgkdGhpcy0+R2V0QWxsb3dlZFBhcmFtZXRlcnMoKSBhcyAkayA9PiAkdikgewoJCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgkaywkdik7CgkJfQoJfQoJCglmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKCXsKCQlnbG9iYWwgJGNvbmZpZzsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZV9pZCcsICdtMV8nKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2RlYnVnJywkY29uZmlnWydkZWJ1ZyddID8gJ3RydWUnIDogJ1wnXCcnKTsKCQlyZXR1cm4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnaGVhZGVyLnRwbCcpOwoJfQoJCi8qKgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBOb3QgcGFydCBvZiB0aGUgQ01TbXMgbW9kdWxlIEFQSQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KCQoJcHJvdGVjdGVkIGZ1bmN0aW9uIEdldEFsbG93ZWRQYXJhbWV0ZXJzKCkgewoJCXJldHVybiBhcnJheSgKCQkJJ2NhbmNlbCcgPT4gQ0xFQU5fSU5ULAoJCQknaW5wdXRfaWQnID0+IENMRUFOX1NUUklORywKCQkJJ2lucHV0X2ZpZWxkcycgPT4gQ0xFQU5fU1RSSU5HLAoJCQknaW5wdXRfdHBsJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdzdWJtaXQnID0+IENMRUFOX0lOVCwKCQkJJ3RwbF9uYW1lJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSd0ZW1wbGF0ZScgPT4gQ0xFQU5fU1RSSU5HLAoJCQknYWN0aXZlJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdibG9jaycgPT4gQ0xFQU5fU1RSSU5HLAoJCQknZGVmYXVsdCcgPT4gQ0xFQU5fU1RSSU5HLAoJCQknc21hcnR5JyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdhbGxvd19ub25lJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdyZXR1cm5pZCcgPT4gQ0xFQU5fU1RSSU5HLAoJCQknYWN0aXZlX3RhYicgPT4gQ0xFQU5fU1RSSU5HLAoJCQknZXJyb3JtZXNzYWdlJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdtZXNzYWdlJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdvbGRfdHlwZScgPT4gQ0xFQU5fU1RSSU5HLAoJCQknbmV3X3R5cGUnID0+IENMRUFOX1NUUklORywKCQkJJ3RwbF9pZCcgPT4gQ0xFQU5fU1RSSU5HLAoJCQknc3VibWl0X3ByZWZzJyA9PiBDTEVBTl9JTlQsCgkJCSd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnID0+IENMRUFOX0lOVCwKCQkJJ3VuaW5zdGFsbF9hY3Rpb24nID0+IENMRUFOX0lOVCwKCQkJJ2Jsb2NrX2Rpc3BsYXlfc2V0dGluZ3MnID0+IENMRUFOX1NUUklORywKCQkJJ2NvbGxhcHNlX2Jsb2NrX2RlZmF1bHQnID0+IENMRUFOX0lOVCwKCQkJJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5ncycgPT4gQ0xFQU5fU1RSSU5HLAoJCQknZ3JvdXBfZGlzcGxheV9zZXR0aW5ncycgPT4gQ0xFQU5fU1RSSU5HLAoJCQknY29sbGFwc2VfZ3JvdXBfZGVmYXVsdCcgPT4gQ0xFQU5fSU5ULAoJCQkndXNlX2V4cGlyZV9kYXRlJyA9PiBDTEVBTl9JTlQsCgkJCSdzdGFydF9kYXRlXzEnID0+IENMRUFOX0lOVCwKCQkJJ3N0YXJ0X2RhdGVfMicgPT4gQ0xFQU5fSU5ULAoJCQknZW5kX2RhdGVfMScgPT4gQ0xFQU5fSU5ULAoJCQknZW5kX2RhdGVfMicgPT4gQ0xFQU5fSU5ULAoJCQknZmV1X2FjY2VzcycgPT4gQ0xFQU5fSU5ULAoJCQkncmVkaXJlY3RfcGFnZScgPT4gQ0xFQU5fSU5ULAoJCQknaW5oZXJpdF9yZWRpcmVjdF9wYXJhbXMnID0+IENMRUFOX0lOVCwKCQkJJ3JlZGlyZWN0X3BhcmFtcycgPT4gQ0xFQU5fU1RSSU5HLAoJCQknZXZhbHVhdGVfc21hcnR5JyA9PiBDTEVBTl9JTlQsCgkJCSdmZXVfYWN0aW9uJyA9PiBDTEVBTl9JTlQsCgkJCSdoaWRlX21lbnVfaXRlbScgPT4gQ0xFQU5fSU5ULAoJCQknaXRlbV90eXBlJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdpdGVtX2Rpc3BsYXknID0+IENMRUFOX0lOVCwKCQkJJ2l0ZW1faWQnID0+IENMRUFOX1NUUklORywKCQkJJ2NvbnRlbnRfaWQnID0+IENMRUFOX0lOVCwKCQkJJ3RlbXBsYXRlX2lkJyA9PiBDTEVBTl9JTlQsCgkJCSdzZXRfZGVmYXVsdCcgPT4gQ0xFQU5fSU5ULAoJCQknYWpheCcgPT4gQ0xFQU5fSU5ULAoJCQknc2VyaWFsaXplZF9jb250ZW50JyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdhZGRpbmcnID0+IENMRUFOX0lOVCwKCQkJJ3N1Ym1pdF9idWxrYWN0aW9uJyA9PiBDTEVBTl9JTlQsCgkJCSdjb250ZW50X3R5cGUnID0+IENMRUFOX1NUUklORywKCQkJJ3BhcmVudF9pZCcgPT4gQ0xFQU5fSU5ULAoJCQknY2FjaGFibGUnID0+IENMRUFOX0lOVCwKCQkJJ3NlYXJjaGFibGUnID0+IENMRUFOX0lOVCwKCQkJJ3N0YXJ0X2RhdGUnID0+IENMRUFOX0lOVCwKCQkJJ21ldGFkYXRhJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdlbmRfZGF0ZScgPT4gQ0xFQU5fSU5ULAoJCQknQWR2YW5jZWRDb250ZW50U3RhcnRUaW1lJyA9PiBDTEVBTl9JTlQsCgkJCSdBZHZhbmNlZENvbnRlbnRTdGFydERhdGUnID0+IENMRUFOX0lOVCwKCQkJJ0FkdmFuY2VkQ29udGVudEVuZFRpbWUnID0+IENMRUFOX0lOVCwKCQkJJ0FkdmFuY2VkQ29udGVudEVuZERhdGUnID0+IENMRUFOX0lOVCwKCQkJJ2NvbGxhcHNlJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdlZGl0b3JfZ3JvdXBzJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdlZGl0b3JfdXNlcnMnID0+IENMRUFOX1NUUklORywKCQkJJ2Jsb2NrX3R5cGUnID0+IENMRUFOX1NUUklORywKCQkJJ3R5cGUnID0+IENMRUFOX1NUUklORywKCQkJJ3RyYW5zbGF0ZV9sYWJlbHMnID0+IENMRUFOX1NUUklORywKCQkJJ3RyYW5zbGF0ZV92YWx1ZXMnID0+IENMRUFOX1NUUklORywKCQkJJ2xhYmVsJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdyZXF1aXJlZCcgPT4gQ0xFQU5fU1RSSU5HLAoJCQknc3R5bGUnID0+IENMRUFOX1NUUklORywKCQkJJ3NpemUnID0+IENMRUFOX0lOVCwKCQkJJ3BhZ2VfdGFiJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdibG9ja190YWInID0+IENMRUFOX1NUUklORywKCQkJJ2Jsb2NrX2dyb3VwJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdkZXNjcmlwdGlvbicgPT4gQ0xFQU5fU1RSSU5HLAoJCQknbm9fY29sbGFwc2UnID0+IENMRUFOX1NUUklORywKCQkJJ21heGxlbmd0aCcgPT4gQ0xFQU5fSU5ULAoJCQkndXNld3lzaXd5ZycgPT4gQ0xFQU5fU1RSSU5HLAoJCQknb25lbGluZScgPT4gQ0xFQU5fU1RSSU5HLAoJCQknc2hvdzI0aCcgPT4gQ0xFQU5fSU5ULAoJCQknbW9kZScgPT4gQ0xFQU5fU1RSSU5HLAoJCQknc3RhcnRfaG91cicgPT4gQ0xFQU5fSU5ULAoJCQknZW5kX2hvdXInID0+IENMRUFOX0lOVCwKCQkJJ3N0YXJ0X21pbnV0ZScgPT4gQ0xFQU5fSU5ULAoJCQknZW5kX21pbnV0ZScgPT4gQ0xFQU5fSU5ULAoJCQknc3RhcnRfc2Vjb25kJyA9PiBDTEVBTl9JTlQsCgkJCSdlbmRfc2Vjb25kJyA9PiBDTEVBTl9JTlQsCgkJCSdzdGVwX2hvdXJzJyA9PiBDTEVBTl9JTlQsCgkJCSdzdGVwX21pbnV0ZXMnID0+IENMRUFOX0lOVCwKCQkJJ3N0ZXBfc2Vjb25kcycgPT4gQ0xFQU5fSU5ULAoJCQknc2hvd19jbG9jaycgPT4gQ0xFQU5fU1RSSU5HLAoJCQknc29ydGFibGUnID0+IENMRUFOX1NUUklORywKCQkJJ2RlbGltaXRlcicgPT4gQ0xFQU5fU1RSSU5HLAoJCQknaXRlbXMnID0+IENMRUFOX1NUUklORywKCQkJJ3ZhbHVlcycgPT4gQ0xFQU5fU1RSSU5HLAoJCQknbW9kdWxlJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdwYXJhbXMnID0+IENMRUFOX05PTkUsCgkJCSdwcmVmaXgnID0+IENMRUFOX1NUUklORywKCQkJJ2V4Y2x1ZGUnID0+IENMRUFOX1NUUklORywKCQkJJ2RpcicgPT4gQ0xFQU5fU1RSSU5HLAoJCQkndmFsdWVfZGVsaW1pdGVyJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdpbnB1dF9kZWxpbWl0ZXInID0+IENMRUFOX1NUUklORywKCQkJJ2FsbG93ZWRfYmxvY2tfdHlwZXMnID0+IENMRUFOX1NUUklORywKCQkJJ2FsbG93ZWRfbXVsdGlfaW5wdXRzJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdhbGxvd2VkX21vZHVsZXMnID0+IENMRUFOX1NUUklORywKCQkJJ2FsbG93ZWRfYmxvY2tfcGFyYW1zJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdhbGxvd2VkX21vZHVsZV9wYXJhbXMnID0+IENMRUFOX1NUUklORywKCQkJJ2RhdGVfZm9ybWF0JyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdpbnB1dG5hbWUnID0+IENMRUFOX1NUUklORywKCQkJJ2Zyb20nID0+IENMRUFOX0lOVCwKCQkJJ3RvJyA9PiBDTEVBTl9JTlQsCgkJCSdzdGVwJyA9PiBDTEVBTl9JTlQsCgkJCSdyb3VuZCcgPT4gQ0xFQU5fSU5ULAoJCQknaGV0ZXJvZ2VuZWl0eScgPT4gQ0xFQU5fU1RSSU5HLAoJCQknZGltZW5zaW9uJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdsaW1pdHMnID0+IENMRUFOX1NUUklORywKCQkJJ3NjYWxlJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdza2luJyA9PiBDTEVBTl9TVFJJTkcsCgkJCSdjYWxjdWxhdGUnID0+IENMRUFOX1NUUklORywKCQkJJ29uc3RhdGVjaGFuZ2UnID0+IENMRUFOX1NUUklORywKCQkJJ2NhbGxiYWNrJyA9PiBDTEVBTl9TVFJJTkcpOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gSXNWYXJFbXB0eSgkdmFyLCAkdHJpbSwgJHVuc2V0RW1wdHlJbmRleGVzKQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIGNoZWNrcyBpZiBhIHZhciBpcyBlbXB0eS4gaWYgdmFyIGlzIGFuIGFycmF5IGl0IHJlY3Vyc2l2bGV5IGNoZWNrcyBhbGwgZWxlbWVudHMKCSAqCgkgKiBAcGFyYW0gbWl4ZWQgJHZhciAtIHRoZSB2YXIgdG8gY2hlY2sgZm9yIGVtcHR5IHZhbHVlKHMpCgkgKiBAcGFyYW0gYm9vbGVhbiAkdHJpbSAtIHRydWUgdG8gdHJpbSBvZmYgc3BhY2VzCgkgKiBAcGFyYW0gYm9vbGVhbiAkdW5zZXRFbXB0eUluZGV4ZXMgLSB0cnVlIHRvIGRlbGV0ZSBlbXB0eSBlbGVtZW50cyBmcm9tIGFycmF5CgkgKiBAcmV0dXJuIGJvb2xlYW4gLSB0cnVlIGlmIGVtcHR5LCBmYWxzZSBpZiBub3QKCSAqLwoJZnVuY3Rpb24gSXNWYXJFbXB0eSgmJHZhciwgJHRyaW0gPSB0cnVlLCAkdW5zZXRFbXB0eUluZGV4ZXMgPSBmYWxzZSkKCXsKCQlpZiAoaXNfYXJyYXkoJHZhcikpCgkJewoJCQlmb3JlYWNoICgkdmFyIGFzICRrPT4kdikKCQkJewoJCQkJaWYgKCEkdGhpcy0+SXNWYXJFbXB0eSgkdikpCgkJCQl7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWlmKCR1bnNldEVtcHR5SW5kZXhlcykKCQkJCQkJdW5zZXQoJHZhclska10pOwoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoJCQl9CgkJfQoJCWVsc2UgaWYoJHRyaW0gJiYgdHJpbSgkdmFyKSA9PSAnJykKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQllbHNlIGlmKCR2YXIgPT0gJycpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gQ2xlYW5BcnJheSgkYXJyYXkpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogcmVtb3ZlcyBlbXB0eSBlbGVtZW50cyBmcm9tIGFuIGFycmF5CgkgKiAoY2FuIGJlIHVzZWZ1bCB3aGVuIHVzaW5nIGZ1bmN0aW9uIGV4cGxvZGUgdG8gY3JlYXRlIHRoZSBhcnJheSBvZiBhIGNzdikKCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGFycmF5IC0gdGhlIGFycmF5IHRvIGNsZWFuIHVwCgkgKiBAcmV0dXJuIGFycmF5IC0gYW4gYXJyYXkgd2l0aG91dCBlbXB0eSBlbGVtZW50cyBvciBhbiBlbXB0eSBhcnJheQoJICovCglmdW5jdGlvbiBDbGVhbkFycmF5KCRhcnJheSkKCXsKCQlpZiAoaXNfYXJyYXkoJGFycmF5KSkKCQl7CgkJCWZvcmVhY2ggKCRhcnJheSBhcyAkaz0+JHYpCgkJCXsKCQkJCWlmICgkdGhpcy0+SXNWYXJFbXB0eSgkdix0cnVlLHRydWUpKQoJCQkJewoJCQkJCXVuc2V0KCRhcnJheVska10pOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWlmKGlzX2FycmF5KCR2KSkKCQkJCQl7CgkJCQkJCSR2ID0gJHRoaXMtPkNsZWFuQXJyYXkoJHYpOwoJCQkJCQlpZigkdGhpcy0+SXNWYXJFbXB0eSgkdix0cnVlLHRydWUpKQoJCQkJCQkJdW5zZXQoJGFycmF5WyRrXSk7CgkJCQkJCWVsc2UKCQkJCQkJCSRhcnJheVska10gPSAkdjsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJcmV0dXJuICRhcnJheTsKCQl9CgkJcmV0dXJuIGFycmF5KCk7Cgl9CgkKCQoJLyoqCgkgKiBmdW5jdGlvbiBHZXRQYWdlcygpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogZ2V0cyBhbGwgcGFnZXMgdG8gbGlzdCBpbiBhIGRyb3Bkb3duCgkgKgoJICogQHJldHVybiBhcnJheSAtIGEgc2V0IG9mIHBhZ2VzCgkgKi8KCWZ1bmN0aW9uIEdldFBhZ2VzKCkKCXsKCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCBDLmFjdGl2ZSwgQy50eXBlLCBDLmNvbnRlbnRfaWQsIEMucGFyZW50X2lkLCBDLmhpZXJhcmNoeSwgQy5tZW51X3RleHQsIENQLmNvbnRlbnQgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gImNvbnRlbnQgQwoJCQlMRUZUIEpPSU4gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50X3Byb3BzIENQIE9OIENQLmNvbnRlbnRfaWQgPSBDLmNvbnRlbnRfaWQgQU5EIENQLnByb3BfbmFtZSA9ID8KCQkJT1JERVIgQlkgaGllcmFyY2h5IjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgncmVkaXJlY3RfcGFnZScpKTsKCQlpZighJHBhZ2VzID0gJGRicmVzdWx0LT5HZXRBcnJheSgpKQoJCQlyZXR1cm4gYXJyYXkoKTsKCQlyZXR1cm4gJHBhZ2VzOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gQ3JlYXRlUmVkaXJlY3REcm9wZG93bigpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogdGhpcyBjcmVhdGVzIGEgZHJvcGRvd24gb2YgcGFnZXMgaW5jbHVkaW5nIG9ubHkgcGFnZXMgb2YgdHlwZSBjb250ZW50IGJ1dAoJICogZXhjbHVkaW5nIHRoZSBjdXJyZW50IHBhZ2UgYW5kIHBhZ2VzIHRoYXQgbWF5IG9ubHkgYmUgYWNjZXNzZWQgYnkgZnJvbnRlbmQgdXNlcnMKCSAqCgkgKiBAcmV0dXJuIHN0cmluZyAtIEhUTUwgc2VsZWN0IGVsZW1lbnQgd2l0aCBvcHRpb25zCgkgKi8KCWZ1bmN0aW9uIENyZWF0ZVJlZGlyZWN0RHJvcGRvd24oJGlkID0gJycsICRuYW1lID0gJ3JlZGlyZWN0X3BhZ2UnLCAkc2VsZWN0ZWRQYWdlID0gJycsICRjdXJyZW50UGFnZSA9ICcnKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkcGFnZXMgICAgICA9ICR0aGlzLT5HZXRQYWdlcygpOwoJCSRkcm9wZG93biAgID0gJzxzZWxlY3QgbmFtZT0iJy4kaWQuJG5hbWUuJyIgb25jaGFuZ2U9ImlmKCF0aGlzLnZhbHVlKXtqUXVlcnkoXCcuQWR2YW5jZWRDb250ZW50X3JlZGlyZWN0X3BhcmFtcyBpbnB1dFwnKS5hdHRyKFwnZGlzYWJsZWRcJyxcJ2Rpc2FibGVkXCcpO2lmKGpRdWVyeShcJy5BZHZhbmNlZENvbnRlbnRfcmVkaXJlY3RfcGFyYW1zXCcpLmNzcyhcJ2Rpc3BsYXlcJykgIT0gXCdub25lXCcpe2pRdWVyeShcJy5BZHZhbmNlZENvbnRlbnRfcmVkaXJlY3RfcGFyYW1zXCcpLnNsaWRlVXAoKTt9fWVsc2V7alF1ZXJ5KFwnLkFkdmFuY2VkQ29udGVudF9yZWRpcmVjdF9wYXJhbXMgaW5wdXRcJykucmVtb3ZlQXR0cihcJ2Rpc2FibGVkXCcpO2lmKGpRdWVyeShcJy5BZHZhbmNlZENvbnRlbnRfcmVkaXJlY3RfcGFyYW1zXCcpLmNzcyhcJ2Rpc3BsYXlcJykgPT0gXCdub25lXCcpe2pRdWVyeShcJy5BZHZhbmNlZENvbnRlbnRfcmVkaXJlY3RfcGFyYW1zXCcpLnNsaWRlRG93bigpO319IiAnLighJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV9hZHZhbmNlZF9wYWdlb3B0aW9ucycsMSkgPyAnZGlzYWJsZWQ9ImRpc2FibGVkIicgOiAnJykgLic+JzsKCQkkZHJvcGRvd24gIC49ICc8b3B0aW9uIHZhbHVlPSIiJyAuICgkc2VsZWN0ZWRQYWdlID09ICcnPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpIC4gJz4nIC4gJHRoaXMtPmxhbmcoJ2hpZGVfY29udGVudCcpIC4gJzwvb3B0aW9uPic7CgkJJGRyb3Bkb3duICAuPSAnPG9wdGlvbiB2YWx1ZT0iLTEiJyAuICgkc2VsZWN0ZWRQYWdlID09IC0xPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpIC4gJz4nIC4gJHRoaXMtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKSAuICc8L29wdGlvbj4nOwoJCWlmKGNvdW50KCRwYWdlcykpCgkJewoJCQkkZHJvcGRvd24gIC49ICc8b3B0Z3JvdXAgbGFiZWw9Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI+JzsKCQkJJGNvbnRlbnRvcHMgPSYgJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJCWZvcmVhY2goJHBhZ2VzIGFzICRwYWdlKQoJCQl7CgkJCQkkcGFnZVsnY29udGVudCddID0gKCRwYWdlWydjb250ZW50J10gPCAwID8gJHRoaXMtPkluaGVyaXRQYXJlbnRQcm9wKCRwYWdlWydjb250ZW50X2lkJ10sICRwYWdlWydwYXJlbnRfaWQnXSwgJ3JlZGlyZWN0X3BhZ2UnKSA6ICRwYWdlWydjb250ZW50J10pOwoJCQkJJGRpc2FibGVkID0gJyc7CgkJCQkkaW5kZW50ICAgPSAnJzsKCQkJCWZvcmVhY2goZXhwbG9kZSgnLicsJHBhZ2VbJ2hpZXJhcmNoeSddKSBhcyAkdikKCQkJCXsKCQkJCQkkaW5kZW50IC49ICcmbmJzcDsmbmJzcDsmbmJzcDsnOwoJCQkJfQoJCQkJIyBkb24ndCByZWRpcmVjdCB0byBwYWdlcyB3aXRoIG5vIHB1YmxpYyBhY2Nlc3MsIGludmFsaWQgY29udGVudCB0eXBlLCBpbmFjdGl2ZSBvciBzYW1lIGNvbnRlbnQgaWQKCQkJCWlmKCRwYWdlWydhY3RpdmUnXSAhPSAxIHx8ICRwYWdlWydjb250ZW50J108PjAgfHwgJHBhZ2VbJ2NvbnRlbnRfaWQnXSA9PSAkY3VycmVudFBhZ2UgfHwgKCRwYWdlWyd0eXBlJ10gIT0gJ2NvbnRlbnQnICYmICRwYWdlWyd0eXBlJ10gIT0gJ2NvbnRlbnQyJykpCgkJCQl7CgkJCQkJJGRpc2FibGVkID0gJyBkaXNhYmxlZD0iZGlzYWJsZWQiJzsKCQkJCX0KCQkJCSRkcm9wZG93biAuPSAnPG9wdGlvbicuICRkaXNhYmxlZCAuJyB2YWx1ZT0iJyAuICRwYWdlWydjb250ZW50X2lkJ10gLiAnIiAnIC4KCQkJCQkoJHNlbGVjdGVkUGFnZSA9PSAkcGFnZVsnY29udGVudF9pZCddICYmICRkaXNhYmxlZCA9PSAnJz8nc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpIC4gJz4nIC4gJGluZGVudCAuIAoJCQkJCSRjb250ZW50b3BzLT5DcmVhdGVGcmllbmRseUhpZXJhcmNoeVBvc2l0aW9uKCRwYWdlWydoaWVyYXJjaHknXSkgLgoJCQkJCScgLSAnIC4gJHBhZ2VbJ21lbnVfdGV4dCddIC4gKCRkaXNhYmxlZCAhPSAnJz8nICgnIC4gJHRoaXMtPmxhbmcoJ2ludmFsaWQnKSAuICcpJzonJykgLiAnPC9vcHRpb24+JzsKCQkJfQoJCQkkZHJvcGRvd24gIC49ICc8L29wdGdyb3VwPic7CgkJfQoJCSRkcm9wZG93biAuPSAnPC9zZWxlY3Q+JzsKCQlyZXR1cm4gJGRyb3Bkb3duOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gSXNUcnVlKCR2YWx1ZSkKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiBjaGVja3MgaWYgYSB2YWx1ZSBpcyBsaXRlcmFsbHkgInRydWUiCgkgKiBjYW4gYmUgdXNlZnVsbCB3aGVuIGNoZWNraW5nIHNtYXJ0eSBwYXJhbXMgZm9yIHRoZSB2YWx1ZSB0cnVlCgkgKgoJICogQHBhcmFtIG1peGVkICR2YWx1ZSAtIHRoZSB2YWx1ZSB0byBjaGVjawoJICogQHJldHVybiBib29sCgkgKi8KCWZ1bmN0aW9uIElzVHJ1ZSgkdmFsdWUpCgl7CgkJcmV0dXJuIChzdHJ0b2xvd2VyKCR2YWx1ZSkgPT09ICd0cnVlJyB8fCAkdmFsdWUgPT09IDEgfHwgJHZhbHVlID09PSAnMScgfHwgJHZhbHVlID09PSB0cnVlKTsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIElzRmFsc2UoJHZhbHVlKQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIGNoZWNrcyBpZiBhIHZhbHVlIGlzIGxpdGVyYWxseSAiZmFsc2UiCgkgKiBjYW4gYmUgdXNlZnVsbCB3aGVuIGNoZWNraW5nIHNtYXJ0eSBwYXJhbXMgZm9yIHRoZSB2YWx1ZSBmYWxzZQoJICoKCSAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgLSB0aGUgdmFsdWUgdG8gY2hlY2sKCSAqIEByZXR1cm4gYm9vbAoJICovCglmdW5jdGlvbiBJc0ZhbHNlKCR2YWx1ZSkKCXsKCQlyZXR1cm4gKHN0cnRvbG93ZXIoJHZhbHVlKSA9PT0gJ2ZhbHNlJyB8fCAkdmFsdWUgPT09ICcwJyB8fCAkdmFsdWUgPT09IDAgfHwgJHZhbHVlID09PSBmYWxzZSB8fCAkdmFsdWUgPT09ICcnKTsKCX0KCQoJCgkvKioKCSAqIHNhdmVzIHRoZSBkaXNwbGF5IHN0YXR1cyBvZiBjb250ZW50IGJsb2NrcywgY29udGVudCBibG9ja3MgbWVzc2FnZXMgYW5kIGJsb2NrIGdyb3VwcwoJICoKCSAqIEBwYXJhbSBpbnQgJGNvbnRlbnRfaWQgLSB0aGUgaWQgb2YgdGhlIGNvbnRlbnQgd2hlcmUgdG8gc2V0IHRoZSBkaXNwbGF5IHN0YXR1cwoJICogQHBhcmFtIGludCAkdGVtcGxhdGVfaWQgLSB0aGUgaWQgb2YgdGhlIHRlbXBsYXRlIHdoZXJlIHRvIHNldCB0aGUgZGlzcGxheSBzdGF0dXMKCSAqIEBwYXJhbSBzdHJpbmcgJGJsb2NrX2lkIC0gdGhlIGNvbnRlbnQgYmxvY2sgdG8gdG9nZ2xlIHRoZSBibG9jayBpdHNlbGYgb3IgdGhlIG1lc3NhZ2UvZ3JvdXAKCSAqIEBwYXJhbSBpbnQgJGRpc3BsYXkgLSAwIHRvIGhpZGUsIDEgdG8gc2hvdwoJICoKCSAqLwoJZnVuY3Rpb24gU2V0SXRlbURpc3BsYXkoJGl0ZW1fdHlwZSwgJGl0ZW1faWQsICRjb250ZW50X2lkLCAkdGVtcGxhdGVfaWQsICRkaXNwbGF5KQoJewoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCQkkcXVlcnkgPSAiU0VMRUNUIGl0ZW1fZGlzcGxheSBGUk9NICIuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfQWR2YW5jZWRDb250ZW50XyIuJGl0ZW1fdHlwZS4iZGlzcGxheQoJCQlXSEVSRSB1c2VyX2lkID0gPyBBTkQgaXRlbV9pZCA9ID8gQU5EICI7CgkJCgkJJHEgPSBhcnJheSgpOwoJCSRwID0gYXJyYXkoZ2V0X3VzZXJpZCgpLCAkaXRlbV9pZCk7CgkJCgkJaWYoJGNvbnRlbnRfaWQKCQkmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2NvbnRlbnQnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpKQoJCXsKCQkJJHFbXSA9ICJjb250ZW50X2lkID0gPyI7CgkJCSRwW10gPSAkY29udGVudF9pZDsKCQl9CgkJCgkJaWYoJHRlbXBsYXRlX2lkID4gMAoJCSYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAndGVtcGxhdGUnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpKQoJCXsKCQkJJHFbXSA9ICJ0ZW1wbGF0ZV9pZCA9ID8iOwoJCQkkcFtdID0gJHRlbXBsYXRlX2lkOwoJCX0KCQkKCQlpZighY291bnQoJHEpKSB7CgkJCXJldHVybjsKCQl9CgkJCgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJykKCQl7CgkJCSRxdWVyeSAuPSAiKCIgLiBpbXBsb2RlKCIgT1IgIiwkcSkgLiAiKSI7CgkJfQoJCWVsc2UgaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgyJykKCQl7CgkJCSRxdWVyeSAuPSAiKCIgLiBpbXBsb2RlKCIgQU5EICIsJHEpIC4gIikiOwoJCX0KCQllbHNlCgkJewoJCQkkcXVlcnkgLj0gJHFbMF07CgkJfQoJCQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwKTsKCQlpZigkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewoJCQllY2hvICRkaXNwbGF5OwoJCQlhcnJheV91bnNoaWZ0KCRwLCRkaXNwbGF5KTsKCQkJJHF1ZXJ5ID0gIlVQREFURSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiRpdGVtX3R5cGUuImRpc3BsYXkKCQkJCVNFVCBpdGVtX2Rpc3BsYXkgPSA/IFdIRVJFIHVzZXJfaWQgPSA/IEFORCBpdGVtX2lkID0gPyBBTkQgIi5pbXBsb2RlKCcgQU5EICcsJHEpOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcCk7CgkJfQoJCWVsc2UKCQl7CgkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLiBjbXNfZGJfcHJlZml4KCkgLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50XyIuJGl0ZW1fdHlwZS4iZGlzcGxheQoJCQkJKHVzZXJfaWQsIGNvbnRlbnRfaWQsIHRlbXBsYXRlX2lkLCBpdGVtX2lkLCBpdGVtX2Rpc3BsYXkpIFZBTFVFUyAoPyw/LD8sPyw/KSI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KGdldF91c2VyaWQoKSwgJGNvbnRlbnRfaWQsICR0ZW1wbGF0ZV9pZCwgJGl0ZW1faWQsICRkaXNwbGF5KSk7CgkJfQoJCSR0aGlzLT5fZGlzcGxheVNldHRpbmdzWyRpdGVtX3R5cGVdW2ltcGxvZGUoJ18nLGFycmF5KCRjb250ZW50X2lkLCR0ZW1wbGF0ZV9pZCkpXVskaXRlbV9pZF0gPSAkZGlzcGxheTsKCX0KCQoJCgkvKioKCSAqIGdldHMgdGhlIGRpc3BsYXkgc3RhdHVzIG9mIGNvbnRlbnQgYmxvY2tzLCBjb250ZW50IGJsb2NrcyBtZXNzYWdlcyBvciBibG9jayBncm91cHMKCSAqCgkgKiBAcGFyYW0gaW50ICRpdGVtX3R5cGUgLSB0aGUgaWQgb2YgdGhlIGNvbnRlbnQvdGVtcGxhdGUgdG8gZ2V0IHRoZSBkaXNwbGF5IHN0YXR1cyBmcm9tCgkgKiBAcGFyYW0gaW50ICR0cGxfb3JfY29udGVudF9pZCAtIHRoZSBpZCBvZiB0aGUgY29udGVudC90ZW1wbGF0ZSB0byBnZXQgdGhlIGRpc3BsYXkgc3RhdHVzIGZyb20KCSAqIEBwYXJhbSBzdHJpbmcgJGJsb2NrX2lkIC0gdGhlIGNvbnRlbnQgYmxvY2sgdG8gZ2V0IHRoZSBkaXNwbGF5IHN0YXR1cyBmcm9tCgkgKiBAcGFyYW0gaW50ICRkZWZhdWx0X3ZhbHVlIC0gdGhlIGRlZmF1bHQgc3RhdHVzIGlmIG5vdGhpbmcgaXMgZm91bmQKCSAqCgkgKiBAcmV0dXJuIGJvb2xlYW4gLSAwID0gaGlkZGVuLCAxID0gc2hvd24KCSAqLwoJZnVuY3Rpb24gR2V0SXRlbURpc3BsYXkoJGl0ZW1fdHlwZSwgJGl0ZW1faWQsICRjb250ZW50X2lkLCAkdGVtcGxhdGVfaWQsICRkZWZhdWx0X3ZhbHVlID0gMSkKCXsKCQkkaWRzID0gYXJyYXkoKTsKCQkKCQlpZigkY29udGVudF9pZAoJCSYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnY29udGVudCcKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgyJykpCgkJewoJCQkkaWRzW10gPSAkY29udGVudF9pZDsKCQl9CgkJCgkJaWYoJHRlbXBsYXRlX2lkID4gMAoJCSYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAndGVtcGxhdGUnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpKQoJCXsKCQkJJGlkc1tdID0gJHRlbXBsYXRlX2lkOwoJCX0KCQkKCQlpZighY291bnQoJGlkcykpCgkJewoJCQlyZXR1cm4gJGRlZmF1bHRfdmFsdWU7CgkJfQoJCQoJCWlmKCFpc3NldCgkdGhpcy0+X2Rpc3BsYXlTZXR0aW5nc1skaXRlbV90eXBlXVtpbXBsb2RlKCdfJywkaWRzKV0pKQoJCXsKCQkJJHRoaXMtPkdldEFsbEl0ZW1zRGlzcGxheSgkaXRlbV90eXBlLCAkY29udGVudF9pZCwgJHRlbXBsYXRlX2lkKTsKCQl9CgkJaWYoIWlzc2V0KCR0aGlzLT5fZGlzcGxheVNldHRpbmdzWyRpdGVtX3R5cGVdW2ltcGxvZGUoJ18nLCRpZHMpXVskaXRlbV9pZF0pKQoJCXsKCQkJJHRoaXMtPl9kaXNwbGF5U2V0dGluZ3NbJGl0ZW1fdHlwZV1baW1wbG9kZSgnXycsJGlkcyldWyRpdGVtX2lkXSA9ICRkZWZhdWx0X3ZhbHVlOwoJCX0KCQlyZXR1cm4gJHRoaXMtPl9kaXNwbGF5U2V0dGluZ3NbJGl0ZW1fdHlwZV1baW1wbG9kZSgnXycsJGlkcyldWyRpdGVtX2lkXTsKCX0KCQoJCgkvKioKCSAqIGdldHMgdGhlIGRpc3BsYXkgc3RhdHVzIG9mIGFsbCBjb250ZW50IGJsb2NrcywgY29udGVudCBibG9ja3MgbWVzc2FnZXMgb3IgYmxvY2sgZ3JvdXBzIG9mIGEgZ2l2ZW4gdGVtcGxhdGUgb3IgY29udGVudCBpZAoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAaWdub3JlCgkgKi8KCWZ1bmN0aW9uIEdldEFsbEl0ZW1zRGlzcGxheSgkaXRlbV90eXBlLCAkY29udGVudF9pZCwgJHRlbXBsYXRlX2lkKQoJewoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiRpdGVtX3R5cGUuImRpc3BsYXkKCQkJV0hFUkUgdXNlcl9pZCA9ID8gQU5EICI7CgkJCgkJJHEgPSBhcnJheSgpOwoJCSRwID0gYXJyYXkoZ2V0X3VzZXJpZCgpKTsKCQkKCQlpZigkY29udGVudF9pZAoJCSYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnY29udGVudCcKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgyJykpCgkJewoJCQkkcVtdID0gImNvbnRlbnRfaWQgPSA/IjsKCQkJJHBbXSA9ICRjb250ZW50X2lkOwoJCX0KCQkKCQlpZigkdGVtcGxhdGVfaWQgPiAwCgkJJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICd0ZW1wbGF0ZScKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgyJykpCgkJewoJCQkkcVtdID0gInRlbXBsYXRlX2lkID0gPyI7CgkJCSRwW10gPSAkdGVtcGxhdGVfaWQ7CgkJfQoJCQoJCWlmKCFjb3VudCgkcSkpCgkJewoJCQlyZXR1cm47CgkJfQoJCQoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMScpCgkJewoJCQkkcXVlcnkgLj0gIigiIC4gaW1wbG9kZSgiIE9SICIsJHEpIC4gIikiOwoJCX0KCQllbHNlIGlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpCgkJewoJCQkkcXVlcnkgLj0gIigiIC4gaW1wbG9kZSgiIEFORCAiLCRxKSAuICIpIjsKCQl9CgkJZWxzZQoJCXsKCQkJJHF1ZXJ5IC49ICRxWzBdOwoJCX0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcCk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnCgkJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpCgkJCXsKCQkJCSR0aGlzLT5fZGlzcGxheVNldHRpbmdzWyRpdGVtX3R5cGVdWyRyb3dbJ2NvbnRlbnRfaWQnXSAuICdfJyAuICRyb3dbJ3RlbXBsYXRlX2lkJ11dWyRyb3dbJ2l0ZW1faWQnXV0gPSAkcm93WydpdGVtX2Rpc3BsYXknXTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5fZGlzcGxheVNldHRpbmdzWyRpdGVtX3R5cGVdWyRyb3dbJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykuJ19pZCddXVskcm93WydpdGVtX2lkJ11dID0gJHJvd1snaXRlbV9kaXNwbGF5J107CgkJCX0KCQl9Cgl9CgkKCWZ1bmN0aW9uIEdldE11bHRpSW5wdXRGdWxsKCRpbnB1dHMgPSBhcnJheSgpKQoJewoJCWlmKCFpc19hcnJheSgkaW5wdXRzKSkKCQl7CgkJCSRpbnB1dHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCIsIiwkaW5wdXRzKSk7CgkJfQoJCSRkYiAgICA9JiAkdGhpcy0+R2V0RGIoKTsKCQkkcXVlcnkgPSAiU0VMRUNUIE1VTFRJX0lOUFVULiosIFRQTF9BU1NPQ1MudHBsX25hbWUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMgTVVMVElfSU5QVVQKCQkJTEVGVCBPVVRFUiBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0X3RwbF9hc3NvY3MgVFBMX0FTU09DUwoJCQlPTiBNVUxUSV9JTlBVVC5pbnB1dF9pZCA9IFRQTF9BU1NPQ1MuaW5wdXRfaWQiOwoJCQoJCSRxICAgICA9IGFycmF5KCk7CgkJJHAgICAgID0gYXJyYXkoKTsKCQkkcmV0dXJuX2FycmF5ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCRpbnB1dHMgYXMgJGlucHV0X2lkKQoJCXsKCQkJJHFbJGlucHV0X2lkXSA9ICJNVUxUSV9JTlBVVC5pbnB1dF9pZCA9ID8iOwoJCQkkcFskaW5wdXRfaWRdID0gJGlucHV0X2lkOwoJCX0KCQlpZihjb3VudCgkcCkpCgkJewoJCQkkcXVlcnkgLj0gIiBXSEVSRSAiIC4gaW1wbG9kZSgiIE9SICIsICRxKTsKCQl9CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHApOwoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJHJldHVybl9hcnJheVskcm93WydpbnB1dF9pZCddXSA9ICRyb3c7CgkJfQoJCXJldHVybiAkcmV0dXJuX2FycmF5OwoJfQoJCglmdW5jdGlvbiBHZXRNdWx0aUlucHV0KCRpbnB1dF9pZCkKCXsKCQkkZGIgICAgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ICAgID0gIlNFTEVDVCBpbnB1dF9maWVsZHMgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMgV0hFUkUgaW5wdXRfaWQgPSA/IExJTUlUIDEiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpbnB1dF9pZCkpOwoJCWlmKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJcmV0dXJuICRyb3dbJ2lucHV0X2ZpZWxkcyddOwoJCX0KCX0KCQoJZnVuY3Rpb24gR2V0TXVsdGlJbnB1dExpc3QoKQoJewoJCSRkYiAgICAgICA9JiAkdGhpcy0+R2V0RGIoKTsKCQkkcXVlcnkgICAgPSAiU0VMRUNUIEEuaW5wdXRfaWQsIEIudHBsX25hbWUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMgQQoJCQlMRUZUIEpPSU4gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRfdHBsX2Fzc29jcyBCCgkJCU9OIEEuaW5wdXRfaWQgPSBCLmlucHV0X2lkIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkkcmV0dXJuX2FycmF5ID0gYXJyYXkoKTsKCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRyZXR1cm5fYXJyYXlbXSA9ICRyb3c7CgkJfQoJCXJldHVybiAkcmV0dXJuX2FycmF5OwoJfQoJCglmdW5jdGlvbiBBZGRNdWx0aUlucHV0KCRpbnB1dF9pZCwgJGlucHV0X2ZpZWxkcykKCXsKCQkkZGIgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCBpbnB1dF9pZCBGUk9NICIuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0cwoJCQlXSEVSRSBpbnB1dF9pZCA9ID8gTElNSVQgMSI7CgkJCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlucHV0X2lkKSk7CgkJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLiBjbXNfZGJfcHJlZml4KCkgLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0cwoJCQkoaW5wdXRfaWQsIGlucHV0X2ZpZWxkcykgVkFMVUVTICg/LD8pIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaW5wdXRfaWQsICRpbnB1dF9maWVsZHMpKTsKCQlyZXR1cm4gJGRicmVzdWx0OwoJfQoJCglmdW5jdGlvbiBVcGRhdGVNdWx0aUlucHV0KCRpbnB1dF9pZCwgJGlucHV0X2ZpZWxkcykKCXsKCQkkZGIgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlVQREFURSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMKCQkJU0VUIGlucHV0X2ZpZWxkcyA9ID8gV0hFUkUgaW5wdXRfaWQgPSA/ICI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlucHV0X2ZpZWxkcywgJGlucHV0X2lkKSk7CgkJcmV0dXJuICRkYnJlc3VsdDsKCX0KCQoJZnVuY3Rpb24gVXBkYXRlVHBsQXNzb2MoJHRwbF90eXBlLCAkaW5wdXRfaWQsICR0cGxfbmFtZSkKCXsKCQkkZGIgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlVQREFURSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiR0cGxfdHlwZS4iX3RwbF9hc3NvY3MKCQkJU0VUIHRwbF9uYW1lID0gPyBXSEVSRSBpbnB1dF9pZCA9ID8gIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdHBsX25hbWUsICRpbnB1dF9pZCkpOwoJCXJldHVybiAkZGJyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIEFkZFRwbEFzc29jKCR0cGxfdHlwZSwgJGlucHV0X2lkLCAkdHBsX25hbWUpCgl7CgkJJGRiICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLiBjbXNfZGJfcHJlZml4KCkgLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50XyIuJHRwbF90eXBlLiJfdHBsX2Fzc29jcwoJCQkoaW5wdXRfaWQsIHRwbF9uYW1lKSBWQUxVRVMgKD8sPykiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpbnB1dF9pZCwgJHRwbF9uYW1lKSk7CgkJcmV0dXJuICRkYnJlc3VsdDsKCX0KCQoJZnVuY3Rpb24gRGVsZXRlVHBsQXNzb2MoJHRwbF90eXBlLCRpbnB1dF9pZHMgPSBhcnJheSgpKQoJewoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCQlpZighaXNfYXJyYXkoJGlucHV0X2lkcykpCgkJewoJCQkkaW5wdXRfaWRzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgiLCIsJGlucHV0X2lkcykpOwoJCX0KCQlpZighY291bnQoJGlucHV0X2lkcykpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiR0cGxfdHlwZS4iX3RwbF9hc3NvY3MgV0hFUkUgIjsKCQkkcSA9IGFycmF5KCk7CgkJZm9yZWFjaCgkaW5wdXRfaWRzIGFzICRfaWQpCgkJewoJCQkkcVtdID0gImlucHV0X2lkID0gPyI7CgkJfQoJCSRxdWVyeSAgIC49ICBpbXBsb2RlKCIgT1IgIiwgJHEpOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRpbnB1dF9pZHMpOwoJCXJldHVybiAkZGJyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIERlbGV0ZU11bHRpSW5wdXQoJGlucHV0X2lkcyA9IGFycmF5KCkpCgl7CgkJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCWlmKCFpc19hcnJheSgkaW5wdXRfaWRzKSkKCQl7CgkJCSRpbnB1dF9pZHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCIsIiwkaW5wdXRfaWRzKSk7CgkJfQoJCWlmKCFjb3VudCgkaW5wdXRfaWRzKSkKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0cyBXSEVSRSAiOwoJCSRxID0gYXJyYXkoKTsKCQlmb3JlYWNoKCRpbnB1dF9pZHMgYXMgJF9pZCkKCQl7CgkJCSRxW10gPSAiaW5wdXRfaWQgPSA/IjsKCQl9CgkJCgkJJHF1ZXJ5ICAgLj0gIGltcGxvZGUoIiBPUiAiLCAkcSk7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJGlucHV0X2lkcyk7CgkJcmV0dXJuICRkYnJlc3VsdDsKCX0KCQoJZnVuY3Rpb24gR2V0VGVtcGxhdGVzKCRwcmVmaXgpCgl7CgkJJGRiICAgICA9JiAkdGhpcy0+R2V0RGIoKTsKCQkkcXVlcnkgID0gIlNFTEVDVCBUUEwudGVtcGxhdGVfbmFtZSwgVFBMX0FTU09DUy4qIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV90ZW1wbGF0ZXMgVFBMCgkJCUxFRlQgT1VURVIgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiRwcmVmaXguIl90cGxfYXNzb2NzIFRQTF9BU1NPQ1MKCQkJT04gVFBMLnRlbXBsYXRlX25hbWUgPSBUUExfQVNTT0NTLnRwbF9uYW1lCgkJCVdIRVJFIFRQTC5tb2R1bGVfbmFtZSA9ID8gQU5EIFRQTC50ZW1wbGF0ZV9uYW1lIExJS0UgPyAiOwoJCSRyZXR1cm5fYXJyYXkgPSBhcnJheSgpOwoJCSRkYnJlc3VsdCAgICAgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGhpcy0+R2V0TmFtZSgpLCRwcmVmaXguJ18lJykpOwoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJaWYoIWlzc2V0KCRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXSkpCgkJCXsKCQkJCSRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXSA9IGFycmF5KCk7CgkJCX0KCQkJJHJldHVybl9hcnJheVskcm93Wyd0ZW1wbGF0ZV9uYW1lJ11dWyd0cGxfbmFtZSddID0gc3Vic3RyKCRyb3dbJ3RlbXBsYXRlX25hbWUnXSxzdHJsZW4oJHByZWZpeC4nXycpKTsKCQkJJHJldHVybl9hcnJheVskcm93Wyd0ZW1wbGF0ZV9uYW1lJ11dWyd0cGxfaWQnXSAgID0gJHJvd1sndGVtcGxhdGVfbmFtZSddOwoJCQlpZighaXNzZXQoJHJldHVybl9hcnJheVskcm93Wyd0ZW1wbGF0ZV9uYW1lJ11dWyd0cGxfYXNzb2NzJ10pKQoJCQl7CgkJCQkkcmV0dXJuX2FycmF5WyRyb3dbJ3RlbXBsYXRlX25hbWUnXV1bJ3RwbF9hc3NvY3MnXSA9IGFycmF5KCk7CgkJCQkkcmV0dXJuX2FycmF5WyRyb3dbJ3RlbXBsYXRlX25hbWUnXV1bJ2lzX3VzZWQnXSA9IGZhbHNlOwoJCQl9CgkJCWlmKCRyb3dbJ2lucHV0X2lkJ10pCgkJCXsKCQkJCSRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXVsndHBsX2Fzc29jcyddW10gPSAkcm93WydpbnB1dF9pZCddOwoJCQkJJHJldHVybl9hcnJheVskcm93Wyd0ZW1wbGF0ZV9uYW1lJ11dWydpc191c2VkJ10gPSB0cnVlOwoJCQl9CgkJfQoJCXJldHVybiAkcmV0dXJuX2FycmF5OwoJfQoJCglmdW5jdGlvbiBHZXRUcGxMaXN0KCRwcmVmaXgpCgl7CgkJJHByZWZpeCA9IHRyaW0oJHByZWZpeCwnXycpIC4gJ18nOwoJCSRkYiAgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ICA9ICJTRUxFQ1QgdGVtcGxhdGVfbmFtZSBGUk9NICIuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfdGVtcGxhdGVzCgkJCVdIRVJFIG1vZHVsZV9uYW1lID0gPyBBTkQgdGVtcGxhdGVfbmFtZSBMSUtFID8gIjsKCQkkcmV0dXJuX2FycmF5ID0gYXJyYXkoKTsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGhpcy0+R2V0TmFtZSgpLCRwcmVmaXguJyUnKSk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkdHBsX25hbWUgPSBzdWJzdHIoJHJvd1sndGVtcGxhdGVfbmFtZSddLHN0cmxlbigkcHJlZml4KSk7CgkJCSRyZXR1cm5fYXJyYXlbJHRwbF9uYW1lXSA9ICRyb3dbJ3RlbXBsYXRlX25hbWUnXTsKCQl9CgkJcmV0dXJuICRyZXR1cm5fYXJyYXk7Cgl9CgkKCWZ1bmN0aW9uIElzVHBsVXNlZCgkdHBsX25hbWUsICRhc3NvY190eXBlKQoJewoJCSRkYiAgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ICA9ICJTRUxFQ1QgdHBsX25hbWUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiRhc3NvY190eXBlLiJfdHBsX2Fzc29jcwoJCQlXSEVSRSB0ZW1wbGF0ZV9uYW1lID0gPyAiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0cGxfbmFtZSkpOwoJCWlmKCEkZGJyZXN1bHQgfHwgISRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCXJldHVybiB0cnVlOwoJfQoJCglmdW5jdGlvbiAmSW5oZXJpdGFibGVzKCRjb250ZW50X2lkID0gJycpCgl7CgkJJGNvbnRlbnRfaWQgPSBpbnR2YWwoJGNvbnRlbnRfaWQpOwoJCWlmKCFpc3NldCgkdGhpcy0+X2luaGVyaXRhYmxlc1skY29udGVudF9pZF0pKQoJCXsKCQkJJHRoaXMtPl9pbmhlcml0YWJsZXNbJGNvbnRlbnRfaWRdID0gYXJyYXkoCgkJCQknZmV1X2FjY2VzcycgICAgID0+LTEsCgkJCQkncmVkaXJlY3RfcGFnZScgID0+LTEsCgkJCQkncmVkaXJlY3RfcGFyYW1zJz0+LTEsCgkJCQknZXZhbHVhdGVfc21hcnR5Jz0+LTEsCgkJCQknZmV1X2FjdGlvbicgICAgID0+LTEsCgkJCQknc3RhcnRfZGF0ZScgICAgID0+LTEsCgkJCQknZW5kX2RhdGUnICAgICAgID0+LTEsCgkJCQknaGlkZV9tZW51X2l0ZW0nID0+LTEsCgkJCQkndXNlX2V4cGlyZV9kYXRlJz0+LTEpOwoJCX0KCQlyZXR1cm4gJHRoaXMtPl9pbmhlcml0YWJsZXNbJGNvbnRlbnRfaWRdOwoJfQoJCgkvKioKCSAqIEluaGVyaXRzIGEgcHJvcGVydHkgb2YgYSBwYXJlbnQgcGFnZSAocmVjdXJzaXZsZXkpCgkgKgoJICogQHBhcmFtIGludCAkY3VycmVudElkIC0gVGhlIGlkIG9mIHRoZSBjdXJyZW50IHBhZ2UKCSAqIEBwYXJhbSBpbnQgJHBhcmVudElkIC0gVGhlIGlkIG9mIHRoZSBwYXJlbnQgcGFnZQoJICogQHBhcmFtIHN0cmluZyAkcHJvcE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gaW5oZXJpdAoJICogQHBhcmFtIGFycmF5ICRjdXJyZW50UHJvcCAob3B0aW9uYWwpIC0gSWYgcHJvcCBpcyBhbiBhcnJheSB0aGlzIHdpbGwgYmUgdGhlIGl0ZW1zIG9mIHRoZSBjdXJyZW50IHBhZ2U7IFNvIHJldHVybiBhcnJheSB3aWxsIGNvbnRhaW4gYWxsIGl0ZW1zIG9mIHRoZSBjdXJyZW50IHBhZ2UgYW5kIHBhcmVudCBwYWdlczsgb3RoZXJ3aXNlIG9ubHkgdGhlIHBhcmVudHMgaXRlbXMgd2lsbCBiZSByZXR1cm5lZCAoZmV1X2FjY2VzcyBvbmx5KQoJICoKCSAqIEByZXR1cm4gYXJyYXl8c3RyaW5nIC0gVGhlIHByb3Agb2YgdGhlIGxhc3QgZm91bmQgcGFyZW50IHRoYXQgaGFzIG5vIGluaGVyaXRhbmNlIG9yIGFuIGFycmF5IG9mIGl0ZW1zIG9mIGFsbCBwYXJlbnRzIHRoYXQgaGF2ZSBpbmhlcml0YW5jZQoJICovCglmdW5jdGlvbiBJbmhlcml0UGFyZW50UHJvcCgkY3VycmVudElkLCAkcGFyZW50SWQsICRwcm9wTmFtZSwgJGN1cnJlbnRQcm9wID0gYXJyYXkoKSkKCXsKCQkkY3VycmVudElkID0gaW50dmFsKCRjdXJyZW50SWQpOwoJCSR0aGlzLT5Jbmhlcml0YWJsZXMoJGN1cnJlbnRJZCk7CgkJaWYoIWlzc2V0KCR0aGlzLT5faW5oZXJpdGFibGVzWyRjdXJyZW50SWRdWyRwcm9wTmFtZV0pKQoJCXsKCQkJcmV0dXJuOyAvLyBzaG91bGQgbmV2ZXIgaGFwcGVuCgkJfQoJCWlmKGlzc2V0KCR0aGlzLT5faW5oZXJpdGFibGVzWyRwYXJlbnRJZF0pICYmICR0aGlzLT5faW5oZXJpdGFibGVzWyRwYXJlbnRJZF1bJHByb3BOYW1lXSA+IC0xKQoJCXsKCQkJJHRoaXMtPl9pbmhlcml0YWJsZXNbJGN1cnJlbnRJZF1bJHByb3BOYW1lXSA9ICR0aGlzLT5faW5oZXJpdGFibGVzWyRwYXJlbnRJZF1bJHByb3BOYW1lXTsKCQl9CgkJaWYoJHRoaXMtPl9pbmhlcml0YWJsZXNbJGN1cnJlbnRJZF1bJHByb3BOYW1lXSA9PSAtMSkKCQl7CgkJCWlmKCRwcm9wTmFtZSA9PSAnZmV1X2FjY2VzcycpCgkJCXsKCQkJCSR0aGlzLT5faW5oZXJpdGFibGVzWyRjdXJyZW50SWRdWyRwcm9wTmFtZV0gPSBhcnJheSgpOwoJCQkJZm9yZWFjaCgkY3VycmVudFByb3AgYXMgJGs9PiR2KQoJCQkJewoJCQkJCWlmKCR2ICE9IC0xKQoJCQkJCXsKCQkJCQkJJHRoaXMtPl9pbmhlcml0YWJsZXNbJGN1cnJlbnRJZF1bJHByb3BOYW1lXVtdID0gJHY7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPl9pbmhlcml0YWJsZXNbJGN1cnJlbnRJZF1bJHByb3BOYW1lXSA9ICcnOwoJCQl9CgkJCSRpbmhlcml0ID0gdHJ1ZTsKCQkJd2hpbGUoICRwYXJlbnRJZCA+IDAgJiYgJGluaGVyaXQgJiYgJGNvbnRlbnQgPSAkdGhpcy0+TG9hZENvbnRlbnRQcm9wcygkcGFyZW50SWQsICRwcm9wTmFtZSwgJ3BhcmVudF9pZCcsJ2NvbnRlbnQyJywxKSkKCQkJewoJCQkJJHByb3BWYWx1ZSA9ICRjb250ZW50WyRwYXJlbnRJZF1bJHByb3BOYW1lXTsKCQkJCSRwYXJlbnRJZCAgPSAkY29udGVudFskcGFyZW50SWRdWydwYXJlbnRfaWQnXTsKCQkJCWlmKCRwcm9wTmFtZSA9PSAnZmV1X2FjY2VzcycpCgkJCQl7CgkJCQkJJGRlbGltID0gc3RycG9zKCRwcm9wVmFsdWUsJywnKSA9PT0gRkFMU0UgPyAnOycgOiAnLCc7CgkJCQkJJHByb3BWYWx1ZSA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJGRlbGltLCRwcm9wVmFsdWUpKTsKCQkJCQlmb3JlYWNoKCRwcm9wVmFsdWUgYXMgJF9wKQoJCQkJCXsKCQkJCQkJaWYoIWluX2FycmF5KCRfcCwgJHRoaXMtPl9pbmhlcml0YWJsZXNbJGN1cnJlbnRJZF1bJHByb3BOYW1lXSkgJiYgJF9wICE9IC0xICYmICRfcCAhPSAnJykKCQkJCQkJewoJCQkJCQkJJHRoaXMtPl9pbmhlcml0YWJsZXNbJGN1cnJlbnRJZF1bJHByb3BOYW1lXVtdID0gJF9wOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWlmKCFpbl9hcnJheSgtMSwgJHByb3BWYWx1ZSkpCgkJCQkJewoJCQkJCQkkaW5oZXJpdCA9IGZhbHNlOwoJCQkJCQkjcmV0dXJuICR0aGlzLT5faW5oZXJpdGFibGVzWyRjdXJyZW50SWRdWyRwcm9wTmFtZV07CgkJCQkJfQoJCQkJfQoJCQkJZWxzZSBpZigkcHJvcFZhbHVlICE9IC0xKQoJCQkJewoJCQkJCSR0aGlzLT5faW5oZXJpdGFibGVzWyRjdXJyZW50SWRdWyRwcm9wTmFtZV0gPSAkcHJvcFZhbHVlOwoJCQkJCSRpbmhlcml0ID0gZmFsc2U7CgkJCQl9CgkJCX0KCQkJaWYoaXNzZXQoJHRoaXMtPl9pbmhlcml0YWJsZXNbJHBhcmVudElkXSkgJiYgJHRoaXMtPl9pbmhlcml0YWJsZXNbJHBhcmVudElkXSA9PSAtMSkKCQkJewoJCQkJJHRoaXMtPl9pbmhlcml0YWJsZXNbJHBhcmVudElkXVskcHJvcE5hbWVdID0gJHRoaXMtPl9pbmhlcml0YWJsZXNbJGN1cnJlbnRJZF1bJHByb3BOYW1lXTsKCQkJfQoJCX0KCQlyZXR1cm4gJHRoaXMtPl9pbmhlcml0YWJsZXNbJGN1cnJlbnRJZF1bJHByb3BOYW1lXTsKCX0KCQoJLyoqCgkgKiBMb2FkcyBwcm9wZXJ0aWVzIGFuZC9vciBhdHRyaWJzIG9mIG9uZSBvciBtb3JlIGNvbnRlbnQgcGFnZXMgZnJvbSBEQiAKCSAqIENhdXRpb24hIElmIG5vIGlkcywgcHJvcGVydGllcyBvciBhdHJpYnV0ZXMgYXJlIHNwZWNpZmllZCBpdCB3aWxsIGxvYWQgQUxMIGNvbnRlbnQgb2YgQUxMIHBhZ2VzLgoJICoKCSAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJGNvbnRlbnRJZHMgLSBUaGUgaWRzIG9mIHRoZSBjb250ZW50IHRvIGdldCB0aGUgcHJvcGVydHkgZnJvbQoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAkcHJvcHMgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tCgkgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRhdHRyaWJzIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGdldCB0aGUgdmFsdWUgZnJvbQoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAkY29udGVudFR5cGVzIChvcHRpb25hbCkgLSBUaGUgdHlwZSBvZiB0aGUgY29udGVudAoJICoKCSAqIEByZXR1cm4gbWl4ZWQgLSBGYWxzZSBpZiBub3QgZXhpc3RzIG9yIGFycmF5KCdwYXJlbnRfaWQnLCdwcm9wX3ZhbHVlJykKCSAqCgkgKi8KCWZ1bmN0aW9uIExvYWRDb250ZW50UHJvcHMoJGNvbnRlbnRJZHMgPSBhcnJheSgpLCAkcHJvcHMgPSBhcnJheSgpLCAkYXR0cmlicyA9IGFycmF5KCksICRjb250ZW50VHlwZXMgPSBhcnJheSgpLCAkbGltaXQgPSAnJykKCXsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiICA9JiAkZ0Ntcy0+R2V0RGIoKTsKCQkkcmV0ID0gIGZhbHNlOwoJCWlmKCFpc19hcnJheSgkY29udGVudElkcykpCgkJewoJCQkkY29udGVudElkcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRjb250ZW50SWRzKSk7CgkJfQoJCWlmKCFpc19hcnJheSgkcHJvcHMpKQoJCXsKCQkJJHByb3BzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnLCcsJHByb3BzKSk7CgkJfQoJCWlmKCFpc19hcnJheSgkYXR0cmlicykpCgkJewoJCQkkYXR0cmlicyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRhdHRyaWJzKSk7CgkJfQoJCWlmKCFpc19hcnJheSgkY29udGVudFR5cGVzKSkKCQl7CgkJCSRjb250ZW50VHlwZXMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCcsJywkY29udGVudFR5cGVzKSk7CgkJfQoJCSR3aGVyZV9pZHMgICAgICAgICAgPSBhcnJheSgpOwoJCSR3aGVyZV9wcm9wcyAgICAgICAgPSBhcnJheSgpOwoJCSR3aGVyZV9jb250ZW50VHlwZXMgPSBhcnJheSgpOwoJCSRwYXJhbXMgICAgICAgICAgICAgPSBhcnJheSgpOwoJCSRzZWxlY3QgICAgICAgICAgICAgPSBhcnJheSgpOwoJCWZvcmVhY2goJGNvbnRlbnRJZHMgYXMgJGNJZCkKCQl7CgkJCSR3aGVyZV9pZHNbXSA9ICIgQy5jb250ZW50X2lkID0gPyAiOwoJCQkkcGFyYW1zW10gICAgPSAkY0lkOwoJCX0KCQlpZihjb3VudCgkcHJvcHMpKSB7CgkJCSRzZWxlY3RbXSA9ICIgQ1AuY29udGVudCAiOwoJCQkkc2VsZWN0W10gPSAiIENQLnByb3BfbmFtZSAiOwoJCQlmb3JlYWNoKCRwcm9wcyBhcyAkcCkKCQkJewoJCQkJJHdoZXJlX3Byb3BzW10gPSAiIENQLnByb3BfbmFtZSA9ID8gIjsKCQkJCSRwYXJhbXNbXSAgICAgID0gJHA7CgkJCX0KCQl9CgkJZm9yZWFjaCgkYXR0cmlicyBhcyAkYSkKCQl7CgkJCSRzZWxlY3RbXSA9ICIgQy4kYSAiOwoJCX0KCQlmb3JlYWNoKCRjb250ZW50VHlwZXMgYXMgJHQpCgkJewoJCQkkd2hlcmVfY29udGVudFR5cGVzW10gPSAiIEMudHlwZSA9ID8gIjsKCQkJJHBhcmFtc1tdICAgICAgICAgICAgID0gJHQ7CgkJfQoJCSRxdWVyeSA9ICJTRUxFQ1QgIjsKCQlpZihjb3VudCgkc2VsZWN0KSkKCQl7CgkJCSRxdWVyeSAuPSAnQy5jb250ZW50X2lkLCcuaW1wbG9kZSgnLCcsJHNlbGVjdCk7CgkJfQoJCWVsc2UKCQl7CgkJCSRxdWVyeSAuPSAiICogIjsKCQl9CgkJCgkJJHF1ZXJ5IC49ICIgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gImNvbnRlbnRfcHJvcHMgQ1AKCQkJTEVGVCBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudCBDIE9OIEMuY29udGVudF9pZCA9IENQLmNvbnRlbnRfaWQgIjsKCQkKCQkkd2hlcmUgPSBhcnJheSgpOwoJCWlmKGNvdW50KCR3aGVyZV9pZHMpKQoJCXsKCQkJJHdoZXJlW10gPSAnICggJyAuIGltcGxvZGUoJyBPUiAnLCR3aGVyZV9pZHMpIC4gJyApICc7CgkJfQoJCWlmKGNvdW50KCR3aGVyZV9wcm9wcykpCgkJewoJCQkkd2hlcmVbXSA9ICcgKCAnIC4gaW1wbG9kZSgnIE9SICcsJHdoZXJlX3Byb3BzKSAuICcgKSAnOwoJCX0KCQlpZihjb3VudCgkd2hlcmVfY29udGVudFR5cGVzKSkKCQl7CgkJCSR3aGVyZVtdID0gJyAoICcgLiBpbXBsb2RlKCcgT1IgJywkd2hlcmVfY29udGVudFR5cGVzKSAuICcgKSAnOwoJCX0KCQlpZihjb3VudCgkd2hlcmUpKQoJCXsKCQkJJHF1ZXJ5IC49ICIgV0hFUkUgIiAuIGltcGxvZGUoJyBBTkQgJywgJHdoZXJlKTsKCQl9CgkJaWYoJGxpbWl0KQoJCXsKCQkJJHF1ZXJ5IC49ICIgTElNSVQgJGxpbWl0IjsKCQl9CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcmFtcyk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkY0lkICAgICAgID0gJHJvd1snY29udGVudF9pZCddOwoJCQkkcmV0WyRjSWRdID0gYXJyYXkoKTsKCQkJdW5zZXQoJHJvd1snY29udGVudF9pZCddKTsKCQkJaWYoY291bnQoJHByb3BzKSkKCQkJewoJCQkJJHJldFskY0lkXVskcm93Wydwcm9wX25hbWUnXV0gPSAkcm93Wydjb250ZW50J107CgkJCQl1bnNldCgkcm93Wydwcm9wX25hbWUnXSk7CgkJCQl1bnNldCgkcm93Wydjb250ZW50J10pOwoJCQl9CgkJCWlmKGNvdW50KCRhdHRyaWJzKSkKCQkJewoJCQkJJHJldFskY0lkXSA9IGFycmF5X21lcmdlKCRyZXRbJGNJZF0sICRyb3cpOwoJCQl9CgkJfQoJCXJldHVybiAkcmV0OwoJfQoJCn0KPz4K]]></data>
	</file>
	<file>
	  <filename>/contenttype.Content2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwCiMgICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjUuMQojIEZpbGUgICA6IGNvbnRlbnR0eXBlLkNvbnRlbnQyLnBocAojICAgICAgICAgIFRoaXMgZmlsZSBpcyBhIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUgIkNvbnRlbnQiCiMgUHVycG9zZTogdGhlIGNvbnRlbnQgb2JqZWN0CiMgTGljZW5zZTogR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLyoqCiAqIHRoaXMgaXMganVzdCBhIGR1bW15IGNsYXNzIHRvIGFjY2VzcyB0aGUgbW9kdWxlIHdpdGhvdXQgdXNpbmcgQ01TbXMgaW50ZXJuYWxzCiAqLwpjbGFzcyBBZHZhbmNlZENvbnRlbnRNb2R1bGUgZXh0ZW5kcyBBZHZhbmNlZENvbnRlbnQKewoJZnVuY3Rpb24gQWR2YW5jZWRDb250ZW50TW9kdWxlKCkKCXsKCQlwYXJlbnQ6OkFkdmFuY2VkQ29udGVudCgpOwoJfQp9CgpjbGFzcyBDb250ZW50MiBleHRlbmRzIENNU01vZHVsZUNvbnRlbnRUeXBlCnsKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJF9zdHlsZXNoZWV0OwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9jb250ZW50QmxvY2tzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBib29sZWFuCgkgKi8KCXZhciAkX2NvbnRlbnRCbG9ja3NMb2FkZWQ7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX3RhYklkczsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfcGFnZVRhYnM7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX2Jsb2NrVGFiczsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfYmxvY2tHcm91cHM7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX3VzZXJHcm91cHM7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX2RhdGVCbG9ja3M7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX2NvbG9yUGlja2VyQmxvY2tzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9zbGlkZXJCbG9ja3M7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX211bHRpSW5wdXRzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBib29sZWFuCgkgKi8KCXZhciAkX2lzQWRtaW47CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGJvb2xlYW4KCSAqLwoJdmFyICRfZmV1QWN0aW9uOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBib29sZWFuCgkgKi8KCXZhciAkX2ZldUFjY2VzczsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfZmV1R3JvdXBzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9hbGxVc2VyczsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfYWxsR3JvdXBzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9pbmhlcml0YWJsZXM7CgkKCS8qKgoJICogTUxFIHN1cHBvcnQKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIGJvb2xlYW4KCSAqLwoJdmFyICRtbGUgPSBmYWxzZTsKCQoJLyoqCgkgKiBNTEUgc3VwcG9ydAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkbGFuZzsKCQoJLyoqCgkgKiBNTEUgc3VwcG9ydAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkYmxvY2tMYW5nOwoJCgkvKioKCSAqIE1MRSBzdXBwb3J0CgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRkZWZhdWx0QmxvY2tMYW5nOwoJCgkKCS8qKgoJICogQ29uc3RydWN0b3IKCSAqLwoJZnVuY3Rpb24gQ29udGVudDIoKQoJewoJCXBhcmVudDo6Q29udGVudEJhc2UoKTsKCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3MgICAgICAgPSBhcnJheSgpOwoJCSR0aGlzLT5fY29udGVudEJsb2Nrc0xvYWRlZCA9IGZhbHNlOwoJCSR0aGlzLT5fZmV1QWN0aW9uICAgICAgICAgICA9IGZhbHNlOwoJCSR0aGlzLT5fZmV1QWNjZXNzICAgICAgICAgICA9IC0xOwoJCSR0aGlzLT5fZmV1R3JvdXBzICAgICAgICAgICA9IGZhbHNlOwoJCSR0aGlzLT5fbXVsdGlJbnB1dHMgICAgICAgICA9IGFycmF5KCk7CgkJZ2xvYmFsICRnQ21zLCRDTVNfQURNSU5fUEFHRTsKCQlpZihpc3NldCgkQ01TX0FETUlOX1BBR0UpICYmICRDTVNfQURNSU5fUEFHRSA9PSAxKQoJCXsKCQkJJEFkdmFuY2VkQ29udGVudCAgICAgICAgICA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkJJHRoaXMtPl90YWJJZHMgICAgICAgICAgICA9IGFycmF5KCk7CgkJCSR0aGlzLT5fZGF0ZUJsb2NrcyAgICAgICAgPSBhcnJheSgpOwoJCQkkdGhpcy0+X2NvbG9yUGlja2VyQmxvY2tzID0gYXJyYXkoKTsKCQkJJHRoaXMtPl9ibG9ja1RhYnMgICAgICAgICA9IGFycmF5KCk7CgkJCSR0aGlzLT5fYmxvY2tHcm91cHMgICAgICAgPSBhcnJheSgpOwoJCQkKCQkJJHRoaXMtPl9wYWdlVGFicyA9IGFycmF5KAoJCQkJJ21haW4nID0+IGFycmF5KAoJCQkJCSd0YWJfaWQnICAgICAgICAgPT4gJ21haW4nLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gbGFuZygnbWFpbicpLAoJCQkJCSdibG9ja190YWJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYmxvY2tfZ3JvdXBzJyAgID0+IGFycmF5KCksCgkJCQkJJ2NvbnRlbnRfYmxvY2tzJyA9PiBhcnJheSgpKSk7CgkJCSR0aGlzLT5fdGFiSWRzW10gPSAnbWFpbic7CgkJCQoJCQlpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWxsIENvbnRlbnQnKSApCgkJCXsKCQkJCSR0aGlzLT5fcGFnZVRhYnNbJ29wdGlvbnMnXSA9IGFycmF5KAoJCQkJCSd0YWJfaWQnICAgICAgICAgPT4gJ29wdGlvbnMnLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gbGFuZygnb3B0aW9ucycpLAoJCQkJCSdibG9ja190YWJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYmxvY2tfZ3JvdXBzJyAgID0+IGFycmF5KCksCgkJCQkJJ2NvbnRlbnRfYmxvY2tzJyA9PiBhcnJheSgpKTsKCQkJCSR0aGlzLT5fdGFiSWRzW10gPSAnb3B0aW9ucyc7CgkJCX0KCQkJCgkJCWlmKCBjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpICYmICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3VzZV9hZHZhbmNlZF9wYWdlb3B0aW9ucycsMSkgKQoJCQl7CgkJCQkkdGhpcy0+X3BhZ2VUYWJzWydBZHZhbmNlZENvbnRlbnQnXSA9IGFycmF5KAoJCQkJCSd0YWJfaWQnICAgICAgICAgPT4gJ0FkdmFuY2VkQ29udGVudCcsCgkJCQkJJ3RhYl9uYW1lJyAgICAgICA9PiAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdhZHZhbmNlZGNvbnRlbnRfdGFibmFtZScpLAoJCQkJCSdibG9ja190YWJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYmxvY2tfZ3JvdXBzJyAgID0+IGFycmF5KCksCgkJCQkJJ2NvbnRlbnRfYmxvY2tzJyA9PiBhcnJheSgpKTsKCQkJCSR0aGlzLT5fdGFiSWRzW10gPSAnQWR2YW5jZWRDb250ZW50JzsKCQkJfQoJCX0KCQkKCQkjIE1MRSBzdXBwb3J0CgkJZ2xvYmFsICRobHMsICRtbGVibG9jaywgJG1sZWJsb2NrZmFsbGJhY2s7CgkJaWYoaXNzZXQoJGhscykpCgkJewoJCQkkdGhpcy0+bWxlICAgICAgICAgICAgICA9IHRydWU7CgkJCSR0aGlzLT5sYW5nICAgICAgICAgICAgID0gJGhsczsKCQkJJHRoaXMtPmJsb2NrTGFuZyAgICAgICAgPSAkbWxlYmxvY2s7CgkJCSR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nID0gJG1sZWJsb2NrZmFsbGJhY2s7CgkJfQoJCSMtLS0KCX0KCQoJZnVuY3Rpb24gTW9kdWxlTmFtZSgpCgl7CgkJcmV0dXJuICdBZHZhbmNlZENvbnRlbnQnOwoJfQoJCglmdW5jdGlvbiBJc0RlZmF1bHRQb3NzaWJsZSgpCgl7CgkJcmV0dXJuIFRSVUU7Cgl9CgkKCWZ1bmN0aW9uIElzQ29weWFibGUoKQoJewoJCXJldHVybiBUUlVFOwoJfQoJCglmdW5jdGlvbiBGcmllbmRseU5hbWUoKQoJewoJCWlmKGJhc2VuYW1lKCRfU0VSVkVSWydQSFBfU0VMRiddKSA9PSAnbGlzdGNvbnRlbnQucGhwJykKCQl7CgkJCSRhZGRUeHQgPSBhcnJheSgpOwoJCQlpZigkdGhpcy0+bUNhY2hhYmxlKQoJCQl7CgkJCQkkYWRkVHh0W10gPSAnLSZuYnNwOycubGFuZygnY2FjaGFibGUnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy5sYW5nKCdub25jYWNoYWJsZScpOwoJCQl9CgkJCWlmKGlzc2V0KCR0aGlzLT5tU2VjdXJlKSAmJiAkdGhpcy0+bVNlY3VyZSkKCQkJewoJCQkJJGFkZFR4dFtdID0gJy0mbmJzcDtTU0wnOwoJCQl9CgkJCWlmKCEkdGhpcy0+bVNob3dJbk1lbnUpCgkJCXsKCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy5sYW5nKCdoaWRlZnJvbW1lbnUnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy5sYW5nKCdzaG93aW5tZW51Jyk7CgkJCX0KCQkJaWYoJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQl7CgkJCQlpZihzdHJwb3MoJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSwnLCcpID09PSBGQUxTRSkKCQkJCXsKCQkJCQkkc2VsZWN0ZWRHcm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCc7JywgJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSkpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRzZWxlY3RlZEdyb3VwcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjY2VzcycpKSk7CgkJCQl9CgkJCQlpZihjb3VudCgkc2VsZWN0ZWRHcm91cHMpKQoJCQkJewoJCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy4kdGhpcy0+bGFuZygnZnJvbnRlbmRhY2Nlc3MnKS4nOiA8dWw+PGxpPicgLiBpbXBsb2RlKCc8L2xpPjxsaT4nLGFycmF5X2tleXMoYXJyYXlfaW50ZXJzZWN0KCRmZXVzZXJzLT5HZXRHcm91cExpc3QoKSwgJHNlbGVjdGVkR3JvdXBzKSkpLic8L2xpPjwvdWw+JzsKCQkJCX0KCQkJfQoJCQlpZihjb3VudCgkYWRkVHh0KSkKCQkJewoJCQkJcmV0dXJuICc8c3BhbiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlciIgb25tb3VzZW92ZXI9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnJy4kdGhpcy0+bUlkLidfaW5mb1wnKS5zdHlsZS5kaXNwbGF5ID0gXCdibG9ja1wnOyIgb25tb3VzZW91dD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCcnLiR0aGlzLT5tSWQuJ19pbmZvXCcpLnN0eWxlLmRpc3BsYXkgPSBcJ25vbmVcJzsiPicgLiAkdGhpcy0+bGFuZygnQWR2YW5jZWRDb250ZW50JykgLiAnPHNwYW4gaWQ9IicuJHRoaXMtPm1JZC4nX2luZm8iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO3Bvc2l0aW9uOmFic29sdXRlO3BhZGRpbmc6NXB4O2Rpc3BsYXk6bm9uZTstbW96LWJveC1zaGFkb3c6MXB4IDFweCAxMHB4ICM2NjY2NjY7LXdlYmtpdC1ib3gtc2hhZG93OjFweCAxcHggMTBweCAjNjY2NjY2O2JveC1zaGFkb3c6MXB4IDFweCAxMHB4ICM2NjY2NjY7ei1pbmRleDo5OTkiPicgLiBpbXBsb2RlKCc8YnIgLz4nLCRhZGRUeHQpIC4gJzwvc3Bhbj48L3NwYW4+JzsKCQkJfQoJCX0KCQlyZXR1cm4gJHRoaXMtPmxhbmcoJ0FkdmFuY2VkQ29udGVudCcpOwoJfQoJCglmdW5jdGlvbiBHZXRQcm9wZXJ0eSgkcHJvcE5hbWUpCgl7CgkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkkcHJvcFZhbHVlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJHByb3BOYW1lKTsKCQlpZigkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpKQoJCXsKCQkJaWYoISR0aGlzLT5faW5oZXJpdGFibGVzKQoJCQl7CgkJCQkkdGhpcy0+X2luaGVyaXRhYmxlcyA9JiAkQWR2YW5jZWRDb250ZW50LT5Jbmhlcml0YWJsZXMoJHRoaXMtPm1JZCk7CgkJCX0KCQkJaWYoIWlzc2V0KCR0aGlzLT5faW5oZXJpdGFibGVzWyRwcm9wTmFtZV0pKQoJCQl7CgkJCQlyZXR1cm4gJHByb3BWYWx1ZTsKCQkJfQoJCQkkaW5oZXJpdCA9IGZhbHNlOwoJCQlpZigkcHJvcE5hbWUgPT0gJ2ZldV9hY2Nlc3MnKQoJCQl7CgkJCQkkZGVsaW0gICAgID0gc3RycG9zKCRwcm9wVmFsdWUsJywnKSA9PT0gRkFMU0UgPyAnOycgOiAnLCc7CgkJCQkkcHJvcFZhbHVlID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgkZGVsaW0sJHByb3BWYWx1ZSkpOwoJCQkJaWYoaW5fYXJyYXkoLTEsJHByb3BWYWx1ZSkpCgkJCQl7CgkJCQkJJGluaGVyaXQgPSB0cnVlOwoJCQkJfQoJCQl9CgkJCWVsc2UgaWYoJHByb3BWYWx1ZSA9PSAtMSkKCQkJewoJCQkJJGluaGVyaXQgPSB0cnVlOwoJCQl9CgkJCWlmKCRpbmhlcml0KQoJCQl7CgkJCQkkcHJvcFZhbHVlID0gJHRoaXMtPkluaGVyaXRQYXJlbnRQcm9wKCRwcm9wTmFtZSwkcHJvcFZhbHVlKTsKCQkJfQoJCX0KCQlyZXR1cm4gJHByb3BWYWx1ZTsKCX0KCQoJZnVuY3Rpb24gJmdldF9jb250ZW50X2Jsb2NrcygpCgl7CgkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7CgkJcmV0dXJuICR0aGlzLT5fY29udGVudEJsb2NrczsKCX0KCQoJZnVuY3Rpb24gJmdldF9ibG9ja19ncm91cHMoKQoJewoJCSR0aGlzLT5wYXJzZV9jb250ZW50X2Jsb2NrcygpOwoJCXJldHVybiAkdGhpcy0+X2Jsb2NrR3JvdXBzOwoJfQoJCglmdW5jdGlvbiAmZ2V0X211bHRpX2lucHV0cygpCgl7CgkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7CgkJcmV0dXJuICR0aGlzLT5fbXVsdGlJbnB1dHM7Cgl9CgkKCWZ1bmN0aW9uIFNob3dJbk1lbnUoKQoJewoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJaWYoJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgndXNlX2FkdmFuY2VkX3BhZ2VvcHRpb25zJywxKSkKCQl7CgkJCWlmKCR0aGlzLT5HZXRQcm9wZXJ0eSgndXNlX2V4cGlyZV9kYXRlJykpCgkJCXsKCQkJCSRzdGFydF9kYXRlID0gJHRoaXMtPkdldFByb3BlcnR5KCdzdGFydF9kYXRlJyk7CgkJCQkkZW5kX2RhdGUgICA9ICR0aGlzLT5HZXRQcm9wZXJ0eSgnZW5kX2RhdGUnKTsKCQkJCWlmKCgkc3RhcnRfZGF0ZSA+IHRpbWUoKSB8fCAkZW5kX2RhdGUgPCB0aW1lKCkpICYmICR0aGlzLT5tQWN0aXZlKQoJCQkJewoJCQkJCSR0aGlzLT5tQWN0aXZlID0gZmFsc2U7CgkJCQkJJHRoaXMtPm1TaG93SW5NZW51ID0gZmFsc2U7CgkJCQl9CgkJCQllbHNlIGlmKCRzdGFydF9kYXRlIDwgdGltZSgpICYmICRlbmRfZGF0ZSA+IHRpbWUoKSAmJiAhJHRoaXMtPm1BY3RpdmUpCgkJCQl7CgkJCQkJJHRoaXMtPm1BY3RpdmUgPSB0cnVlOwoJCQkJfQoJCQl9CgkJCWdsb2JhbCAkQ01TX0FETUlOX1BBR0U7CgkJCWlmKCFpc3NldCgkQ01TX0FETUlOX1BBR0UpIHx8ICRDTVNfQURNSU5fUEFHRSAhPT0gMSkKCQkJewoJCQkJaWYoJHRoaXMtPkdldFByb3BlcnR5KCdoaWRlX21lbnVfaXRlbScpKQoJCQkJewoJCQkJCWlmKCR0aGlzLT5HZXRQcm9wZXJ0eSgnaGlkZV9tZW51X2l0ZW0nKSA9PSAxKQoJCQkJCXsKCQkJCQkJJHRoaXMtPm1TaG93SW5NZW51ID0gJHRoaXMtPkNoZWNrRnJvbnRlbmRQYWdlQWNjZXNzKCk7CgkJCQkJfQoJCQkJCWVsc2UgaWYoJHRoaXMtPkdldFByb3BlcnR5KCdoaWRlX21lbnVfaXRlbScpID09IDIgJiYgJGZldXNlcnMgPSYgJEFkdmFuY2VkQ29udGVudC0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKSkKCQkJCQl7CgkJCQkJCSR0aGlzLT5tU2hvd0luTWVudSA9ICEkZmV1c2Vycy0+TG9nZ2VkSW4oKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuICR0aGlzLT5tU2hvd0luTWVudTsKCX0KCQoJZnVuY3Rpb24gQWN0aXZlKCkKCXsKCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCWlmKCRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3VzZV9hZHZhbmNlZF9wYWdlb3B0aW9ucycsMSkpCgkJewoJCQlpZigkdGhpcy0+R2V0UHJvcGVydHkoJ3VzZV9leHBpcmVfZGF0ZScpKQoJCQl7CgkJCQkkc3RhcnRfZGF0ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eSgnc3RhcnRfZGF0ZScpOwoJCQkJJGVuZF9kYXRlICAgPSAkdGhpcy0+R2V0UHJvcGVydHkoJ2VuZF9kYXRlJyk7CgkJCQlpZigoJHN0YXJ0X2RhdGUgPiB0aW1lKCkgfHwgJGVuZF9kYXRlIDwgdGltZSgpKSAmJiAkdGhpcy0+bUFjdGl2ZSkKCQkJCXsKCQkJCQkkdGhpcy0+bUFjdGl2ZSA9IGZhbHNlOwoJCQkJCSR0aGlzLT5tU2hvd0luTWVudSA9IGZhbHNlOwoJCQkJfQoJCQkJZWxzZSBpZigkc3RhcnRfZGF0ZSA8IHRpbWUoKSAmJiAkZW5kX2RhdGUgPiB0aW1lKCkgJiYgISR0aGlzLT5tQWN0aXZlKQoJCQkJewoJCQkJCSR0aGlzLT5tQWN0aXZlID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gJHRoaXMtPm1BY3RpdmU7Cgl9CgkKCWZ1bmN0aW9uIF9nZXRfYmxvY2tfaW5mbygkd2hvbGV0YWcpCgl7CgkJJHBhdHRlcm4gICA9ICcvKFtcd10rKT0oWyJdW14iXSpbIl18W1wnXVteXCddKltcJ118W15cJyJcc10qKS8nOwoJCSRibG9ja0luZm8gPSBhcnJheSgpOwoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJCgkJIyBnZXQgdGhlIGFyZ3VtZW50cy4KCQkkbWF0Y2hlcyA9IGFycmF5KCk7CgkJJHJlc3VsdCAgPSBwcmVnX21hdGNoX2FsbCgkcGF0dGVybiwgJHdob2xldGFnLCAkbWF0Y2hlcyk7CgkJCgkJJGtleXZhbCA9IGFycmF5KCk7CgkJZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJG1hdGNoZXNbMV0pOyAkaSsrKQoJCXsKCQkJaWYoc3RhcnRzd2l0aCgkbWF0Y2hlc1syXVskaV0sJ1wnJykpCgkJCXsKCQkJCSRtYXRjaGVzWzJdWyRpXSA9IHRyaW0oJG1hdGNoZXNbMl1bJGldLCdcJycpOwoJCQl9CgkJCWVsc2UgaWYoc3RhcnRzd2l0aCgkbWF0Y2hlc1syXVskaV0sJyInKSkKCQkJewoJCQkJJG1hdGNoZXNbMl1bJGldID0gdHJpbSgkbWF0Y2hlc1syXVskaV0sJyInKTsKCQkJfQoJCQkKCQkJJGtleXZhbFtzdHJ0b2xvd2VyKCRtYXRjaGVzWzFdWyRpXSldID0gJG1hdGNoZXNbMl1bJGldOwoJCX0KCQkKCQlpZihpc3NldCgka2V5dmFsWydhY3RpdmUnXSkgJiYgJHRoaXMtPklzRmFsc2UoJGtleXZhbFsnYWN0aXZlJ10pKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkKCQkkYmxvY2tJbmZvWyduYW1lJ10gPSAnY29udGVudF9lbic7CgkJCgkJIyBNTEUgc3VwcG9ydAoJCWlmKCR0aGlzLT5tbGUgJiYgJHRoaXMtPmJsb2NrTGFuZyAhPSAnJykKCQl7CgkJCSRibG9ja0luZm9bJ25hbWUnXSA9ICdjb250ZW50Jy4kdGhpcy0+YmxvY2tMYW5nOwoJCX0KCQkjLS0tCgkJCgkJaWYoaXNzZXQoJGtleXZhbFsnYmxvY2snXSkgJiYgJGtleXZhbFsnYmxvY2snXSAhPSAnJykKCQl7CgkJCSRibG9ja0luZm9bJ25hbWUnXSA9IHRyaW0oJGtleXZhbFsnYmxvY2snXSk7CgkJfQoJCQoJCSMgYmxvY2sgaWQKCQkkYmxvY2tJbmZvWydpZCddID0gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybCgkYmxvY2tJbmZvWyduYW1lJ10pKTsKCQkKCQkjIGFkZGl0aW9uYWwgZWRpdG9ycwoJCSRibG9ja0luZm9bJ2VkaXRvcl9ncm91cHMnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2VkaXRvcl9ncm91cHMnXSkgJiYgJGtleXZhbFsnZWRpdG9yX2dyb3VwcyddICE9ICcnKQoJCXsKCQkJJGJsb2NrSW5mb1snZWRpdG9yX2dyb3VwcyddID0gdHJpbSgka2V5dmFsWydlZGl0b3JfZ3JvdXBzJ10pOwoJCX0KCQkkYmxvY2tJbmZvWydlZGl0b3JfdXNlcnMnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2VkaXRvcl91c2VycyddKSAmJiAka2V5dmFsWydlZGl0b3JfdXNlcnMnXSAhPSAnJykKCQl7CgkJCSRibG9ja0luZm9bJ2VkaXRvcl91c2VycyddID0gdHJpbSgka2V5dmFsWydlZGl0b3JfdXNlcnMnXSk7CgkJfQoJCQoJCWdsb2JhbCAkQ01TX0FETUlOX1BBR0U7CgkJaWYoaXNzZXQoJENNU19BRE1JTl9QQUdFKSAmJiAkQ01TX0FETUlOX1BBR0UgPT0gMSAKCQkJJiYgKCRibG9ja0luZm9bJ2VkaXRvcl91c2VycyddIHx8ICRibG9ja0luZm9bJ2VkaXRvcl9ncm91cHMnXSkKCQkJJiYgISR0aGlzLT5DaGVja0Jsb2NrUGVybWlzc2lvbigkYmxvY2tJbmZvKSkKCQl7CgkJCXJldHVybiBmYWxzZTsgIyBkb24ndCBwcm9jZXNzIGJsb2NrcyB3aXRob3V0IHBlcm1pc3Npb24gdG8gZWRpdAoJCX0KCQkKCQkkYmxvY2tJbmZvWydtdWx0aXBsZSddICA9IGZhbHNlOwoJCSRibG9ja0luZm9bJ25ld19ibG9jayddID0gZmFsc2U7CgkJCgkJIyBibG9ja3R5cGUKCQkkYmxvY2tJbmZvWydibG9ja190eXBlJ10gPSAkYmxvY2tJbmZvWyd0eXBlJ10gPSAndGV4dCc7CgkJaWYoc3RhcnRzd2l0aCgkd2hvbGV0YWcsICdjb250ZW50X2ltYWdlJykpCgkJewoJCQkkYmxvY2tJbmZvWydibG9ja190eXBlJ10gPSAkYmxvY2tJbmZvWyd0eXBlJ10gPSAnaW1hZ2UnOwoJCX0KCQllbHNlaWYoc3RhcnRzd2l0aCgkd2hvbGV0YWcsICdjb250ZW50X21vZHVsZScpKQoJCXsKCQkJJGJsb2NrSW5mb1snYmxvY2tfdHlwZSddID0gJGJsb2NrSW5mb1sndHlwZSddID0gJ21vZHVsZSc7CgkJfQoJCWVsc2VpZihpc3NldCgka2V5dmFsWydibG9ja190eXBlJ10pICYmICRrZXl2YWxbJ2Jsb2NrX3R5cGUnXSAhPSAnJykKCQl7CgkJCSRibG9ja0luZm9bJ2Jsb2NrX3R5cGUnXSA9ICRibG9ja0luZm9bJ3R5cGUnXSA9IHN0cnRvbG93ZXIoJGtleXZhbFsnYmxvY2tfdHlwZSddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snc21hcnR5J10gPSBmYWxzZTsKCQlpZihpc3NldCgka2V5dmFsWydzbWFydHknXSkgJiYgJHRoaXMtPklzVHJ1ZSgka2V5dmFsWydzbWFydHknXSkpCgkJewoJCQkkYmxvY2tJbmZvWydzbWFydHknXSA9IHRydWU7CgkJfQoJCQoJCSRibG9ja0luZm9bJ3RyYW5zbGF0ZV9sYWJlbHMnXSA9IGZhbHNlOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ3RyYW5zbGF0ZV9sYWJlbHMnXSkgJiYgJHRoaXMtPklzVHJ1ZSgka2V5dmFsWyd0cmFuc2xhdGVfbGFiZWxzJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1sndHJhbnNsYXRlX2xhYmVscyddID0gdHJ1ZTsKCQl9CgkJCgkJJGJsb2NrSW5mb1sndHJhbnNsYXRlX3ZhbHVlcyddID0gZmFsc2U7CgkJaWYoaXNzZXQoJGtleXZhbFsndHJhbnNsYXRlX3ZhbHVlcyddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ3RyYW5zbGF0ZV92YWx1ZXMnXSkpCgkJewoJCQkkYmxvY2tJbmZvWyd0cmFuc2xhdGVfdmFsdWVzJ10gPSB0cnVlOwoJCX0KCQkKCQkkYmxvY2tJbmZvWydsYWJlbCddID0gdWN3b3JkcygkYmxvY2tJbmZvWyduYW1lJ10pOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2xhYmVsJ10pICYmICRrZXl2YWxbJ2xhYmVsJ10gIT0gJycpCgkJewoJCQkkYmxvY2tJbmZvWydsYWJlbCddID0gdHJpbSgka2V5dmFsWydsYWJlbCddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1sncmVxdWlyZWQnXSA9IGZhbHNlOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ3JlcXVpcmVkJ10pICYmICR0aGlzLT5Jc1RydWUoJGtleXZhbFsncmVxdWlyZWQnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydyZXF1aXJlZCddID0gdHJ1ZTsKCQl9CgkJCgkJIyBkZWZhdWx0IGNvbnRlbnQvdmFsdWUKCQkkYmxvY2tJbmZvWydkZWZhdWx0J10gCT0gJyc7CgkJaWYoaXNzZXQoJGtleXZhbFsnZGVmYXVsdCddKSAmJiAka2V5dmFsWydkZWZhdWx0J10gIT0gJycpCgkJewoJCQkkYmxvY2tJbmZvWydkZWZhdWx0J10gPSAka2V5dmFsWydkZWZhdWx0J107CgkJfQoJCQoJCSMgYmFja2VuZCBzdHlsZSAoZS5nLiB0byBtYXJrIHJlcXVpcmVkIGZpZWxkcy4uLikKCQkjIGRlcHJlY2F0ZWQKCQkkYmxvY2tJbmZvWydzdHlsZSddID0gJyc7CgkJaWYoaXNzZXQoJGtleXZhbFsnc3R5bGUnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydzdHlsZSddID0gJGtleXZhbFsnc3R5bGUnXTsKCQl9CgkJCgkJIyBzaXplIG9mIHRoZSBpbnB1dCBmaWVsZAoJCSRibG9ja0luZm9bJ3NpemUnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ3NpemUnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydzaXplJ10gPSBpbnR2YWwoJGtleXZhbFsnc2l6ZSddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1sncGFnZV90YWInXSA9ICdtYWluJzsKCQlpZihpc3NldCgka2V5dmFsWydwYWdlX3RhYiddKSAmJiB0cmltKCRrZXl2YWxbJ3BhZ2VfdGFiJ10gIT0gJycpKQoJCXsKCQkJJGJsb2NrSW5mb1sncGFnZV90YWInXSA9IHRyaW0oJGtleXZhbFsncGFnZV90YWInXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ2Jsb2NrX3RhYiddID0gJyc7CgkJaWYoaXNzZXQoJGtleXZhbFsnYmxvY2tfdGFiJ10pICYmIHRyaW0oJGtleXZhbFsnYmxvY2tfdGFiJ10gIT0gJycpKQoJCXsKCQkJJGJsb2NrSW5mb1snYmxvY2tfdGFiJ10gPSB0cmltKCRrZXl2YWxbJ2Jsb2NrX3RhYiddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snYmxvY2tfZ3JvdXAnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2Jsb2NrX2dyb3VwJ10pICYmIHRyaW0oJGtleXZhbFsnYmxvY2tfZ3JvdXAnXSAhPSAnJykpCgkJewoJCQkkYmxvY2tJbmZvWydibG9ja19ncm91cCddID0gdHJpbSgka2V5dmFsWydibG9ja19ncm91cCddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snYWxsb3dfbm9uZSddID0gdHJ1ZTsKCQlpZihpc3NldCgka2V5dmFsWydhbGxvd19ub25lJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRrZXl2YWxbJ2FsbG93X25vbmUnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydhbGxvd19ub25lJ10gPSBmYWxzZTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snZGVzY3JpcHRpb24nXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2Rlc2NyaXB0aW9uJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1snZGVzY3JpcHRpb24nXSA9IHRyaW0oJGtleXZhbFsnZGVzY3JpcHRpb24nXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ2NvbGxhcHNlJ10gPSAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ibG9ja19kZWZhdWx0JywxKTsKCQlpZihpc3NldCgka2V5dmFsWydjb2xsYXBzZSddKSAmJiAoJHRoaXMtPklzVHJ1ZSgka2V5dmFsWydjb2xsYXBzZSddKSB8fCAkdGhpcy0+SXNGYWxzZSgka2V5dmFsWydjb2xsYXBzZSddKSkpCgkJewoJCQkkYmxvY2tJbmZvWydjb2xsYXBzZSddID0gJHRoaXMtPklzVHJ1ZSgka2V5dmFsWydjb2xsYXBzZSddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snbm9fY29sbGFwc2UnXSA9IGZhbHNlOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ25vX2NvbGxhcHNlJ10pICYmICR0aGlzLT5Jc1RydWUoJGtleXZhbFsnbm9fY29sbGFwc2UnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydub19jb2xsYXBzZSddID0gdHJ1ZTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snZmV1X2FjY2VzcyddID0gJyc7CgkJaWYoaXNzZXQoJGtleXZhbFsnZmV1X2FjY2VzcyddKSkKCQl7CgkJCSRibG9ja0luZm9bJ2ZldV9hY2Nlc3MnXSA9IHRyaW0oJGtleXZhbFsnZmV1X2FjY2VzcyddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snZmV1X2FjdGlvbiddID0gZmFsc2U7CgkJaWYoaXNzZXQoJGtleXZhbFsnZmV1X2FjdGlvbiddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ2ZldV9hY3Rpb24nXSkpCgkJewoJCQkkYmxvY2tJbmZvWydmZXVfYWN0aW9uJ10gPSB0cnVlOwoJCX0KCQkKCQlpZigkYmxvY2tJbmZvWyd0eXBlJ10gPT0gJ3RleHQnKQoJCXsKCQkJJGJsb2NrSW5mb1snbWF4bGVuZ3RoJ10gPSAnJzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnbWF4bGVuZ3RoJ10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydtYXhsZW5ndGgnXSA9ICRrZXl2YWxbJ21heGxlbmd0aCddOwoJCQl9CgkJCQoJCQkkYmxvY2tJbmZvWyd1c2V3eXNpd3lnJ10gPSB0cnVlOwoJCQlpZihpc3NldCgka2V5dmFsWyd3eXNpd3lnJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRrZXl2YWxbJ3d5c2l3eWcnXSkpCgkJCXsKCQkJCSRibG9ja0luZm9bJ3VzZXd5c2l3eWcnXSA9IGZhbHNlOwoJCQl9CgkJCQoJCQkkYmxvY2tJbmZvWydvbmVsaW5lJ10gPSBmYWxzZTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnb25lbGluZSddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ29uZWxpbmUnXSkpCgkJCXsKCQkJCSRibG9ja0luZm9bJ29uZWxpbmUnXSA9IHRydWU7CgkJCX0KCQl9CgkJZWxzZSBpZiAoJGJsb2NrSW5mb1sndHlwZSddID09ICdkYXRlJykKCQl7CgkJCSR0aGlzLT5fZGF0ZUJsb2Nrc1tdID0gJGJsb2NrSW5mb1snaWQnXTsKCQkJCgkJCSRzaG93Q2xvY2sgPSB0cnVlOwoJCQlpZihpc3NldCgka2V5dmFsWydzaG93X2Nsb2NrJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRrZXl2YWxbJ3Nob3dfY2xvY2snXSkpCgkJCXsKCQkJCSRzaG93Q2xvY2sgPSBmYWxzZTsKCQkJfQoJCQkKCQkJJG1vZGUgPSAnY2FsZW5kYXInOwoJCQlpZihpc3NldCgka2V5dmFsWydtb2RlJ10pICYmIHN0cnRvbG93ZXIoJGtleXZhbFsnbW9kZSddKSA9PSAnZHJvcGRvd24nKQoJCQl7CgkJCQkkbW9kZSA9ICdkcm9wZG93bic7CgkJCX0KCQkJCgkJCSRzaG93MjRoID0gdHJ1ZTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnc2hvdzI0aCddKSAmJiAkdGhpcy0+SXNGYWxzZSgka2V5dmFsWydzaG93MjRoJ10pKQoJCQl7CgkJCQkkc2hvdzI0aCA9IGZhbHNlOwoJCQl9CgkJCQoJCQkkc3RhcnRIb3VyID0gMDsKCQkJJGVuZEhvdXIgICA9IDIzOwoJCQlpZihpc3NldCgka2V5dmFsWydzdGFydF9ob3VyJ10pKQoJCQl7CgkJCQlpZihlbmRzd2l0aCgka2V5dmFsWydzdGFydF9ob3VyJ10sJ3BtJykpCgkJCQl7CgkJCQkJJGtleXZhbFsnc3RhcnRfaG91ciddID0gdHJpbShzdHJfaXJlcGxhY2UoJ3BtJywnJywka2V5dmFsWydzdGFydF9ob3VyJ10pKSArIDEyOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRrZXl2YWxbJ3N0YXJ0X2hvdXInXSA9IHRyaW0oc3RyX2lyZXBsYWNlKGFycmF5KCdhbScsJ3BtJyksJycsJGtleXZhbFsnc3RhcnRfaG91ciddKSk7CgkJCQl9CgkJCQlpZigka2V5dmFsWydzdGFydF9ob3VyJ10gPiAwICYmICRrZXl2YWxbJ3N0YXJ0X2hvdXInXSA8PSAkZW5kSG91cikKCQkJCXsKCQkJCQkkc3RhcnRIb3VyID0gdHJpbSgka2V5dmFsWydzdGFydF9ob3VyJ10pOwoJCQkJfQoJCQl9CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ2VuZF9ob3VyJ10pKQoJCQl7CgkJCQlpZihlbmRzd2l0aCgka2V5dmFsWydlbmRfaG91ciddLCdwbScpKQoJCQkJewoJCQkJCSRrZXl2YWxbJ2VuZF9ob3VyJ10gPSB0cmltKHN0cl9pcmVwbGFjZSgncG0nLCcnLCRrZXl2YWxbJ2VuZF9ob3VyJ10pKSArIDEyOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRrZXl2YWxbJ2VuZF9ob3VyJ10gPSB0cmltKHN0cl9pcmVwbGFjZShhcnJheSgnYW0nLCdwbScpLCcnLCRrZXl2YWxbJ2VuZF9ob3VyJ10pKTsKCQkJCX0KCQkJCWlmKCRrZXl2YWxbJ2VuZF9ob3VyJ10gPj0gMCAmJiAka2V5dmFsWydlbmRfaG91ciddIDwgJGVuZEhvdXIpCgkJCQl7CgkJCQkJJGVuZEhvdXIgPSB0cmltKCRrZXl2YWxbJ2VuZF9ob3VyJ10pOwoJCQkJfQoJCQl9CgkJCWlmKCRlbmRIb3VyIDwgJHN0YXJ0SG91cikKCQkJewoJCQkJJGVuZEhvdXIgPSAkc3RhcnRIb3VyOwoJCQl9CgkJCSRzdGFydE1pbnV0ZSA9IDA7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3N0YXJ0X21pbnV0ZSddKSAmJiAka2V5dmFsWydzdGFydF9taW51dGUnXSA+IDAgJiYgJGtleXZhbFsnc3RhcnRfbWludXRlJ10gPD0gNTkpCgkJCXsKCQkJCSRzdGFydE1pbnV0ZSA9IHRyaW0oJGtleXZhbFsnc3RhcnRfbWludXRlJ10pOwoJCQl9CgkJCSRlbmRNaW51dGUgPSA1OTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnZW5kX21pbnV0ZSddKSAmJiAka2V5dmFsWydlbmRfbWludXRlJ10gPj0gMCAmJiAka2V5dmFsWydlbmRfbWludXRlJ10gPCA1OSkKCQkJewoJCQkJJGVuZE1pbnV0ZSA9IHRyaW0oJGtleXZhbFsnZW5kX21pbnV0ZSddKTsKCQkJfQoJCQlpZigkZW5kTWludXRlIDwgJHN0YXJ0TWludXRlKQoJCQl7CgkJCQkkZW5kTWludXRlID0gJHN0YXJ0TWludXRlOwoJCQl9CgkJCSRzdGFydFNlY29uZCA9IDA7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3N0YXJ0X3NlY29uZCddKSAmJiAka2V5dmFsWydzdGFydF9zZWNvbmQnXSA+IDAgJiYgJGtleXZhbFsnc3RhcnRfc2Vjb25kJ10gPD0gNTkpCgkJCXsKCQkJCSRzdGFydFNlY29uZCA9IHRyaW0oJGtleXZhbFsnc3RhcnRfc2Vjb25kJ10pOwoJCQl9CgkJCSRlbmRTZWNvbmQgPSA1OTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnZW5kX3NlY29uZCddKSAmJiAka2V5dmFsWydlbmRfc2Vjb25kJ10gPj0gMCAmJiAka2V5dmFsWydlbmRfc2Vjb25kJ10gPCA1OSkKCQkJewoJCQkJJGVuZFNlY29uZCA9IHRyaW0oJGtleXZhbFsnZW5kX3NlY29uZCddKTsKCQkJfQoJCQlpZigkZW5kU2Vjb25kIDwgJHN0YXJ0U2Vjb25kKQoJCQl7CgkJCQkkZW5kU2Vjb25kID0gJHN0YXJ0U2Vjb25kOwoJCQl9CgkJCSRzdGVwSG91cnMgPSAxOwoJCQlpZihpc3NldCgka2V5dmFsWydzdGVwX2hvdXJzJ10pICYmICRrZXl2YWxbJ3N0ZXBfaG91cnMnXSA+IDAgJiYgJGtleXZhbFsnc3RlcF9ob3VycyddIDw9ICgkZW5kSG91ci0kc3RhcnRIb3VyKSkKCQkJewoJCQkJJHN0ZXBIb3VycyA9IHRyaW0oJGtleXZhbFsnc3RlcF9ob3VycyddKTsKCQkJfQoJCQllbHNlIGlmKGlzc2V0KCRrZXl2YWxbJ3N0ZXBfaG91cnMnXSkgJiYgJGtleXZhbFsnc3RlcF9ob3VycyddID4gMCAmJiAka2V5dmFsWydzdGVwX2hvdXJzJ10gPj0gKCRlbmRIb3VyLSRzdGFydEhvdXIpKQoJCQl7CgkJCQkkc3RlcEhvdXJzID0gJGVuZEhvdXItJHN0YXJ0SG91cjsKCQkJfQoJCQkkc3RlcE1pbnV0ZXMgPSAxMDsKCQkJaWYoaXNzZXQoJGtleXZhbFsnc3RlcF9taW51dGVzJ10pICYmICRrZXl2YWxbJ3N0ZXBfbWludXRlcyddID4gMCAmJiAka2V5dmFsWydzdGVwX21pbnV0ZXMnXSA8PSAoJGVuZE1pbnV0ZS0kc3RhcnRNaW51dGUpKQoJCQl7CgkJCQkkc3RlcE1pbnV0ZXMgPSB0cmltKCRrZXl2YWxbJ3N0ZXBfbWludXRlcyddKTsKCQkJfQoJCQllbHNlIGlmKGlzc2V0KCRrZXl2YWxbJ3N0ZXBfbWludXRlcyddKSAmJiAka2V5dmFsWydzdGVwX21pbnV0ZXMnXSA+IDAgJiYgJGtleXZhbFsnc3RlcF9taW51dGVzJ10gPj0gKCRlbmRNaW51dGUtJHN0YXJ0TWludXRlKSkKCQkJewoJCQkJJHN0ZXBNaW51dGVzID0gJGVuZE1pbnV0ZS0kc3RhcnRNaW51dGU7CgkJCX0KCQkJJHN0ZXBTZWNvbmRzID0gMTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnc3RlcF9zZWNvbmRzJ10pICYmICRrZXl2YWxbJ3N0ZXBfc2Vjb25kcyddID4gMCAmJiAka2V5dmFsWydzdGVwX3NlY29uZHMnXSA8PSAoJGVuZFNlY29uZC0kc3RhcnRTZWNvbmRzKSkKCQkJewoJCQkJJHN0ZXBTZWNvbmRzID0gdHJpbSgka2V5dmFsWydzdGVwX3NlY29uZHMnXSk7CgkJCX0KCQkJZWxzZSBpZihpc3NldCgka2V5dmFsWydzdGVwX3NlY29uZHMnXSkgJiYgJGtleXZhbFsnc3RlcF9zZWNvbmRzJ10gPiAwICYmICRrZXl2YWxbJ3N0ZXBfc2Vjb25kcyddID49ICgkZW5kU2Vjb25kLSRzdGFydFNlY29uZHMpKQoJCQl7CgkJCQkkc3RlcFNlY29uZHMgPSAkZW5kU2Vjb25kLSRzdGFydFNlY29uZHM7CgkJCX0KCQkJJGJsb2NrSW5mb1snc2hvdzI0aCddICAgICAgPSAkc2hvdzI0aDsKCQkJJGJsb2NrSW5mb1snbW9kZSddICAgICAgICAgPSAkbW9kZTsKCQkJJGJsb2NrSW5mb1snc3RhcnRfaG91ciddICAgPSAkc3RhcnRIb3VyOwoJCQkkYmxvY2tJbmZvWydlbmRfaG91ciddICAgICA9ICRlbmRIb3VyOwoJCQkkYmxvY2tJbmZvWydzdGFydF9taW51dGUnXSA9ICRzdGFydE1pbnV0ZTsKCQkJJGJsb2NrSW5mb1snZW5kX21pbnV0ZSddICAgPSAkZW5kTWludXRlOwoJCQkkYmxvY2tJbmZvWydzdGFydF9zZWNvbmQnXSA9ICRzdGFydFNlY29uZDsKCQkJJGJsb2NrSW5mb1snZW5kX3NlY29uZCddICAgPSAkZW5kU2Vjb25kOwoJCQkkYmxvY2tJbmZvWydzdGVwX2hvdXJzJ10gICA9ICRzdGVwSG91cnM7CgkJCSRibG9ja0luZm9bJ3N0ZXBfbWludXRlcyddID0gJHN0ZXBNaW51dGVzOwoJCQkkYmxvY2tJbmZvWydzdGVwX3NlY29uZHMnXSA9ICRzdGVwU2Vjb25kczsKCQkJJGJsb2NrSW5mb1snc2hvd19jbG9jayddICAgPSAkc2hvd0Nsb2NrOwoJCX0KCQllbHNlIGlmICgkYmxvY2tJbmZvWyd0eXBlJ10gPT0gJ2NvbG9ycGlja2VyJykKCQl7CgkJCSR0aGlzLT5fY29sb3JQaWNrZXJCbG9ja3NbXSA9ICRibG9ja0luZm9bJ2lkJ107CgkJfQoJCWVsc2UgaWYgKCRibG9ja0luZm9bJ3R5cGUnXSA9PSAnc2xpZGVyJykKCQl7CgkJCSR0aGlzLT5fc2xpZGVyQmxvY2tzW10gPSAkYmxvY2tJbmZvWydpZCddOwoJCQkkYmxvY2tJbmZvWydwYXJhbXMnXSA9IGFycmF5KCk7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ2Zyb20nXSkpCgkJCXsKCQkJCSRibG9ja0luZm9bJ3BhcmFtcyddWydmcm9tJ10gPSBpbnR2YWwoJGtleXZhbFsnZnJvbSddKTsKCQkJfQoJCQlpZihpc3NldCgka2V5dmFsWyd0byddKSkKCQkJewoJCQkJJGJsb2NrSW5mb1sncGFyYW1zJ11bJ3RvJ10gPSBpbnR2YWwoJGtleXZhbFsndG8nXSk7CgkJCX0KCQkJaWYoaXNzZXQoJGtleXZhbFsnc3RlcCddKSkKCQkJewoJCQkJJGJsb2NrSW5mb1sncGFyYW1zJ11bJ3N0ZXAnXSA9IGludHZhbCgka2V5dmFsWydzdGVwJ10pOwoJCQl9CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3JvdW5kJ10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydwYXJhbXMnXVsncm91bmQnXSA9IGludHZhbCgka2V5dmFsWydyb3VuZCddKTsKCQkJfQoJCQlpZihpc3NldCgka2V5dmFsWydoZXRlcm9nZW5laXR5J10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydwYXJhbXMnXVsnaGV0ZXJvZ2VuZWl0eSddID0gJGtleXZhbFsnaGV0ZXJvZ2VuZWl0eSddOwoJCQl9CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ2RpbWVuc2lvbiddKSkKCQkJewoJCQkJJGJsb2NrSW5mb1sncGFyYW1zJ11bJ2RpbWVuc2lvbiddID0gIiciLiRrZXl2YWxbJ2RpbWVuc2lvbiddLiInIiA7CgkJCX0KCQkJaWYoaXNzZXQoJGtleXZhbFsnbGltaXRzJ10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydwYXJhbXMnXVsnbGltaXRzJ10gPSAiJyIuJGtleXZhbFsnbGltaXRzJ10uIiciOwoJCQl9CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3NjYWxlJ10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydwYXJhbXMnXVsnc2NhbGUnXSA9ICRrZXl2YWxbJ3NjYWxlJ107CgkJCX0KCQkJaWYoaXNzZXQoJGtleXZhbFsnc2tpbiddKSkKCQkJewoJCQkJJGJsb2NrSW5mb1sncGFyYW1zJ11bJ3NraW4nXSA9ICInIi4ka2V5dmFsWydza2luJ10uIiciOwoJCQl9CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ2NhbGN1bGF0ZSddKSkKCQkJewoJCQkJJGJsb2NrSW5mb1sncGFyYW1zJ11bJ2NhbGN1bGF0ZSddID0gJGtleXZhbFsnY2FsY3VsYXRlJ107CgkJCX0KCQkJaWYoaXNzZXQoJGtleXZhbFsnb25zdGF0ZWNoYW5nZSddKSkKCQkJewoJCQkJJGJsb2NrSW5mb1sncGFyYW1zJ11bJ29uc3RhdGVjaGFuZ2UnXSA9ICRrZXl2YWxbJ29uc3RhdGVjaGFuZ2UnXTsKCQkJfQoJCQlpZihpc3NldCgka2V5dmFsWydjYWxsYmFjayddKSkKCQkJewoJCQkJJGJsb2NrSW5mb1sncGFyYW1zJ11bJ2NhbGxiYWNrJ10gPSAka2V5dmFsWydjYWxsYmFjayddOwoJCQl9CgkJfQoJCWVsc2UgaWYoJGJsb2NrSW5mb1sndHlwZSddID09ICdkcm9wZG93bicgfHwgJGJsb2NrSW5mb1sndHlwZSddID09ICdzZWxlY3RfbXVsdGlwbGUnKQoJCXsKCQkJaWYoJGJsb2NrSW5mb1sndHlwZSddID09ICdzZWxlY3RfbXVsdGlwbGUnKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydzb3J0YWJsZSddID0gZmFsc2U7CgkJCQkjIGRlcHJlY2F0ZWQKCQkJCWlmKGlzc2V0KCRrZXl2YWxbJ3NvcnRhYmxlX2l0ZW1zJ10pICYmICR0aGlzLT5Jc1RydWUoJGtleXZhbFsnc29ydGFibGVfaXRlbXMnXSkpCgkJCQl7CgkJCQkJJGJsb2NrSW5mb1snc29ydGFibGUnXSA9IHRydWU7CgkJCQl9CgkJCQlpZihpc3NldCgka2V5dmFsWydzb3J0YWJsZSddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ3NvcnRhYmxlJ10pKQoJCQkJewoJCQkJCSRibG9ja0luZm9bJ3NvcnRhYmxlJ10gPSB0cnVlOwoJCQkJfQoJCQl9CgkJCQoJCQkkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSA9ICd8JzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnZGVsaW1pdGVyJ10pICYmICRrZXl2YWxbJ2RlbGltaXRlciddICE9ICcnKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSA9ICRrZXl2YWxbJ2RlbGltaXRlciddOwoJCQl9CgkJCSRibG9ja0luZm9bJ2l0ZW1zJ10gPSAnJzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnaXRlbXMnXSkgJiYgJGtleXZhbFsnaXRlbXMnXSAhPSAnJykKCQkJewoJCQkJJGJsb2NrSW5mb1snaXRlbXMnXSA9IHRyaW0oJGtleXZhbFsnaXRlbXMnXSk7CgkJCX0KCQkJJGJsb2NrSW5mb1sndmFsdWVzJ10gPSAnJzsKCQkJaWYoaXNzZXQoJGtleXZhbFsndmFsdWVzJ10pICYmICRrZXl2YWxbJ3ZhbHVlcyddICE9ICcnKQoJCQl7CgkJCQkkYmxvY2tJbmZvWyd2YWx1ZXMnXSA9IHRyaW0oJGtleXZhbFsndmFsdWVzJ10pOwoJCQl9CgkJfQoJCWVsc2UgaWYoJGJsb2NrSW5mb1sndHlwZSddID09ICdtb2R1bGUnKQoJCXsKCQkJJGJsb2NrSW5mb1snbW9kdWxlJ10gPSAnJzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnbW9kdWxlJ10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydtb2R1bGUnXSA9IHRyaW0oJGtleXZhbFsnbW9kdWxlJ10pOwoJCQl9CgkJCSRibG9ja0luZm9bJ3BhcmFtcyddID0gJGtleXZhbDsKCQl9CgkJZWxzZSBpZigkYmxvY2tJbmZvWyd0eXBlJ10gPT0gJ2ltYWdlJykKCQl7CgkJCSRibG9ja0luZm9bJ3ByZWZpeCddID0gJ3RodW1iXyc7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3ByZWZpeCddKSkgewoJCQkJJGJsb2NrSW5mb1sncHJlZml4J10gPSAka2V5dmFsWydwcmVmaXgnXTsKCQkJfQoJCQkkYmxvY2tJbmZvWydleGNsdWRlJ10gPSB0cnVlOwoJCQlpZihpc3NldCgka2V5dmFsWydleGNsdWRlJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRrZXl2YWxbJ2V4Y2x1ZGUnXSkpIHsKCQkJCSRibG9ja0luZm9bJ2V4Y2x1ZGUnXSA9IGZhbHNlOwoJCQl9CgkJCSRibG9ja0luZm9bJ2RpciddID0gJyc7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ2RpciddKSkgewoJCQkJJGJsb2NrSW5mb1snZGlyJ10gPSAka2V5dmFsWydkaXInXTsKCQkJfQoJCX0KCQllbHNlIGlmKCRibG9ja0luZm9bJ3R5cGUnXSA9PSAnbXVsdGlfaW5wdXQnKQoJCXsKCQkJJGlucHV0cyA9ICcnOwoJCQlpZihpc3NldCgka2V5dmFsWydpbnB1dHMnXSkpCgkJCXsKCQkJCSRpbnB1dHMgPSB0cmltKCRrZXl2YWxbJ2lucHV0cyddKTsKCQkJfQoJCQkKCQkJJHZhbHVlRGVsaW0gPSAnPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+JzsKCQkJaWYoaXNzZXQoJGtleXZhbFsndmFsdWVfZGVsaW1pdGVyJ10pKQoJCQl7CgkJCQkkdmFsdWVEZWxpbSA9IHRyaW0oJGtleXZhbFsndmFsdWVfZGVsaW1pdGVyJ10pOwoJCQl9CgkJCQoJCQkkaW5wdXREZWxpbSA9ICc8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT4nOwoJCQlpZihpc3NldCgka2V5dmFsWydpbnB1dF9kZWxpbWl0ZXInXSkpCgkJCXsKCQkJCSRpbnB1dERlbGltID0gdHJpbSgka2V5dmFsWydpbnB1dF9kZWxpbWl0ZXInXSk7CgkJCX0KCQkJJGJsb2NrSW5mb1snaW5wdXRzJ10gICAgICAgICAgPSAkaW5wdXRzOwoJCQkkYmxvY2tJbmZvWyd2YWx1ZV9kZWxpbWl0ZXInXSA9ICR2YWx1ZURlbGltOwoJCQkkYmxvY2tJbmZvWydpbnB1dF9kZWxpbWl0ZXInXSA9ICRpbnB1dERlbGltOwoJCX0KCQlyZXR1cm4gYXJyYXlfbWVyZ2UoJGtleXZhbCwkYmxvY2tJbmZvKTsKCX0KCQoJZnVuY3Rpb24gcGFyc2VfY29udGVudF9ibG9ja3MoKQoJewoJCWlmKCR0aGlzLT5fY29udGVudEJsb2Nrc0xvYWRlZCkKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQkKCQlpZigkdGhpcy0+bVR5cGUgIT0gJ2NvbnRlbnQyJyAmJiAkdGhpcy0+bVR5cGUgIT0gJ2NvbnRlbnQnKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCQoJCSR0aGlzLT5fY29udGVudEJsb2NrcyA9IGFycmF5KCk7CgkJJEFkdmFuY2VkQ29udGVudCAgICA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQlnbG9iYWwgJGdDbXMsJENNU19BRE1JTl9QQUdFOwoJCWlmKGlzc2V0KCRDTVNfQURNSU5fUEFHRSkgJiYgJENNU19BRE1JTl9QQUdFID09IDEpCgkJewoJCQkkdGhpcy0+X3RhYklkcyAgICAgID0gYXJyYXkoKTsKCQkJJHRoaXMtPl9kYXRlQmxvY2tzICA9IGFycmF5KCk7CgkJCSR0aGlzLT5fYmxvY2tUYWJzICAgPSBhcnJheSgpOwoJCQkkdGhpcy0+X2Jsb2NrR3JvdXBzID0gYXJyYXkoKTsKCQkJCgkJCSR0aGlzLT5fcGFnZVRhYnMgPSBhcnJheSgKCQkJCSdtYWluJyA9PiBhcnJheSgKCQkJCQkndGFiX2lkJyAgICAgICAgID0+ICdtYWluJywKCQkJCQkndGFiX25hbWUnICAgICAgID0+IGxhbmcoJ21haW4nKSwKCQkJCQknYmxvY2tfdGFicycgICAgID0+IGFycmF5KCksCgkJCQkJJ2Jsb2NrX2dyb3VwcycgICA9PiBhcnJheSgpLAoJCQkJCSdjb250ZW50X2Jsb2NrcycgPT4gYXJyYXkoKSkpOwoJCQkkdGhpcy0+X3RhYklkc1tdID0gJ21haW4nOwoJCQkKCQkJaWYoIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFsbCBDb250ZW50JykgKQoJCQl7CgkJCQkkdGhpcy0+X3BhZ2VUYWJzWydvcHRpb25zJ10gPSBhcnJheSgKCQkJCQkndGFiX2lkJyAgICAgICAgID0+ICdvcHRpb25zJywKCQkJCQkndGFiX25hbWUnICAgICAgID0+IGxhbmcoJ29wdGlvbnMnKSwKCQkJCQknYmxvY2tfdGFicycgICAgID0+IGFycmF5KCksCgkJCQkJJ2Jsb2NrX2dyb3VwcycgICA9PiBhcnJheSgpLAoJCQkJCSdjb250ZW50X2Jsb2NrcycgPT4gYXJyYXkoKSk7CgkJCQkkdGhpcy0+X3RhYklkc1tdID0gJ29wdGlvbnMnOwoJCQl9CgkJCQoJCQlpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSAmJiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpICkKCQkJewoJCQkJJHRoaXMtPl9wYWdlVGFic1snQWR2YW5jZWRDb250ZW50J10gPSBhcnJheSgKCQkJCQkndGFiX2lkJyAgICAgICAgID0+ICdBZHZhbmNlZENvbnRlbnQnLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnKSwKCQkJCQknYmxvY2tfdGFicycgICAgID0+IGFycmF5KCksCgkJCQkJJ2Jsb2NrX2dyb3VwcycgICA9PiBhcnJheSgpLAoJCQkJCSdjb250ZW50X2Jsb2NrcycgPT4gYXJyYXkoKSk7CgkJCQkkdGhpcy0+X3RhYklkc1tdID0gJ0FkdmFuY2VkQ29udGVudCc7CgkJCX0KCQl9CgkJZWxzZSBpZighJHRoaXMtPkNoZWNrRnJvbnRlbmRQYWdlQWNjZXNzKCkpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJCgkJJHRlbXBsYXRlb3BzID0mICRnQ21zLT5HZXRUZW1wbGF0ZU9wZXJhdGlvbnMoKTsKCQkKCQlpZiAoJHRoaXMtPm1UZW1wbGF0ZUlkICYmICR0aGlzLT5tVGVtcGxhdGVJZCA+IC0xKQoJCXsKCQkJJHRlbXBsYXRlID0gJHRlbXBsYXRlb3BzLT5Mb2FkVGVtcGxhdGVCeUlEKCR0aGlzLT5tVGVtcGxhdGVJZCk7CgkJCSR0aGlzLT5fc3R5bGVzaGVldCA9ICcuLi9zdHlsZXNoZWV0LnBocD90ZW1wbGF0ZWlkPScuJHRoaXMtPm1UZW1wbGF0ZUlkOwoJCX0KCQllbHNlCgkJewoJCQkkdGVtcGxhdGUgPSAkdGVtcGxhdGVvcHMtPkxvYWREZWZhdWx0VGVtcGxhdGUoKTsKCQl9CgkJCgkJaWYoJHRlbXBsYXRlICE9PSBmYWxzZSkKCQl7CgkJCSMgcmVhZCBjb250ZW50IGJsb2NrcwoJCQkjIHRoaXMgd2lsbCBzZWFyY2ggZm9yIHtjb250ZW50fSB7Y29udGVudF9pbWFnZX0ge2NvbnRlbnRfbW9kdWxlfSBhbmQge0FkdmFuY2VkQ29udGVudH0gd2l0aCBvciB3aXRob3V0IHBhcmFtcyAoY2FzZSBpbnNlbnNpdGl2ZSkKCQkJJHBhdHRlcm4gPSAnL3soKEFkdmFuY2VkQ29udGVudHxjb250ZW50KF9pbWFnZXxfbW9kdWxlKT8pKCg/IV8pW159XSopKX0vaSc7CgkJCQoJCQkkbWF0Y2hlcyA9IGFycmF5KCk7CgkJCSMgZ2V0IGFsbCB0aGUgdGFncwoJCQkkcmVzdWx0ID0gcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sICR0ZW1wbGF0ZS0+Y29udGVudCwgJG1hdGNoZXMpOwoJCQkKCQkJaWYgKCRyZXN1bHQgJiYgY291bnQoJG1hdGNoZXNbMV0pID4gMCkKCQkJewoJCQkJCgkJCQkjIGdldCB0aGUgYmFzaWMgY29udGVudCBwcm9wZXJ0aWVzCgkJCQkkYmFzaWNBdHRyaWJzID0gYXJyYXkoKTsKCQkJCWZvcmVhY2goICR0aGlzLT5fYXR0cmlidXRlcyBhcyAkb25lQXR0cmliICkKCQkJCXsKCQkJCQkkYmFzaWNBdHRyaWJzW10gPSAkb25lQXR0cmliWzBdOwoJCQkJfQoJCQkJCgkJCQkkaiA9IDA7CgkJCQkjIGZvcmVhY2ggdGFnCgkJCQlmb3JlYWNoICgkbWF0Y2hlc1sxXSBhcyAka2V5PT4kd2hvbGV0YWcpCgkJCQl7CgkJCQkJJGorKzsKCQkJCQkKCQkJCQlpZighJGJsb2NrSW5mbyA9ICR0aGlzLT5fZ2V0X2Jsb2NrX2luZm8oJHdob2xldGFnKSkKCQkJCQl7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQkKCQkJCQkjIGJsb2NrID0gYWN0aXZlPwoJCQkJCWlmKGlzc2V0KCRibG9ja0luZm9bJ2FjdGl2ZSddKSAmJiAkdGhpcy0+SXNGYWxzZSgkYmxvY2tJbmZvWydhY3RpdmUnXSkpCgkJCQkJewoJCQkJCQljb250aW51ZTsgIyBkb24ndCBwcm9jZXNzIGluYWN0aXZlIGJsb2NrcwoJCQkJCX0KCQkJCQkKCQkJCQlpZihpc3NldCgkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSW5mb1snaWQnXV0pKQoJCQkJCXsKCQkJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0luZm9bJ2lkJ11dWydtdWx0aXBsZSddID0gdHJ1ZTsKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJCQoJCQkJCSMgaWYgdGhpcyBibG9jayBoYXMgYmVlbiBhZGRlZCB0byB0aGUgdGVtcGxhdGUgYWZ0ZXIgcGFnZSBoYXMgYmVlbiBjcmVhdGVkCgkJCQkJaWYoIWluX2FycmF5KCRibG9ja0luZm9bJ2lkJ10sJHRoaXMtPm1Qcm9wZXJ0aWVzLT5tUHJvcGVydHlOYW1lcykpCgkJCQkJewoJCQkJCQkkYmxvY2tJbmZvWyduZXdfYmxvY2snXSA9IHRydWU7CgkJCQkJfQoJCQkJCQoJCQkJCSRwYWdlVGFiID0gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybChzdHJ0b2xvd2VyKHRyaW0oJGJsb2NrSW5mb1sncGFnZV90YWInXSkpKSk7CgkJCQkJaWYoIWlzc2V0KCR0aGlzLT5fcGFnZVRhYnNbJHBhZ2VUYWJdKSkKCQkJCQl7CgkJCQkJCSR0aGlzLT5fcGFnZVRhYnNbJHBhZ2VUYWJdWyd0YWJfaWQnXSAgICAgICA9ICRwYWdlVGFiOwoJCQkJCQkkdGhpcy0+X3BhZ2VUYWJzWyRwYWdlVGFiXVsndGFiX25hbWUnXSAgICAgPSAkYmxvY2tJbmZvWydwYWdlX3RhYiddOwoJCQkJCQkkdGhpcy0+X3BhZ2VUYWJzWyRwYWdlVGFiXVsnYmxvY2tfdGFicyddICAgPSBhcnJheSgpOwoJCQkJCQkkdGhpcy0+X3BhZ2VUYWJzWyRwYWdlVGFiXVsnYmxvY2tfZ3JvdXBzJ10gPSBhcnJheSgpOwoJCQkJCQkkYmxvY2tJbmZvWydwYWdlX3RhYiddID0gJHBhZ2VUYWI7CgkJCQkJfQoJCQkJCSR0aGlzLT5fcGFnZVRhYnNbJHBhZ2VUYWJdWydjb250ZW50X2Jsb2NrcyddWyRibG9ja0luZm9bJ2lkJ11dID0gJGJsb2NrSW5mb1snaWQnXTsKCQkJCQkKCQkJCQkkYmxvY2tUYWIgPSAnJzsKCQkJCQlpZigkYmxvY2tJbmZvWydibG9ja190YWInXSAhPSAnJykKCQkJCQl7CgkJCQkJCSRibG9ja1RhYiA9ICRwYWdlVGFiIC4gJ18nIC4gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybChzdHJ0b2xvd2VyKHRyaW0oJGJsb2NrSW5mb1snYmxvY2tfdGFiJ10pKSkpOwoJCQkJCQlpZighaXNzZXQoJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXSkpCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5fYmxvY2tUYWJzWyRibG9ja1RhYl1bJ3RhYl9pZCddICAgICAgID0gJGJsb2NrVGFiOwoJCQkJCQkJJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXVsndGFiX25hbWUnXSAgICAgPSAkYmxvY2tJbmZvWydibG9ja190YWInXTsKCQkJCQkJCSR0aGlzLT5fYmxvY2tUYWJzWyRibG9ja1RhYl1bJ2Jsb2NrX2dyb3VwcyddID0gYXJyYXkoKTsKCQkJCQkJfQoJCQkJCQkkdGhpcy0+X2Jsb2NrVGFic1skYmxvY2tUYWJdWydjb250ZW50X2Jsb2NrcyddWyRibG9ja0luZm9bJ2lkJ11dID0gJGJsb2NrSW5mb1snaWQnXTsKCQkJCQkJJHRoaXMtPl9wYWdlVGFic1skcGFnZVRhYl1bJ2Jsb2NrX3RhYnMnXVskYmxvY2tUYWJdICAgICAgICAgICAgICA9ICRibG9ja1RhYjsKCQkJCQkJJGJsb2NrSW5mb1snYmxvY2tfdGFiJ10gPSAkYmxvY2tUYWI7CgkJCQkJfQoJCQkJCQoJCQkJCSRibG9ja0dyb3VwID0gJyc7CgkJCQkJaWYoJGJsb2NrSW5mb1snYmxvY2tfZ3JvdXAnXSAhPSAnJykKCQkJCQl7CgkJCQkJCSRibG9ja0dyb3VwID0gKCRibG9ja1RhYj8kYmxvY2tUYWI6JHBhZ2VUYWIpIC4gJ18nIC4gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybChzdHJ0b2xvd2VyKHRyaW0oJGJsb2NrSW5mb1snYmxvY2tfZ3JvdXAnXSkpKSk7CgkJCQkJCWlmKCFpc3NldCgkdGhpcy0+X2Jsb2NrR3JvdXBzWyRibG9ja0dyb3VwXSkpCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5fYmxvY2tHcm91cHNbJGJsb2NrR3JvdXBdWydncm91cF9pZCddICAgPSAkYmxvY2tHcm91cDsKCQkJCQkJCSR0aGlzLT5fYmxvY2tHcm91cHNbJGJsb2NrR3JvdXBdWydncm91cF9uYW1lJ10gPSAkYmxvY2tJbmZvWydibG9ja19ncm91cCddOwoJCQkJCQkJJHRoaXMtPl9wYWdlVGFic1skcGFnZVRhYl1bJ2Jsb2NrX2dyb3VwcyddWyRibG9ja0dyb3VwXSA9ICRibG9ja0dyb3VwOwoJCQkJCQl9CgkJCQkJCSR0aGlzLT5fYmxvY2tHcm91cHNbJGJsb2NrR3JvdXBdWydjb250ZW50X2Jsb2NrcyddWyRibG9ja0luZm9bJ2lkJ11dID0gJGJsb2NrSW5mb1snaWQnXTsKCQkJCQkJdW5zZXQoJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXVsnY29udGVudF9ibG9ja3MnXVskYmxvY2tJbmZvWydpZCddXSk7CgkJCQkJCWlmKCRibG9ja1RhYikKCQkJCQkJewoJCQkJCQkJJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXVsnYmxvY2tfZ3JvdXBzJ11bJGJsb2NrR3JvdXBdID0gJGJsb2NrR3JvdXA7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQl1bnNldCgkdGhpcy0+X2Jsb2NrVGFic1skYmxvY2tUYWJdWydibG9ja19ncm91cHMnXVskYmxvY2tHcm91cF0pOwoJCQkJCQl9CgkJCQkJCSRibG9ja0luZm9bJ2Jsb2NrX2dyb3VwJ10gPSAkYmxvY2tHcm91cDsKCQkJCQl9CgkJCQkJCgkJCQkJIyB0aGlzIHdpbGwgY3JlYXRlIGFuIGludmFsaWQgYmxvY2sgdHlwZSB0byBwcmludCBvdXQgYQoJCQkJCSMgbWVzc2FnZSB3aGVuIHVzaW5nIGEgYmFzaWMgY29udGVudCBwcm9wZXJ0eSBhcyBibG9jayBuYW1lCgkJCQkJaWYoaW5fYXJyYXkoJGJsb2NrSW5mb1snaWQnXSwgJGJhc2ljQXR0cmlicykKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICRibG9ja0luZm9bJ2lkJ10gLiAnX2ZldV9hY3Rpb24nCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAkYmxvY2tJbmZvWydpZCddIC4gJ19mZXVfYWN0aW9uW10nCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAkYmxvY2tJbmZvWydpZCddIC4gJ19mZXVfYWNjZXNzJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJGJsb2NrSW5mb1snaWQnXSAuICdfZmV1X2FjY2Vzc1tdJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJ0FkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZScKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICdBZHZhbmNlZENvbnRlbnRFbmREYXRlJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJ0FkdmFuY2VkQ29udGVudFN0YXJ0VGltZScKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICdBZHZhbmNlZENvbnRlbnRFbmRUaW1lJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJ3N0YXJ0X2RhdGUnCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAnZW5kX2RhdGUnCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAkYmxvY2tJbmZvWydpZCddIC4gJ19BZHZhbmNlZENvbnRlbnRUaW1lJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJGJsb2NrSW5mb1snaWQnXSAuICdfQWR2YW5jZWRDb250ZW50RGF0ZScpCgkJCQkJewoJCQkJCQkkYmxvY2tJbmZvWydpZCddID0gbWQ1KCRibG9ja0luZm9bJ2lkJ10gLiAkaik7CgkJCQkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJbmZvWydpZCddXSA9ICRibG9ja0luZm87CgkJCQkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJbmZvWydpZCddXVsnYmxvY2tfdHlwZSddICAgID0gJyc7CgkJCQkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJbmZvWydpZCddXVsnZGVmYXVsdCddID0gJHRoaXMtPmxhbmcoJ2Vycm9yX2Jhc2ljYXR0cmliJywgJGJsb2NrSW5mb1snbmFtZSddKTsKCQkJCQkJCgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQkKCQkJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSW5mb1snaWQnXV0gPSAkYmxvY2tJbmZvOwoJCQkJCSR0aGlzLT5BZGRFeHRyYVByb3BlcnR5KCRibG9ja0luZm9bJ2lkJ10pOwoJCQkJCQoJCQkJCWlmKCRibG9ja0luZm9bJ2Jsb2NrX3R5cGUnXSA9PSAnbXVsdGlfaW5wdXQnICYmICRibG9ja0luZm9bJ2lucHV0cyddKQoJCQkJCXsKCQkJCQkJIyBnZXQgbXVsdGkgaW5wdXRzCgkJCQkJCSRtdWx0aV9pbnB1dF9pZHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCcsJywkYmxvY2tJbmZvWydpbnB1dHMnXSkpOwoJCQkJCQlmb3JlYWNoKCRtdWx0aV9pbnB1dF9pZHMgYXMgJGsxPT4kbXVsdGlfaW5wdXRfaWQpCgkJCQkJCXsKCQkJCQkJCWlmKCFpc3NldCgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF0pKQoJCQkJCQkJewoJCQkJCQkJCSR0aGlzLT5fbXVsdGlJbnB1dHMgPSBhcnJheV9tZXJnZSgkdGhpcy0+X211bHRpSW5wdXRzLCAkQWR2YW5jZWRDb250ZW50LT5HZXRNdWx0aUlucHV0RnVsbCgkbXVsdGlfaW5wdXRfaWRzKSk7CgkJCQkJCQkJaWYoIWlzc2V0KCR0aGlzLT5fbXVsdGlJbnB1dHNbJG11bHRpX2lucHV0X2lkXSkpCgkJCQkJCQkJewoJCQkJCQkJCQljb250aW51ZTsKCQkJCQkJCQl9CgkJCQkJCQkJJHBhdHRlcm4gPSAnL3soKEFkdmFuY2VkQ29udGVudHxjb250ZW50KF9pbWFnZXxfbW9kdWxlKT8pKCg/IV8pW159XSopKX0vaSc7CgkJCQkJCQkJJG1hdGNoZXMgPSBhcnJheSgpOwoJCQkJCQkJCSMgZ2V0IGFsbCB0aGUgdGFncwoJCQkJCQkJCSRyZXN1bHQgPSBwcmVnX21hdGNoX2FsbCgkcGF0dGVybiwgJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdWydpbnB1dF9maWVsZHMnXSwgJG1hdGNoZXMpOwoJCQkJCQkJCQoJCQkJCQkJCWlmICgkcmVzdWx0ICYmIGNvdW50KCRtYXRjaGVzWzFdKSA+IDApCgkJCQkJCQkJewoJCQkJCQkJCQkjIGZvcmVhY2ggdGFnCgkJCQkJCQkJCWZvcmVhY2ggKCRtYXRjaGVzWzFdIGFzICRrMj0+JHdob2xldGFnKQoJCQkJCQkJCQl7CgkJCQkJCQkJCQlpZighJGlucHV0SW5mbyA9ICR0aGlzLT5fZ2V0X2Jsb2NrX2luZm8oJHdob2xldGFnKSkKCQkJCQkJCQkJCXsKCQkJCQkJCQkJCQljb250aW51ZTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJCWlmKCRpbnB1dEluZm9bJ2Jsb2NrX3R5cGUnXSA9PSAnbXVsdGlfaW5wdXQnKQoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCWNvbnRpbnVlOyAjIFRvRG86IGRpc3BsYXkgbWVzc2FnZT8KCQkJCQkJCQkJCX0KCQkJCQkJCQkJCSR0aGlzLT5fbXVsdGlJbnB1dHNbJG11bHRpX2lucHV0X2lkXVsnZWxlbWVudHMnXVskazJdID0gJGlucHV0SW5mbzsKCQkJCQkJCQkJfQoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCQkjIGZvcmNlIGEgbG9hZAoJCQkkdGhpcy0+bVByb3BlcnRpZXMtPkxvYWQoJHRoaXMtPm1JZCk7CgkJCSR0aGlzLT5fY29udGVudEJsb2Nrc0xvYWRlZCA9IHRydWU7CgkJfQoJCXJldHVybiAkdGhpcy0+X2NvbnRlbnRCbG9ja3NMb2FkZWQ7Cgl9CgkKCWZ1bmN0aW9uIGRpc3BsYXlfY29udGVudF9ibG9jaygkYmxvY2tJbmZvLCR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCWlmKG1ldGhvZF9leGlzdHMoJHRoaXMsJ19kaXNwbGF5XycuJGJsb2NrSW5mb1snYmxvY2tfdHlwZSddLidfYmxvY2snKSkKCQl7CgkJCXJldHVybiBjYWxsX3VzZXJfZnVuYyhhcnJheSgkdGhpcywnX2Rpc3BsYXlfJy4kYmxvY2tJbmZvWydibG9ja190eXBlJ10uJ19ibG9jaycpLCAkYmxvY2tJbmZvLCAkdmFsdWUsICRhZGRpbmcpOwoJCX0KCQlyZXR1cm4gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnaW52YWxpZF9ibG9ja3R5cGUnLCRibG9ja0luZm9bJ2Jsb2NrX3R5cGUnXSwkYmxvY2tJbmZvWyduYW1lJ10pOwoJfQoJCglmdW5jdGlvbiBTZXRQcm9wZXJ0aWVzKCkKCXsKCQlwYXJlbnQ6OlNldFByb3BlcnRpZXMoKTsKCQkKCQkkdGhpcy0+QWRkQmFzZVByb3BlcnR5KCd0ZW1wbGF0ZScsIDQsIDAsICdpbnQnKTsKCQkkdGhpcy0+QWRkQmFzZVByb3BlcnR5KCdwYWdlbWV0YWRhdGEnLCAyMCk7CgkJCgkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnc2VhcmNoYWJsZScsIDgsIDAsICdpbnQnKTsKCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdwYWdlZGF0YScsIDI1KTsKCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdkaXNhYmxlX3d5c2l3eWcnLCA2MCwgMCwgJ2ludCcpOwoJCQoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJaWYoJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgndXNlX2FkdmFuY2VkX3BhZ2VvcHRpb25zJywxKSkKCQl7CgkJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ3VzZV9leHBpcmVfZGF0ZScsIDk5LCAwLCAnaW50Jyk7CgkJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ3N0YXJ0X2RhdGUnLCAxMDAsIDAsICdpbnQnKTsKCQkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnZW5kX2RhdGUnLCAxMDEsIDAsICdpbnQnKTsKCQkJCgkJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ2ZldV9hY2Nlc3MnLCAxMDIpOwoJCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdyZWRpcmVjdF9wYWdlJywgMTAzLCAwLCAnaW50Jyk7CgkJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ2luaGVyaXRfcmVkaXJlY3RfcGFyYW1zJywgMTA0LCAwLCdpbnQnKTsKCQkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgncmVkaXJlY3RfcGFyYW1zJywgMTA1LCAwKTsKCQkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnZXZhbHVhdGVfc21hcnR5JywgMTA2LCAwLCAnaW50Jyk7CgkJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ2ZldV9hY3Rpb24nLCAxMDcsIDAsICdpbnQnKTsKCQkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnaGlkZV9tZW51X2l0ZW0nLCAxMDgsIDAsICdpbnQnKTsKCQl9CgkJJHRoaXMtPm1QcmV2aWV3ID0gdHJ1ZTsKCX0KCQoJZnVuY3Rpb24gUmVhZHlGb3JFZGl0KCkKCXsKCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCX0KCQoJZnVuY3Rpb24gU2hvdygkcGFyYW0gPSAnY29udGVudF9lbicpCgl7CgkJZ2xvYmFsICRnQ21zLCAkQ01TX0FETUlOX1BBR0U7CgkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQlpZigkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpICYmICghaXNzZXQoJENNU19BRE1JTl9QQUdFKSB8fCAkQ01TX0FETUlOX1BBR0UgIT09IDEpKQoJCXsKCQkJaWYoISR0aGlzLT5DaGVja0Zyb250ZW5kUGFnZUFjY2VzcygpKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPkRvRnJvbnRlbmRQYWdlQWN0aW9uKCk7CgkJCX0KCQl9CgkJCgkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7CgkJJHBhcmFtID0gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW0pKTsKCQkKCQlpZighaXNzZXQoJENNU19BRE1JTl9QQUdFKSB8fCAkQ01TX0FETUlOX1BBR0UgIT09IDEpCgkJewoJCQlmb3JlYWNoKCR0aGlzLT5fY29udGVudEJsb2NrcyBhcyAkYmxvY2tJbmZvKQoJCQl7CgkJCQlpZigkZmV1c2VycyA9JiAkQWR2YW5jZWRDb250ZW50LT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQkJewoJCQkJCWlmKCRibG9ja0luZm9bJ2ZldV9hY2Nlc3MnXSAmJiAhJHRoaXMtPkNoZWNrRnJvbnRlbmRBY2Nlc3MoJGJsb2NrSW5mb1snZmV1X2FjY2VzcyddKSkKCQkJCQl7CgkJCQkJCWlmKCRibG9ja0luZm9bJ2ZldV9hY3Rpb24nXSAmJiAhJHRoaXMtPl9mZXVBY3Rpb24pCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5fZmV1QWN0aW9uID0gdHJ1ZTsKCQkJCQkJCSR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKCRibG9ja0luZm9bJ2lkJ10sJGZldXNlcnMtPkRvQWN0aW9uKCdkZWZhdWx0JywgJ2NudG50MDEnLCBhcnJheSgnZm9ybSc9Pidsb2dpbicpLCAkdGhpcy0+bUlkKSk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkYmxvY2tJbmZvWydpZCddLCcnKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCWlmKCRibG9ja0luZm9bJ2Jsb2NrX3R5cGUnXSA9PSAnZGF0ZScgJiYgJGJsb2NrSW5mb1snZGF0ZV9mb3JtYXQnXSAhPSAnJykKCQkJCXsKCQkJCQkkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkYmxvY2tJbmZvWydpZCddLHN0cmZ0aW1lKCRibG9ja0luZm9bJ2RhdGVfZm9ybWF0J10sJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrSW5mb1snaWQnXSkpKTsKCQkJCX0KCQkJfQoJCX0KCQkKCQkjIE1MRSBzdXBwb3J0CgkJaWYoJHRoaXMtPm1sZSAmJiAkdGhpcy0+YmxvY2tMYW5nICE9ICcnKQoJCXsKCQkJaWYoJHBhcmFtID09ICdjb250ZW50X2VuJykKCQkJewoJCQkJJHBhcmFtID0gJ2NvbnRlbnQnLiR0aGlzLT5ibG9ja0xhbmc7CgkJCX0KCQkJZWxzZSBpZighZW5kc3dpdGgoJHBhcmFtLCR0aGlzLT5ibG9ja0xhbmcpKQoJCQl7CgkJCQkkcGFyYW0gLj0gJHRoaXMtPmJsb2NrTGFuZzsKCQkJfQoJCX0KCQkjLS0tCgkJCgkJJHJlc3VsdCA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRwYXJhbSk7CgkJCgkJIyBNTEUgc3VwcG9ydAoJCWlmKCR0aGlzLT5tbGUgJiYgJHRoaXMtPmJsb2NrTGFuZyAhPSAnJykKCQl7CgkJCWlmKCRyZXN1bHQgPT0gJycgJiYgJHRoaXMtPmRlZmF1bHRCbG9ja0xhbmcgIT0gJycgJiYgJHRoaXMtPmRlZmF1bHRCbG9ja0xhbmcgIT0gJHRoaXMtPmJsb2NrTGFuZykKCQkJewoJCQkJJHBhcmFtID0gc3RyX3JlcGxhY2UoJHRoaXMtPmJsb2NrTGFuZywgJHRoaXMtPmRlZmF1bHRCbG9ja0xhbmcsICRwYXJhbSk7CgkJCQkkcmVzdWx0ID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJHBhcmFtKTsKCQkJfQoJCX0KCQkjLS0tCgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIFRhYk5hbWVzKCkKCXsKCQkkdGFicyA9IGFycmF5KGxhbmcoJ21haW4nKSk7CgkJaWYoIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFsbCBDb250ZW50JykgKQoJCXsKCQkJJHRhYnNbXSA9IGxhbmcoJ29wdGlvbnMnKTsKCQl9CgkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQlpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSAmJiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpKQoJCXsKCQkJJHRhYnNbXSA9ICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2FkdmFuY2VkY29udGVudF90YWJuYW1lJyk7CgkJfQoJCQoJCSR0aGlzLT5wYXJzZV9jb250ZW50X2Jsb2NrcygpOwoJCQoJCWZvcmVhY2goJHRoaXMtPl9wYWdlVGFicyBhcyAkdGFiKQoJCXsKCQkJaWYoIWluX2FycmF5KCR0YWJbJ3RhYl9uYW1lJ10sICR0YWJzKSkKCQkJewoJCQkJJHRhYnNbXSA9ICgkdGFiWyd0YWJfaWQnXSA9PSAnb3B0aW9ucycgPyBsYW5nKCdvcHRpb25zJykgOiAkdGFiWyd0YWJfbmFtZSddKTsKCQkJfQoJCQlpZighaW5fYXJyYXkoJHRhYlsndGFiX2lkJ10sICR0aGlzLT5fdGFiSWRzKSkKCQkJewoJCQkJJHRoaXMtPl90YWJJZHNbXSA9ICR0YWJbJ3RhYl9pZCddOwoJCQl9CgkJfQoJCXJldHVybiAkdGFiczsKCX0KCQoJZnVuY3Rpb24gRmlsbFBhcmFtcygkcGFyYW1zKQoJewoJCWlmKGlzc2V0KCRwYXJhbXNbJ2NvbnRlbnRfdHlwZSddKSkKCQl7CgkJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJCQoJCQkkcGFyYW1ldGVycyA9IGFycmF5KCdwYWdlZGF0YScsICdzZWFyY2hhYmxlJywgJ2Rpc2FibGVfd3lzaXd5ZycsICdmZXVfYWNjZXNzJywgJ3JlZGlyZWN0X3BhZ2UnLCAncmVkaXJlY3RfcGFyYW1zJywgJ2V2YWx1YXRlX3NtYXJ0eScsICdmZXVfYWN0aW9uJywgJ3N0YXJ0X2RhdGUnLCAnZW5kX2RhdGUnLCAndXNlX2V4cGlyZV9kYXRlJywnaGlkZV9tZW51X2l0ZW0nLCdpbmhlcml0X3JlZGlyZWN0X3BhcmFtcycpOwoJCQkKCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzTG9hZGVkID0gZmFsc2U7CgkJCSR0aGlzLT5tVGVtcGxhdGVJZCAgICAgICAgICA9IGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10pID8gJHBhcmFtc1sndGVtcGxhdGVfaWQnXSA6ICR0aGlzLT5tVGVtcGxhdGVJZDsKCQkJJHRoaXMtPm1UeXBlICAgICAgICAgICAgICAgID0gaXNzZXQoJHBhcmFtc1snY29udGVudF90eXBlJ10pID8gJHBhcmFtc1snY29udGVudF90eXBlJ10gOiAkdGhpcy0+bVR5cGU7CgkJCQoJCQlpZigkdGhpcy0+bVR5cGUgPT0gJ2NvbnRlbnQyJyB8fCAkdGhpcy0+bVR5cGUgPT0gJ2NvbnRlbnQnKQoJCQl7CgkJCQkjIGFkZCBjb250ZW50IGJsb2NrcwoJCQkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7CgkJCQkKCQkJCSMgYWRkZWQgYnkgTmFOOgoJCQkJJHRoaXMtPm1QYXJlbnRJZCA9IGlzc2V0KCRwYXJhbXNbJ3BhcmVudF9pZCddKSA/ICRwYXJhbXNbJ3BhcmVudF9pZCddIDogJHRoaXMtPm1QYXJlbnRJZDsKCQkJCQoJCQkJaWYoY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSAmJiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpKQoJCQkJewoJCQkJCSRwYXJhbXNbJ2ZldV9hY2Nlc3MnXSA9IGlzc2V0KCRwYXJhbXNbJ2ZldV9hY2Nlc3MnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snZmV1X2FjY2VzcyddKSA/ICRwYXJhbXNbJ2ZldV9hY2Nlc3MnXSA6ICgkZWRpdGluZyA/ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdmZXVfYWNjZXNzJykpKSA6ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ2ZldV9hY2Nlc3MnKSkpKTsKCQkJCQkjIGlmIHBhZ2UgaGFzIG5vIHBhcmVudHMgYnV0IHdhbnRzIHRvIGluaGVyaXQgLT4gcmVtb3ZlIGluaGVyaXRhbmNlCgkJCQkJaWYoJHRoaXMtPm1QYXJlbnRJZCA8PSAwICYmIGluX2FycmF5KC0xLCAkcGFyYW1zWydmZXVfYWNjZXNzJ10pKQoJCQkJCXsKCQkJCQkJZm9yZWFjaCgkcGFyYW1zWydmZXVfYWNjZXNzJ10gYXMgJGs9PiR2KQoJCQkJCQl7CgkJCQkJCQlpZigkdiA9PSAtMSkKCQkJCQkJCXsKCQkJCQkJCQl1bnNldCgkcGFyYW1zWydmZXVfYWNjZXNzJ11bJGtdKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCQkjIGlmIHRoZXJlIGlzIHN0aWxsIGluaGVyaXRhbmNlIC0+IGNoZWNrIGlmIHRoZXJlIGFjdHVhbGx5IGlzIGFueSBmZXUgZ3JvdXAgc2VsZWN0ZWQgYnkgcGFyZW50cwoJCQkJCSRfZmV1QWNjZXNzID0gYXJyYXkoKTsKCQkJCQlpZihpbl9hcnJheSgtMSwgJHBhcmFtc1snZmV1X2FjY2VzcyddKSkKCQkJCQl7CgkJCQkJCSMgJF9mZXVBY2Nlc3MgY29udGFpbnMgYWxsIGZldSBncm91cHMgKG9mIGN1cnJlbnQgcGFnZSBhcyB3ZWxsIGFzIG9mIGFsbCBwYXJlbnQgcGFnZXMpCgkJCQkJCSRfZmV1QWNjZXNzID0gJHRoaXMtPkluaGVyaXRQYXJlbnRQcm9wKCdmZXVfYWNjZXNzJywgJHBhcmFtc1snZmV1X2FjY2VzcyddKTsKCQkJCQl9CgkJCQkJCgkJCQkJIyBpZiB3ZSBoYXZlIHNlbGVjdGVkIGFueSBmZXUgZ3JvdXAgLT4gZGlzYWJsZSBjYWNoaW5nIGFuZCBzZWFyY2gKCQkJCQlpZihjb3VudCgkX2ZldUFjY2VzcykgfHwgKGNvdW50KCRwYXJhbXNbJ2ZldV9hY2Nlc3MnXSkgJiYgIWluX2FycmF5KC0xLCAkcGFyYW1zWydmZXVfYWNjZXNzJ10pKSkKCQkJCQl7CgkJCQkJCSRwYXJhbXNbJ2NhY2hhYmxlJ10gICA9IGZhbHNlOwoJCQkJCQkkdGhpcy0+bUNhY2hhYmxlICAgICAgPSBmYWxzZTsKCQkJCQkJJHBhcmFtc1snc2VhcmNoYWJsZSddID0gZmFsc2U7CgkJCQkJfQoJCQkJCSRwYXJhbXNbJ2ZldV9hY2Nlc3MnXSA9IGltcGxvZGUoJywnLCAkcGFyYW1zWydmZXVfYWNjZXNzJ10pOwoJCQkJCQoJCQkJCSRwYXJhbXNbJ3JlZGlyZWN0X3BhZ2UnXSA9IGlzc2V0KCRwYXJhbXNbJ3JlZGlyZWN0X3BhZ2UnXSkgPyAkcGFyYW1zWydyZWRpcmVjdF9wYWdlJ10gOiAoJGVkaXRpbmcgPyAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgncmVkaXJlY3RfcGFnZScpIDogJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgncmVkaXJlY3RfcGFnZScpKTsKCQkJCQlpZigkdGhpcy0+bVBhcmVudElkIDw9IDAgJiYgJHBhcmFtc1sncmVkaXJlY3RfcGFnZSddID09IC0xKQoJCQkJCXsKCQkJCQkJJHBhcmFtc1sncmVkaXJlY3RfcGFnZSddID0gJyc7CgkJCQkJfQoJCQkJCS8vIFRvRG86IHdoYXQgYWJvdXQgZWRpdGluZz8/PwoJCQkJCSRwYXJhbXNbJ2ZldV9hY3Rpb24nXSA9IGlzc2V0KCRwYXJhbXNbJ2ZldV9hY3Rpb24nXSkgPyAkcGFyYW1zWydmZXVfYWN0aW9uJ10gOiAoJGVkaXRpbmcgPyAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjdGlvbicpIDogJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgnZmV1X2FjdGlvbicsMSkpOwoJCQkJCWlmKCR0aGlzLT5tUGFyZW50SWQgPD0gMCAmJiAkcGFyYW1zWydmZXVfYWN0aW9uJ10gPT0gLTEpCgkJCQkJewoJCQkJCQkkcGFyYW1zWydmZXVfYWN0aW9uJ10gPSAxOwoJCQkJCX0KCQkJCQkKCQkJCQkkcGFyYW1zWydoaWRlX21lbnVfaXRlbSddID0gaXNzZXQoJHBhcmFtc1snaGlkZV9tZW51X2l0ZW0nXSkgPyAkcGFyYW1zWydoaWRlX21lbnVfaXRlbSddIDogKCRlZGl0aW5nID8gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2hpZGVfbWVudV9pdGVtJykgOiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdoaWRlX21lbnVfaXRlbScsMCkpOwoJCQkJCWlmKCR0aGlzLT5tUGFyZW50SWQgPD0gMCAmJiAkcGFyYW1zWydoaWRlX21lbnVfaXRlbSddID09IC0xKQoJCQkJCXsKCQkJCQkJJHBhcmFtc1snaGlkZV9tZW51X2l0ZW0nXSA9IDA7CgkJCQkJfQoJCQkJCQoJCQkJCSRwYXJhbXNbJ2luaGVyaXRfcmVkaXJlY3RfcGFyYW1zJ10gPSBpc3NldCgkcGFyYW1zWydpbmhlcml0X3JlZGlyZWN0X3BhcmFtcyddKSA/IHRydWUgOiAoJGVkaXRpbmcgPyAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnaW5oZXJpdF9yZWRpcmVjdF9wYXJhbXMnKSA6ICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ2luaGVyaXRfcmVkaXJlY3RfcGFyYW1zJykpOwoJCQkJCWlmKCR0aGlzLT5tUGFyZW50SWQgPD0gMCAmJiAkcGFyYW1zWydpbmhlcml0X3JlZGlyZWN0X3BhcmFtcyddKQoJCQkJCXsKCQkJCQkJJHBhcmFtc1snaW5oZXJpdF9yZWRpcmVjdF9wYXJhbXMnXSA9IGZhbHNlOwoJCQkJCX0KCQkJCQkKCQkJCQlpZigkcGFyYW1zWydpbmhlcml0X3JlZGlyZWN0X3BhcmFtcyddKSB7CgkJCQkJCSRwYXJhbXNbJ3JlZGlyZWN0X3BhcmFtcyddID0gLTE7CgkJCQkJCSRwYXJhbXNbJ2V2YWx1YXRlX3NtYXJ0eSddID0gLTE7CgkJCQkJfQoJCQkJCQoJCQkJCSRwYXJhbXNbJ3VzZV9leHBpcmVfZGF0ZSddID0gaXNzZXQoJHBhcmFtc1sndXNlX2V4cGlyZV9kYXRlJ10pID8gJHBhcmFtc1sndXNlX2V4cGlyZV9kYXRlJ10gOiAoJGVkaXRpbmcgPyAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgndXNlX2V4cGlyZV9kYXRlJykgOiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCd1c2VfZXhwaXJlX2RhdGUnKSk7CgkJCQkJaWYoJHRoaXMtPm1QYXJlbnRJZCA8PSAwICYmICRwYXJhbXNbJ3VzZV9leHBpcmVfZGF0ZSddID09IC0xKQoJCQkJCXsKCQkJCQkJJHBhcmFtc1sndXNlX2V4cGlyZV9kYXRlJ10gPSAwOwoJCQkJCX0KCQkJCQlpZigkcGFyYW1zWyd1c2VfZXhwaXJlX2RhdGUnXSA9PSAtMSkKCQkJCQl7CgkJCQkJCSRwYXJhbXNbJ3N0YXJ0X2RhdGUnXSA9IC0xOwoJCQkJCQkkcGFyYW1zWydlbmRfZGF0ZSddICAgPSAtMTsKCQkJCQl9CgkJCQkJZWxzZSBpZigkcGFyYW1zWyd1c2VfZXhwaXJlX2RhdGUnXSA9PSAwKQoJCQkJCXsKCQkJCQkJJHBhcmFtc1snc3RhcnRfZGF0ZSddID0gJyc7CgkJCQkJCSRwYXJhbXNbJ2VuZF9kYXRlJ10gICA9ICcnOwoJCQkJCX0KCQkJCQllbHNlIHsKCQkJCQkJaWYoaXNzZXQoJHBhcmFtc1snQWR2YW5jZWRDb250ZW50U3RhcnRUaW1lJ10pICYmIGlzc2V0KCRwYXJhbXNbJ0FkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZSddKSkKCQkJCQkJewoJCQkJCQkJJHBhcmFtc1snc3RhcnRfZGF0ZSddID0gJHBhcmFtc1snQWR2YW5jZWRDb250ZW50U3RhcnRUaW1lJ10gKyAkcGFyYW1zWydBZHZhbmNlZENvbnRlbnRTdGFydERhdGUnXTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRwYXJhbXNbJ3N0YXJ0X2RhdGUnXSA9ICgkZWRpdGluZyAmJiAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnc3RhcnRfZGF0ZScpID8gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ3N0YXJ0X2RhdGUnKSA6IHN0cnRvdGltZSgnKycgLiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCJzdGFydF9kYXRlIiwnMSB3ZWVrJykpKTsKCQkJCQkJfQoJCQkJCQlpZihpc3NldCgkcGFyYW1zWydBZHZhbmNlZENvbnRlbnRFbmRUaW1lJ10pICYmIGlzc2V0KCRwYXJhbXNbJ0FkdmFuY2VkQ29udGVudEVuZERhdGUnXSkpCgkJCQkJCXsKCQkJCQkJCSRwYXJhbXNbJ2VuZF9kYXRlJ10gPSAkcGFyYW1zWydBZHZhbmNlZENvbnRlbnRFbmRUaW1lJ10gKyAkcGFyYW1zWydBZHZhbmNlZENvbnRlbnRFbmREYXRlJ107CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkcGFyYW1zWydlbmRfZGF0ZSddID0gKCRlZGl0aW5nICYmICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdlbmRfZGF0ZScpID8gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2VuZF9kYXRlJykgOiBzdHJ0b3RpbWUoJysnIC4gJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgiZW5kX2RhdGUiLCcxIHdlZWsnKSwgJHBhcmFtc1snc3RhcnRfZGF0ZSddKSk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQkKCQkJCSMgZG8gdGhlIGNvbnRlbnQgcHJvcGVydHkgcGFyYW1ldGVycwoJCQkJZm9yZWFjaCAoJHBhcmFtZXRlcnMgYXMgJG9uZXBhcmFtKQoJCQkJewoJCQkJCWlmIChpc3NldCgkcGFyYW1zWyRvbmVwYXJhbV0pKQoJCQkJCXsKCQkJCQkJJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoJG9uZXBhcmFtLCAkcGFyYW1zWyRvbmVwYXJhbV0pOwoJCQkJCX0KCQkJCX0KCQkJCWlmKCRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3VzZV9hZHZhbmNlZF9wYWdlb3B0aW9ucycsMSkgJiYgJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ3VzZV9leHBpcmVfZGF0ZScpICYmICgkdGhpcy0+R2V0UHJvcGVydHkoJ3N0YXJ0X2RhdGUnKSA+IHRpbWUoKSB8fCAkdGhpcy0+R2V0UHJvcGVydHkoJ2VuZF9kYXRlJykgPCB0aW1lKCkpICYmIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJykpCgkJCQl7CgkJCQkJJHBhcmFtc1snYWN0aXZlJ10gPSBmYWxzZTsKCQkJCQkkdGhpcy0+bUFjdGl2ZSAgICA9IGZhbHNlOwoJCQkJfQoJCQkJCgkJCQkjIG1ldGFkYXRhCgkJCQkkdGhpcy0+bU1ldGFkYXRhID0gaXNzZXQoJHBhcmFtc1snbWV0YWRhdGEnXSkgPyAkcGFyYW1zWydtZXRhZGF0YSddIDogJHRoaXMtPm1NZXRhZGF0YTsKCQkJCQoJCQkJIyBjb250ZW50IGJsb2NrcwoJCQkJJGkgPSAwOwoJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRwYXJhbU5hbWUgPT4gJHBhcmFtVmFsdWUpCgkJCQl7CgkJCQkJJHBhcmFtTmFtZSA9IHN0cl9yZXBsYWNlKCdfQWR2YW5jZWRDb250ZW50RGF0ZScsICcnLCAkcGFyYW1OYW1lKTsKCQkJCQkKCQkJCQlpZighaXNzZXQoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdKSkKCQkJCQl7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQkKCQkJCQkkaSsrOwoJCQkJCSR2YWx1ZSA9ICcnOwoJCQkJCWlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnYmxvY2tfdHlwZSddID09ICdzZWxlY3RfbXVsdGlwbGUnKQoJCQkJCXsKCQkJCQkJaWYoaXNfYXJyYXkoJHBhcmFtVmFsdWUpKQoJCQkJCQl7CgkJCQkJCQkkdmFsdWUgPSBpbXBsb2RlKCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnZGVsaW1pdGVyJ10sICRwYXJhbVZhbHVlKTsKCQkJCQkJfQoJCQkJCQllbHNlIGlmICgkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ3NvcnRhYmxlJ10pCgkJCQkJCXsKCQkJCQkJCSRpdGVtcyA9IGFycmF5KCk7CgkJCQkJCQlmb3JlYWNoKCRwYXJhbXMgYXMgJGl0ZW1OYW1lID0+ICRpdGVtVmFsdWUpICMgVG9EbzogY3JlYXRlIGZ1bmN0aW9uIHRvIGxvb3Agb25seSB0aHJvdWdoIHRoZSBpdGVtcyBub3QgdGhyb3VnaCBhbGwgcGFyYW1zIQoJCQkJCQkJewoJCQkJCQkJCWlmKHN0YXJ0c3dpdGgoJGl0ZW1OYW1lLCRwYXJhbU5hbWUuJ19BZHZhbmNlZENvbnRlbnRTb3J0YWJsZUl0ZW1fJykpCgkJCQkJCQkJewoJCQkJCQkJCQkkaXRlbXNbXSA9ICRpdGVtVmFsdWU7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQkJJHZhbHVlID0gaW1wbG9kZSgkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2RlbGltaXRlciddLCAkaXRlbXMpOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2UgaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydibG9ja190eXBlJ10gPT0gJ2RhdGUnCgkJCQkJJiYgJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydtb2RlJ10gPT0gJ2NhbGVuZGFyJwoJCQkJCSYmIGlzc2V0KCRwYXJhbXNbJHBhcmFtTmFtZSAuICdfQWR2YW5jZWRDb250ZW50RGF0ZSddKSkKCQkJCQl7CgkJCQkJCSR0aW1lID0gMDsKCQkJCQkJaWYoaXNzZXQoJHBhcmFtc1skcGFyYW1OYW1lIC4gJ19BZHZhbmNlZENvbnRlbnRUaW1lJ10pKQoJCQkJCQl7CgkJCQkJCQkkdGltZSA9ICRwYXJhbXNbJHBhcmFtTmFtZSAuICdfQWR2YW5jZWRDb250ZW50VGltZSddOwoJCQkJCQl9CgkJCQkJCSR2YWx1ZSAgICAgICAgPSAkdGltZSArICRwYXJhbXNbJHBhcmFtTmFtZSAuICdfQWR2YW5jZWRDb250ZW50RGF0ZSddOwoJCQkJCX0KCQkJCQllbHNlIGlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnYmxvY2tfdHlwZSddID09ICdtdWx0aV9pbnB1dCcpCgkJCQkJewoJCQkJCQkkbXVsdGlfaW5wdXRzID0gYXJyYXkoKTsKCQkJCQkJZm9yZWFjaCgkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCcsJywkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2lucHV0cyddKSkgYXMgJGsxPT4kbXVsdGlfaW5wdXRfaWQpCgkJCQkJCXsKCQkJCQkJCSRtdWx0aV9pbnB1dF92YWx1ZXMgPSBhcnJheSgpOwoJCQkJCQkJZm9yZWFjaCgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ2VsZW1lbnRzJ10gYXMgJGsyPT4kaW5wdXRJbmZvKQoJCQkJCQkJewoJCQkJCQkJCSRpbnB1dEluZm9bJ2lkJ10gPSAnbXVsdGlJbnB1dC0nIC4gJHBhcmFtTmFtZSAuICctJyAuICRtdWx0aV9pbnB1dF9pZCAuICctJyAuICRrMSAuICctJyAuICRpbnB1dEluZm9bJ2lkJ107CgkJCQkJCQkJaWYoaXNzZXQoJHBhcmFtc1skaW5wdXRJbmZvWydpZCddXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkbXVsdGlfaW5wdXRfdmFsdWVzW10gPSAkcGFyYW1zWyRpbnB1dEluZm9bJ2lkJ11dOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJCSRtdWx0aV9pbnB1dHNbXSA9IGltcGxvZGUoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWyd2YWx1ZV9kZWxpbWl0ZXInXSwkbXVsdGlfaW5wdXRfdmFsdWVzKTsKCQkJCQkJfQoJCQkJCQlpZighJHRoaXMtPklzVmFyRW1wdHkoJG11bHRpX2lucHV0cykpCgkJCQkJCXsKCQkJCQkJCSR2YWx1ZSA9IGltcGxvZGUoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydpbnB1dF9kZWxpbWl0ZXInXSwgJG11bHRpX2lucHV0cyk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHZhbHVlID0gdHJpbSgkcGFyYW1WYWx1ZSk7CgkJCQkJfQoJCQkJCWlmKCR2YWx1ZSA9PSAnJyAmJiAhJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydhbGxvd19ub25lJ10pCgkJCQkJewoJCQkJCQkkdmFsdWUgPSAkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2RlZmF1bHQnXTsKCQkJCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydzbWFydHknXSkKCQkJCQkJewoJCQkJCQkJJHZhbHVlID0gJHRoaXMtPkRvU21hcnR5KCR2YWx1ZSk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJCgkJCQkJIyBNTEUgc3VwcG9ydAoJCQkJCWlmKCR0aGlzLT5tbGUgJiYgJHRoaXMtPmJsb2NrTGFuZyAhPSAnJyAmJiAkcGFyYW1OYW1lICE9ICdjb250ZW50JyAuICR0aGlzLT5ibG9ja0xhbmcpCgkJCQkJewoJCQkJCQkkcGFyYW1OYW1lIC49ICR0aGlzLT5ibG9ja0xhbmc7CgkJCQkJfQoJCQkJCSMtLS0KCQkJCQkKCQkJCQkkdGhpcy0+QWRkRXh0cmFQcm9wZXJ0eSgkcGFyYW1OYW1lKTsKCQkJCQkkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkcGFyYW1OYW1lLCAkdmFsdWUpOwoJCQkJfQoJCQl9CgkJfQoJCXBhcmVudDo6RmlsbFBhcmFtcygkcGFyYW1zKTsKCX0KCQoJZnVuY3Rpb24gRWRpdEFzQXJyYXkoJGFkZGluZyA9IGZhbHNlLCAkdGFiID0gMCwgJHNob3dhZG1pbiA9IGZhbHNlKQoJewoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7CgkJJHJldCA9IGFycmF5KCk7CgkJJHRtcCA9IGFycmF5KCk7CgkJaWYoaXNzZXQoJHRoaXMtPl90YWJJZHNbJHRhYl0pKQoJCXsKCQkJJHRhYl9pZCA9ICR0aGlzLT5fdGFiSWRzWyR0YWJdOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gYXJyYXkoKTsKCQl9CgkJaWYoJHRhYl9pZCA9PSAnbWFpbicgfHwgKCR0YWJfaWQgPT0gJ29wdGlvbnMnICYmIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFsbCBDb250ZW50JykpKQoJCXsKCQkJJHRtcCA9ICR0aGlzLT5DbGVhbkFycmF5KCR0aGlzLT5kaXNwbGF5X2F0dHJpYnV0ZXMoJGFkZGluZywgJHRhYikpOwoJCX0KCQllbHNlIGlmKCR0YWJfaWQgPT0gJ0FkdmFuY2VkQ29udGVudCcgJiYgY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSAmJiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCd1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnMnLDEpKQoJCXsKCQkJJHRtcCA9ICR0aGlzLT5EaXNwbGF5QWR2YW5jZWRPcHRpb25zKCRhZGRpbmcpOwoJCX0KCQkKCQlmb3JlYWNoKCAkdG1wIGFzICRvbmUgKQoJCXsKCQkJJHJldFtdID0gJG9uZTsKCQl9CgkJCgkJJGogPSAwOwoJCWZvcmVhY2goJHRoaXMtPl9wYWdlVGFic1skdGFiX2lkXVsnYmxvY2tfZ3JvdXBzJ10gYXMgJGJsb2NrR3JvdXApCgkJewoJCQkkdGhpcy0+X2Jsb2NrR3JvdXBzWyRibG9ja0dyb3VwXVsnZGlzcGxheSddID0gJEFkdmFuY2VkQ29udGVudC0+R2V0SXRlbURpc3BsYXkoJ2dyb3VwJywgJGJsb2NrR3JvdXAsICR0aGlzLT5tSWQsICR0aGlzLT5tVGVtcGxhdGVJZCwgISRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLDEpKTsKCQkJCSR0aGlzLT5fYmxvY2tHcm91cHNbJGJsb2NrR3JvdXBdWydwcmVmX3VybCddID0gc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsCgkJCQkJJEFkdmFuY2VkQ29udGVudC0+Q3JlYXRlTGluaygnbTFfJywgJ3NhdmVQcmVmcycsICcnLCAkdGhpcy0+bGFuZygndG9nZ2xlX2dyb3VwJyksCgkJCQkJCWFycmF5KCdpdGVtX3R5cGUnPT4nZ3JvdXAnLAoJCQkJCQkJJ2Rpc2FibGVfdGhlbWUnPT50cnVlLAoJCQkJCQkJJ2FqYXgnPT50cnVlLAoJCQkJCQkJJ2NvbnRlbnRfaWQnPT4kdGhpcy0+bUlkLAoJCQkJCQkJJ3RlbXBsYXRlX2lkJz0+JHRoaXMtPm1UZW1wbGF0ZUlkLAoJCQkJCQkJJ2l0ZW1faWQnPT4kYmxvY2tHcm91cCksCgkJCQkJCScnLCB0cnVlKSk7CgkJfQoJCWZvcmVhY2goJHRoaXMtPl9wYWdlVGFic1skdGFiX2lkXVsnY29udGVudF9ibG9ja3MnXSBhcyAkYmxvY2tJZCkKCQl7CgkJCSRqKys7CgkJCQoJCQlpZigkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydibG9ja190eXBlJ10gIT0gJycgJiYgJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnc21hcnR5J10pCgkJCXsKCQkJCWZvcmVhY2goJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXSBhcyAkcHJvcE5hbWU9PiRwcm9wVmFsdWUpCgkJCQl7CgkJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVskcHJvcE5hbWVdID0gJHRoaXMtPkRvU21hcnR5KCRwcm9wVmFsdWUpOwoJCQkJfQoJCQl9CgkJCSMgTUxFIHN1cHBvcnQKCQkJaWYoJHRoaXMtPm1sZSAmJiAkdGhpcy0+YmxvY2tMYW5nICE9ICcnICYmICRibG9ja0lkICE9ICdjb250ZW50JyAuICR0aGlzLT5ibG9ja0xhbmcpCgkJCXsKCQkJCSR2YWx1ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRibG9ja0lkIC4gJHRoaXMtPmJsb2NrTGFuZyk7CgkJCX0KCQkJZWxzZSAjLS0tCgkJCXsKCQkJCSR2YWx1ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRibG9ja0lkKTsKCQkJfQoJCQkjIE1MRSBzdXBwb3J0CgkJCWlmKCR0aGlzLT5tbGUgJiYgJHZhbHVlID09ICcnICYmICR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nICE9ICcnICYmICR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nICE9ICR0aGlzLT5ibG9ja0xhbmcpCgkJCXsKCQkJCWlmKCRibG9ja0lkICE9ICdjb250ZW50JyAuICR0aGlzLT5ibG9ja0xhbmcpCgkJCQl7CgkJCQkJJHZhbHVlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrSWQgLiAkdGhpcy0+ZGVmYXVsdEJsb2NrTGFuZyk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHZhbHVlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2NvbnRlbnQnIC4gJHRoaXMtPmRlZmF1bHRCbG9ja0xhbmcpOwoJCQkJfQoJCQl9CgkJCSMtLS0KCQkJCgkJCWlmKCgkYWRkaW5nICYmICR2YWx1ZSA9PSAnJykKCQkJfHwgKCR2YWx1ZSA9PSAnJyAmJiAhJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYWxsb3dfbm9uZSddKSB8fCAkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWyduZXdfYmxvY2snXSkKCQkJewoJCQkJJHZhbHVlID0gJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnZGVmYXVsdCddOwoJCQl9CgkJCQoJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydjb250ZW50J10gPSBjbXNfaHRtbGVudGl0aWVzKCR2YWx1ZSwgRU5UX05PUVVPVEVTLCBnZXRfZW5jb2RpbmcoJycpKTsKCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnaW5wdXQnXSAgID0gJHRoaXMtPmRpc3BsYXlfY29udGVudF9ibG9jaygkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdLCAkdmFsdWUsICRhZGRpbmcpOwoJCQkKCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnbGFiZWwnXSA9PSB1Y3dvcmRzKCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ25hbWUnXSkKCQkJJiYgKCRibG9ja0lkID09IG1kNSgnY29udGVudF9lbicuJGopCgkJCXx8ICRibG9ja0lkID09ICdjb250ZW50X2VuJwoJCQl8fCAoJHRoaXMtPm1sZSAmJiAkdGhpcy0+YmxvY2tMYW5nICE9ICcnCgkJCSYmICgkYmxvY2tJZCA9PSAnY29udGVudCcgLiAkdGhpcy0+YmxvY2tMYW5nCgkJCXx8ICRibG9ja0lkID09IG1kNSgnY29udGVudCcgLiAkdGhpcy0+YmxvY2tMYW5nLiRqKSkpKSkKCQkJewoJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnbGFiZWwnXSA9IGxhbmcoJ2NvbnRlbnQnKTsKCQkJfQoJCQkKCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsndHJhbnNsYXRlX2xhYmVscyddKQoJCQl7CgkJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydsYWJlbCddID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydsYWJlbCddKTsKCQkJfQoJCQkKCQkJJGJsb2NrRGlzcGxheSA9ICRBZHZhbmNlZENvbnRlbnQtPkdldEl0ZW1EaXNwbGF5KCdibG9jaycsICRibG9ja0lkLCAkdGhpcy0+bUlkLCAkdGhpcy0+bVRlbXBsYXRlSWQsICEkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydjb2xsYXBzZSddKTsKCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnZGlzcGxheSddICA9ICRibG9ja0Rpc3BsYXk7CgkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ3ByZWZfdXJsJ10gPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJywKCQkJCSRBZHZhbmNlZENvbnRlbnQtPkNyZWF0ZUxpbmsoJ20xXycsICdzYXZlUHJlZnMnLCAnJywgJEFkdmFuY2VkQ29udGVudC0+bGFuZygndG9nZ2xlX2Jsb2NrJyksCgkJCQkJYXJyYXkoJ2l0ZW1fdHlwZSc9PidibG9jaycsCgkJCQkJCSdkaXNhYmxlX3RoZW1lJz0+dHJ1ZSwKCQkJCQkJJ2FqYXgnPT50cnVlLAoJCQkJCQknY29udGVudF9pZCc9PiR0aGlzLT5tSWQsCgkJCQkJCSd0ZW1wbGF0ZV9pZCc9PiR0aGlzLT5tVGVtcGxhdGVJZCwKCQkJCQkJJ2l0ZW1faWQnPT4kYmxvY2tJZCksCgkJCQkJJycsIHRydWUpKTsKCQkJCgkJCWlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ211bHRpcGxlJ10gJiYgJEFkdmFuY2VkQ29udGVudC0+R2V0SXRlbURpc3BsYXkoJ21lc3NhZ2UnLCAkYmxvY2tJZCwgJHRoaXMtPm1JZCwgJHRoaXMtPm1UZW1wbGF0ZUlkKSkKCQkJewoJCQkJJGhpZGVMaW5rID0gc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsCgkJCQkJJEFkdmFuY2VkQ29udGVudC0+Q3JlYXRlTGluaygnbTFfJywgJ3NhdmVQcmVmcycsICcnLCAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCd0b2dnbGVfbWVzc2FnZScpLAoJCQkJCQlhcnJheSgnaXRlbV90eXBlJz0+J21lc3NhZ2UnLAoJCQkJCQkJJ2Rpc2FibGVfdGhlbWUnPT50cnVlLAoJCQkJCQkJJ2FqYXgnPT50cnVlLAoJCQkJCQkJJ2NvbnRlbnRfaWQnPT4kdGhpcy0+bUlkLAoJCQkJCQkJJ3RlbXBsYXRlX2lkJz0+JHRoaXMtPm1UZW1wbGF0ZUlkLAoJCQkJCQkJJ2l0ZW1faWQnPT4kYmxvY2tJZCwKCQkJCQkJCSdpdGVtX2Rpc3BsYXknPT4wKSwKCQkJCQkJJycsIGZhbHNlLCcnLCdvbmNsaWNrPSJqUXVlcnkuZ2V0KHRoaXMuaHJlZik7IGpRdWVyeSh0aGlzKS5wYXJlbnQoKS50b2dnbGUoXCdmYXN0XCcpOyByZXR1cm4gZmFsc2U7IicpKTsKCQkJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydkZXNjcmlwdGlvbiddID0gJzxwPicuJEFkdmFuY2VkQ29udGVudC0+bGFuZygnbm90aWNlX2R1cGxpY2F0ZWNvbnRlbnQnLCAkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWyduYW1lJ10pLicgKCcuICRoaWRlTGluayAuJyk8L3A+Jy4kdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydkZXNjcmlwdGlvbiddOwoJCQl9CgkJCQoJCQlpZigkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydibG9ja190YWInXSAhPSAnJyB8fCAkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydibG9ja19ncm91cCddICE9ICcnKQoJCQl7CgkJCQl1bnNldCgkdGhpcy0+X3BhZ2VUYWJzWyR0YWJfaWRdWydjb250ZW50X2Jsb2NrcyddWyRibG9ja0lkXSk7CgkJCX0KCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfdGFiJ10gIT0gJycgJiYgJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfZ3JvdXAnXSAhPSAnJykKCQkJewoJCQkJdW5zZXQoJHRoaXMtPl9wYWdlVGFic1skdGFiX2lkXVsnYmxvY2tfZ3JvdXBzJ11bJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfZ3JvdXAnXV0pOwoJCQl9CgkJfQoJCQoJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfaWQnLCAnbTFfJyk7CgkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdwYWdlX3RhYl9ucicsICR0YWIpOwoJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigncGFnZV90YWJfaWQnLCAkdGFiX2lkKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3BhZ2VfdGFicycsICR0aGlzLT5fcGFnZVRhYnMpOwoJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignYmxvY2tfdGFicycsICR0aGlzLT5fYmxvY2tUYWJzKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2Jsb2NrX2dyb3VwcycsICR0aGlzLT5fYmxvY2tHcm91cHMpOwoJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignZGF0ZV9ibG9ja3MnLCAkdGhpcy0+X2RhdGVCbG9ja3MpOwoJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignY29sb3JwaWNrZXJfYmxvY2tzJywgJHRoaXMtPl9jb2xvclBpY2tlckJsb2Nrcyk7CgkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdzbGlkZXJfYmxvY2tzJywgJHRoaXMtPl9zbGlkZXJCbG9ja3MpOwoJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignY29udGVudF9ibG9ja3MnLCAkdGhpcy0+X2NvbnRlbnRCbG9ja3MpOwoJCQoJCWlmKCR0YWIgPT0gMCkKCQl7CgkJCSNkZWJ1Z19idWZmZXIoJHRoaXMtPl90YWJJZHMsJ0FkdmFuY2VkQ29udGVudCBfdGFiSWRzJyk7CgkJCSNkZWJ1Z19idWZmZXIoJHRoaXMtPl9wYWdlVGFicywnQWR2YW5jZWRDb250ZW50IF9wYWdlVGFicycpOwoJCQkjZGVidWdfYnVmZmVyKCR0aGlzLT5fYmxvY2tUYWJzLCdBZHZhbmNlZENvbnRlbnQgX2Jsb2NrVGFicycpOwoJCQkjZGVidWdfYnVmZmVyKCR0aGlzLT5fYmxvY2tHcm91cHMsJ0FkdmFuY2VkQ29udGVudCBfYmxvY2tHcm91cHMnKTsKCQkJI2RlYnVnX2J1ZmZlcigkdGhpcy0+X2NvbnRlbnRCbG9ja3MsJ0FkdmFuY2VkQ29udGVudCBfY29udGVudEJsb2NrcycpOwoJCQkKCQkJIyB1Z2x5IGhhY2shCgkJCSRoZWFkZXJzX2xpc3QgPSBoZWFkZXJzX2xpc3QoKTsKCQkJJG91dHB1dCA9IHN0cl9yZXBsYWNlKCc8L2hlYWQ+JywgJEFkdmFuY2VkQ29udGVudC0+R2V0SGVhZGVySFRNTCgpIC4gJzwvaGVhZD4nLCBvYl9nZXRfY29udGVudHMoKSk7CgkJCUBvYl9lbmRfY2xlYW4oKTsKCQkJQG9iX3N0YXJ0KCk7CgkJCWZvcmVhY2goJGhlYWRlcnNfbGlzdCBhcyAkaGVhZGVyKQoJCQl7CgkJCQloZWFkZXIoJGhlYWRlcik7CgkJCX0KCQkJZWNobyAkb3V0cHV0OwoJCQkjLS0tIGJ1dCB3b3JrcyA6RAoJCX0KCQkKCQkkcmV0W10gPSBhcnJheSgnJywgJEFkdmFuY2VkQ29udGVudC0+UHJvY2Vzc1RlbXBsYXRlKCdjb250ZW50VHlwZS50cGwnKSk7CgkJcmV0dXJuICRyZXQ7Cgl9CgkKCWZ1bmN0aW9uIF9kaXNwbGF5X3RleHRfYmxvY2soJGJsb2NrSW5mbywkdmFsdWUgPSAnJywkYWRkaW5nID0gZmFsc2UpCgl7CgkJJHVzZXd5c2l3eWcgPSAhJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2Rpc2FibGVfd3lzaXd5ZycpOwoJCWlmKCEkdXNld3lzaXd5ZykKCQl7CgkJCSRibG9ja0luZm9bJ3VzZXd5c2l3eWcnXSA9IGZhbHNlOwoJCX0KCQlpZiAoJGJsb2NrSW5mb1snb25lbGluZSddID09IGZhbHNlKQoJCXsKCQkJcmV0dXJuIGNyZWF0ZV90ZXh0YXJlYSgkYmxvY2tJbmZvWyd1c2V3eXNpd3lnJ10sICR2YWx1ZSwgJGJsb2NrSW5mb1snaWQnXSwgJycsICRibG9ja0luZm9bJ2lkJ10sICcnLCAkdGhpcy0+X3N0eWxlc2hlZXQpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gJzxpbnB1dCBpZD0iJy4kYmxvY2tJbmZvWydpZCddLiciIHR5cGU9InRleHQiJyAuICgkYmxvY2tJbmZvWydzdHlsZSddICE9ICcnPydzdHlsZT0iJyAuICRibG9ja0luZm9bJ3N0eWxlJ10gLiAnICInOicnKSAuICgkYmxvY2tJbmZvWydtYXhsZW5ndGgnXSAhPSAnJz8nIG1heGxlbmd0aD0iJyAuICRibG9ja0luZm9bJ21heGxlbmd0aCddIC4gJyAiJzonJykgLiAoJGJsb2NrSW5mb1snc2l6ZSddICE9ICcnPycgc2l6ZT0iJyAuICRibG9ja0luZm9bJ3NpemUnXSAuICcgIic6JycpIC4gJyBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICciIHZhbHVlPSInIC4gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpIC4gJyIgLz4nOwoJCX0KCX0KCQoJZnVuY3Rpb24gX2Rpc3BsYXlfY29sb3JwaWNrZXJfYmxvY2soJGJsb2NrSW5mbywkdmFsdWUgPSAnJywgJGFkZGluZyA9IGZhbHNlKQoJewoJCXJldHVybiAnIyA8aW5wdXQgaWQ9IicuJGJsb2NrSW5mb1snaWQnXS4nIiB0eXBlPSJ0ZXh0IicgLiAoJGJsb2NrSW5mb1snc3R5bGUnXSAhPSAnJz8nc3R5bGU9IicgLiAkYmxvY2tJbmZvWydzdHlsZSddIC4gJyAiJzonJykgLiAnIG1heGxlbmd0aD0iNiIgc2l6ZT0iNyIgbmFtZT0iJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnIiB2YWx1ZT0iJyAuIGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKSAuICciIC8+JzsKCX0KCQoJZnVuY3Rpb24gX2Rpc3BsYXlfc2xpZGVyX2Jsb2NrKCRibG9ja0luZm8sJHZhbHVlID0gJycsICRhZGRpbmcgPSBmYWxzZSkKCXsKCQlyZXR1cm4gJzxpbnB1dCBpZD0iJy4kYmxvY2tJbmZvWydpZCddLiciIHR5cGU9ImhpZGRlbiIgbmFtZT0iJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnIiB2YWx1ZT0iJyAuICgkdmFsdWUgPyAkdmFsdWUgOiBpbnR2YWwoJHZhbHVlKSkgLiAnIiAvPic7Cgl9CgkKCS8qCgkgKiByZXR1cm4gdGhlIEhUTUwgdG8gY3JlYXRlIGFuIGltYWdlIGRyb3Bkb3duIGluIHRoZSBhZG1pbiBjb25zb2xlLgoJICogZG9lcyBub3QgaW5jbHVkZSBhIGxhYmVsLgoJICogdGFrZW4gZnJvbSBkZWZhdWx0IGNvbnRlbnR0eXBlIChhdXRob3I6IENhbGd1eSkKCSAqLwoJZnVuY3Rpb24gX2Rpc3BsYXlfaW1hZ2VfYmxvY2soJGJsb2NrSW5mbywkdmFsdWUgPSAnJywkYWRkaW5nID0gZmFsc2UpCgl7CgkJZ2xvYmFsICRjb25maWc7CgkJJGFkZGRpciA9IGdldF9zaXRlX3ByZWZlcmVuY2UoJ2NvbnRlbnRpbWFnZV9wYXRoJyk7CgkJaWYoICRibG9ja0luZm9bJ2RpciddICE9ICcnICkKCQl7CgkJCSRhZGRkaXIgPSAkYmxvY2tJbmZvWydkaXInXTsKCQl9CgkJJGRpciA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sJGFkZGRpcik7CgkJJG9wdHByZWZpeCA9ICcnOwoJCSMkb3B0cHJlZml4ID0gJ3VwbG9hZHMnOwoJCSNpZiggIWVtcHR5KCRibG9ja0luZm9bJ2RpciddKSApICRvcHRwcmVmaXggLj0gJy8nLiRibG9ja0luZm9bJ2RpciddOwoJCSRpbnB1dG5hbWUgPSAkYmxvY2tJbmZvWydpZCddOwoJCWlmKCBpc3NldCgkYmxvY2tJbmZvWydpbnB1dG5hbWUnXSkgKQoJCXsKCQkJJGlucHV0bmFtZSA9ICRibG9ja0luZm9bJ2lucHV0bmFtZSddOwoJCX0KCQkjIG1vZCBieSBOYU4gdG8gZmlsdGVyIGZpbGVzIGJ5IHByZWZpeCBhbmQgc2V0ICJhbGxvdyBub25lIgoJCSMkZHJvcGRvd24gPSBjcmVhdGVfZmlsZV9kcm9wZG93bigkaW5wdXRuYW1lLCRkaXIsJHZhbHVlLCdqcGcsanBlZyxwbmcsZ2lmJywkb3B0cHJlZml4LHRydWUpOwoJCSRkcm9wZG93biA9IGNyZWF0ZV9maWxlX2Ryb3Bkb3duKCRpbnB1dG5hbWUsJGRpciwkdmFsdWUsJ2pwZyxqcGVnLHBuZyxnaWYnLCRvcHRwcmVmaXgsJGJsb2NrSW5mb1snYWxsb3dfbm9uZSddLCcnLCRibG9ja0luZm9bJ3ByZWZpeCddLCRibG9ja0luZm9bJ2V4Y2x1ZGUnXSk7CgkJCgkJaWYoICRkcm9wZG93biA9PT0gZmFsc2UgKQoJCXsKCQkJJGRyb3Bkb3duID0gbGFuZygnZXJyb3JfcmV0cmlldmluZ19maWxlX2xpc3QnKTsKCQl9CgkJcmV0dXJuICRkcm9wZG93bjsKCX0KCQoJZnVuY3Rpb24gX2Rpc3BsYXlfbW9kdWxlX2Jsb2NrKCRibG9ja0luZm8sJHZhbHVlID0gJycsJGFkZGluZyA9IGZhbHNlKQoJewoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJaWYoJGJsb2NrSW5mb1snbW9kdWxlJ10gPT0gJycpCgkJewoJCQlyZXR1cm4gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnZXJyb3JfaW5zdWZmaWNpZW50X2Jsb2NrcGFyYW1zJywnbW9kdWxlJywkYmxvY2tJbmZvWyduYW1lJ10pOwoJCX0KCQlpZiggISRtb2R1bGUgPSYgJEFkdmFuY2VkQ29udGVudC0+R2V0TW9kdWxlSW5zdGFuY2UoJGJsb2NrSW5mb1snbW9kdWxlJ10pKQoJCXsKCQkJcmV0dXJuICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2Vycm9yX2xvYWRpbmdfbW9kdWxlJywkYmxvY2tJbmZvWydtb2R1bGUnXSwkYmxvY2tJbmZvWyduYW1lJ10pOwoJCX0KCQlpZiggISRtb2R1bGUtPkhhc0NhcGFiaWxpdHkoJ2NvbnRlbnRibG9ja3MnKSApCgkJewoJCQlyZXR1cm4gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnZXJyb3JfY29udGVudGJsb2NrX3N1cHBvcnQnLCRibG9ja0luZm9bJ21vZHVsZSddLCRibG9ja0luZm9bJ25hbWUnXSk7CgkJfQoJCXJldHVybiAkbW9kdWxlLT5HZXRDb250ZW50QmxvY2tJbnB1dCgkYmxvY2tJbmZvWydpZCddLCR2YWx1ZSwkYmxvY2tJbmZvWydwYXJhbXMnXSwkYWRkaW5nKTsKCX0KCQoJZnVuY3Rpb24gX2Rpc3BsYXlfZGF0ZV9ibG9jaygkYmxvY2tJbmZvLCR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQlpZighJHZhbHVlKQoJCXsKCQkJJHZhbHVlID0gdGltZSgpOwoJCX0KCQkKCQkkZGF0ZSA9IHN0cmZ0aW1lKCcleCcsIGludHZhbCgkdmFsdWUpKTsKCQkkdGltZSA9ICcwOjAnOwoJCWlmKCRibG9ja0luZm9bJ3Nob3dfY2xvY2snXSkKCQl7CgkJCSR0aW1lID0gc3RyZnRpbWUoJyVIOiVNJywgaW50dmFsKCR2YWx1ZSkpOwoJCX0KCQkKCQkkX3RtcCAgICAgICAgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCc6JywkdGltZSkpOwoJCSR0aW1lU2Vjb25kcyA9ICgoJF90bXBbMF0gKiAzNjAwKSArICgkX3RtcFsxXSAqIDYwKSk7CgkJJGRhdGVTZWNvbmRzID0gJHZhbHVlIC0gJHRpbWVTZWNvbmRzOwoJCQoJCSRkYXRlSW5wdXQgPSAnPGltZyBpZD0iJy4kYmxvY2tJbmZvWydpZCddLidfQWR2YW5jZWRDb250ZW50RGF0ZVBpY2tlclRyaWdnZXIiIHNyYz0iLi4vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvaW1hZ2VzL2NhbGVuZGFyLnBuZyIgY2xhc3M9ImNhbGVuZGFyVHJpZ2dlciIgLz4mbmJzcDsKCQkJPHNwYW4gaWQ9IicuJGJsb2NrSW5mb1snaWQnXS4nX0FkdmFuY2VkQ29udGVudERhdGVQaWNrZXJEaXNwbGF5Ij4nLiRkYXRlLic8L3NwYW4+CgkJCTxpbnB1dCBpZD0iJy4kYmxvY2tJbmZvWydpZCddLidfQWR2YW5jZWRDb250ZW50RGF0ZSIgdHlwZT0iaGlkZGVuIiBuYW1lPSInLiRibG9ja0luZm9bJ2lkJ10uJ19BZHZhbmNlZENvbnRlbnREYXRlIiB2YWx1ZT0iJy4kZGF0ZVNlY29uZHMuJyIgLz4nOwoJCQkKCQkkc3VmZml4ICAgID0gJyc7CgkJJHRpbWVJbnB1dCA9ICcnOwoJCWlmKCRibG9ja0luZm9bJ3Nob3dfY2xvY2snXSkKCQl7CgkJCSR0aW1lSW5wdXQgPSAnJm5ic3A7Jm5ic3A7LSZuYnNwOyZuYnNwOzxzZWxlY3QgbmFtZT0iJy4kYmxvY2tJbmZvWydpZCddLidfQWR2YW5jZWRDb250ZW50VGltZSI+JzsKCQkJJF9pICAgICAgICA9IDA7CgkJCWZvcigkaT0kYmxvY2tJbmZvWydzdGFydF9ob3VyJ107ICRpPD0kYmxvY2tJbmZvWydlbmRfaG91ciddOyAkaSArPSAkYmxvY2tJbmZvWydzdGVwX2hvdXJzJ10pCgkJCXsKCQkJCWlmKCRpPDEyICYmICEkYmxvY2tJbmZvWydzaG93MjRoJ10pCgkJCQl7CgkJCQkJJHN1ZmZpeCA9ICcgYW0nOwoJCQkJfQoJCQkJZWxzZSBpZighJGJsb2NrSW5mb1snc2hvdzI0aCddKQoJCQkJewoJCQkJCSRzdWZmaXggPSAnIHBtJzsKCQkJCX0KCQkJCWZvcigkaj0kYmxvY2tJbmZvWydzdGFydF9taW51dGUnXTsgJGo8PSRibG9ja0luZm9bJ2VuZF9taW51dGUnXTsgJGogKz0gJGJsb2NrSW5mb1snc3RlcF9taW51dGVzJ10pCgkJCQl7CgkJCQkJJHZhbHVlID0gKCRpKjM2MDApICsgKCRqKjYwKTsKCQkJCQlpZigoJGJsb2NrSW5mb1snZW5kX2hvdXInXSA8IDIzICYmICR2YWx1ZSA8PSAoJGJsb2NrSW5mb1snZW5kX2hvdXInXSAqIDM2MDApKSB8fCAkYmxvY2tJbmZvWydlbmRfaG91ciddID09IDIzKQoJCQkJCXsKCQkJCQkJJHRpbWVJbnB1dCAuPSAnPG9wdGlvbiB2YWx1ZT0iJy4gJHZhbHVlIC4nIicuICgkdmFsdWUgPT0gJHRpbWVTZWNvbmRzPyAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOicnKSAuJz4nLiAoJGk8MTA/JzAnLiRpOighJGJsb2NrSW5mb1snc2hvdzI0aCddICYmICRpPjEyPyRpLTEyOiRpKSkgLic6Jy4gKCRqPDEwPycwJy4kajokaikgLiAkc3VmZml4IC4gJzwvb3B0aW9uPic7CgkJCQkJfQoJCQkJfQoJCQkJJGogPSAkYmxvY2tJbmZvWydzdGFydF9taW51dGUnXTsKCQkJfQoJCQkkdGltZUlucHV0IC49ICc8L3NlbGVjdD4nOwoJCX0KCQlyZXR1cm4gJGRhdGVJbnB1dC4kdGltZUlucHV0OwoJfQoJCglmdW5jdGlvbiBfZGlzcGxheV9jaGVja2JveF9ibG9jaygkYmxvY2tJbmZvLCR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQlyZXR1cm4gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicgLiAkYmxvY2tJbmZvWydpZCddIC4gJyIgdmFsdWU9IjAiIC8+CgkJCTxpbnB1dCBpZD0iJy4kYmxvY2tJbmZvWydpZCddLiciIGNsYXNzPSJwYWdlY2hlY2tib3giJyAuICgkYmxvY2tJbmZvWydzdHlsZSddICE9ICcnPycgc3R5bGU9IicgLiAkYmxvY2tJbmZvWydzdHlsZSddIC4gJyAiJzonJykgLiAnIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMSIgbmFtZT0iJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnIicgLiAoJHZhbHVlID09IDEgPyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzonJykgLiAnIC8+JzsKCX0KCQoJZnVuY3Rpb24gX2Rpc3BsYXlfZHJvcGRvd25fYmxvY2soJGJsb2NrSW5mbywkdmFsdWUgPSAnJywkYWRkaW5nID0gZmFsc2UpCgl7CgkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkkaXRlbXMgPSBhcnJheSgpOwoJCWlmKCRibG9ja0luZm9bJ2l0ZW1zJ10gIT0gJycpCgkJewoJCQlmb3JlYWNoKGV4cGxvZGUoJGJsb2NrSW5mb1snZGVsaW1pdGVyJ10sICRibG9ja0luZm9bJ2l0ZW1zJ10pIGFzICRrZXkgPT4gJHZhbCkKCQkJewoJCQkJJGl0ZW1zWyRrZXldWydsYWJlbCddID0gdHJpbSgkdmFsKTsKCQkJCWlmKCRibG9ja0luZm9bJ3RyYW5zbGF0ZV9sYWJlbHMnXSkKCQkJCXsKCQkJCQkkaXRlbXNbJGtleV1bJ2xhYmVsJ10gPSAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCRpdGVtc1ska2V5XVsnbGFiZWwnXSk7CgkJCQl9CgkJCQkKCQkJCSRpdGVtc1ska2V5XVsndmFsdWUnXSAgICA9ICRpdGVtc1ska2V5XVsnbGFiZWwnXTsKCQkJCSRpdGVtc1ska2V5XVsnc2VsZWN0ZWQnXSA9ICh0cmltKCR2YWx1ZSkgPT09ICRpdGVtc1ska2V5XVsndmFsdWUnXSk7CgkJCX0KCQl9CgkJaWYoJGJsb2NrSW5mb1sndmFsdWVzJ10gIT0gJycpCgkJewoJCQlmb3JlYWNoKGV4cGxvZGUoJGJsb2NrSW5mb1snZGVsaW1pdGVyJ10sICRibG9ja0luZm9bJ3ZhbHVlcyddKSBhcyAka2V5ID0+ICR2YWwpCgkJCXsKCQkJCSRpdGVtc1ska2V5XVsndmFsdWUnXSA9IHRyaW0oJHZhbCk7CgkJCQlpZigkYmxvY2tJbmZvWyd0cmFuc2xhdGVfdmFsdWVzJ10pCgkJCQl7CgkJCQkJJGl0ZW1zWyRrZXldWyd2YWx1ZSddID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygkaXRlbXNbJGtleV1bJ3ZhbHVlJ10pOwoJCQkJfQoJCQkJCgkJCQkkaXRlbXNbJGtleV1bJ3NlbGVjdGVkJ10gPSAodHJpbSgkdmFsdWUpID09PSAkaXRlbXNbJGtleV1bJ3ZhbHVlJ10pOwoJCQkJCgkJCQlpZighaXNzZXQoJGl0ZW1zWyRrZXldWydsYWJlbCddKSkKCQkJCXsKCQkJCQkkaXRlbXNbJGtleV1bJ2xhYmVsJ10gPSAkaXRlbXNbJGtleV1bJ3ZhbHVlJ107CgkJCQl9CgkJCX0KCQl9CgkJCgkJJGlucHV0ID0gJzxzZWxlY3QgbmFtZT0iJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnIiAnIC4gKCRibG9ja0luZm9bJ3N0eWxlJ10gIT0gJyc/J3N0eWxlPSInIC4gJGJsb2NrSW5mb1snc3R5bGUnXSAuICcgIic6JycpIC4gJyA+JzsKCQlmb3JlYWNoKCRpdGVtcyBhcyAkaXRlbSkKCQl7CgkJCSRpbnB1dCAuPSAnPG9wdGlvbiB2YWx1ZT0iJyAuICRpdGVtWyd2YWx1ZSddIC4gJyInOwoJCQlpZigkaXRlbVsnc2VsZWN0ZWQnXSkKCQkJewoJCQkJJGlucHV0IC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CgkJCX0KCQkJJGlucHV0IC49ICc+JyAuICRpdGVtWydsYWJlbCddIC4gJzwvb3B0aW9uPic7CgkJfQoJCSRpbnB1dCAuPSAnPC9zZWxlY3Q+JzsKCQlyZXR1cm4gJGlucHV0OwoJfQoJCglmdW5jdGlvbiBfZGlzcGxheV9zZWxlY3RfbXVsdGlwbGVfYmxvY2soJGJsb2NrSW5mbywgJHZhbHVlID0gJycsJGFkZGluZyA9IGZhbHNlKQoJewoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJJHNlbEl0ZW1zID0gYXJyYXkoKTsKCQlmb3JlYWNoKGV4cGxvZGUoJGJsb2NrSW5mb1snZGVsaW1pdGVyJ10sICR2YWx1ZSkgYXMgJGtleSA9PiAkdmFsKQoJCXsKCQkJJHNlbEl0ZW1zWyRrZXldID0gdHJpbSgkdmFsKTsKCQl9CgkJJGl0ZW1zID0gYXJyYXkoKTsKCQlpZigkYmxvY2tJbmZvWydpdGVtcyddICE9ICcnKQoJCXsKCQkJZm9yZWFjaChleHBsb2RlKCRibG9ja0luZm9bJ2RlbGltaXRlciddLCAkYmxvY2tJbmZvWydpdGVtcyddKSBhcyAka2V5ID0+ICR2YWwpCgkJCXsKCQkJCSRpdGVtc1ska2V5XVsnbGFiZWwnXSA9IHRyaW0oJHZhbCk7CgkJCQlpZigkYmxvY2tJbmZvWyd0cmFuc2xhdGVfbGFiZWxzJ10pCgkJCQl7CgkJCQkJJGl0ZW1zWyRrZXldWydsYWJlbCddID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygkaXRlbXNbJGtleV1bJ2xhYmVsJ10pOwoJCQkJfQoJCQkJCgkJCQkkaXRlbXNbJGtleV1bJ3ZhbHVlJ10gICAgPSAkaXRlbXNbJGtleV1bJ2xhYmVsJ107CgkJCQkkaXRlbXNbJGtleV1bJ3NlbGVjdGVkJ10gPSBpbl9hcnJheSgkaXRlbXNbJGtleV1bJ2xhYmVsJ10sJHNlbEl0ZW1zKTsKCQkJfQoJCX0KCQlpZigkYmxvY2tJbmZvWyd2YWx1ZXMnXSAhPSAnJykKCQl7CgkJCWZvcmVhY2goZXhwbG9kZSgkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSwgJGJsb2NrSW5mb1sndmFsdWVzJ10pIGFzICRrZXkgPT4gJHZhbCkKCQkJewoJCQkJJGl0ZW1zWyRrZXldWyd2YWx1ZSddID0gdHJpbSgkdmFsKTsKCQkJCWlmKCRibG9ja0luZm9bJ3RyYW5zbGF0ZV92YWx1ZXMnXSkKCQkJCXsKCQkJCQkkaXRlbXNbJGtleV1bJ3ZhbHVlJ10gPSAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCRpdGVtc1ska2V5XVsndmFsdWUnXSk7CgkJCQl9CgkJCQkKCQkJCSRpdGVtc1ska2V5XVsnc2VsZWN0ZWQnXSA9IGluX2FycmF5KCRpdGVtc1ska2V5XVsndmFsdWUnXSwkc2VsSXRlbXMpOwoJCQkJaWYoIWlzc2V0KCRpdGVtc1ska2V5XVsnbGFiZWwnXSkpCgkJCQl7CgkJCQkJJGl0ZW1zWyRrZXldWydsYWJlbCddID0gJGl0ZW1zWyRrZXldWyd2YWx1ZSddOwoJCQkJfQoJCQl9CgkJfQoJCQoJCSRpbnB1dCA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICciIC8+JzsKCQkKCQlpZighJGJsb2NrSW5mb1snc29ydGFibGUnXSkKCQl7CgkJCSRzaXplID0gY291bnQoJGl0ZW1zKTsKCQkJaWYoaXNzZXQoJGJsb2NrSW5mb1snc2l6ZSddKSkKCQkJewoJCQkJJHNpemUgPSAkYmxvY2tJbmZvWydzaXplJ107CgkJCX0KCQkJJGlucHV0IC49ICcKCQkJCTxzZWxlY3QgbmFtZT0iJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnW10iJyAuICgkYmxvY2tJbmZvWydzdHlsZSddICE9ICcnPycgc3R5bGU9IicgLiAkYmxvY2tJbmZvWydzdHlsZSddIC4gJyAiJzonJykgLiAnICBtdWx0aXBsZT0ibXVsdGlwbGUiIHNpemU9IicuJHNpemUuJyI+JzsKCQkJZm9yZWFjaCgkaXRlbXMgYXMgJGl0ZW0pCgkJCXsKCQkJCSRpbnB1dCAuPSAnPG9wdGlvbiB2YWx1ZT0iJyAuICRpdGVtWyd2YWx1ZSddIC4gJyInOwoJCQkJaWYoJGl0ZW1bJ3NlbGVjdGVkJ10pCgkJCQl7CgkJCQkJJGlucHV0IC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CgkJCQl9CgkJCQkkaW5wdXQgLj0gJz4nIC4gJGl0ZW1bJ2xhYmVsJ10gLiAnPC9vcHRpb24+JzsKCQkJfQoJCQkkaW5wdXQgLj0gJzwvc2VsZWN0Pic7CgkJfQoJCWVsc2UKCQl7CgkJCSMgc29ydCB0aGUgaXRlbXMKCQkJJF9pdGVtcyA9IGFycmF5KCk7CgkJCWZvcmVhY2goJHNlbEl0ZW1zIGFzICRzZWxLZXkgPT4gJHNlbEl0ZW0pCgkJCXsKCQkJCXJlc2V0KCRpdGVtcyk7CgkJCQlmb3JlYWNoKCRpdGVtcyBhcyAkaXRlbUtleSA9PiAkaXRlbSkKCQkJCXsKCQkJCQlpZigkaXRlbVsndmFsdWUnXSA9PT0gJHNlbEl0ZW0pCgkJCQkJewoJCQkJCQkkX2l0ZW1zW10gPSAkaXRlbTsKCQkJCQkJdW5zZXQoJGl0ZW1zWyRpdGVtS2V5XSk7CgkJCQkJCXVuc2V0KCRzZWxJdGVtc1skc2VsS2V5XSk7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQkKCQkJJGl0ZW1zID0gYXJyYXlfbWVyZ2UoJF9pdGVtcywkaXRlbXMpOwoJCQkkaW5wdXQgLj0gJzxkaXYgY2xhc3M9InNvcnRhYmxlX3dyYXBwZXIiPic7CgkJCWZvcmVhY2goJGl0ZW1zIGFzICRpdGVtKQoJCQl7CgkJCQkkaW5wdXQgLj0KCQkJCSc8ZGl2IGNsYXNzPSJzb3J0YWJsZSI+CgkJCQkJPGltZyBjbGFzcz0ic29ydGFibGVfaGFuZGxlciIgc3JjPSIuLi9tb2R1bGVzL0FkdmFuY2VkQ29udGVudC9pbWFnZXMvc29ydC5wbmciIC8+CgkJCQkJPGlucHV0IGNsYXNzPSJwYWdlY2hlY2tib3giJyAuICgkYmxvY2tJbmZvWydzdHlsZSddICE9ICcnPycgc3R5bGU9IicgLiAkYmxvY2tJbmZvWydzdHlsZSddIC4gJyAiJzonJykgLiAnIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iJy4kaXRlbVsndmFsdWUnXS4nIiBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICdfQWR2YW5jZWRDb250ZW50U29ydGFibGVJdGVtXycgLiBtdW5nZV9zdHJpbmdfdG9fdXJsKCRpdGVtWydsYWJlbCddKSAuICciJyAuICgkaXRlbVsnc2VsZWN0ZWQnXT8gJyBjaGVja2VkPSJjaGVja2VkIic6JycpIC4gJyAvPgoJCQkJCScuJGl0ZW1bJ2xhYmVsJ10uJwoJCQkJPC9kaXY+JzsKCQkJfQoJCQkkaW5wdXQgLj0gJzwvZGl2Pic7CgkJfQoJCXJldHVybiAkaW5wdXQ7Cgl9CgkKCWZ1bmN0aW9uIF9kaXNwbGF5X211bHRpX2lucHV0X2Jsb2NrKCRibG9ja0luZm8sICR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCSRtdWx0aV9pbnB1dF9pZHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCcsJywkYmxvY2tJbmZvWydpbnB1dHMnXSkpOwoJCSRpbnB1dF92YWx1ZXMgICAgPSBhcnJheSgpOwoJCSRtdWx0aV9pbnB1dCAgICAgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgbmFtZT0iJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnIiAvPic7CgkJZm9yZWFjaChleHBsb2RlKCRibG9ja0luZm9bJ2lucHV0X2RlbGltaXRlciddLCR2YWx1ZSkgYXMgJGlucHV0X2RhdGEpCgkJewoJCQkkaW5wdXRfdmFsdWVzW10gPSBleHBsb2RlKCRibG9ja0luZm9bJ3ZhbHVlX2RlbGltaXRlciddLCRpbnB1dF9kYXRhKTsKCQl9CgkJZm9yZWFjaCgkbXVsdGlfaW5wdXRfaWRzIGFzICRrMT0+JG11bHRpX2lucHV0X2lkKQoJCXsKCQkJaWYoaXNzZXQoJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdKSkKCQkJewoJCQkJaWYoIWlzc2V0KCR0aGlzLT5fbXVsdGlJbnB1dHNbJG11bHRpX2lucHV0X2lkXVsndGVtcGxhdGUnXSkpCgkJCQl7CgkJCQkJJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdWyd0ZW1wbGF0ZSddID0gJEFkdmFuY2VkQ29udGVudC0+R2V0VGVtcGxhdGUoJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdWyd0cGxfbmFtZSddKTsKCQkJCX0KCQkJCSRpbnB1dHMgPSBhcnJheSgpOwoJCQkJIyBmb3JlYWNoIHRhZwoJCQkJZm9yZWFjaCAoJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdWydlbGVtZW50cyddIGFzICRrMj0+JGlucHV0SW5mbykKCQkJCXsKCQkJCQlpZigkaW5wdXRJbmZvWydzbWFydHknXSkKCQkJCQl7CgkJCQkJCWZvcmVhY2goJGlucHV0SW5mbyBhcyAkcHJvcE5hbWU9PiRwcm9wVmFsdWUpCgkJCQkJCXsKCQkJCQkJCSRpbnB1dEluZm9bJHByb3BOYW1lXSA9ICR0aGlzLT5Eb1NtYXJ0eSgkcHJvcFZhbHVlKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQkkaW5wdXRJbmZvWydpZCddID0gJ211bHRpSW5wdXQtJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnLScgLiAkbXVsdGlfaW5wdXRfaWQgLiAnLScgLiAkazEgLiAnLScgLiAkaW5wdXRJbmZvWydpZCddOwoJCQkJCSRpbnB1dHNbJGlucHV0SW5mb1snaWQnXV0gPSAkaW5wdXRJbmZvOwoJCQkJCSRpbnB1dHNbJGlucHV0SW5mb1snaWQnXV1bJ2lucHV0J10gPSAkdGhpcy0+ZGlzcGxheV9jb250ZW50X2Jsb2NrKCRpbnB1dEluZm8sIChpc3NldCgkaW5wdXRfdmFsdWVzWyRrMV1bJGsyXSkgPyRpbnB1dF92YWx1ZXNbJGsxXVskazJdOicnKSwgJGFkZGluZyk7CgkJCQl9CgkJCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2lucHV0cycsICRpbnB1dHMpOwoJCQkJJG11bHRpX2lucHV0IC49ICRBZHZhbmNlZENvbnRlbnQtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aGlzLT5fbXVsdGlJbnB1dHNbJG11bHRpX2lucHV0X2lkXVsndGVtcGxhdGUnXSk7CgkJCX0KCQl9CgkJcmV0dXJuICRtdWx0aV9pbnB1dDsKCX0KCQoJZnVuY3Rpb24gVmFsaWRhdGVEYXRhKCkKCXsKCQkkZXJyb3JzID0gcGFyZW50OjpWYWxpZGF0ZURhdGEoKTsKCQlpZiggJGVycm9ycyA9PT0gRkFMU0UgKQoJCXsKCQkJJGVycm9ycyA9IGFycmF5KCk7CgkJfQoJCQoJCWlmICgkdGhpcy0+bVRlbXBsYXRlSWQgPD0gMCApCgkJewoJCQkkZXJyb3JzW10gPSBsYW5nKCdub2ZpZWxkZ2l2ZW4nLCBhcnJheShsYW5nKCd0ZW1wbGF0ZScpKSk7CgkJCSRyZXN1bHQgICA9IGZhbHNlOwoJCX0KCQkKCQlmb3JlYWNoKCR0aGlzLT5fY29udGVudEJsb2NrcyBhcyAkYmxvY2tJbmZvKQoJCXsKCQkJaWYoJGJsb2NrSW5mb1sncmVxdWlyZWQnXSAmJiAkdGhpcy0+R2V0UHJvcGVydHkoJGJsb2NrSW5mb1snaWQnXSkgPT0gJycpCgkJCXsKCQkJCSRlcnJvcnNbXSA9IGxhbmcoJ25vZmllbGRnaXZlbicsIGFycmF5KCRibG9ja0luZm9bJ25hbWUnXSkpOwoJCQkJJHJlc3VsdCAgID0gZmFsc2U7CgkJCX0KCQl9CgkJaWYoJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ3VzZV9leHBpcmVfZGF0ZScpICYmIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJykgJiYgJHRoaXMtPkdldFByb3BlcnR5KCdlbmRfZGF0ZScpIDw9ICR0aGlzLT5HZXRQcm9wZXJ0eSgnc3RhcnRfZGF0ZScpKQoJCXsKCQkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkJJGVycm9yc1tdID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnZXJyb3JfZXhwaXJlZGF0ZScpOwoJCQkkcmVzdWx0ICAgPSBmYWxzZTsKCQl9CgkJcmV0dXJuIChjb3VudCgkZXJyb3JzKSA+IDA/JGVycm9yczpGQUxTRSk7Cgl9CgkKCWZ1bmN0aW9uIENvbnRlbnRQcmVSZW5kZXIoJHRwbFNvdXJjZSkKCXsKCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCQlyZXR1cm4gJHRwbFNvdXJjZTsKCX0KCQoJZnVuY3Rpb24gZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCAkYWRkaW5nKQoJewoJCWdsb2JhbCAkZ0NtczsKCQlzd2l0Y2goJG9uZSkKCQl7CgkJCWNhc2UgJ3RlbXBsYXRlJzoKCQkJCSR0ZW1wbGF0ZW9wcyA9JiAkZ0Ntcy0+R2V0VGVtcGxhdGVPcGVyYXRpb25zKCk7CgkJCQlyZXR1cm4gYXJyYXkobGFuZygndGVtcGxhdGUnKSAuICc6JywgJHRlbXBsYXRlb3BzLT5UZW1wbGF0ZURyb3Bkb3duKCd0ZW1wbGF0ZV9pZCcsICR0aGlzLT5tVGVtcGxhdGVJZCwgJ29uY2hhbmdlPSJkb2N1bWVudC5jb250ZW50Zm9ybS5zdWJtaXQoKSInKSk7CgkJCQoJCQljYXNlICdwYWdlbWV0YWRhdGEnOgoJCQkJcmV0dXJuIGFycmF5KGxhbmcoJ3BhZ2VfbWV0YWRhdGEnKSAuICc6JywgY3JlYXRlX3RleHRhcmVhKGZhbHNlLCAkdGhpcy0+bU1ldGFkYXRhLCAnbWV0YWRhdGEnLCAncGFnZXNtYWxsdGV4dGFyZWEnLCAnbWV0YWRhdGEnLCAnJywgJycsICc4MCcsICc2JykpOwoJCQkKCQkJY2FzZSAncGFnZWRhdGEnOgoJCQkJcmV0dXJuIGFycmF5KGxhbmcoJ3BhZ2VkYXRhX2NvZGVibG9jaycpIC4gJzonLCBjcmVhdGVfdGV4dGFyZWEoZmFsc2UsICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdwYWdlZGF0YScpLCAncGFnZWRhdGEnLCAncGFnZXNtYWxsdGV4dGFyZWEnLCAncGFnZWRhdGEnLCAnJywgJycsICc4MCcsICc2JykpOwoJCQkKCQkJY2FzZSAnc2VhcmNoYWJsZSc6CgkJCQkkc2VhcmNoYWJsZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdzZWFyY2hhYmxlJyk7CgkJCQlpZiggJHNlYXJjaGFibGUgPT0gJycgKQoJCQkJewoJCQkJCSRzZWFyY2hhYmxlID0gMTsKCQkJCX0KCQkJCXJldHVybiBhcnJheShsYW5nKCdzZWFyY2hhYmxlJykgLiAnOicsCgkJCQkJJzxkaXYgY2xhc3M9ImhpZGRlbiIgPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlYXJjaGFibGUiIHZhbHVlPSIwIiAvPjwvZGl2PgoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2VhcmNoYWJsZSIgdmFsdWU9IjEiICcgLiAoJHNlYXJjaGFibGUgPT0gMT8nY2hlY2tlZD0iY2hlY2tlZCInOicnKSAuICcgLz4nKTsKCQkJCgkJCWNhc2UgJ2Rpc2FibGVfd3lzaXd5Zyc6CgkJCQkkZGlzYWJsZVd5c2l3eWcgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZGlzYWJsZV93eXNpd3lnJyk7CgkJCQlpZiggJGRpc2FibGVXeXNpd3lnID09ICcnICkKCQkJCXsKCQkJCQkkZGlzYWJsZVd5c2l3eWcgPSAwOwoJCQkJfQoJCQkJcmV0dXJuIGFycmF5KGxhbmcoJ2Rpc2FibGVfd3lzaXd5ZycpIC4gJzonLAoJCQkJCSc8ZGl2IGNsYXNzPSJoaWRkZW4iID48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXNhYmxlX3d5c2l3eWciIHZhbHVlPSIwIiAvPjwvZGl2PgoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZGlzYWJsZV93eXNpd3lnIiB2YWx1ZT0iMSIgICcgLiAoJGRpc2FibGVXeXNpd3lnID09IDE/J2NoZWNrZWQ9ImNoZWNrZWQiJzonJykgLiAnIG9uY2xpY2s9InRoaXMuZm9ybS5zdWJtaXQoKSIgLz4nKTsKCQkJCgkJCWRlZmF1bHQ6CgkJCQlpZigkb25lICE9ICdmZXVfYWNjZXNzJwoJCQkJJiYgJG9uZSAhPSAncmVkaXJlY3RfcGFnZScKCQkJCSYmICRvbmUgIT0gJ3JlZGlyZWN0X3BhcmFtcycKCQkJCSYmICRvbmUgIT0gJ2V2YWx1YXRlX3NtYXJ0eScKCQkJCSYmICRvbmUgIT0gJ2ZldV9hY3Rpb24nCgkJCQkmJiAkb25lICE9ICdzdGFydF9kYXRlJwoJCQkJJiYgJG9uZSAhPSAnZW5kX2RhdGUnCgkJCQkmJiAkb25lICE9ICd1c2VfZXhwaXJlX2RhdGUnCgkJCQkmJiAkb25lICE9ICdoaWRlX21lbnVfaXRlbScKCQkJCSYmICRvbmUgIT0gJ2luaGVyaXRfcmVkaXJlY3RfcGFyYW1zJykKCQkJCXsKCQkJCQlyZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsICRhZGRpbmcpOyAjIFRvRG86IGhlcmUgd2UgY2FuIGhvb2sgaW4gdG8gYWRkIE1MRSBmZWF0dXJlcyBmb3IgdGl0bGUgYW5kIG1lbnV0ZXh0IGV0Yy4pCgkJCQl9CgkJCQlicmVhazsKCQl9Cgl9CgovKioKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogQ3VzdG9tIGZ1bmN0aW9ucwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIAoJLyoqCgkgKiBEaXNwbGF5IHRoZSBhZHZhbmNlZCBvcHRpb25zCgkgKiBAcGFyYW0gYm9vbGVhbiAkYWRkaW5nIC0gdHJ1ZSBpZiBwYWdlIGlzIGFkZGVkLCBmYWxzZSBpZiBlZGl0ZWQKCSAqIEByZXR1cm4gYXJyYXkgLSBhcnJheShhcnJheShwcm9tcHQsaW1wdXQpKQoJICovCglmdW5jdGlvbiBEaXNwbGF5QWR2YW5jZWRPcHRpb25zKCRhZGRpbmcpCgl7CgkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkkcmV0ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCAkdGhpcy0+X2F0dHJpYnV0ZXMgYXMgJG9uZUF0dHJpYiApCgkJewoJCQlzd2l0Y2goJG9uZUF0dHJpYlswXSkKCQkJewoJCQkJY2FzZSAnZmV1X2FjY2Vzcyc6CgkJCQkJaWYoJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQkJCXsKCQkJCQkJaWYoJGFkZGluZykKCQkJCQkJewoJCQkJCQkJJHNlbGVjdGVkR3JvdXBzID0gJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgnZmV1X2FjY2VzcycpOwoJCQkJCQkJfQoJCQkJCQkJZWxzZQoJCQkJCQkJewoJCQkJCQkJJHNlbGVjdGVkR3JvdXBzID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKTsKCQkJCQkJfQoJCQkJCQkkZGVsaW0gICAgICAgICAgPSBzdHJwb3MoJHNlbGVjdGVkR3JvdXBzLCcsJykgPT09IEZBTFNFID8gJzsnIDogJywnOwoJCQkJCQkkc2VsZWN0ZWRHcm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCRkZWxpbSwkc2VsZWN0ZWRHcm91cHMpKTsKCQkJCQkJCgkJCQkJCSRmZXVBY2Nlc3MgPSBhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdpbmhlcml0X2Zyb21fcGFyZW50Jyk9Pi0xKTsKCQkJCQkJJGZldUFjY2VzcyA9IGFycmF5X21lcmdlKCRmZXVBY2Nlc3MsJGZldXNlcnMtPkdldEdyb3VwTGlzdCgpKTsKCQkJCQkJJHJldFtdID0gYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygnZnJvbnRlbmRhY2Nlc3MnKS4nIDogJywKCQkJCQkJCSc8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBuYW1lPSJmZXVfYWNjZXNzIiAvPicuCgkJCQkJCQkkQWR2YW5jZWRDb250ZW50LT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJycsJ2ZldV9hY2Nlc3NbXScsJGZldUFjY2Vzcywkc2VsZWN0ZWRHcm91cHMsY291bnQoJGZldUFjY2VzcyksJycsMSkpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAncmVkaXJlY3RfcGFnZSc6CgkJCQkJaWYoJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQkJCXsKCQkJCQkJaWYoJGFkZGluZykKCQkJCQkJewoJCQkJCQkJJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoInJlZGlyZWN0X3BhZ2UiLCRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3JlZGlyZWN0X3BhZ2UnLCcnKSk7CgkJCQkJCX0KCQkJCQkJJHJldFtdID0gYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygncmVkaXJlY3RwYWdlJykuJyA6ICcsCgkJCQkJCQkkQWR2YW5jZWRDb250ZW50LT5DcmVhdGVSZWRpcmVjdERyb3Bkb3duKCcnLCAncmVkaXJlY3RfcGFnZScsJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoInJlZGlyZWN0X3BhZ2UiKSwgJHRoaXMtPm1JZCkpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAncmVkaXJlY3RfcGFyYW1zJzoKCQkJCQlpZigkZmV1c2VycyA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJykpCgkJCQkJewoJCQkJCQlpZigkYWRkaW5nKQoJCQkJCQl7CgkJCQkJCQkkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgnaW5oZXJpdF9yZWRpcmVjdF9wYXJhbXMnLCRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ2luaGVyaXRfcmVkaXJlY3RfcGFyYW1zJywnJykpOwoJCQkJCQkJJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoInJlZGlyZWN0X3BhcmFtcyIsJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgncmVkaXJlY3RfcGFyYW1zJywnJykpOwoJCQkJCQkJJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoImV2YWx1YXRlX3NtYXJ0eSIsJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgnZXZhbHVhdGVfc21hcnR5JywnJykpOwoJCQkJCQl9CgkJCQkJCSRpbmhlcml0UGFyYW1zID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2luaGVyaXRfcmVkaXJlY3RfcGFyYW1zJyk7CgkJCQkJCSRyZWRpcmVjdFBhcmFtcyA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCJyZWRpcmVjdF9wYXJhbXMiKTsKCQkJCQkJJGV2YWx1YXRlU21hcnR5ID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoImV2YWx1YXRlX3NtYXJ0eSIpOwoJCQkJCQkkcmV0W10gPSBhcnJheSgnPHNwYW4gY2xhc3M9IkFkdmFuY2VkQ29udGVudF9yZWRpcmVjdF9wYXJhbXMiIHN0eWxlPSJvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwOycuKCEkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgicmVkaXJlY3RfcGFnZSIpID8gJ2Rpc3BsYXk6bm9uZScgOicnKS4nIj4nIC4gJEFkdmFuY2VkQ29udGVudC0+bGFuZygncmVkaXJlY3RwYXJhbXMnKS4nIDogPC9zcGFuPicsCgkJCQkJCQknPHNwYW4gY2xhc3M9IkFkdmFuY2VkQ29udGVudF9yZWRpcmVjdF9wYXJhbXMiIHN0eWxlPSJvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwOycuKCEkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgicmVkaXJlY3RfcGFnZSIpID8gJ2Rpc3BsYXk6bm9uZScgOicnKS4nIj4nLiRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKSAuICcgOiAnIC4KCQkJCQkJCSc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImluaGVyaXRfcmVkaXJlY3RfcGFyYW1zIiB2YWx1ZT0iMSIgJyAuICgkaW5oZXJpdFBhcmFtcyA/ICdjaGVja2VkPSJjaGVja2VkIic6JycpIC4gJyBvbmNoYW5nZT0iaWYodGhpcy5jaGVja2VkKXtqUXVlcnkoXCcjQWR2YW5jZWRDb250ZW50X3JlZGlyZWN0X3BhcmFtc193cmFwcGVyIGlucHV0XCcpLmF0dHIoXCdkaXNhYmxlZFwnLFwnZGlzYWJsZWRcJyk7aWYoalF1ZXJ5KFwnI0FkdmFuY2VkQ29udGVudF9yZWRpcmVjdF9wYXJhbXNfd3JhcHBlclwnKS5jc3MoXCdkaXNwbGF5XCcpICE9IFwnbm9uZVwnKXtqUXVlcnkoXCcjQWR2YW5jZWRDb250ZW50X3JlZGlyZWN0X3BhcmFtc193cmFwcGVyXCcpLnNsaWRlVXAoKTt9fWVsc2V7alF1ZXJ5KFwnI0FkdmFuY2VkQ29udGVudF9yZWRpcmVjdF9wYXJhbXNfd3JhcHBlciBpbnB1dFwnKS5yZW1vdmVBdHRyKFwnZGlzYWJsZWRcJyk7aWYoalF1ZXJ5KFwnI0FkdmFuY2VkQ29udGVudF9yZWRpcmVjdF9wYXJhbXNfd3JhcHBlclwnKS5jc3MoXCdkaXNwbGF5XCcpID09IFwnbm9uZVwnKXtqUXVlcnkoXCcjQWR2YW5jZWRDb250ZW50X3JlZGlyZWN0X3BhcmFtc193cmFwcGVyXCcpLnNsaWRlRG93bigpO319Ii8+PGJyIC8+PGJyIC8+CgkJCQkJCQk8c3BhbiBpZD0iQWR2YW5jZWRDb250ZW50X3JlZGlyZWN0X3BhcmFtc193cmFwcGVyIiBzdHlsZT0ib3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDsnLigkaW5oZXJpdFBhcmFtcyA/ICdkaXNwbGF5Om5vbmUnIDonJykuJyI+PGlucHV0IGNsYXNzPSJBZHZhbmNlZENvbnRlbnRfcmVkaXJlY3RfcGFyYW1zIiB0eXBlPSJ0ZXh0IiBzaXplPSIzMiIgbWF4bGVuZ3RoPSIxMjgiIG5hbWU9InJlZGlyZWN0X3BhcmFtcyIgdmFsdWU9IicuKCRpbmhlcml0UGFyYW1zID8gJycgOiAkcmVkaXJlY3RQYXJhbXMpLiciICcuKCRpbmhlcml0UGFyYW1zID8gJ2Rpc2FibGVkPSJkaXNhYmxlZCIgJyA6ICcnKS4nLz4mbmJzcDs8ZW0+KHBhcmFtMT12YWx1ZTEgcGFyYW0yPXZhbHVlMiAuLi4pPC9lbT48YnIgLz48YnIgLz4nLgoJCQkJCQkJJEFkdmFuY2VkQ29udGVudC0+bGFuZygnZXZhbHVhdGVzbWFydHknKSAuICcgOiAnLgoJCQkJCQkJJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImV2YWx1YXRlX3NtYXJ0eSIgdmFsdWU9IjAiICcuKCRpbmhlcml0UGFyYW1zID8gJ2Rpc2FibGVkPSJkaXNhYmxlZCIgJyA6ICcnKS4nLz4KCQkJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZXZhbHVhdGVfc21hcnR5IiB2YWx1ZT0iMSIgICcgLiAoJGV2YWx1YXRlU21hcnR5ID09IDEgJiYgISRpbmhlcml0UGFyYW1zID8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc6JycpIC4gKCRpbmhlcml0UGFyYW1zID8gJ2Rpc2FibGVkPSJkaXNhYmxlZCIgJyA6ICcnKS4nLz48L3NwYW4+PC9zcGFuPicpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAnZmV1X2FjdGlvbic6CgkJCQkJaWYoJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQkJCXsKCQkJCQkJaWYoJGFkZGluZykKCQkJCQkJewoJCQkJCQkJJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoJ2ZldV9hY3Rpb24nLCAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdmZXVfYWN0aW9uJywxKSk7CgkJCQkJCX0KCQkJCQkJJHJldFtdID0gYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygnc2hvd2xvZ2luZm9ybScpLicgOiAnLAoJCQkJCQkJJEFkdmFuY2VkQ29udGVudC0+Q3JlYXRlSW5wdXREcm9wZG93bignJywnZmV1X2FjdGlvbicsCgkJCQkJCQkJYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygneWVzJyk9PjEsCgkJCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ25vJyk9PjAsCgkJCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKT0+LTEpLAoJCQkJCQkJCTAsJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY3Rpb24nKSkpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAndXNlX2V4cGlyZV9kYXRlJzoKCQkJCQlpZigkYWRkaW5nKQoJCQkJCXsKCQkJCQkJJHVzZUV4cCAgICA9ICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3VzZV9leHBpcmVfZGF0ZScsZmFsc2UpOwoJCQkJCQkkc3RhcnREYXRlID0gc3RydG90aW1lKCcrJyAuICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoInN0YXJ0X2RhdGUiLCcxIHdlZWsnKSk7CgkJCQkJCSRlbmREYXRlICAgPSBzdHJ0b3RpbWUoJysnIC4gJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgiZW5kX2RhdGUiLCcxIHdlZWsnKSwgJHN0YXJ0RGF0ZSk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSR1c2VFeHAgICAgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgndXNlX2V4cGlyZV9kYXRlJyk7CgkJCQkJCSRzdGFydERhdGUgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnc3RhcnRfZGF0ZScpID8gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ3N0YXJ0X2RhdGUnKSA6IHN0cnRvdGltZSgnKycgLiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCJzdGFydF9kYXRlIiwnMSB3ZWVrJykpOwoJCQkJCQkkZW5kRGF0ZSAgID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2VuZF9kYXRlJykgPyAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZW5kX2RhdGUnKSA6IHN0cnRvdGltZSgnKycgLiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCJlbmRfZGF0ZSIsJzEgd2VlaycpLCAkc3RhcnREYXRlKTsKCQkJCQl9CgkJCQkJJGRhdGUgICAgICAgID0gc3RyZnRpbWUoJyV4JywgaW50dmFsKCRzdGFydERhdGUpKTsKCQkJCQkkdGltZSAgICAgICAgPSBzdHJmdGltZSgnJUg6JU0nLCBpbnR2YWwoJHN0YXJ0RGF0ZSkpOwoJCQkJCSRfdG1wICAgICAgICA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJzonLCR0aW1lKSk7CgkJCQkJJHRpbWVTZWNvbmRzID0gKCgkX3RtcFswXSAqIDM2MDApICsgKCRfdG1wWzFdICogNjApKTsKCQkJCQkkZGF0ZVNlY29uZHMgPSAkc3RhcnREYXRlIC0gJHRpbWVTZWNvbmRzOwoJCQkJCQoJCQkJCSRkYXRlSW5wdXQgPSAnPGJyIC8+PGJyIC8+CgkJCQkJCTxzcGFuIGlkPSJBZHZhbmNlZENvbnRlbnRfZXhwaXJlX2RhdGVfd3JhcHBlciIgc3R5bGU9Im92ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7Jy4oJHVzZUV4cCA8PSAwID8gJ2Rpc3BsYXk6bm9uZScgOiAnJykuJyI+PHN0cm9uZz4nLgoJCQkJCQkkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdzdGFydGRhdGUnKS4nIDogPC9zdHJvbmc+PGJyIC8+CgkJCQkJCTxpbWcgaWQ9IkFkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZVBpY2tlclRyaWdnZXIiIHNyYz0iLi4vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvaW1hZ2VzL2NhbGVuZGFyLnBuZyIgY2xhc3M9ImNhbGVuZGFyVHJpZ2dlciIgLz4mbmJzcDsKCQkJCQkJPHNwYW4gaWQ9IkFkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZVBpY2tlckRpc3BsYXkiPicuJGRhdGUuJzwvc3Bhbj4mbmJzcDsmbmJzcDstJm5ic3A7Jm5ic3A7CgkJCQkJCTxpbnB1dCBpZD0iQWR2YW5jZWRDb250ZW50U3RhcnREYXRlIiB0eXBlPSJoaWRkZW4iICcuKCR1c2VFeHAgPD0gMCA/ICdkaXNhYmxlZD0iZGlzYWJsZWQiJyA6ICcnKS4nIG5hbWU9IkFkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZSIgdmFsdWU9IicuKCR1c2VFeHAgPiAwID8gJGRhdGVTZWNvbmRzIDogJHVzZUV4cCkuJyIgLz4KCQkJCQkJPHNlbGVjdCBuYW1lPSJBZHZhbmNlZENvbnRlbnRTdGFydFRpbWUiICcuKCR1c2VFeHAgPD0gMCA/ICdkaXNhYmxlZD0iZGlzYWJsZWQiJyA6ICcnKS4nPic7CgkJCQkJCQoJCQkJCWZvcigkaT0wOyAkaTw9MjM7ICRpKyspCgkJCQkJewoJCQkJCQlmb3IoJGo9MDsgJGo8PTU5OyAkaisrKQoJCQkJCQl7CgkJCQkJCQkkdmFsdWUgPSAoJGkqMzYwMCkgKyAoJGoqNjApOwoJCQkJCQkJJGRhdGVJbnB1dCAuPSAnPG9wdGlvbiB2YWx1ZT0iJy4gJHZhbHVlIC4nIicuICgkdmFsdWUgPT0gJHRpbWVTZWNvbmRzICYmICR1c2VFeHAgPiAwID8gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiICc6JycpIC4gJz4nLiAoJGk8MTA/JzAnLiRpOiRpKSAuJzonLiAoJGo8MTA/JzAnLiRqOiRqKSAuJzwvb3B0aW9uPic7CgkJCQkJCX0KCQkJCQkJJGogPSAwOwoJCQkJCX0KCQkJCQkkZGF0ZUlucHV0IC49ICc8L3NlbGVjdD48YnIgLz48YnIgLz4nOwoJCQkJCQoJCQkJCSRkYXRlICAgICAgICA9IHN0cmZ0aW1lKCcleCcsIGludHZhbCgkZW5kRGF0ZSkpOwoJCQkJCSR0aW1lICAgICAgICA9IHN0cmZ0aW1lKCclSDolTScsIGludHZhbCgkZW5kRGF0ZSkpOwoJCQkJCSRfdG1wICAgICAgICA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJzonLCR0aW1lKSk7CgkJCQkJJHRpbWVTZWNvbmRzID0gKCgkX3RtcFswXSAqIDM2MDApICsgKCRfdG1wWzFdICogNjApKTsKCQkJCQkkZGF0ZVNlY29uZHMgPSAkZW5kRGF0ZSAtICR0aW1lU2Vjb25kczsKCQkJCQkKCQkJCQkkZGF0ZUlucHV0IC49ICc8c3Ryb25nPicgLiAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdlbmRkYXRlJykuJyA6IDwvc3Ryb25nPjxiciAvPgoJCQkJCQk8aW1nIGlkPSJBZHZhbmNlZENvbnRlbnRFbmREYXRlUGlja2VyVHJpZ2dlciIgc3JjPSIuLi9tb2R1bGVzL0FkdmFuY2VkQ29udGVudC9pbWFnZXMvY2FsZW5kYXIucG5nIiBjbGFzcz0iY2FsZW5kYXJUcmlnZ2VyIiAvPiZuYnNwOwoJCQkJCQk8c3BhbiBpZD0iQWR2YW5jZWRDb250ZW50RW5kRGF0ZVBpY2tlckRpc3BsYXkiPicuJGRhdGUuJzwvc3Bhbj4mbmJzcDsmbmJzcDstJm5ic3A7Jm5ic3A7CgkJCQkJCTxpbnB1dCBpZD0iQWR2YW5jZWRDb250ZW50RW5kRGF0ZSIgdHlwZT0iaGlkZGVuIiAnLigkdXNlRXhwIDw9IDAgPyAnZGlzYWJsZWQ9ImRpc2FibGVkIicgOiAnJykuJyBuYW1lPSJBZHZhbmNlZENvbnRlbnRFbmREYXRlIiB2YWx1ZT0iJy4oJHVzZUV4cCA+IDAgPyAkZGF0ZVNlY29uZHMgOiAkdXNlRXhwKS4nIiAvPgoJCQkJCQk8c2VsZWN0IG5hbWU9IkFkdmFuY2VkQ29udGVudEVuZFRpbWUiICcuKCR1c2VFeHAgPD0gMCA/ICdkaXNhYmxlZD0iZGlzYWJsZWQiJyA6ICcnKS4nPic7CgkJCQkJCQoJCQkJCWZvcigkaT0wOyAkaTw9MjM7ICRpKyspCgkJCQkJewoJCQkJCQlmb3IoJGo9MDsgJGo8PTU5OyAkaisrKQoJCQkJCQl7CgkJCQkJCQkkdmFsdWUgPSAoJGkqMzYwMCkgKyAoJGoqNjApOwoJCQkJCQkJJGRhdGVJbnB1dCAuPSAnPG9wdGlvbiB2YWx1ZT0iJy4gJHZhbHVlIC4nIicuICgkdmFsdWUgPT0gJHRpbWVTZWNvbmRzICYmICR1c2VFeHAgPiAwID8gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzonJykgLic+Jy4gKCRpPDEwPycwJy4kaTokaSkgLic6Jy4gKCRqPDEwPycwJy4kajokaikgLic8L29wdGlvbj4nOwoJCQkJCQl9CgkJCQkJCSRqID0gMDsKCQkJCQl9CgkJCQkJJGRhdGVJbnB1dCAuPSAnPC9zZWxlY3Q+PC9zcGFuPic7CgkJCQkKCQkJCQkkcmV0W10gPSBhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCd1c2VleHBpcmVkYXRlJykgLiAnOicsCgkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPkNyZWF0ZUlucHV0RHJvcGRvd24oJycsJ3VzZV9leHBpcmVfZGF0ZScsCgkJCQkJCQkJYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygneWVzJyk9PjEsCgkJCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ25vJyk9PjAsCgkJCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKT0+LTEpLAoJCQkJCQkJCS0xLCR1c2VFeHAsJ29uY2hhbmdlPSJpZih0aGlzLnZhbHVlICE9IFwnMVwnKXtqUXVlcnkoXCcjQWR2YW5jZWRDb250ZW50X2V4cGlyZV9kYXRlX3dyYXBwZXIgaW5wdXQsICNBZHZhbmNlZENvbnRlbnRfZXhwaXJlX2RhdGVfd3JhcHBlciBzZWxlY3QsICNBZHZhbmNlZENvbnRlbnRfZXhwaXJlX2RhdGVfd3JhcHBlciB0ZXh0YXJlYVwnKS5hdHRyKFwnZGlzYWJsZWRcJyxcJ2Rpc2FibGVkXCcpO2lmKGpRdWVyeShcJyNBZHZhbmNlZENvbnRlbnRfZXhwaXJlX2RhdGVfd3JhcHBlclwnKS5jc3MoXCdkaXNwbGF5XCcpICE9IFwnbm9uZVwnKXtqUXVlcnkoXCcjQWR2YW5jZWRDb250ZW50X2V4cGlyZV9kYXRlX3dyYXBwZXJcJykuc2xpZGVVcCgpO319ZWxzZXtqUXVlcnkoXCcjQWR2YW5jZWRDb250ZW50X2V4cGlyZV9kYXRlX3dyYXBwZXIgaW5wdXQsICNBZHZhbmNlZENvbnRlbnRfZXhwaXJlX2RhdGVfd3JhcHBlciBzZWxlY3QsICNBZHZhbmNlZENvbnRlbnRfZXhwaXJlX2RhdGVfd3JhcHBlciB0ZXh0YXJlYVwnKS5yZW1vdmVBdHRyKFwnZGlzYWJsZWRcJyk7aWYoalF1ZXJ5KFwnI0FkdmFuY2VkQ29udGVudF9leHBpcmVfZGF0ZV93cmFwcGVyXCcpLmNzcyhcJ2Rpc3BsYXlcJykgPT0gXCdub25lXCcpe2pRdWVyeShcJyNBZHZhbmNlZENvbnRlbnRfZXhwaXJlX2RhdGVfd3JhcHBlclwnKS5zbGlkZURvd24oKTt9fSInKSAuICRkYXRlSW5wdXQpOwoJCQkJCQoJCQkJCWJyZWFrOwoJCQkJCQoJCQkJY2FzZSAnaGlkZV9tZW51X2l0ZW0nOgoJCQkJCWlmKCRmZXVzZXJzID0mICRBZHZhbmNlZENvbnRlbnQtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJykpCgkJCQkJewoJCQkJCQlpZigkYWRkaW5nKQoJCQkJCQl7CgkJCQkJCQkkaGlkZSA9ICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ2hpZGVfbWVudV9pdGVtJywwKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRoaWRlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2hpZGVfbWVudV9pdGVtJyk7CgkJCQkJCX0KCQkJCQkJJHJldFtdID0gYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygnaGlkZV9tZW51X2l0ZW0nKSAuICc6JywKCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPkNyZWF0ZUlucHV0RHJvcGRvd24oJycsJ2hpZGVfbWVudV9pdGVtJywKCQkJCQkJCQlhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdubycpPT4wLAoJCQkJCQkJCQkkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdsb2dnZWRvdXQnKT0+MSwKCQkJCQkJCQkJJEFkdmFuY2VkQ29udGVudC0+bGFuZygnbG9nZ2VkaW4nKT0+MiwKCQkJCQkJCQkJJEFkdmFuY2VkQ29udGVudC0+bGFuZygnaW5oZXJpdF9mcm9tX3BhcmVudCcpPT4tMSksCgkJCQkJCQkJMCwkaGlkZSkpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCQoJCQkJZGVmYXVsdDpicmVhazsKCQkJfQoJCX0KCQlyZXR1cm4gJHJldDsKCX0KCQoJCgkvKioKCSAqIFRoaXMgaXMganVzdCBhIHdyYXBwZXIgdG8gcHJvY2VzcyBhIHRlbXBsYXRlIGZyb20gZGF0YQoJICogQHBhcmFtIHN0cmluZyAkZGF0YSAtIFRoZSB0ZW1wbGF0ZSBjb250ZW50IHRvIHByb2Nlc3MKCSAqIEByZXR1cm4gc3RyaW5nIC0gVGhlIHByb2Nlc3NlZCB0ZW1wbGF0ZSBkYXRhCgkgKi8KCWZ1bmN0aW9uIERvU21hcnR5KCRkYXRhKQoJewoJCWlmKGlzX2FycmF5KCRkYXRhKSkKCQl7CgkJCWZvcmVhY2goJGRhdGEgYXMgJGsgPT4gJHYpCgkJCXsKCQkJCSRkYXRhWyRrXSA9ICR0aGlzLT5Eb1NtYXJ0eSgkdik7CgkJCX0KCQl9CgkJZ2xvYmFsICRnQ21zOwoJCWlmKCFpc19hcnJheSgkZGF0YSkgJiYgIWlzX29iamVjdCgkZGF0YSkgJiYgcHJlZ19tYXRjaF9hbGwoJy86OjooW146XSspOjo6LycsICRkYXRhLCAkbWF0Y2hlcykpCgkJewoJCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCQlpZighaXNzZXQoJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+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+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEocHJlZ19yZXBsYWNlKCcvOjo6KFteOl0rKTo6Oi8nLCAneyQxfScsICRkYXRhKSk7CgkJfQoJCXJldHVybiAkZGF0YTsKCX0KCQoJZnVuY3Rpb24gSW5oZXJpdFBhcmVudFByb3AoJHByb3BOYW1lLCAkY3VycmVudFByb3AgPSBhcnJheSgpKQoJewoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJcmV0dXJuICRBZHZhbmNlZENvbnRlbnQtPkluaGVyaXRQYXJlbnRQcm9wKCR0aGlzLT5tSWQsICR0aGlzLT5tUGFyZW50SWQsICRwcm9wTmFtZSwgJGN1cnJlbnRQcm9wKTsKCX0KCQoJLyoqCgkgKiBHZXQgdGhlIGdyb3VwcyBvZiB0aGUgYmFja2VuZCB1c2VyCgkgKiBAcmV0dXJuIGFycmF5CgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gJkdldFVzZXJHcm91cHMoKQoJewoJCWlmKCEkdGhpcy0+X3VzZXJHcm91cHMpCgkJewoJCQlnbG9iYWwgJGdDbXM7CgkJCSRkYiA9JiAkZ0Ntcy0+R2V0RGIoKTsKCQkJJHRoaXMtPl91c2VyR3JvdXBzID0gYXJyYXkoKTsKCQkJJHF1ZXJ5ID0gIlNFTEVDVCBncm91cF9pZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJ1c2VyX2dyb3VwcyBXSEVSRSB1c2VyX2lkID0gPyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KGdldF91c2VyaWQoKSkpOwoJCQl3aGlsZSggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKQoJCQl7CgkJCQkkdGhpcy0+X3VzZXJHcm91cHNbXSA9ICRyb3dbJ2dyb3VwX2lkJ10gKiAtMTsKCQkJfQoJCX0KCQlyZXR1cm4gJHRoaXMtPl91c2VyR3JvdXBzOwoJfQoJCgkKCS8qKgoJICogR2V0IGFsbCBiYWNrZW5kIGdyb3VwcwoJICogQHJldHVybiBhcnJheQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uICZHZXRBbGxHcm91cHMoKQoJewoJCWlmKCEkdGhpcy0+X2FsbEdyb3VwcykKCQl7CgkJCWdsb2JhbCAkZ0NtczsKCQkJJGdyb3VwT3BzICAgICAgICAgPSYgJGdDbXMtPkdldEdyb3VwT3BlcmF0aW9ucygpOwoJCQkkdGhpcy0+X2FsbEdyb3VwcyA9ICRncm91cE9wcy0+TG9hZEdyb3VwcygpOwoJCX0KCQlyZXR1cm4gJHRoaXMtPl9hbGxHcm91cHM7Cgl9CgkKCQoJLyoqCgkgKiBHZXQgYWxsIGJhY2tlbmQgdXNlcnMKCSAqIEByZXR1cm4gYXJyYXkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiAmR2V0QWxsVXNlcnMoKQoJewoJCWlmKCEkdGhpcy0+X2FsbFVzZXJzKQoJCXsKCQkJZ2xvYmFsICRnQ21zOwoJCQkkdXNlck9wcyAgICAgICAgID0mICRnQ21zLT5HZXRVc2VyT3BlcmF0aW9ucygpOwoJCQkkdGhpcy0+X2FsbFVzZXJzID0mICR1c2VyT3BzLT5Mb2FkVXNlcnMoKTsKCQl9CgkJcmV0dXJuICR0aGlzLT5fYWxsVXNlcnM7Cgl9CgkKCQoJLyoqCgkgKiBDaGVja3MgaWYgYSBiYWNrZW5kIHVzZXIgaGFzIHN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byBlZGl0IGEgYmxvY2sKCSAqIEBwYXJhbSBhcnJheSAkYmxvY2tJbmZvIC0gdGhlIGJsb2NrIHRvIGNoZWNrIHRoZSBwZXJzbWlzc2lvbgoJICogQHJldHVybiBib29sZWFuCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gQ2hlY2tCbG9ja1Blcm1pc3Npb24oJiRibG9ja0luZm8pCgl7CgkJJGFkZHRfZWRpdG9ycyA9IGFycmF5KCk7CgkJIyBjaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGVkaXQgdGhpcyBibG9jawoJCWlmKCgkYmxvY2tJbmZvWydlZGl0b3JfdXNlcnMnXSAhPSAnJyB8fCAkYmxvY2tJbmZvWydlZGl0b3JfZ3JvdXBzJ10gIT0gJycpCgkJJiYgIWNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJykpCgkJewoJCQkkZWRpdG9yR3JvdXBzID0gICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRibG9ja0luZm9bJ2VkaXRvcl9ncm91cHMnXSkpOwoJCQkkZWRpdG9yVXNlcnMgID0gICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRibG9ja0luZm9bJ2VkaXRvcl91c2VycyddKSk7CgkJCWZvcmVhY2ggKCR0aGlzLT5fYWxsR3JvdXBzIGFzICRvbmVHcm91cCkKCQkJewoJCQkJaWYoaW5fYXJyYXkoJG9uZUdyb3VwLT5uYW1lLCRlZGl0b3JHcm91cHMpKQoJCQkJewoJCQkJCSRhZGR0X2VkaXRvcnNbXSA9ICRvbmVHcm91cC0+aWQqLTE7CgkJCQl9CgkJCX0KCQkJCgkJCWZvcmVhY2ggKCR0aGlzLT5fYWxsVXNlcnMgYXMgJG9uZVVzZXIpCgkJCXsKCQkJCWlmKGluX2FycmF5KCRvbmVVc2VyLT51c2VybmFtZSwkZWRpdG9yVXNlcnMpKQoJCQkJewoJCQkJCSRhZGR0X2VkaXRvcnNbXSA9ICRvbmVVc2VyLT5pZDsKCQkJCX0KCQkJfQoJCQkKCQkJaWYoIWluX2FycmF5KGdldF91c2VyaWQoKSwkYWRkdF9lZGl0b3JzKQoJCQkJJiYgIWNvdW50KGFycmF5X2ludGVyc2VjdCgkdGhpcy0+R2V0VXNlckdyb3VwcygpLCRhZGR0X2VkaXRvcnMpKSkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXJldHVybiB0cnVlOwoJfQoJCgkKCS8qKgoJICogY2hlY2tzIGlmIGEgdmFyIGlzIHJlYWxseSBlbXB0eS4gCgkgKiBpZiB2YXIgaXMgYW4gYXJyYXkgaXQgcmVjdXJzaXZsZXkgY2hlY2tzIGFsbCBlbGVtZW50cwoJICoKCSAqIEBwYXJhbSBtaXhlZCAkdmFyIC0gdGhlIHZhciB0byBjaGVjayBmb3IgZW1wdHkgdmFsdWUocykKCSAqIEBwYXJhbSBib29sZWFuICR0cmltIC0gdHJ1ZSB0byB0cmltIG9mZiBzcGFjZXMKCSAqIEBwYXJhbSBib29sZWFuICR1bnNldEVtcHR5SW5kZXhlcyAtIHRydWUgdG8gZGVsZXRlIGVtcHR5IGVsZW1lbnRzIGZyb20gYXJyYXkKCSAqIEByZXR1cm4gYm9vbGVhbiAtIHRydWUgaWYgZW1wdHksIGZhbHNlIGlmIG5vdAoJICovCglmdW5jdGlvbiBJc1ZhckVtcHR5KCYkdmFyLCAkdHJpbSA9IHRydWUsICR1bnNldEVtcHR5SW5kZXhlcyA9IGZhbHNlKQoJewoJCWlmIChpc19hcnJheSgkdmFyKSkKCQl7CgkJCWZvcmVhY2ggKCR2YXIgYXMgJGs9PiR2KQoJCQl7CgkJCQlpZiAoISR0aGlzLT5Jc1ZhckVtcHR5KCR2KSkKCQkJCXsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJaWYoJHVuc2V0RW1wdHlJbmRleGVzKQoJCQkJCXsKCQkJCQkJdW5zZXQoJHZhclska10pOwoJCQkJCX0KCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCQllbHNlIGlmKCR0cmltICYmIHRyaW0oJHZhcikgPT0gJycpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZWxzZSBpZigkdmFyID09ICcnKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIENsZWFuQXJyYXkoJGFycmF5KQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIHJlbW92ZXMgZW1wdHkgZWxlbWVudHMgZnJvbSBhbiBhcnJheQoJICogKGNhbiBiZSB1c2VmdWwgd2hlbiB1c2luZyBmdW5jdGlvbiBleHBsb2RlIHRvIGNyZWF0ZSB0aGUgYXJyYXkgb2YgYSBjc3YpCgkgKgoJICogQHBhcmFtIGFycmF5ICRhcnJheSAtIHRoZSBhcnJheSB0byBjbGVhbiB1cAoJICogQHJldHVybiBhcnJheSAtIGFuIGFycmF5IHdpdGhvdXQgZW1wdHkgZWxlbWVudHMgb3IgYW4gZW1wdHkgYXJyYXkKCSAqLwoJZnVuY3Rpb24gQ2xlYW5BcnJheSgkYXJyYXkpCgl7CgkJaWYgKCFpc19hcnJheSgkYXJyYXkpKQoJCXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoJCWZvcmVhY2ggKCRhcnJheSBhcyAkaz0+JHYpCgkJewoJCQlpZiAoJHRoaXMtPklzVmFyRW1wdHkoJHYsdHJ1ZSx0cnVlKSkKCQkJewoJCQkJdW5zZXQoJGFycmF5WyRrXSk7CgkJCX0KCQkJZWxzZSBpZihpc19hcnJheSgkdikpCgkJCXsKCQkJCSR2ID0gJHRoaXMtPkNsZWFuQXJyYXkoJHYpOwoJCQkJaWYoJHRoaXMtPklzVmFyRW1wdHkoJHYsdHJ1ZSx0cnVlKSkKCQkJCXsKCQkJCQl1bnNldCgkYXJyYXlbJGtdKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkYXJyYXlbJGtdID0gJHY7CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuICRhcnJheTsKCX0KCQoJCgkvKioKCSAqIGNoZWNrcyBpZiBhIHZhbHVlIGlzIHJlYWxseSBtZWFudCB0byBiZSAidHJ1ZSIKCSAqCgkgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIC0gdGhlIHZhbHVlIHRvIGNoZWNrCgkgKiBAcmV0dXJuIGJvb2wKCSAqLwoJZnVuY3Rpb24gSXNUcnVlKCR2YWx1ZSkKCXsKCQlyZXR1cm4gKHN0cnRvbG93ZXIoJHZhbHVlKSA9PT0gJ3RydWUnIHx8ICR2YWx1ZSA9PT0gMSB8fCAkdmFsdWUgPT09ICcxJyB8fCAkdmFsdWUgPT09IHRydWUpOwoJfQoJCgkKCS8qKgoJICogY2hlY2tzIGlmIGEgdmFsdWUgaXMgcmVhbGx5IG1lYW50IHRvIGJlICJmYWxzZSIKCSAqCgkgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIC0gdGhlIHZhbHVlIHRvIGNoZWNrCgkgKiBAcmV0dXJuIGJvb2wKCSAqLwoJZnVuY3Rpb24gSXNGYWxzZSgkdmFsdWUpCgl7CgkJcmV0dXJuIChzdHJ0b2xvd2VyKCR2YWx1ZSkgPT09ICdmYWxzZScgfHwgJHZhbHVlID09PSAnMCcgfHwgJHZhbHVlID09PSAwIHx8ICR2YWx1ZSA9PT0gZmFsc2UgfHwgJHZhbHVlID09PSAnJyk7Cgl9CgkKCQoJLyoqCgkgKiBDaGVja3MgaWYgYSBmcm9udGVuZCB1c2VyIGlzIGxvZ2dlZCBpbiBhbmQgYmVsb25ncyB0byBhIGNlcnRhaW4gZ3JvdXAKCSAqCgkgKiBAcGFyYW0gYXJyYXl8c3RyaW5nICRmZXVfZ3JvdXBzIC0gdGhlIGFsbG93ZWQgZnJvbnRlbmQgdXNlciBncm91cHMgdGhlIHVzZXIgc2hvdWxkIGJlbG9uZyB0byAoYXJyYXkgb3IgY3N2KQoJICogQHJldHVybiBib29sCgkgKi8KCWZ1bmN0aW9uIENoZWNrRnJvbnRlbmRBY2Nlc3MoJGZldV9ncm91cHMpCgl7CgkJJGFjY2VzcyA9IHRydWU7CgkJaWYoIWlzX2FycmF5KCRmZXVfZ3JvdXBzKSkKCQl7CgkJCSRmZXVfZ3JvdXBzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnLCcsJGZldV9ncm91cHMpKTsKCQl9CgkJaWYoICRmZXVzZXJzID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKSAmJiAhZW1wdHkoJGZldV9ncm91cHMpKQoJCXsKCQkJJGFjY2VzcyA9IGZhbHNlOwoJCQkkdXNlcmlkID0gJGZldXNlcnMtPkxvZ2dlZEluSWQoKTsKCQkJaWYoJHVzZXJpZCAmJiAkZ3JvdXBzID0mICR0aGlzLT5HZXRGZXVHcm91cHMoJHVzZXJpZCkpCgkJCXsKCQkJCWZvcmVhY2goJGdyb3VwcyBhcyAkb25lZ3JvdXApCgkJCQl7CgkJCQkJaWYoaW5fYXJyYXkoJG9uZWdyb3VwWydncm91cGlkJ10sJGZldV9ncm91cHMpKQoJCQkJCXsKCQkJCQkJJGFjY2VzcyA9IHRydWU7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gJGFjY2VzczsKCX0KCQoJCgkvKioKCSAqIEp1c3QgZ2V0cyBhbGwgZnJvbnRlbmQgdXNlciBncm91cHMgYSBmcm9udGVuZCB1c2VyIGJlbG9uZ3MgdG8KCSAqIGFuZCBjYWNoZXMgdGhlbSBpbiBhIG1lbWJlciB2YXJpYWJsZQoJICoKCSAqIEBwYXJhbSBpbnQgJHVzZXJpZCAtIHRoZSBpZCBvZiB0aGUgdXNlcgoJICogQHJldHVybiBhcnJheQoJICovCglmdW5jdGlvbiAmR2V0RmV1R3JvdXBzKCR1c2VyaWQpCgl7CgkJaWYoISR1c2VyaWQpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWlmKCAkZmV1c2VycyA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJykgJiYgISR0aGlzLT5fZmV1R3JvdXBzKQoJCXsKCQkJJHRoaXMtPl9mZXVHcm91cHMgPSAkZmV1c2Vycy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJpZCk7CgkJfQoJCXJldHVybiAkdGhpcy0+X2ZldUdyb3VwczsKCX0KCQoJCgkvKioKCSAqIENoZWNrcyBpZiBhIGZyb250ZW5kIHVzZXIgaGFzIGFjY2VzcyB0byBhIHBhZ2UKCSAqCgkgKiBAcmV0dXJuIGJvb2xlYW4KCSAqLwoJZnVuY3Rpb24gQ2hlY2tGcm9udGVuZFBhZ2VBY2Nlc3MoKQoJewoJCWlmKCR0aGlzLT5fZmV1QWNjZXNzID09IC0xKQoJCXsKCQkJJHRoaXMtPl9mZXVBY2Nlc3MgPSAkdGhpcy0+Q2hlY2tGcm9udGVuZEFjY2VzcygkdGhpcy0+R2V0UHJvcGVydHkoJ2ZldV9hY2Nlc3MnKSk7CgkJfQoJCXJldHVybiAkdGhpcy0+X2ZldUFjY2VzczsKCX0KCQoJCgkvKioKCSAqIFBlcmZvcm0gdGhlIHNlbGVjdGVkIGFjdGlvbiBpZiBhIHBhZ2UgaXMgYWNjZXNzZWQgd2hlcmUgdGhlIHVzZXIgaGFzIG5vIGFjY2VzcwoJICovCglmdW5jdGlvbiBEb0Zyb250ZW5kUGFnZUFjdGlvbigpCgl7CgkJZ2xvYmFsICRnQ21zOwoJCWlmKCAkZmV1c2VycyA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyApKQoJCXsKCQkJJHJlZGlyZWN0UGFnZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eSgncmVkaXJlY3RfcGFnZScpOwoJCQlpZigkcmVkaXJlY3RQYWdlID09ICR0aGlzLT5tSWQgfHwgJHJlZGlyZWN0UGFnZSA9PSAkdGhpcy0+bUFsaWFzKQoJCQl7CgkJCQkkcmVkaXJlY3RQYWdlID0gJyc7CgkJCX0KCQkJJGZldUFjdGlvbiA9ICR0aGlzLT5HZXRQcm9wZXJ0eSgnZmV1X2FjdGlvbicpOwoJCQlpZighJHJlZGlyZWN0UGFnZSkKCQkJewoJCQkJaWYoJGZldUFjdGlvbiAmJiAhJHRoaXMtPl9mZXVBY3Rpb24pCgkJCQl7CgkJCQkJJHRoaXMtPl9mZXVBY3Rpb24gPSB0cnVlOwoJCQkJCXJldHVybiAkZmV1c2Vycy0+RG9BY3Rpb24oJ2RlZmF1bHQnLCAnY250bnQwMScsIGFycmF5KCdmb3JtJz0+J2xvZ2luJyksICR0aGlzLT5tSWQpOwoJCQkJfQoJCQkJcmV0dXJuOwoJCQl9CgkJCSRwYXR0ZXJuICAgICAgICA9ICcvKFtcd10rKT0oWyJdW14iXSpbIl18W1wnXVteXCddKltcJ118W15cJyJcc10qKS8nOwoJCQlpZighJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2luaGVyaXRfcmVkaXJlY3RfcGFyYW1zJykpCgkJCXsKCQkJCSRyZWRpcmVjdFBhcmFtcyA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdyZWRpcmVjdF9wYXJhbXMnKTsKCQkJCSRldmFsdWF0ZVNtYXJ0eSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdldmFsdWF0ZV9zbWFydHknKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJJHJlZGlyZWN0UGFyYW1zID0gJHRoaXMtPkluaGVyaXRQYXJlbnRQcm9wKCdyZWRpcmVjdF9wYXJhbXMnKTsKCQkJJGV2YWx1YXRlU21hcnR5ID0gJHRoaXMtPkluaGVyaXRQYXJlbnRQcm9wKCdldmFsdWF0ZV9zbWFydHknKTsKCQkJfQoJCQlpZigkZXZhbHVhdGVTbWFydHkpCgkJCXsKCQkJCSRyZWRpcmVjdFBhcmFtcyA9ICRmZXVzZXJzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkcmVkaXJlY3RQYXJhbXMpOwoJCQl9CgkJCQoJCQkkbWF0Y2hlcyAgPSBhcnJheSgpOwoJCQkkcmVzdWx0ICAgPSBwcmVnX21hdGNoX2FsbCgkcGF0dGVybiwgJHJlZGlyZWN0UGFyYW1zLCAkbWF0Y2hlcyk7CgkJCSRfcGFyYW1zMSA9IGFycmF5KCk7CgkJCSRfcGFyYW1zMiA9IGFycmF5KCk7CgkJCWZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRtYXRjaGVzWzFdKTsgJGkrKykKCQkJewoJCQkJaWYoc3RhcnRzd2l0aCgkbWF0Y2hlc1syXVskaV0sJ1wnJykpCgkJCQl7CgkJCQkJJG1hdGNoZXNbMl1bJGldID0gdHJpbSgkbWF0Y2hlc1syXVskaV0sJ1wnJyk7CgkJCQl9CgkJCQllbHNlIGlmKHN0YXJ0c3dpdGgoJG1hdGNoZXNbMl1bJGldLCciJykpCgkJCQl7CgkJCQkJJG1hdGNoZXNbMl1bJGldID0gdHJpbSgkbWF0Y2hlc1syXVskaV0sJyInKTsKCQkJCX0KCQkJCSRfcGFyYW1zMVskbWF0Y2hlc1sxXVskaV1dID0gJG1hdGNoZXNbMl1bJGldOwoJCQkJJF9wYXJhbXMyW10gICAgICAgICAgICAgICAgPSAkbWF0Y2hlc1sxXVskaV0gLiAnPScgLiAkbWF0Y2hlc1syXVskaV07CgkJCX0KCQkJaWYoJGZldUFjdGlvbikKCQkJewoJCQkJcmV0dXJuICRmZXVzZXJzLT5SZWRpcmVjdEZvckZyb250RW5kKCdjbnRudDAxJywgJHJlZGlyZWN0UGFnZSwgJ2RlZmF1bHQnLCAkX3BhcmFtczEsIGZhbHNlKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRtYW5hZ2VyID0mICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CgkJCQkkbm9kZSAgICA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJHJlZGlyZWN0UGFnZSk7CgkJCQlpZighaXNfb2JqZWN0KCRub2RlKSkKCQkJCXsKCQkJCQlyZXR1cm47CgkJCQl9CgkJCQkkY29udGVudCA9JiAkbm9kZS0+R2V0Q29udGVudCgpOwoJCQkJaWYgKCFpc19vYmplY3QoJGNvbnRlbnQpIHx8ICEkdXJsID0gJGNvbnRlbnQtPkdldFVSTCgpKQoJCQkJewoJCQkJCXJldHVybjsKCQkJCX0KCQkJCWdsb2JhbCAkY29uZmlnOwoJCQkJJHVybCA9IHRyaW0oc3RyX3JlcGxhY2UoCgkJCQkJYXJyYXkoJGNvbmZpZ1sncm9vdF91cmwnXSAuICcvaW5kZXgucGhwJywKCQkJCQkJJGNvbmZpZ1snc3NsX3VybCddIC4gJy9pbmRleC5waHAnLAoJCQkJCQkkY29uZmlnWydyb290X3VybCddLAoJCQkJCQkkY29uZmlnWydzc2xfdXJsJ10pLAoJCQkJCScnLCAkdXJsKSwnLz8nKTsKCQkJCQoJCQkJaWYoIWVtcHR5KCRfcGFyYW1zMSkgJiYgIWVtcHR5KCRfcGFyYW1zMikpCgkJCQl7CgkJCQkJaWYoJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddID09ICdub25lJykKCQkJCQl7CgkJCQkJCWlmKG1ldGhvZF9leGlzdHMoJGNvbnRlbnQsJ1NlY3VyZScpICYmICRjb250ZW50LT5TZWN1cmUoKSkKCQkJCQkJewoJCQkJCQkJJHVybCA9ICRjb25maWdbJ3NzbF91cmwnXSAuICcvaW5kZXgucGhwPycgLiBpbXBsb2RlKCcmJywkX3BhcmFtczIpIC4gJyYnIC4gJHVybDsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSR1cmwgPSAkY29uZmlnWydyb290X3VybCddIC4gJy9pbmRleC5waHA/JyAuIGltcGxvZGUoJyYnLCRfcGFyYW1zMikgLiAnJicgLiAkdXJsOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2UgaWYoJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddID09ICdpbnRlcm5hbCcpCgkJCQkJewoJCQkJCQlpZihtZXRob2RfZXhpc3RzKCRjb250ZW50LCdTZWN1cmUnKSAmJiAkY29udGVudC0+U2VjdXJlKCkpCgkJCQkJCXsKCQkJCQkJCSR1cmwgPSAkY29uZmlnWydzc2xfdXJsJ10gLiAnL2luZGV4LnBocC8nIC4gaW1wbG9kZSgnLycsJF9wYXJhbXMxKSAuICcvJyAuICR1cmw7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkdXJsID0gJGNvbmZpZ1sncm9vdF91cmwnXSAuICcvaW5kZXgucGhwLycgLiBpbXBsb2RlKCcvJywkX3BhcmFtczEpIC4gJy8nIC4gJHVybDsKCQkJCQkJfQoJCQkJCQlpZigkY29udGVudC0+RGVmYXVsdENvbnRlbnQoKSkKCQkJCQkJewoJCQkJCQkJJHVybCAuPSAkY29udGVudC0+QWxpYXMoKSAuICRjb25maWdbJ3BhZ2VfZXh0ZW5zaW9uJ107CgkJCQkJCX0KCQkJCQl9CgkJCQkJZWxzZSBpZigkY29uZmlnWyd1cmxfcmV3cml0aW5nJ10gPT0gJ21vZF9yZXdyaXRlJykKCQkJCQl7CgkJCQkJCWlmKG1ldGhvZF9leGlzdHMoJGNvbnRlbnQsJ1NlY3VyZScpICYmICRjb250ZW50LT5TZWN1cmUoKSkKCQkJCQkJewoJCQkJCQkJJHVybCA9ICRjb25maWdbJ3NzbF91cmwnXSAuICcvJyAuIGltcGxvZGUoJy8nLCRfcGFyYW1zMSkgLiAnLycgLiAkdXJsOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHVybCA9ICRjb25maWdbJ3Jvb3RfdXJsJ10gLiAnLycgLiBpbXBsb2RlKCcvJywkX3BhcmFtczEpIC4gJy8nIC4gJHVybDsKCQkJCQkJfQoJCQkJCQlpZigkY29udGVudC0+RGVmYXVsdENvbnRlbnQoKSkKCQkJCQkJewoJCQkJCQkJJHVybCAuPSAkY29udGVudC0+QWxpYXMoKSAuICRjb25maWdbJ3BhZ2VfZXh0ZW5zaW9uJ107CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQlyZXR1cm4gcmVkaXJlY3QoJHVybCk7CgkJCX0KCQl9Cgl9CgkKCQoJLyoqCgkqIEp1c3QgYSB3cmFwcGVyIHRvIGdldCBhIG1vZHVsZSBpbnN0YW5jZSBpbiB0aGUgdGVtcGxhdGUKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRtb2R1bGVfbmFtZSAtIHRoZSBleGFjdCBuYW1lIG9mIHRoZSBtb2R1bGUgKGNhc2Ugc2Vuc2l0aXZlKQoJICogQHBhcmFtIHN0cmluZyAkbW9kdWxlX3ZlcnNpb24gKG9wdGlvbmFsKSAtIHRoZSBtaW5pbXVtIHZlcnNpb24gb2YgdGhlIG1vZHVsZQoJICogQHJldHVybiBvYmplY3QKCSAqLwoJZnVuY3Rpb24gJmdldF9tb2R1bGUoJG1vZHVsZV9uYW1lLCRtb2R1bGVfdmVyc2lvbiA9ICcnKQoJewoJCXJldHVybiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCRtb2R1bGVfbmFtZSwgJG1vZHVsZV92ZXJzaW9uKTsKCX0KCQp9Cj8+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/jpicker.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/LmpQaWNrZXIgLkljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjI0cHg7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjI1cHh9LmpQaWNrZXIgLkljb24gc3Bhbi5Db2xvciwualBpY2tlciAuSWNvbiBzcGFuLkFscGhhe2JhY2tncm91bmQtcG9zaXRpb246MnB4IDJweDtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5qUGlja2VyIC5JY29uIHNwYW4uSW1hZ2V7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LmpQaWNrZXIuQ29udGFpbmVye2NvbG9yOiMwMDA7ei1pbmRleDoxMH10YWJsZS5qUGlja2Vye2JhY2tncm91bmQtY29sb3I6I2VmZWZlZjtib3JkZXI6MXB4IG91dHNldCAjNjY2O2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxMnB4IWltcG9ydGFudDttYXJnaW46MDtwYWRkaW5nOjVweDt3aWR0aDo1NDVweDt6LWluZGV4OjIwfS5qUGlja2VyIC5Nb3Zle2JhY2tncm91bmQtY29sb3I6I2RkZDtib3JkZXItY29sb3I6I2ZmZiAjNjY2ICM2NjYgI2ZmZjtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtjdXJzb3I6bW92ZTtoZWlnaHQ6MTJweDtwYWRkaW5nOjB9LmpQaWNrZXIgLlRpdGxle2ZvbnQtc2l6ZToxMXB4IWltcG9ydGFudDtmb250LXdlaWdodDpib2xkO21hcmdpbjotMnB4IDAgMCAwO3BhZGRpbmc6MTBweCAwIDAgMDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlfS5qUGlja2VyIGRpdi5NYXB7Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2ZmZjtib3JkZXItbGVmdDoycHggc29saWQgIzlhOWE5YTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkICNmZmY7Ym9yZGVyLXRvcDoycHggc29saWQgIzlhOWE5YTtjdXJzb3I6Y3Jvc3NoYWlyO2hlaWdodDoyNjBweDttYXJnaW46MCAxMHB4IDEwcHggMTBweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjI2MHB4fS5qUGlja2VyIGRpdltjbGFzcz0iTWFwIl17aGVpZ2h0OjI1NnB4O3dpZHRoOjI1NnB4fS5qUGlja2VyIGRpdi5CYXJ7Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2ZmZjtib3JkZXItbGVmdDoycHggc29saWQgIzlhOWE5YTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkICNmZmY7Ym9yZGVyLXRvcDoycHggc29saWQgIzlhOWE5YTtjdXJzb3I6bi1yZXNpemU7aGVpZ2h0OjI2MHB4O21hcmdpbjoxMnB4IDEwcHggMCA1cHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoyNHB4fS5qUGlja2VyIGRpdltjbGFzcz0iQmFyIl17aGVpZ2h0OjI1NnB4O3dpZHRoOjIwcHh9LmpQaWNrZXIgLk1hcCAuTWFwMSwualBpY2tlciAuTWFwIC5NYXAyLC5qUGlja2VyIC5NYXAgLk1hcDMsLmpQaWNrZXIgLkJhciAuTWFwMSwualBpY2tlciAuQmFyIC5NYXAyLC5qUGlja2VyIC5CYXIgLk1hcDMsLmpQaWNrZXIgLkJhciAuTWFwNCwualBpY2tlciAuQmFyIC5NYXA1LC5qUGlja2VyIC5CYXIgLk1hcDZ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7ZGlzcGxheTpibG9jaztsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmpQaWNrZXIgLk1hcCAuTWFwMSwualBpY2tlciAuTWFwIC5NYXAyLC5qUGlja2VyIC5NYXAgLk1hcDN7aGVpZ2h0OjI1OTZweDt3aWR0aDoyNTZweH0ualBpY2tlciAuQmFyIC5NYXAxLC5qUGlja2VyIC5CYXIgLk1hcDIsLmpQaWNrZXIgLkJhciAuTWFwMywualBpY2tlciAuQmFyIC5NYXA0e2hlaWdodDozODk2cHg7d2lkdGg6MjBweH0ualBpY2tlciAuQmFyIC5NYXA1LC5qUGlja2VyIC5CYXIgLk1hcDZ7aGVpZ2h0OjI1NnB4O3dpZHRoOjIwcHh9LmpQaWNrZXIgLk1hcCAuTWFwMSwualBpY2tlciAuTWFwIC5NYXAyLC5qUGlja2VyIC5CYXIgLk1hcDZ7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5qUGlja2VyIC5NYXAgLk1hcDMsLmpQaWNrZXIgLkJhciAuTWFwNXtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXR9LmpQaWNrZXIgLkJhciAuTWFwMSwualBpY2tlciAuQmFyIC5NYXAyLC5qUGlja2VyIC5CYXIgLk1hcDMsLmpQaWNrZXIgLkJhciAuTWFwNHtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ualBpY2tlciAuTWFwIC5BcnJvd3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlfS5qUGlja2VyIC5CYXIgLkFycm93e2Rpc3BsYXk6YmxvY2s7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlfS5qUGlja2VyIC5QcmV2aWV3e2ZvbnQtc2l6ZTo5cHg7cGFkZGluZzo1cHggMCAwIDA7dGV4dC1hbGlnbjpjZW50ZXJ9LmpQaWNrZXIgLlByZXZpZXcgZGl2e2JvcmRlcjoycHggaW5zZXQgI2VlZTtoZWlnaHQ6NjJweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MDt3aWR0aDo2MnB4fS5qUGlja2VyIC5QcmV2aWV3IGRpdiBzcGFue2JvcmRlcjoxcHggc29saWQgIzAwMDtkaXNwbGF5OmJsb2NrO2hlaWdodDozMHB4O21hcmdpbjowIGF1dG87cGFkZGluZzowO3dpZHRoOjYwcHh9LmpQaWNrZXIgLlByZXZpZXcgLkFjdGl2ZXtib3JkZXItYm90dG9tLXdpZHRoOjB9LmpQaWNrZXIgLlByZXZpZXcgLkN1cnJlbnR7Ym9yZGVyLXRvcC13aWR0aDowO2N1cnNvcjpwb2ludGVyfS5qUGlja2VyIGlucHV0e2ZvbnQtc2l6ZToxM3B4fS5qUGlja2VyIC5CdXR0b257dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzowIDRweDt3aWR0aDoxMTVweH0ualBpY2tlciAuQnV0dG9uIGlucHV0e3BhZGRpbmc6MnB4IDA7d2lkdGg6MTAwcHh9LmpQaWNrZXIgLkJ1dHRvbiAuT2t7bWFyZ2luOjEycHggMCA1cHggMH0ualBpY2tlciB0ZHttYXJnaW46MDtwYWRkaW5nOjB9LmpQaWNrZXIgdGQuUmFkaW97bWFyZ2luOjA7cGFkZGluZzowO3dpZHRoOjMxcHh9LmpQaWNrZXIgdGQuUmFkaW8gaW5wdXR7bWFyZ2luOjAgNXB4IDAgMDtwYWRkaW5nOjB9LmpQaWNrZXIgdGQuVGV4dHtmb250LXNpemU6MTJweCFpbXBvcnRhbnQ7aGVpZ2h0OjIycHg7bWFyZ2luOjA7cGFkZGluZzowO3RleHQtYWxpZ246bGVmdDt3aWR0aDo3MHB4fS5qUGlja2VyIHRyLkhleCB0ZC5UZXh0e3dpZHRoOjEwMHB4fS5qUGlja2VyIHRkLlRleHQgaW5wdXR7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggaW5zZXQgI2FhYTtoZWlnaHQ6MTlweDttYXJnaW46MCAwIDAgNXB4O3RleHQtYWxpZ246bGVmdDt3aWR0aDozMHB4fS5qUGlja2VyIHRkW2NsYXNzPSJUZXh0Il0gaW5wdXR7aGVpZ2h0OjE1cHh9LmpQaWNrZXIgdHIuSGV4IHRkLlRleHQgaW5wdXQuSGV4e3dpZHRoOjUwcHh9LmpQaWNrZXIgdHIuSGV4IHRkLlRleHQgaW5wdXQuQUhleHt3aWR0aDoyMHB4fS5qUGlja2VyIC5Hcmlke3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjExNHB4fS5qUGlja2VyIC5HcmlkIHNwYW4uUXVpY2tDb2xvcntib3JkZXI6MXB4IGluc2V0ICNhYWE7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE1cHg7bGluZS1oZWlnaHQ6MTVweDttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6MTlweH0ualBpY2tlciAuR3JpZCBzcGFuW2NsYXNzPSJRdWlja0NvbG9yIl17d2lkdGg6MTdweH3vu7/vu79AbWVkaWEgYWxseyNqUGlja2Vye21hcmdpbjowcHggOHB4O3RleHQtYWxpZ246bGVmdDt9I2pQaWNrZXIgdWx7Zm9udC1zaXplOjE1cHg7bWFyZ2luOjBweCAwcHggMHB4IDE1cHg7cGFkZGluZzowcHg7fSNqUGlja2VyIHVsIGxpe2xpc3Qtc3R5bGU6ZGlzYztwYWRkaW5nOjJweCAwcHg7fSNqUGlja2VyIHVsIGxpIHVse21hcmdpbi1ib3R0b206MTBweDt9I2pQaWNrZXIgdWwgbGkgdWwgbGl7bGlzdC1zdHlsZTpjaXJjbGU7fSNqUGlja2VyIHB7Zm9udC1zaXplOjEzcHg7cGFkZGluZzowcHggMTBweDt9I2pQaWNrZXIgaHJ7Y2xlYXI6Ym90aDt9I2pQaWNrZXIgaDIualBpY2tlcntmb250LXNpemU6MTZweDtwYWRkaW5nOjIwcHggMTBweDt9I2pQaWNrZXIgY29kZXtjb2xvcjojOGJkO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7fSNqUGlja2VyIHByZXtiYWNrZ3JvdW5kOiNlZWU7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2NvbG9yOiMwMDA7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTFweDttYXJnaW46MTBweCA1cHg7cGFkZGluZzogNXB4O30jalBpY2tlciBzcGFue2ZvbnQtc2l6ZToxM3B4O3RleHQtYWxpZ246Y2VudGVyO30jalBpY2tlciBhe2NvbG9yOiNmZjgwNTA7fSNqUGlja2VyIGlucHV0e2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6MnB4IDVweDt9I2pQaWNrZXIgaDJ7Zm9udC1zaXplOjE2cHg7bWFyZ2luOjEwcHggMHB4O319]]></data>
	</file>
	<file>
	  <filename>/css/style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNvcnRhYmxlX2hhbmRsZXI6aG92ZXIgewoJY3Vyc29yIDogbW92ZTsKfQoKLnNvcnRhYmxlX2hhbmRsZXIgewoJbWFyZ2luOjAgNXB4IDAgMDsKCXZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDsKfQoKLnNvcnRhYmxlX3dyYXBwZXIgaW5wdXQgewoJbWFyZ2luOjAgNXB4IDAgMDsKfQoKLnNvcnRhYmxlIHsKCWxpbmUtaGVpZ2h0OiAyMDAlOwoJcGFkZGluZzogMCAwIDAgNXB4Owp9CgpkaXYucGFnZW92ZXJmbG93LkFkdmFuY2VkQ29udGVudF9Db250ZW50QmxvY2sgewoJd2lkdGg6IDEwMCU7Cn0KCmxlZ2VuZC5BZHZhbmNlZENvbnRlbnRfQ29udGVudEJsb2NrLApsZWdlbmQuQWR2YW5jZWRDb250ZW50X0Jsb2NrR3JvdXAgewoJcGFkZGluZy1ib3R0b206IDA7CglwYWRkaW5nLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IDA7CgltYXJnaW4tdG9wOiAwOwoJZm9udC1zaXplOiAxMDAlOwp9CgoKZGl2I3BhZ2VfdGFicyBkaXYuU3ViVGFiV3JhcHBlciB7CgliYWNrZ3JvdW5kOnRyYW5zcGFyZW50OwoJYm9yZGVyOm5vbmU7CgljdXJzb3I6YXV0bzsKCWZsb2F0Om5vbmU7CgltYXJnaW46MHB4OwoJcGFkZGluZzowcHg7Cn0KCi8qIENhbGVuZGFyICovCi5jYWxlbmRhclRyaWdnZXI6aG92ZXIgewoJY3Vyc29yOiBwb2ludGVyOwp9CgpkaXYuY2FsZW5kYXIKewogIGZvbnQtc2l6ZTogc21hbGxlcjsKICBjb2xvcjogIzNlM2UzZTsKfQoKZGl2LmNhbGVuZGFyLnBvcHVwCnsKICBtYXJnaW4tbGVmdDogLTQwcHg7CiAgbWFyZ2luLXRvcDogLTEwMHB4OwogIHotaW5kZXg6IDk5OTk7Cn0KCmRpdi5jYWxlbmRhciB0YWJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZTVlNWU1OwogIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7CiAgYm9yZGVyLXNwYWNpbmc6IDFweDsKfQoKZGl2LmNhbGVuZGFyIHRoZWFkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgpkaXYuY2FsZW5kYXIgdGQsCmRpdi5jYWxlbmRhciB0aAp7CiAgcGFkZGluZzogMnB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKZGl2LmNhbGVuZGFyIHRkLnRpdGxlCnsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogI2U4YTgwMDsKfQoKZGl2LmNhbGVuZGFyIHRoCnsKICBmb250LXdlaWdodDogYm9sZDsKfQoKZGl2LmNhbGVuZGFyIHRyLmRheXMgdGQgewogIHdpZHRoOiAyZW07CiAgY29sb3I6ICMzZDYwYmE7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJvcmRlcjogMXB4IHNvbGlkICNlNWU1ZTU7Cn0KCmRpdi5jYWxlbmRhciB0ci5kYXlzIHRkOmhvdmVyLApkaXYuY2FsZW5kYXIgdGQuYnV0dG9uOmhvdmVyCnsKICBib3JkZXItY29sb3I6ICNlOGE4MDA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KZGl2LmNhbGVuZGFyIHRyLmRheXMgdGQ6aG92ZXIKewogYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKfQoKZGl2LmNhbGVuZGFyIHRyLmRheXMgdGQ6YWN0aXZlCmRpdi5jYWxlbmRhciB0ZC5idXR0b246YWN0aXZlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RlOwp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC5zZWxlY3RlZAp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U4YTgwMDsKICBib3JkZXItY29sb3I6ICNlOGE4MDAgIWltcG9ydGFudDsKICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC53ZWVrZW5kIHsKCWNvbG9yOiAjN2Y5ZGU4Owp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC50b2RheQp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgYm9yZGVyLWNvbG9yOiAjM2Q2MGJhOwp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC5vdGhlckRheQp7CiAgYmFja2dyb3VuZDogI2U1ZTVlNTsKICBjb2xvcjogI2ZmZjsKfQoKLyogalNsaWRlciAqLwouanNsaWRlciAuanNsaWRlci1iZyBpLAouanNsaWRlciAuanNsaWRlci1wb2ludGVyCnsgYmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvc2xpZGVyL2pzbGlkZXIucG5nJykgbm8tcmVwZWF0IDAgMDsgfQoKLmpzbGlkZXIgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDFlbTsgcG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDAuNmVtOyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IG1hcmdpbjoxMHB4IDAgMCAxMHB4IH0KLmpzbGlkZXIgdGFibGUgeyB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgYm9yZGVyOiAwOyB9Ci5qc2xpZGVyIHRkLCAuanNsaWRlciB0aCB7IHBhZGRpbmc6IDA7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHRleHQtYWxpZ246IGxlZnQ7IGJvcmRlcjogMDsgfQoKLmpzbGlkZXIgdGFibGUsCi5qc2xpZGVyIHRhYmxlIHRyLAouanNsaWRlciB0YWJsZSB0ciB0ZCB7IHdpZHRoOiAxMDAlOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB9CgouanNsaWRlciAuanNsaWRlci1iZyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQouanNsaWRlciAuanNsaWRlci1iZyBpIHsgaGVpZ2h0OiA1cHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgZm9udC1zaXplOiAwOyB0b3A6IDA7IH0KLmpzbGlkZXIgLmpzbGlkZXItYmcgLmwgeyB3aWR0aDogNTAlOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IGxlZnQ6IDA7IH0KLmpzbGlkZXIgLmpzbGlkZXItYmcgLnIgeyB3aWR0aDogNTAlOyBsZWZ0OiA1MCU7IGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDA7IH0KLmpzbGlkZXIgLmpzbGlkZXItYmcgLnYgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiA2MCU7IGxlZnQ6IDIwJTsgdG9wOiAwOyBoZWlnaHQ6IDVweDsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMjBweDsgfQoKLmpzbGlkZXIgLmpzbGlkZXItcG9pbnRlciB7IHdpZHRoOiAxM3B4OyBoZWlnaHQ6IDE1cHg7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTQwcHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAlOyB0b3A6IC00cHg7IG1hcmdpbi1sZWZ0OiAtNnB4OyBjdXJzb3I6IHBvaW50ZXI7IGN1cnNvcjogaGFuZDsgfQouanNsaWRlciAuanNsaWRlci1wb2ludGVyLWhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwcHggLTQwcHg7IH0KLmpzbGlkZXIgLmpzbGlkZXItcG9pbnRlci10byB7IGxlZnQ6IDgwJTsgfQoKLmpzbGlkZXIgLmpzbGlkZXItbGFiZWwgeyBmb250LXNpemU6IDlweDsgbGluZS1oZWlnaHQ6IDEycHg7IGNvbG9yOiBibGFjazsgb3BhY2l0eTogMC40OyB3aGl0ZS1zcGFjZTogbm93cmFwOyBwYWRkaW5nOiAwcHggMnB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTE4cHg7IGxlZnQ6IDBweDsgfQouanNsaWRlciAuanNsaWRlci1sYWJlbC10byB7IGxlZnQ6IGF1dG87IHJpZ2h0OiAwOyB9CgouanNsaWRlciAuanNsaWRlci12YWx1ZSB7IGZvbnQtc2l6ZTogOXB4OyB3aGl0ZS1zcGFjZTogbm93cmFwOyBwYWRkaW5nOiAxcHggMnB4IDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMTlweDsgbGVmdDogMjAlOyBiYWNrZ3JvdW5kOiB3aGl0ZTsgbGluZS1oZWlnaHQ6IDEycHg7IC1tb3otYm9yZGVyLXJhZGl1czogMnB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDsgLW8tYm9yZGVyLXJhZGl1czogMnB4OyBib3JkZXItcmFkaXVzOiAycHg7IH0KLmpzbGlkZXIgLmpzbGlkZXItdmFsdWUtdG8geyBsZWZ0OiA4MCU7IH0KCi5qc2xpZGVyIC5qc2xpZGVyLWxhYmVsIHNtYWxsLAouanNsaWRlciAuanNsaWRlci12YWx1ZSBzbWFsbCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiAtMC40ZW07IH0KCi5qc2xpZGVyIC5qc2xpZGVyLXNjYWxlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDlweDsgfQouanNsaWRlciAuanNsaWRlci1zY2FsZSBzcGFuIHsgcG9zaXRpb246IGFic29sdXRlOyBoZWlnaHQ6IDVweDsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjOTk5OyBmb250LXNpemU6IDA7IH0KLmpzbGlkZXIgLmpzbGlkZXItc2NhbGUgaW5zIHsgZm9udC1zaXplOiA5cHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogNXB4OyBjb2xvcjogIzk5OTsgfQoKLmpzbGlkZXItc2luZ2xlIC5qc2xpZGVyLXBvaW50ZXItdG8sCi5qc2xpZGVyLXNpbmdsZSAuanNsaWRlci12YWx1ZS10bywKLmpzbGlkZXItc2luZ2xlIC5qc2xpZGVyLWJnIC52LAouanNsaWRlci1saW1pdGxlc3MgLmpzbGlkZXItbGFiZWwKeyBkaXNwbGF5OiBub25lOyB9CgoKKiBodG1sIC5qc2xpZGVyIC5qc2xpZGVyLWJnIC5sLAoqIGh0bWwgLmpzbGlkZXIgLmpzbGlkZXItYmcgLnIsCiogaHRtbCAuanNsaWRlciAuanNsaWRlci1iZyAudiwKKiBodG1sIC5qc2xpZGVyIC5qc2xpZGVyLXBvaW50ZXIgeyBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyBvdmVyZmxvdzogaGlkZGVuOyB9CgoqIGh0bWwgLmpzbGlkZXIgLmpzbGlkZXItYmcgLmwgaSwKKiBodG1sIC5qc2xpZGVyIC5qc2xpZGVyLWJnIC5yIGksCiogaHRtbCAuanNsaWRlciAuanNsaWRlci1iZyAudiBpLAoqIGh0bWwgLmpzbGlkZXIgLmpzbGlkZXItcG9pbnRlciBpIHsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogNTAwcHg7IGhlaWdodDogNjBweDsgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihzcmM9Jy4vc3R5bGVzaGVldHMvanNsaWRlci5wbmcnLCBzaXppbmdNZXRob2Q9J2Nyb3AnKTsgfQogIAoqIGh0bWwgLmpzbGlkZXIgLmpzbGlkZXItYmcgLmwgaSB7IGxlZnQ6IDA7IHRvcDogMDsgfQoqIGh0bWwgLmpzbGlkZXIgLmpzbGlkZXItYmcgLnIgaSB7IHJpZ2h0OiAwOyB0b3A6IDA7IH0gIAoqIGh0bWwgLmpzbGlkZXIgLmpzbGlkZXItYmcgLnYgaSB7IGxlZnQ6IDA7IHRvcDogLTIwcHg7IH0KICAKKiBodG1sIC5qc2xpZGVyIC5qc2xpZGVyLXBvaW50ZXIgaSB7IGxlZnQ6IDA7IHRvcDogLTQwcHg7IH0KKiBodG1sIC5qc2xpZGVyIC5qc2xpZGVyLXBvaW50ZXItaG92ZXIgaSB7IGxlZnQ6IC0yMHB4OyB0b3A6IC00MHB4OyB9CgoKICAuanNsaWRlcl9yb3VuZCAuanNsaWRlci1iZyBpLAogIC5qc2xpZGVyX3JvdW5kIC5qc2xpZGVyLXBvaW50ZXIKICB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL3NsaWRlci9qc2xpZGVyLnJvdW5kLnBuZycpOyB9CiAgCiAgCiogaHRtbCAuanNsaWRlcl9yb3VuZCAuanNsaWRlci1iZyAubCBpLAoqIGh0bWwgLmpzbGlkZXJfcm91bmQgLmpzbGlkZXItYmcgLnIgaSwKKiBodG1sIC5qc2xpZGVyX3JvdW5kIC5qc2xpZGVyLWJnIC52IGksCiogaHRtbCAuanNsaWRlcl9yb3VuZCAuanNsaWRlci1wb2ludGVyIGkgeyBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYUltYWdlTG9hZGVyKHNyYz0nLi9zdHlsZXNoZWV0cy9qc2xpZGVyLnJvdW5kLnBuZycsIHNpemluZ01ldGhvZD0nY3JvcCcpOyB9CgoKICAuanNsaWRlcl9yb3VuZCAuanNsaWRlci1wb2ludGVyIHsgd2lkdGg6IDE3cHg7IGhlaWdodDogMTdweDsgdG9wOiAtNnB4OyBtYXJnaW4tbGVmdDogLThweDsgfQo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/changelog.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGJyIC8+CjxwPjxzdHJvbmc+TW9kdWxlIHJlbGVhc2VzPC9zdHJvbmc+Li4uPC9wPgo8dWw+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuNS4xIChTZXB0IDIwMTEpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gU2VjdXJpdHkgQnVnZml4PC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC42LjUgKE1heSAyMDExKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIFNlY3VyaXR5IEJ1Z2ZpeDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjI2NV0gQ2FsbC10aW1lIHBhc3MtYnktcmVmZXJlbmNlIHdhcm5pbmdzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gbWlzc2VkIHBhcmFtIG5vX2NvbGxhcHNlPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGhpZGUgbWVudSBlbnRyeSBpZiBubyBhY2Nlc3MgdG8gdmlldyB0aGUgcGFnZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGluaGVyaXRhbmNlIG9mIHJlZGlyZWN0IHBhcmFtcywgZXhwaXJlIGRhdGU8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBkZWZhdWx0IHNldHRpbmdzIGZvciBleHBpcmUgZGF0ZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGVzIHNsaWRlci9jb2xvcnBpY2tlciAodGhhbmtzIHRvIG5pY21hcmUpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgYSB3YXJuaW5nIHdoZW4gdW5pbnN0YWxsaW5nIHRoZSBtb2R1bGU8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuNCAoTWFyIDIwMTEpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gWyM2MjQxXSAoSXNzdWUgd2l0aCBwYXJhbSBkZWZhdWx0KTwvcD48L2xpPgoJCQkJCTxsaT48cD5mYXRhbCBlcnJvciBpbiBBZHZhbmNlZENvbnRlbnQubW9kdWxlLnBocDwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNi4zIChNYXIgMjAxMSk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBbIzU3MzRdIFBhcmFtZXRlciBibG9ja19ncm91cCBpcyBub3Qga25vd24gYnkgbW9kdWxlIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjAxNF0gaGVhZGVyIHByb2JsZW0gd2l0aCBtdWx0aS1pbnB1dDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjAzOF0gY29udGVudF9pbWFnZSByZXNwZWN0aXZlbHkgYmxvY2tfdHlwZT0iaW1hZ2UiIGRvZXNuJ3Qgd29yazwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjAzOV0gdGVtcGxhdGUgY2FuJ3QgYmUgc3dpdGNoZWQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwNjFdIGlzc3VlIHdpdGggdGhlIHJlZGlyZWN0IGZvciBmZXUgbm9uIG1hdGNoPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gWyM2MDk1XSBQYXJhbWV0ZXIgc29ydGFibGUgaXMgbm90IGtub3duIDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyBpdGVtICM1NjUxIChyZWRpcmVjdCBpZiBmcm9udGVuZCB1c2VyIGhhcyBubyBhY2NlcyB0byB0aGF0IHBhZ2UgZGlkIG5vdCB3b3JrIHByb3Blcmx5KTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHJlcXVpcmVkPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gY29sbGFwc2U8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBub19jb2xsYXBzZTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHRoaXMgbW9kdWxlIG5vdyBvbmx5IHdvcmtzIHdpdGggQ01TbXMgMS42LjkgdXAgdG8gMS44LjI8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuMiAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4IChzaG93ZWQgdGFicyBvZiBwcmV2aW91cyB0ZW1wbGF0ZSB3aGVuIHRlbXBsYXRlIHdhcyBjaGFuZ2VkKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNi4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSBidWdmaXhlcyBmb3IgQ01TbXMgMS45PC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGUgbXVsdGlfaW5wdXQ8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYgKE9jdCAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfZ3JvdXA8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBSZW1vdmVkIGZpbGUgcGlja2VyIChhbmQgYXNzb2NpYXRlZCBibG9ja190eXBlcyBpbWFnZS9maWxlKSAtIHVzZSBHQkZpbGVQaWNrZXIgaW5zdGVhZC48L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjUgKFNlcHQgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyOTIgKG1lbW9yeSBpc3N1ZSk8L3A+PC9saT4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyNTQgKGRpc2FibGUgd3lzaXd5ZyBub3Qgd29ya2luZyk8L3A+PC9saT4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTAgKHVybG9ubHkgbm90IHdvcmtpbmcpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzExIChpbWFnZSBwYXRocyBub3Qgc3RvcmVkICdjb3JyZWN0bHknKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjYxIChBZGQgc29ydCB0byBpbWFnZSB0eXBlIC0gbm90aWNlIHRoZSBjaGFuZ2Ugb2YgcGFyYW0gZmlsdGVyKTwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBwYXJhbXMgZXhjbHVkZV9wcmVmaXgsIGluY2x1ZGVfcHJlZml4LCBleGNsdWRlX3N1Zml4LCBpbmNsdWRlX3N1Zml4PC9wPjwvbGk+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI1MyAoVGV4dCBpbnB1dCB0byBkZWZpbmUgYWRkIHBhcmFtcyB0byByZWRpcmVjdCBmdW5jdGlvbik8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQwIChEZWZhdWx0IHZhbHVlcyBvZiBBZHZhbmNlZENvbnRlbnQgcGFnZSBvcHRpb25zKTwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDEgKHB1dCBGZXVBY2Nlc3MgaW4gQmxvY2t0YWIpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+TWlzYzo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgYXJlIHNob3duIGluIHNlcGFyYXRlIHRhYjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIEFkZGVkIG5ldyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGUgQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgdGFiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbSBmaWx0ZXIgKHVzZSBuZXcgcGFyYW1zIGluc3RlYWQpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcGF0aCB0byBmaWxlcyBhcmUgc3RvcmVkIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHBhcmFtIGRpciBvZiBibG9jayB0eXBlIGZpbGUvaW1hZ2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyIG9ubHkgKHRoZXJlIGlzIG5vIGltYWdlIHVwbG9hZHMgZGlyIHVzZWQgYW55bW9yZSk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjQuMSAoQXVndXN0IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gIzUxNTE6IGZpeGVkIHN0eWxlc2hlZXQgaXNzdWUgd2l0aCBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyBvZiBjb250ZW50IGJsb2NrcyBpbiBJRS9TYWZhcmkuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUxNjI6IFBIUCB3YXJuaW5ncyBpZiBiYWNrZW5kIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAiTWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzIiBvcGVuIGFuIGFkdmFuY2VkIGNvbnRlbnQgcGFnZSBhbmQgbXVsdGlwbGUgY29udGVudCBibG9ja3Mgb2Ygc2FtZSBuYW1lIHdlcmUgdXNlZCBpbiB0ZW1wbGF0ZS48L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZXh0cmEgZmllbGRzIGNvdWxkIG5vdCBiZSB1cGRhdGVkLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBmZXUgYWNjZXNzIGRpZCBub3Qgd29yay48L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImRlbGV0ZSIgdG8gbGV0IHVzZXJzIGRlbGV0ZSBmaWxlcyBldmVuIGlmIG5vIHBlcm1pc3Npb24gIk1vZGlmeSBGaWxlcyI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiY3JlYXRlX2RpcnMiIHRvIGxldCB1c2VycyBjcmVhdGVfZGlycyBldmVuIGlmIG5vIHBlcm1pc3Npb24gIk1vZGlmeSBGaWxlcyI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBuZXcgYmxvY2t0eXBlICJub3RlIiB0byBjcmVhdGUgc29tZSBzaW5nbGUgbm90ZXMgZm9yIHlvdXIgZWRpdG9yczwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgZGVwZW5kZW5jeSBvZiBGaWxlTWFuYWdlcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGJsb2NrIG9mIHR5cGUgZmlsZSBvciBpbWFnZSBzdG9yZXMgcmVsYXRpdmUgdXJsIG5vdzwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGJsb2NrIHR5cGUgaW1hZ2Ugc2hvd3MgdGh1bWJuYWlsIGluIGJhY2tlbmQgcHJldmlldyBpbnN0ZWFkIG9mIGZ1bGwgaW1hZ2U8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjQgKEp1bHkgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkltcG9ydGFudCBub3RpY2U6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGNoYW5nZWQgcGFyYW0gInR5cGUiIHRvICJibG9ja190eXBlIiBzaW5jZSBpdCBpbnRlcmZlcmVzIHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gIzUxMDE6IHBhZ2VfdGFiICJvcHRpb25zIiB3YXMgc2hvd24gdG8gdXNlcnMgd2l0aCBubyBwZXJtaXNzaW9uIHRvIGVkaXQgcGFnZSBvcHRpb25zIGlmIGEgY29udGVudCBibG9jayB3YXMgYXNzaWduZWQgdG8gdGhhdCB0YWIuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUwOTc6IGxpbmsgdG8gbWlzc2luZyBjc3MgcmVtb3ZlZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbWUtdHlwZSBpc3N1ZSAoYWRkZWQgcHJlZmVyZW5jZSB0byB0b2dnbGUgbWltZS10eXBlIHVzYWdlIG9uL29mZik8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBwYXRoIGlzc3VlIHdoZXJlIHRodW1ibmFpbHMgd2VyZSBub3Qgc2hvd248L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBjb21wYXRpYmlsaXR5IHdpdGggQ01TbXMgMS44PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gb3RoZXIgbWlub3IgYnVnZml4ZXM8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgTUxFIHN1cHBvcnQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAic2hvd19jbG9jayIgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHRpbWUgZHJvcGRvd24gb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gYmFja2VuZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJkYXRlX2Zvcm1hdCIgdG8gZm9ybWF0IHRpbWVzdGFtcCBvZiBibG9ja3R5cGVzICJkYXRlIiBpbiBmcm9udGVuZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJkZXNjcmlwdGlvbiI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBidWxrIGZ1bmN0aW9uIHRvIHNldCBhbGwgcGFnZXMgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjQgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSAjNTA0NTogV2hlbiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IC0+IEFkdmFuY2VkIENvbnRlbnQgbG90cyBvZiBQSFAgZXJyb3JzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUwNTY6IHBhZ2VfdGFicyBub3Qgd29ya2luZyBmb3IgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICJNYW5hZ2UgQWxsIENvbnRlbnQiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUwNzM6IGluY29ycmVjdCBkaXNwbGF5IG9mIGZpbGVzIHdoZW4gb3BlbmluZyBmaWxlcGlja2VyPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgbWlub3IgYnVnIHdoZXJlIHRoZSBvcHRpb24gImFsbG93X25vbmUiIG9mIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZSB3YXMgbm90IHNob3duIHdoZW4gdGVtcGxhdGUgaGFzIGJlZW4gZWRpdGVkPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIGZpbGVtYW5hZ2VtZW50IGFuZCB1cGxvYWQgZnVuY3Rpb25zIHRvIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIGJyZWFkY3VtYnMgdG8gZmlsZXBpY2tlcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkbWlucyBtYXkgYnJvd3NlIHRoZSBlbnRpcmUgZGlyIHRyZWUgaW4gZmlsZXBpY2tlciBmaWxlIGJyb3dzZXIgcmVnYXJkbGVzcyBvZiB0ZW1wbGF0ZSBwYXJhbXM8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBtaW1lIHR5cGUgY2hlY2tpbmcgdG8gZ2V0IGZpbGUgdHlwZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHJhd3VybGVuY29kZSBpbiBzcmMgYXR0cmlicyB0byBkaXNwbGF5IGltYWdlcyB3aXRoIHdlaXJkIGZpbGVuYW1lcy48L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5taXNjZWxsYW5lb3VzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSByZW1vdmVkIE9PUCBzdHVmZiAocHJpdmF0ZS9wdWJsaWMvcHJvdGVjdGVkKSB0byBnYWluIG1vcmUgY29tcGF0aWJpbGl0eSB3aXRoIFBIUDQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIGFqYXggZnVuY3Rpb25zIHRvIHJldHVybiB4bWwgdmFsdWVzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCB1c2FnZSBvZiBJbWFnZU1hbmFnZXIgb25jZSBhbmQgZm9yIGFsbC4gKGNhdXNlZCBvbmx5IHRyb3VibGUpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjMgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPgoJPHVsPgoJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCTx1bD4KCQkJCTxsaT48cD4tIGFsaWFzIHdhcyBub3QgYWx3YXlzIGNvbnZlcnRlZCBwcm9wZXJseTwvcD48L2xpPgoJCQkJPGxpPjxwPi0gdW5zdWJtaXR0ZWQgY29udGVudCBnb3QgbG9zdCBpZiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPgoJCQk8L3VsPgoJCTwvbGk+CgkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJPHVsPgoJCQkJPGxpPjxwPi0gYWRkZWQgc3RhcnQvZW5kIGRhdGU8L3A+PC9saT4KCQkJCTxsaT48cD4tIHJlbW92ZWQgdGltZXBpY2tlcjsgcmVwbGFjZWQgYnkgYSBzaW1wbGUgZHJvcGRvd248L3A+PC9saT4KCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9pbWFnZX08L3A+PC9saT4KCQkJPC91bD4KCQk8L2xpPgoJPC91bD4KCTxsaT48cD48c3Ryb25nPjAuMy4yIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBjaGFuZ2luZyBiYWNrIHRvIGRlZmF1bHQgY29udGVudCB0eXBlIG9yIGNoYW5naW5nIHRlbXBsYXRlIGNhdXNlZCBmYXRhbCBlcnJvcnM8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZyB3aGVuIHNhdmluZyBhIHBhZ2U8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwcmV2aWV3IHRhYjwvcD48L2xpPgoJCQk8bGk+PHA+LSByZS1hZGRlZCBleHBhbmQvY29sbGFwc2UgYnV0dG9uIHRvIHRvZ2dsZSBjb250ZW50IGJsb2NrcyBpbiBiYWNrZW5kPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtcyBlZGl0b3JfZ3JvdXBzL2VkaXRvcl91c2VycyB0byBzcGVjaWZ5IGNlcnRhaW4gdXNlcnMvZ3JvdXBzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCBjZXJ0YWluIGJsb2NrczwvcD48L2xpPgoJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtcyBzZWxlY3RlZC9jaGVja2VkOyB1c2UgcGFyYW0gZGVmYXVsdCBpbnN0ZWFkPC9wPjwvbGk+CgkJCTxsaT48cD4tIGJsb2NrIGlkcyB3aWxsIGJlIGNvbnZlcnRlZCBmcm9tIGJsb2NrIG5hbWUgdXNpbmcgY29yZSBmdW5jdGlvbiBtdW5nZV9zdHJpbmdfdG9fdXJsICh0byByZW1vdmUgc3BlY2lhbCBjaGFycywgd2hpdGVzcGFjZXMsIHVtbGF1dHMgZXRjLik8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIG9mIGJsb2NrdHlwZSBkcm9wZG93bi9zZWxlY3RfbXVsdGlwbGUgd2hlcmUgZmlyc3QgaXRlbSBoYWQgYW4gZW1wdHkgbGFiZWwgaWYgb25seSB0aGUgcGFyYW0gInZhbHVlcyIgaXMgdXNlZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBzb21lIHRlbXBsYXRlIHZhcnMgb2YgdGhlIGZyb250ZW5kIHRvIGJlIGFsc28gYWNjZXNzaWJsZSBpbiBiYWNrZW5kIChlLmcuOiBcJHBhZ2VfYWxpYXMpPC9wPjwvbGk+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+CjxiciAvPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/copyright.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIG1vZHVsZSB1c2VzIGV4dGVybmFsIGxpYmFyaWVzIGFuZCBjb2RlIHNuaXBwZXRzIHRoYXQgYXJlIGxpc3RlZCBiZWxvdzoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYxLjUuMQpodHRwOi8vanF1ZXJ5LmNvbS8KCkNvcHlyaWdodCAyMDEwLCBKb2huIFJlc2lnCkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgpodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCgpJbmNsdWRlcyBTaXp6bGUuanMKaHR0cDovL3NpenpsZWpzLmNvbS8KQ29weXJpZ2h0IDIwMTAsIFRoZSBEb2pvIEZvdW5kYXRpb24KUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgoKRGF0ZTogU2F0IEZlYiAxMyAyMjozMzo0OCAyMDEwIC0wNTAwCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKalF1ZXJ5IFVJIDEuOC4xMQoKQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KCmh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpqUXVlcnkgVUkgV2lkZ2V0IDEuOC43CgpDb3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQphbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgoKaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9XaWRnZXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpqUXVlcnkgVUkgTW91c2UgMS44LjcKCkNvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpCmFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuCgpodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL01vdXNlICAKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpqUXVlcnkgVUkgU29ydGFibGUgMS44LjExCgpDb3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQphbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgoKaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9Tb3J0YWJsZXMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpUaGUgbW9kdWxlIHVzZXMgZXh0ZXJuYWwgbGliYXJpZXMgYW5kIGNvZGUgc25pcHBldHMgdGhhdCBhcmUgbGlzdGVkIGJlbG93OgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCkNhbGVuZGFyVmlldyBmb3IgalF1ZXJ5IGJ5IEFsZXggR2Fub3YgKHNsaWdodGx5IG1vZGlmaWVkIGJ5IE5hTikKCkJhc2VkIG9uIENhbGVuZGFyVmlldyBmb3IgUHJvdG90eXBlIGh0dHA6Ly9jYWxlbmRhcnZpZXcub3JnLyB3aGljaCBpcyBiYXNlZApvbiBEeW5hcmNoIERIVE1MIENhbGVuZGFyIGh0dHA6Ly93d3cuZHluYXJjaC5jb20vcHJvamVjdHMvY2FsZW5kYXIvb2xkLy4KCkNhbGVuZGFyVmlldyBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbApQdWJsaWMgTGljZW5zZSAoTEdQTCkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpEYXRlLmZvcm1hdCgpCnN0cmluZyBmb3JtYXQgKCBzdHJpbmcgZm9ybWF0ICkKRm9ybWF0dGluZyBydWxlcyBhY2NvcmRpbmcgdG8gaHR0cDovL3BocC5uZXQvc3RyZnRpbWUKCkNvcHlyaWdodCAoQykgMjAwNiAgRGFvIEdvdHR3YWxkCgpDb250YWN0IGluZm9ybWF0aW9uOgpEYW8gR290dHdhbGQgIDxkYW8gYXQgZGVzaWduLW5vaXIuZGU+Cgp2ZXJzaW9uICAwLjcKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpqUXVlcnkgRm9ybSBQbHVnaW4KdmVyc2lvbjogMi40MyAoMTItTUFSLTIwMTApCgpFeGFtcGxlcyBhbmQgZG9jdW1lbnRhdGlvbiBhdDogaHR0cDovL21hbHN1cC5jb20vanF1ZXJ5L2Zvcm0vCkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzOgogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKalBpY2tlciAxLjEuNgpqUXVlcnkgUGx1Z2luIGZvciBQaG90b3Nob3Agc3R5bGUgY29sb3IgcGlja2VyCkNvcHlyaWdodCAoYykgMjAxMCBDaHJpc3RvcGhlciBULiBUaWxsbWFuCkRpZ2l0YWwgTWFnaWMgUHJvZHVjdGlvbnMsIEluYy4gKGh0dHA6Ly93d3cuZGlnaXRhbG1hZ2ljcHJvLmNvbS8pCk1JVCBzdHlsZSBsaWNlbnNlLCBGUkVFIHRvIHVzZSwgYWx0ZXIsIGNvcHksIHNlbGwsIGFuZCBlc3BlY2lhbGx5IEVOSEFOQ0UKUGFpbnN0YWtpbmdseSBwb3J0ZWQgZnJvbSBKb2huIER5ZXJzJyBleGNlbGxlbnQgd29yayBvbiBoaXMgb3duIGNvbG9yIHBpY2tlciBiYXNlZCBvbiB0aGUgUHJvdG90eXBlIGZyYW1ld29yay4KSm9obiBEeWVycycgd2Vic2l0ZTogKGh0dHA6Ly9qb2huZHllci5uYW1lKQpDb2xvciBQaWNrZXIgcGFnZTogICAoaHR0cDovL2pvaG5keWVyLm5hbWUvcG9zdC8yMDA3LzA5L1Bob3RvU2hvcC1saWtlLUphdmFTY3JpcHQtQ29sb3ItUGlja2VyLmFzcHgpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKRGVwZW5kIENsYXNzIHYwLjFiIDogYXR0YWNoIGNsYXNzIGJhc2VkIG9uIGZpcnN0IGNsYXNzIGluIGxpc3Qgb2YgY3VycmVudCBlbGVtZW50CkZpbGU6IGpxdWVyeS5kZXBlbmRDbGFzcy5qcwpDb3B5cmlnaHQgKGMpIDIwMDkgRWdvciBIbWVseW9mZiwgaG1lbHlvZmZAZ21haWwuY29tCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKalF1ZXJ5IFNsaWRlciBQbHVnaW4KRWdvciBLaG1lbGV2IC0gaHR0cDovL2Jsb2cuZWdvcmtobWVsZXYuY29tLyAtIGhtZWx5b2ZmQGdtYWlsLmNvbQo=]]></data>
	</file>
	<file>
	  <filename>/doc/help_de_DE.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGJyIC8+CjxoMz5XYXMgbWFjaHQgZGllc2VzIE1vZHVsPzwvaDM+CjxwPkRpZXNlcyBNb2R1bCBiaWV0ZXQgZWluZW4gd2VpdGVyZW4gSW5oYWx0c3R5cGVuICJFcndlaXRlcnRlciBJbmhhbHQiLjxiciAvPgpNaXQgZGllc2VtIEluaGFsdHN0eXBlbiBrYW5uIGRpZSBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBmbGV4aWJlbCBnZXN0YWx0ZXQgd2VyZGVuLCBpbmRlbSBtYW4gaW0gU2VpdGVuLVRlbXBsYXRlIGRlbiBlaW56ZWxuZW4gSW5oYWx0c2JsJm91bWw7Y2tlbiB3ZWl0ZXJlIFBhcmFtZXRlciBoaW56dWYmdXVtbDtndC48YnIgLz4KSW5oYWx0c2JsJm91bWw7Y2tlIGsmb3VtbDtubmVuIGluIEZvcm0gdmVyc2NoaWVkZW5lciBJbnB1dC1GZWxkZXIgd2llIERyb3Bkb3ducywgTWVocmZhY2hhdXN3YWhsZmVsZGVyIG9kZXIgQ2hlY2tib3hlbiBkYXJnZXN0ZWxsdCB3ZXJkZW4uPGJyIC8+CkRpZSBJbnB1dC1GZWxkZXIgayZvdW1sO25uZW4gd2VpdGVyaGluIGluIGVpZ2VuZW4gVGFicyBhbmdlemVpZ3Qgb2RlciBpbiBHcnVwcGVuIHp1c2FtbWVuZ2VmYXNzdCB3ZXJkZW4uPGJyIC8+CkF1w59lcmRlbSBoYXQgbWFuIGRpZSBNJm91bWw7Z2xpY2hrZWl0LCBTZWl0ZW4gb2RlciBlaW56ZWxuZSBCbCZvdW1sO2NrZSBudXIgZiZ1dW1sO3IgYmVzdGltbXRlIEdydXBwZW4gZGVzIEZyb250RW5kVXNlcnMgTW9kdWxzIGZyZWl6dWdlYmVuLjxiciAvPgpXZWl0ZXJoaW4gayZvdW1sO25uZW4gU2VpdGVuIGVpbiBTdGFydC0gdW5kIGVpbiBFbmRkYXR1bSBlcmhhbHRlbiwgd29taXQgU2VpdGVuIGF1dG9tYXRpc2NoIGFrdGl2L2luYWt0aXYgd2VyZGVuLjxiciAvPgpEaWUgZXJ3ZWl0ZXJ0ZW4gRWluc3RlbGx1bmdlbiBrJm91bWw7bm5lbiB2b24gJnV1bWw7YmVyZ2VvcmRuZXRlbiBTZWl0ZW4gJnV1bWw7YmVybm9tbWVuIHdlcmRlbi48L3A+CjxwPkRpZSBQYXJhbWV0ZXIgayZvdW1sO25uZW4gYXXDn2VyZGVtIG1pdCBIaWxmZSB2b24gZWluZmFjaGVtIFNtYXJ0eS1TeW50YXggZHluYW1pc2NoZSBXZXJ0ZSBlbnRoYWx0ZW4uPGJyIC8+CkQuaC4gbWFuIGthbm4gei5CLiBkYXMgRXJnZWJuaXMgZWluZXMgYmVudXR6ZXJkZWZpbmllcnRlbiBUYWdzLCBlaW5lcyBQbHVnaW5zLCBlaW5lcyBNb2R1bHMgb2RlciBlaW5mYWNoIG51ciBlaW5lcyBHbG9iYWxlbiBJbmhhbHRzYmxvY2tlcyBhbHMgV2VydCBmJnV1bWw7ciBlaW5lbiBQYXJhbWV0ZXIgZWluc2V0emVuIGxhc3Nlbi48L3A+CjxwPjxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IEluIG1hbmNoZW4gRiZhdW1sO2xsZW4gZW1wZmllbHQgZXMgc2ljaCwgYW5zdGVsbGUgZGVzIG5vcm1hbGVuIHtjb250ZW50fSBUYWdzIGRlbiB7QWR2YW5jZWRDb250ZW50fSBUYWcgenUgYmVudXR6ZW4uIChHcm/Dny0gdW5kIEtsZWluc2NocmVpYnVuZyBiZWFjaHRlbik8YnIgLz4KRGllIEZlaGxlcm1lbGR1bmcgIlBhcmFtZXRlciBbWF0gaXMgbm90IGtub3duIGJ5IE1vZHVsZSBbTW9kdWxuYW1lXSIga2FubiBkYW1pdCB6LkIuIHVtZ2FuZ2VuIHdlcmRlbi48L2VtPjwvcD4KPGgzPldpZSB3aXJkIGVzIHZlcndlbmRldD88L2gzPgo8cD5OYWNoIGRlciBJbnN0YWxsYXRpb24gd2lyZCBkZXIgQWRtaW5pc3RyYXRpb24gZWluIHdlaXRlcmVyIE1lbiZ1dW1sO3B1bmt0ICJFcndlaXRlcnVuZ2VuLSZndDtFcndlaXRlcnRlciBJbmhhbHQiIGhpbnp1Z2VmJnV1bWw7Z3QuPGJyIC8+CkhpZXIgayZvdW1sO25uZW4gdmVyc2NoaWVkZW5lIEVpbnN0ZWxsdW5nZW4gdm9yZ2Vub21tZW4gd2VyZGVuLjxiciAvPgpCZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBzdGVodCBudW4gZWluIHdlaXRlcmVyIEluaGFsdHN0eXAgIkVyd2VpdGVydGVyIEluaGFsdCIgenVyIEF1c3dhaGwsIGRlciBkaWUgRnVua3Rpb25lbiBkZXMgTW9kdWxzIGJlcmVpdHN0ZWxsdC48L3A+CjxwPjxzdHJvbmcgc3R5bGU9ImNvbG9yOnJlZCI+V0FSTlVORyEgPC9zdHJvbmc+PGJyIC8+Cldlbm4gU2llIGRhcyBNb2R1bCBkZWluc3RhbGxpZXJlbiwgb2huZSBhbGxlIFNlaXRlbiB2b20gVHlwICdFcndlaXRlcnRlciBJbmhhbHQnIHdpZWRlciB6dXImdXVtbDtjayBhdWYgZGVuIFN0YW5kYXJkLUluaGFsdHN0eXBlbiB6dSBzZXR6ZW4sIGZ1bmt0aW9uaWVydCBJaHJlIENNU21zIEluc3RhbGxhdGlvbiBuaWNodCBtZWhyITxiciAvPgpTdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgYWxsZSBTZWl0ZW4gdm9tIFR5cCAnRXJ3ZWl0ZXJ0ZXIgSW5oYWx0JyB2b3IgZGVyIERlaW5zdGFsbGF0aW9uIHdpZWRlciBnZcOkbmRlcnQgb2RlciBnZWwmb3VtbDtzY2h0IHdlcmRlbiEgKG51dHplbiBTaWUgZGllIE1vZHVsZWluc3RlbGx1bmcgJ0FrdGlvbiBiZWltIERlaW5zdGFsbGllcmVuJyB1bWQgZGllcyBhdXRvbWF0aXNjaCB2b3J6dW5laG1lbi4pPC9wPgo8cD5NaXQgSGlsZmUgZm9sZ2VuZGVyIFBhcmFtZXRlciBiZWltIEVyc3RlbGxlbiB2b24gSW5oYWx0c2JsJm91bWw7Y2tlbiBpbSBTZWl0ZW4tVGVtcGxhdGUgayZvdW1sO25uZW4gZGllc2UgRnVua3Rpb25lbiB2ZXJ3ZW5kZXQgd2VyZGVuOjwvcD4KPGgzPldlbGNoZSBQYXJhbWV0ZXIgc2luZCB2ZXJmJnV1bWw7Z2Jhcj88L2gzPgo8cD4oYWxsZSBQYXJhbWV0ZXIgc2luZCBvcHRpb25hbCk8L3A+CjxwPjxzdHJvbmc+U3RhbmRhcmQgUGFyYW1hdGVyOjwvc3Ryb25nPjwvcD4KPHA+PGVtPjxhIGhyZWY9Imxpc3R0YWdzLnBocD9hY3Rpb249c2hvd3BsdWdpbmhlbHAmcGx1Z2luPWNvbnRlbnQiPihzaWVoZSBhdWNoIFRhZy1IaWxmZSBkZXMge2NvbnRlbnR9LVRhZ3MpPC9hPjwvZW0+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2s8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJRXJtJm91bWw7Z2xpY2h0IGRhcyBIaW56dWYmdXVtbDtnZW4gbWVocmVyZXIgSW5oYWx0c2JsJm91bWw7Y2tlLiBCZWltIEJlYXJiZWl0ZW4gZWluZXIgU2VpdGUgd2lyZCBmJnV1bWw7ciBqZWRlbiBCbG9jayBlaW4gZWlnZW5lcyBJbnB1dC1GZWxkIGFuZ2V6ZWlndC48YnIgLz4KCQkJCUJzcC46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O1p3ZWl0ZXIgSW5oYWx0c2Jsb2NrJnF1b3Q7fTwvY29kZT48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IERlciBOYW1lIGRlcyBJbmhhbHRzYmxvY2tzIGRhcmYgbnVyIEJ1Y2hzdGFiZW4sIFphaGxlbiB1bmQgVW50ZXJzdHJpY2hlIGVudGhhbHRlbi4gKGtlaW5lIExlZXItIG9kZXIgU29uZGVyemVpY2hlbiwgVW1sYXV0ZSBldGMuKS4gQW5kZXJlbmZhbGxzIHdpcmQgZGVyIEJsb2NrbmFtZSAmYXVtbDtobmxpY2ggZGVtIFNlaXRlbmFsaWFzIGVudHByZWNoZW5kIGtvbnZlcnRpZXJ0LjwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPldlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgd2lyZCBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4ga2VpbiBXWVNJV1lHIEVkaXRvciBmJnV1bWw7ciBkaWVzZW4gQmxvY2sgdmVyd2VuZGV0LjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+b25lbGluZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPldlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgd2lyZCBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gbnVyIGVpbiBlaW5mYWNoZXMgZWluemVpbGlnZXMgVGV4dC1JbnB1dC1GZWxkIGFuZ2V6ZWlndC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPlN0YWJkYXJkaW5oYWx0IGJlaW0gRXJzdGVsbGVuIG5ldWVyIFNlaXRlbi48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmxhYmVsPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EaWUgRWluZ2FiZWF1ZmZvcmRlcnVuZyBmJnV1bWw7ciBkZW4gSW5oYWx0c2Jsb2NrIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbi4gV2VubiBkaWVzZXIgUGFyYW1ldGVyIGZlaGx0LCB3aXJkIGRlciB1bmtvbnZlcnRpZXJ0ZSBXZXJ0IGRlcyBQYXJhbWV0ZXJzIGJsb2NrIHZlcndlbmRldC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFzc2lnbjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZWlzdCBkZW4gSW5oYWx0IGRpZXNlcyBCbG9ja3MgYXVmIGRlciBJbnRlcm5ldHNlaXRlIGVpbmVyIFNtYXJ0eSBWYXJpYWJsZW4genUuPGJyIC8+CgkJCQlCc3AuOiA8Y29kZT57Y29udGVudCBhc3NpZ249InBhZ2Vjb250ZW50In08YnIgLz4KCQkJCXt0YWJsZV9vZl9jb250ZW50cyB0aGVwYWdlY29udGVudD0mcXVvdDskcGFnZWNvbnRlbnQmcXVvdDt9PC9jb2RlPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPkVyd2VpdGVydGUgUGFyYW1ldGVyOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3R5cGU8L3R0PiAodGV4dCxjaGVja2JveCxkcm9wZG93bixzZWxlY3RfbXVsdGlwbGUsZGF0ZSxtdWx0aV9pbnB1dCxzbGlkZXIsY29sb3JwaWNrZXIpIAoJCTx1bD4KCQkJPGxpPkdpYnQgYW4sIGluIHdlbGNoZXIgRm9ybSBkZXIgSW5oYWx0c2Jsb2NrIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5wYWdlX3RhYjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGluIGJlc3RpbW10ZW4gVGFicyBhbmdlemVpZ3Qgd2VyZGVuLjxiciAvPgoJCQkJTSZvdW1sO2dsaWNoZSBXZXJ0ZSBzaW5kIHouQi4gJnF1b3Q7bWFpbiZxdW90OyAoID0gVGFiICZxdW90O0hhdXB0bWVuJnV1bWw7JnF1b3Q7KSwgJnF1b3Q7b3B0aW9ucyZxdW90OyAoID0gVGFiICZxdW90O09wdGlvbmVuJnF1b3Q7KSwgb2RlciBqZWRlciBhbmRlcmUgYmVsaWViaWdlIFdlcnQgKGVyemV1Z3QgYXV0b21hdGlzY2ggZWluZW4gd2VpdGVyZW4gVGFiKS48YnIgLz4KCQkJCTxlbT5NYW4ga2FubiBzb21pdCB6LkIuIGVpbmUgQ2hlY2tib3ggaW0gVGFiICJPcHRpb25lbiIgaGluenVmJnV1bWw7Z2VuIG9kZXIgZWluZW4gZWlnZW5lbiBUYWIgZXJzdGVsbGVuLjwvZW0+LgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3RhYjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+TWl0IGRpZXNlbSBQYXJhbWV0ZXIgayZvdW1sO25uZW4gZGllIEluaGFsdHNibCZvdW1sO2NrZSBub2NobWFscyBpbiB3ZWl0ZXJlICJVbnRlcnRhYnMiIGlubmVyaGFsYiBkZXIgIkhhdXB0dGFicyIgdW50ZXJ0ZWlsdCB3ZXJkZW4uPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja19ncm91cDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrYW5uIG1hbiBtZWhyZXJlIEluaGFsdHNibCZvdW1sO2NrZSBpbiBlaW5lbSBGaWVsZHNldCBncnVwcGllcmVuLjxiciAvPgoJCQkJRGllIEdydXBwZW4gayZvdW1sO25uZW4gYXVjaCBhdWYgbWVocmVyZSBUYWJzIHZlcnRlaWx0IHdlcmRlbi4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hY3RpdmU8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgaXN0IGRlciBCbG9jayBkZWFrdGl2aWVydC48YnIgLz4KCQkJCURlYWt0aXZpZXJ0ZSBJbmhhbHRzYmwmb3VtbDtja2Ugd2VyZGVuIHdlZGVyIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiwgbm9jaCBhdWYgZGVyIEludGVybmV0c2VpdGUgYW5nZXplaWd0LgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl9ncm91cHM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJRGllc2VyIFBhcmFtZXRlciBpc3QgJmF1bWw7aG5saWNoIGRlbiAiWnVzJmF1bWw7dHpsaWNoZW4gQmVhcmJlaXRlcm4iIGVpbmVyIFNlaXRlLiBFciBnaWx0IGFsbGVyZGluZ3MgbnVyIGYmdXVtbDtyIGVpbnplbG5lIEluaGFsdHNibCZvdW1sO2NrZS48YnIgLz4KCQkJCU1pdCBkaWVzZW0gUGFyYW1ldGVyIGsmb3VtbDtubmVuIEluaGFsdHNibCZvdW1sO2NrZSBudXIgdm9uIGJlc3RpbW10ZW4gQmVudXR6ZWdydXBwZW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlYXJiZWl0ZXQgd2VyZGVuLjxiciAvPgoJCQkJKE5hbWUgZGVyIEJlbnV0emVyZ3J1cHBlIGVpbnRyYWdlbjsgbWVocmVyZSBHcnVwcGVuIG1pdCBLb21tYSBnZXRyZW5udCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfdXNlcnM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJRGllc2VyIFBhcmFtZXRlciBpc3QgJmF1bWw7aG5saWNoIGRlbiAiWnVzJmF1bWw7dHpsaWNoZW4gQmVhcmJlaXRlcm4iIGVpbmVyIFNlaXRlLiBFciBnaWx0IGFsbGVyZGluZ3MgbnVyIGYmdXVtbDtyIGVpbnplbG5lIEluaGFsdHNibCZvdW1sO2NrZS48YnIgLz4KCQkJCU1pdCBkaWVzZW0gUGFyYW1ldGVyIGsmb3VtbDtubmVuIEluaGFsdHNibCZvdW1sO2NrZSBudXIgdm9uIGJlc3RpbW10ZW4gQmVudXR6ZXJuIGRlciBBZG1pbmlzdHJhdGlvbiBiZWFyYmVpdGV0IHdlcmRlbi48YnIgLz4KCQkJCShOYW1lIGRlcyBCZW51dHplcnMgZWludHJhZ2VuOyBtZWhyZXJlIEJlbnV0emVyIG1pdCBLb21tYSBnZXRyZW5udCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IHdlbm4gZGllIFBhcmFtZXRlciA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gdW5kIDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gbmljaHQgdmVyd2VuZGV0IHdlcmRlbiwgayZvdW1sO25uZW4gZGllIEJsJm91bWw7Y2tlIHZvbiBqZWRlbSBCZW51dHplciBiZWFyYmVpdGV0IHdlcmRlbi48YnIgLz4KCURpZSBXZXJ0ZSBoYWJlbiBrZWluZW4gRWluZmx1c3MsIHdlbm4gZGVyIEJlbnV0emVyIGRlciBHcnVwcGUgIkFkbWluIiBhbmdlaCZvdW1sO3J0LjxiciAvPgoJVW0gZWluZW0gQmVudXR6ZXIgenUgZXJsYXViZW4gYWxsZSBJbmhhbHRzYmwmb3VtbDtja2UgdW5hYmgmYXVtbDtuZ2lnIHZvbiBkZW4gYmVpZGVuIFBhcmFtZXRlcm4genUgYmVhcmJlaXRlbiwgbXVzcyBkZXIgQmVudXR6ZXIgZWluZXIgR3J1cHBlIGFuZ2VoJm91bWw7cmVuLCBkaWUgZGllIEJlcmVjaHRpZ3VuZyAiTWFuYWdlIGFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzIiBoYXQuPC9lbT48YnIgLz48YnIgLz4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4KCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgbGVndCBmZXN0LCB3ZWxjaGUgQmVudXR6ZXJncnVwcGVuIGRlcyBGcm9udEVuZFVzZXJzIE1vZHVscyBkaWVzZW4gQmxvY2sgYXVmIGRlciBJbnRlcm5ldHNlaXRlIHNlaGVuIGQmdXVtbDtyZmVuLjxiciAvPgoJCQkJKElEIGRlciBCZW51dHplcmdydXBwZSBhbmdlYmVuOyBtZWhyZXJlIElEcyBtaXQgS29tbWEgZ2V0cmVubnQpPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjdGlvbjwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJRGllc2VyIFBhcmFtZXRlciBnaWJ0IGFuLCBvYiBhbnN0ZWxsZSBkZXMgSW5oYWx0c2Jsb2NrcyBkYXMgTG9naW4tRm9ybXVsYXIgZGVzIEZyb250RW5kVXNlcnMgTW9kdWxzIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbCwgd2VubiBkaWVzZXIgQmxvY2sgbnVyIGYmdXVtbDtyIGJlc3RpbW10ZSBCZW51dHplcmdydXBwZW4gZnJlaWdlZ2ViZW4gdW5kIGRlciBCZXN1Y2hlciBuaWNodCBlaW5nZWxvZ2d0IGlzdC48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IERhcyBGb3JtdWxhciB3aXJkIG51ciBlaW4gZWluemlnZXMgTWFsIGFuZ2V6ZWlndC48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFsbG93X25vbmU8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT5HaWJ0IGFuLCBvYiBkZXIgQmxvY2sgbGVlciBzZWluIGRhcmYgb2RlciBuaWNodC48YnIgLz4KCQkJV2VubiBkaWVzZXIgV2VydCBhdWYgZmFsc2UgZ2VzZXR6dCB3aXJkIHVuZCBkZXIgSW5oYWx0IGRlcyBCbG9ja3MgaXN0IGxlZXIsIHdpcmQgZGVyIFdlcnQgZGVzIFBhcmFtZXRlcnMgZGVmYXVsdCB2ZXJ3ZW5kZXQuPGJyIC8+CgkJCVd1cmRlIGRlciBCbG9jayBtaXQgZGVtIFBsdWdpbiB7Y29udGVudF9pbWFnZX0gZXJzdGVsbHQsIGZlaGx0IGRpZSBPcHRpb24gIk5pY2h0cyIgaW0gQmlsZC1Ecm9wZG93bi48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNtYXJ0eTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJU2NoYWx0ZXQgZGllIFZlcmFyYmVpdHVuZyBkZXIgUGFyYW1ldGVyd2VydGUgbWl0IEhpbGZlIHZvbiBTbWFydHkgZWluL2F1cy48YnIgLz4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIHRydWUgZ2VzZXR6dCB3aXJkLCB3aXJkIGplZGVyIFBhcmFtZXRlciBtaXQgSGlsZmUgZGVyIFNtYXJ0eSBUZW1wbGF0ZSBFbmdpbmUgdmVyYXJiZWl0ZXQuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOiA8L3N0cm9uZz4gRGllIFdlcnRlIG0mdXVtbDtzc2VuIGFscyBTbWFydHktU3ludGF4IGdla2VubnplaWNobmV0IHdlcmRlbi4gSGllciBrJm91bWw7bm5lbiBhYmVyIG5pY2h0IFN0YW5kYXJkIFNtYXJ0eS1CZWdyZW56ZXIgKHsuLi59KSB2ZXJ3ZW5kZXQgd2VyZGVuLCBkYSBlcyB6dSBGZWhsZXJuIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZSBmJnV1bWw7aHJ0LjxiciAvPgoJCQkJRGFoZXIgd2VyZGVuIHN0YXR0ZGVzc2VuIGRpZSBaZWljaGVuIDo6OiBhbHMgQmVncmVuemVyIHZlcndlbmRldC48YnIgLz48L2VtPgoJCQkJQnNwLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7S2F0ZWdvcmllbiZxdW90OyBsYWJlbD0mcXVvdDtXJmF1bWw7aGxlbiBTaWUgZWluZSBLYXRlZ29yaWUmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDs6OjpnbG9iYWxfY29udGVudCBuYW1lPSYjMDM5O2NhdGVnb3J5bGlzdCYjMDM5Ozo6OiZxdW90OyBzbWFydHk9JnF1b3Q7dHJ1ZSZxdW90O308L2NvZGU+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVzY3JpcHRpb248L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT5FaW5lIGRldGFpbGllcnRlcmUgQmVzY2hyZWlidW5nIGRlcyBJbmhhbHRzYmxvY2tzLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+Y29sbGFwc2U8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCUdpYnQgYW4sIG9iIGVpbiBCbG9jayBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gZWluLSAodHJ1ZSkgb2RlciBhdXNnZWtsYXBwdCAoZmFsc2UpIHNlaW4gc29sbC48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IGlzdCBpbW1lciBmYWxzZSwgd2VubiBkZXIgUGFyYW1ldGVyIG5vX2NvbGxhcHNlPXRydWUgdmVyd2VuZGV0IHdpcmQuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ub19jb2xsYXBzZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJV2VubiBkaWVzZXIgV2VydCBhdWYgZmFsc2UgZ2VzZXR6dCBpc3QsIGthbm4gZGVyIEJsb2NrZSBuaWNodCB6dXNhbW1lbmdla2xhcHB0IHdlcmRlbi48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IHdlbm4gZGVyIFdlcnQgYXVmIHRydWUgZ2VzZXR6dCBpc3QsIGlzdCBkZXIgUGFyYW1ldGVyIGNvbGxhcHNlIGF1dG9tYXRpc2NoIGltbWVyIGZhbHNlLjwvZW0+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cmVxdWlyZWQ8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCUdpYnQgYW4sIG9iIGVpbiBCbG9jayBlaW4gUGZsaWNodGZlbGQgaXN0ICh0cnVlKSBvZGVyIG5pY2h0IChmYWxzZSkuPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+UGFyYW1ldGVyIGYmdXVtbDtyIENoZWNrYm94ZW46PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUFrdGl2aWVydC9EZWFrdGl2aWVydCBkaWUgQ2hlY2tib3ggYWxzIFN0YW5kYXJkd2VydC48YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+ICZxdW90OzEmcXVvdDsgPSBha3RpdmllcnQ7ICZxdW90OzAmcXVvdDsgZGVha3RpdmllcnQ8YnIgLz48L2VtPgoJCQkJQnNwLjogPGNvZGU+e2NvbnRlbnQgYmxvY2tfdHlwZT0mcXVvdDtjaGVja2JveCZxdW90OyBkZWZhdWx0PTF9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPlBhcmFtZXRlciBmJnV1bWw7ciBDb2xvcnBpY2tlcjo8L3N0cm9uZz4ga2VpbmUgd2VpdGVyZW4gUGFyYW1ldGVyPC9wPgo8cD48c3Ryb25nPlBhcmFtZXRlciBmJnV1bWw7ciBTbGlkZXI6PC9zdHJvbmc+IChzaWVoZSBhdWNoIERva3VtZW50YXRpb24gZGVzIHZlcndlbmRldGVuIGpRdWVyeSBTbGlkZXIgUGx1Z2lucyk8L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mcm9tPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlTdGFydHdlcnQKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnRvPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlFbmR3ZXJ0CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlaw6RobHNjaHJpdHRlIGluIGRlbmVuIGRpZSBXZXJ0ZSBnZcOkbmRlcnQgd2VyZGVuCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5yb3VuZDwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJU3RlbGxlbiBuYWNoIGRlbSBLb21tYQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aGV0ZXJvZ2VuZWl0eTwvdHQ+IChzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPgoJCQkJVG9EbwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGltZW5zaW9uPC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlFaW5oZWl0IGhpbnRlciBkZW4gV2VydGVuLgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGltaXRzPC90dD4gKHRydWUvZmFsc2UpIAoJCTx1bD4KCQkJPGxpPgoJCQkJVG9EbwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2NhbGU8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVRvRG8KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNraW48L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUF1c3NlaGVuIGRlcyBzbGlkZXJzCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5jYWxjdWxhdGU8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVpbmUgSmF2YXNjcmlwdC1GdW5rdGlvbiB6dXIgQmVyZWNobnVuZyBkZXIgYW5nZXplaWd0ZW4gV2VydGUKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm9uc3RhdGVjaGFuZ2U8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVpbmUgSmF2YXNjcmlwdC1GdW5rdGlvbiBkaWUgYXVzZ2Vmw7xocnQgd2VyZGVuIHNvbGwsIHNvYmFsZCBkZXIgV2VydCBnZcOkbmRlcnQgd2lyZAoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+Y2FsbGJhY2s8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVpbmUgSmF2YXNjcmlwdC1GdW5rdGlvbiBkaWUgYXVzZ2Vmw7xocnQgd2VyZGVuIHNvbGwsIG5hY2hkZW0gZGVyIFdlcnQgZ2XDpG5kZXJ0IHd1cmRlCgkJCTwvbGk+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+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBWZXJ3ZW5kZW4gU2llIG51ciBkaWUgPHN0cm9uZz5XZXJ0ZTwvc3Ryb25nPiBkZXIgRWludHLDpGdlIGFscyBTdGFuZGFyZHdlcnQsIG5pY2h0IGRpZSBCZXplaWNobnVuZ2VuIGRlciBFaW50ciZhdW1sO2dlLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVsaW1pdGVyPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EYXMgVHJlbm56ZWljaGVuIG1pdCBkZW0gZGllIEJlemVpY2hudW5nZW4sIFdlcnRlIHVuZCBTdGFuZGFyZHdlcnRlIHZvbmVpbmFuZGVyIGdldHJlbm50IHdlcmRlbi4gKFN0YW5kYXJkIGlzdCB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNpemU8L3R0PiAoaW50ZWdlcikKCQk8dWw+CgkJCTxsaT5EaWUgSCZvdW1sO2hlIGRlcyBJbnB1dGZlbGRlcywgd2VubiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gdmVyd2VuZGV0IHdpcmQuPGVtPihTdGFuZGFyZCBpc3QgZGllIEFuemFobCBkZXIgRWludHImYXVtbDtnZSk8L2VtPjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGU8L3R0PiAodHJ1ZS9mYWxzZSkgLSBudXIgYmVpIHNlbGVjdF9tdWx0aXBsZQoJCTx1bD4KCQkJPGxpPgoJCQkJV2lyZCBkaWVzZXIgV2VydCBhdWYgdHJ1ZSBnZXNldHp0LCB3ZXJkZW4gZGllIEVpbnRyJmF1bWw7Z2UgbmljaHQgYWxzIE1laHJmYWNoYXVzd2FobGZlbGQgYW5nZXplaWd0LCBzb25kZXJuIGFscyBlaW5lIExpc3RlIG1pdCBDaGVja2JveGVuLCBkaWUgbmV1IHNvcnRpZXJ0IHdlcmRlbiBrYW5uLjxiciAvPkplZGUgWmVpbGUgZWludGgmYXVtbDtsdCBkaWUgQmV6ZWljaG51bmcgZGVzIEVpbnRyYWdzIHVuZCBlaW5lIENoZWNrYm94IG1pdCBkZW0gV2VydCBkZXMgRWludHJhZ3MuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBFcyB3aXJkIG51ciBkaWUgUmVpaGVuZm9sZ2UgZGVyIDxzdHJvbmc+YXVzZ2V3JmF1bWw7aGx0ZW48L3N0cm9uZz4gRWludHImYXVtbDtnZSBnZXNwZWljaGVydC4gQXVzZ2V3JmF1bWw7aGx0ZSBFaW50ciZhdW1sO2dlIHdlcmRlbiBpbW1lciBhbHMgZXJzdGVzIGFuZ2V6ZWlndC48YnIgLz4KCQkJCU5pY2h0IGF1c2dldyZhdW1sO2hsdGUgRWludHImYXVtbDtnZSBzdGVoZW4gZGFydW50ZXIgaW4gZGVyIFJlaWhlbmZvbGdlLCB3aWUgc2llIGltIFRlbXBsYXRlIGRlZmluaWVydCB3dXJkZW4uPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgRGF0dW1zYmwmb3VtbDtja2U6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RlcF9ob3VyczwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJWiZhdW1sO2hsc2Nocml0dGUgZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAxKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X2hvdXI8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUJlZ2lubiBkZXIgU3R1bmRlbiBpbSBVaHJ6ZWl0LURyb3Bkb3duLiAoU3RhbmRhcmQgaXN0IDApCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVuZGUgZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAxMiBvZGVyIDIzIC0gYWJoJmF1bWw7bmdpZyB2b20gUGFyYW1ldGVyIHNob3cyNGgpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgd2VyZGVuIGRpZSBTdHVuZGVuIGluIDEyaCBBbnplaWdlIG1pdCBBTS9QTSBhbmdlemVpZ3QuIChTdGFuZGFyZCBpcyB0cnVlKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJWiZhdW1sO2hsc2Nocml0dGUgZGVyIE1pbnV0ZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzIDEwKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJQmVnaW5uIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgMCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlFbmRlIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgNTkpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgaXN0LCB3aXJkIGtlaW4gVWhyemVpdC1Ecm9wZG93biBhbmdlemVpZ3QuIChTdGFuZGFyZCBpc3QgdHJ1ZSk8YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IEJlaSBmYWxzZSB3aXJkIGFscyBVaHJ6ZWl0IDAwOjAwIFVociBnZXNwZWljaGVydDwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGF0ZV9mb3JtYXQ8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCURhcyBzdHJmdGltZSBEYXR1bXNmb3JtYXQgZiZ1dW1sO3IgZGllIEFuemVpZ2UgYXVmIGRlciBJbnRlcm5ldHNlaXRlLgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgoKPHA+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+CjxiciAvPgo8cD5CaXR0ZSBtZWxkZW4gU2llIEZlaGxlciBvZGVyIFZlcmJlc3NlcnVuZ3N2b3JzY2hsJmF1bWw7Z2UgYXVmIGRlciBQcm9qZWt0LUhvbWVwYWdlLjwvcD4KPGgzPkNvcHlyaWdodCB1bmQgTGl6ZW56PC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLTIwMTEsIEdlb3JnIEJ1c2NoIChOYU4pIDxhIGhyZWY9Im1haWx0bzpnZW9yZy5idXNjaEBnbXgubmV0Ij4mbHQ7Z2VvcmcuYnVzY2hAZ214Lm5ldCZndDs8L2E+LiBBbGxlIFJlY2h0ZSB2b3JiZWhhbHRlbi48L3A+CjxwPkRpZXNlcyBNb2R1bCB3dXJkZSB1bnRlciBkZXIgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+IHZlciZvdW1sO2ZmZW50bGljaHQuIFNpZSBtJnV1bWw7c3NlbiBkaWVzZXIgTGl6ZW56IHp1c3RpbW1lbiwgYmV2b3IgU2llIGRhcyBNb2R1bCB2ZXJ3ZW5kZW4uPC9wPgo8cD4KCUxhdXQgZGVuIE51dHp1bmdzYmVzdGltbXVuZ2VuIGRlciBHUEwgd2lyZCBkaWVzZSBTb2Z0d2FyZSBzbyB2ZXImb3VtbDtmZmVudGxpY2h0IHdpZSBzaWUgaXN0LjxiciAvPgoJU2llIGVyaGVidCBrZWluZXJsZWkgQW5zcHJ1Y2ggYXVmIGVpbndhbmRmcmVpZSBGdW5rdGlvbi48YnIgLz4KCURhcyBNb2R1bCB3dXJkZSBlcnN0ZWxsdCwgaW4gZGVyIEhvZmZudW5nIG4mdXVtbDt0emxpY2ggenUgc2Vpbi48YnIgLz4KCUVzIGJlc3RlaHQga2VpbmVybGVpIEdhcmFudGllIGF1ZiBlaW5lbiBlaW53YW5kZnJlaWVuIE51dHplbi48YnIgLz4KCUJpdHRlIGxlc2VuIFNpZSBkaWUgTnV0enVuZ3NiZWRpbmd1bmdlbiBmJnV1bWw7ciBhdXNmJnV1bWw7aHJsaWNoZSBJbmZvcm1hdGlvbmVuLgo8L3A+CjxiciAvPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/help_en_US.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGJyIC8+CjxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgo8cD5UaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGNvbnRlbnR0eXBlIHdoZW4gYWRkaW5nL2VkaXRpbmcgcGFnZXMuPGJyIC8+CldpdGggdGhpcyBjb250ZW50dHlwZSB1c2VycyBjYW4gY3JlYXRlIGN1c3RvbSBpbnB1dCBjb250cm9scyBpbiBiYWNrZW5kIHRvIHRoZSBhZGQvZWRpdCBwYWdlIGFyZWEgYnkganVzdCB1c2luZyBhZGRpdGlvbmFsIHBhcmFtcyBpbiB0aGUgcGFnZSB0ZW1wbGF0ZSB3aGVuIGNhbGxpbmcgdGhlIGNvbnRlbnQuPGJyIC8+ClRoYXQgbWVhbnMgeW91IGNhbiBkaXNwbGF5IHRoZSBjb250ZW50IGJsb2NrcyBhcyBkcm9wZG93bnMsIG11bHRpcGxlIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcyBldGMuPGJyIC8+CllvdSBjYW4gYWxzbyBkaXNwbGF5IHRoZSBjb250ZW50IGJsb2NrcyBpbiBkaWZmZXJlbnQgdGFicyBvciBncm91cCB0aGVtIGluIGZpZWxkc2V0cy48L3A+CjxwPkl0IGFsc28gYWRkcyBhYmlsaXR5IHRvIGdyYW50IGFjY2VzcyBvZiBwYWdlcyBvciBzaW5nbGUgYmxvY2tzIG9ubHkgdG8gY2VydGFpbiB1c2VycyBvZiB0aGUgCkZyb250RW5kVXNlcnMgbW9kdWxlIGFuZCBoaWRlIHRoZSBjb250ZW50LCByZXBsYWNlIGl0IGJ5IHRoZSBsb2dpbiBmb3JtIG9mIHRoZSAKRnJvbnRFbmRVc2VycyBtb2R1bGUgb3IgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSBzaG93aW5nIHRoZSBsb2dpbiBmb3JtIG9yIApqdXN0IHJlZGlyZWN0IHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZSBpZiB0aGUgZnJvbnRlbmQgdXNlciBpcyBub3QgbG9nZ2VkIGluIG9yIGRvZXMgbm90IGJlbG9uZyB0byBhIGNlcnRhaW4gZ3JvdXAuPC9wPgpBZGRpdGlvbmFsbHkgcGFnZXMgY2FuIGhhdmUgYSBzdGFydCBhbmQgZW5kIGRhdGUgdG8gYWN0aXZhdGUvZGVhY3RpdmF0ZSBwYWdlcyBhdXRvbWF0aWNhbGx5LjwvcD4KPHA+VGhlIGFkdmFuY2VkIGNvbnRlbnQgcHJvcGVydGllcyBjYW4gYmUgaW5oZXJpdGVkIGZyb20gcGFyZW50IHBhZ2VzLjwvcD4KPHA+WW91IGNhbiBldmVuIHVzZSBzbWFydHkgbG9naWMgaW4gcGFyYW1ldGVyIHZhbHVlcy4gVGhhdCBtZWFucyB5b3UgY2FuIHVzZSB0aGUgCnJlc3VsdCBvZiBhIHBsdWdpbiwgYW4gdWR0IG9yIGV2ZW4gYSBtb2R1bGUgb3IganVzdCB0aGUgY29udGVudCBvZiBhIGdsb2JhbCAKY29udGVudCBibG9jayBhcyBwYXJhbWV0ZXIgdmFsdWUgdG8gY3JlYXRlIGR5bmFtaWMgdmFsdWVzLjwvcD4KPHA+PGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBJbiBzb21lIGNhc2VzIGl0IGlzIHJlY29tZW5kZWQgdG8gdXNlIHRoZSB0aGUge0FkdmFuY2VkQ29udGVudH0gdGFnIGluIHRlbXBsYXRlIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQge2NvbnRlbnR9IHRhZy4gKGNhc2Ugc2Vuc2l0aXZlKTxiciAvPgplLmcuIHRoZSBhbm5veWluZyBtZXNzYWdlICJQYXJhbWV0ZXIgW1hdIGlzIG5vdCBrbm93biBieSBNb2R1bGUgW01vZHVsZW5hbWVdIiBjYW4gYmUgYXZvaWRlZCB3aXRoIGl0LiAob25seSBhZmZlY3RzIHRoZSBkZWZhdWx0IGNvbnRlbnQgYmxvY2sgYXQgdGhlIG1vbWVudCk8L2VtPjwvcD4KPGgzPkhvdyBpcyBpdCB1c2VkPzwvaDM+CjxwPkFmdGVyIGluc3RhbGxhdGlvbiB0aGUgbW9kdWxlIHNldHRpbmdzIGNhbiBiZSBmb3VuZCBpbiAiRXh0ZW5zaW9ucy0+QWR2YW5jZWRDb250ZW50Ii48L2JyID4KQWRkaXRpb25hbGx5IHlvdSB3aWxsIGhhdmUgYSBuZXcgY29udGVudCB0eXBlICJBZHZhbmNlZENvbnRlbnQiIGF2YWlsYWJsZSB3aGVuIGFkZGluZy9lZGl0aW5nIGEgcGFnZS48L3A+CjxwPjxzdHJvbmcgc3R5bGU9ImNvbG9yOnJlZCI+V0FSTklORyEgPC9zdHJvbmc+PGJyIC8+CklmIHlvdSB1bmluc3RhbGwgdGhlIG1vZHVsZSB3aXRob3V0IHJldmVydGluZyBhbGwgcGFnZXMgb2YgdHlwZSBBZHZhbmNlZENvbnRlbnQgYmFjayB0byB0aGUgZGVmYXVsdCBjb250ZW50dHlwZSB5b3VyIENNU21zIHdvbid0IHdvcmsgYW55bW9yZSE8YnIgLz4KTWFrZSBzdXJlIHRvIHNldCBhbGwgcGFnZXMgb2YgdHlwZSBBZHZhbmNlZENvbnRlbnQgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgb3IgZGVsZXRlIHRoZW0gYmVmb3JlIHVuaW5zdGFsbGluZyEgKHVzZSB0aGUgbW9kdWxlIHByZWZlcmVuY2UgJ3VuaW5zdGFsbCBhY3Rpb24nIHRvIGRvIHRoaXMgYXV0b21hdGljYWxseSk8L3A+CjxwPlRvIHVzZSB0aGUgbW9kdWxlcyBmdW5jdGlvbnMgdXNlIHRoaXMgY29udGVudCB0eXBlIGFuZCBvcHRpb25hbGx5IGFkZCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgdG8geW91ciBjb250ZW50IHRhZyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuLi48L3A+CjxoMz5XaGF0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZT88L2gzPgo8cD4oYWxsIHBhcmFtcyBhcmUgb3B0aW9uYWwpPC9wPgo8cD48c3Ryb25nPkRlZmF1bHQgcGFyYW1zOjwvc3Ryb25nPjwvcD4KPHA+PGVtPjxhIGhyZWY9Imxpc3R0YWdzLnBocD9hY3Rpb249c2hvd3BsdWdpbmhlbHAmcGx1Z2luPWNvbnRlbnQiPihzZWUgYWxzbyB0YWcgaGVscCBvZiB0aGUgZGVmYXVsdCB7Y29udGVudH0gdGFnKTwvYT48L2VtPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCUFsbG93cyB5b3UgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIGNvbnRlbnQgYmxvY2sgcGVyIHBhZ2UuIElmIG11bHRpcGxlIGNvbnRlbnQgdGFncyBhcmUgcHV0IG9uIGEgdGVtcGxhdGUsIHRoYXQgbnVtYmVyIG9mIGVkaXQgYm94ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaWYgdGhlIHBhZ2UgaXMgZWRpdGVkLjxiciAvPgoJCQkJZS5nLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9IlNlY29uZCBDb250ZW50IGJsb2NrIn08L2NvZGU+PGJyIC8+CgkJCQlOb3csIGlmIHlvdSBlZGl0IGEgcGFnZSB0aGVyZSB3aWxsIGJhIGEgdGV4dGFyZWEgY2FsbGVkICJTZWNvbmQgQ29udGVudCBibG9jayIuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChubyB3aGl0ZXNwYWNlcywgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBldGMuKS4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvcGVyIG5hbWUgKHNpbWlsYXIgdG8gdGhlIHBhZ2UgYWxpYXMpLjwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPklmIHNldCB0byBmYWxzZSwgdGhlbiBhIHd5c2l3eWcgd2lsbCBuZXZlciBiZSB1c2VkIHdoaWxlIGVkaXRpbmcgdGhpcyBibG9jay4gSWYgdHJ1ZSwgdGhlbiBpdCBhY3RzIGFzIG5vcm1hbC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm9uZWxpbmU8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT5JZiBzZXQgdG8gdHJ1ZSwgdGhlbiBvbmx5IG9uZSBlZGl0IGxpbmUgd2lsbCBiZSBzaG93biB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIGZhbHNlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLiBPbmx5IHdvcmtzIHdoZW4gYmxvY2sgcGFyYW1ldGVyIGlzIHVzZWQuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EZWZhdWx0IGNvbnRlbnQgd2hlbiBjcmVhdGluZyBhIG5ldyBwYWdlLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPlByb21wdCBmb3IgdGhpcyBjb250ZW50IGJsb2NrLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGFueSBleHByZXNzaW9uLiBJZiBibGFuaywgdGhlIHVuY29udmVydGVkIGJsb2NrIG5hbWUgaXMgdXNlZC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFzc2lnbjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlBc3NpZ25zIHRoZSBjb250ZW50IHRvIGEgc21hcnR5IHBhcmFtZXRlciwgd2hpY2ggeW91IGNhbiB0aGVuIHVzZSBpbiBvdGhlciBhcmVhcyBvZiB0aGUgcGFnZSwgb3IgdXNlIHRvIHRlc3Qgd2hldGhlciBjb250ZW50IGV4aXN0cyBpbiBpdCBvciBub3QuPGJyIC8+CgkJCQlFeGFtcGxlIG9mIHBhc3NpbmcgcGFnZSBjb250ZW50IHRvIGEgVXNlciBEZWZpbmVkIFRhZyBhcyBhIHBhcmFtZXRlcjo8YnIgLz4KCQkJCTxjb2RlPntjb250ZW50IGFzc2lnbj1wYWdlY29udGVudH08YnIgLz4KCQkJCXt0YWJsZV9vZl9jb250ZW50cyB0aGVwYWdlY29udGVudD0iJHBhZ2Vjb250ZW50In08L2NvZGU+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+QWR2YW5jZWQgcGFyYW1zOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3R5cGU8L3R0PiAodGV4dCxjaGVja2JveCxkcm9wZG93bixzZWxlY3RfbXVsdGlwbGUsZGF0ZSxtdWx0aV9pbnB1dCxzbGlkZXIsY29sb3JwaWNrZXIpIAoJCTx1bD4KCQkJPGxpPkFsbG93cyB5b3UgdG8gc3BlY2lmeSB3aGF0IGNvbnRlbnQgY29udHJvbCB0eXBlIGlzIHVzZWQgaW4gdGhlIGJhY2sgZW5kLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cGFnZV90YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJVGhpcyBwYXJhbWV0ZXIgc2V0cyB0aGUgdGFiIGluIHdoaWNoIHRoZSBjb250ZW50IGJsb2NrIGlzIGRpc3BsYXllZCBpbiB0aGUgYmFja2VuZC48YnIgLz4KCQkJCVBvc3NpYmxlIHZhbHVlcyBhcmUgIm1haW4iICggPSBUYWIgIk1haW4gTWVudSIpLCAib3B0aW9ucyIgKCA9IFRhYiAiT3B0aW9ucyIpLCBvciBhbnkgb3RoZXIgYXJiaXRyYXJ5IHZhbHVlPGJyIC8+CgkJCQk8ZW0+ZS5nLiB5b3UgY2FuIGFkZCBhIGNoZWNrYm94IHRvIHRoZSBvcHRpb25zIHRhYiBvciBjcmVhdGUgbmV3IHRhYnM8L2VtPi4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIHRoZSBibG9ja3Mgd2l0aGluIGEgcGFnZSB0YWIgY2FuIGJlIGZ1cnRoZXIgZGl2aWRlZCBpbnRvIHRhYnMgb3IgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja19ncm91cDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgbXVsdGlwbGUgYmxvY2tzIGNhbiBiZSBncm91cGVkIGluIGEgZmllbGRzZXQuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hY3RpdmU8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCUFsbG93cyB5b3UgdG8gZGlzYWJsZSBhIGNvbnRlbnQgYmxvY2suIERpc2FibGVkIGNvbnRlbnQgYmxvY2tzIHdvbid0IGJlIHNob3duIGluIGJhY2tlbmQgYXMgd2VsbCBhcyBpbiBmcm9udGVuZC4gKG9ubHkgd29ya3Mgd2l0aCB7QWR2YW5jZWRDb250ZW50fSBwbHVnaW4pPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGdyb3VwIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGlzIGJsb2NrLgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl91c2VyczwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHVzZXIgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IHRoaXMgYmxvY2suCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHRoZSBwYXJhbXMgPHR0PmVkaXRvcl91c2VyczwvdHQ+IGFuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IGFyZSBlbXB0eSB0aGUgYmxvY2sgbWF5IGJlIGVkaXRlZCBieSBhbnkgdXNlciB3aXRoIHN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byBlZGl0IGEgcGFnZTwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+CgkJPHVsPgoJCQk8bGk+CgkJCQlBIGxpc3Qgb2YgZmV1IGdyb3VwIGlkcyBzZXBhcmF0ZWQgYnkgYSBjb21tYS48YnIgLz4KCQkJCVRoaXMgc2hvd3MgdGhlIGNvbnRlbnQgYmxvY2sgb25seSB0byBjZXJ0YWluIGZldSBncm91cHMuPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjdGlvbjwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJU3BlY2lmeSBpZiB0aGUgbG9naW4gZm9ybSBvZiB0aGUgZmV1IG1vZHVsZSB3aWxsIGJlIHNob3duIG9yIG5vdC48YnIgLz4KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhlIGxvZ2luIGZvcm0gd2lsbCBvbmx5IGJlIHNob3duIG9uZSB0aW1lLjxiciAvPgoJCQkJSWYgdGhlcmUgYXJlIG11bHRpcGxlIGJsb2NrcyB3aXRoIGxpbWl0ZWQgZmV1X2FjY2VzcyBhbmQgZmV1X2FjdGlvbiBzZXQgdG8gdHJ1ZSBvbmx5IHRoZSBmaXJzdCBibG9ja3MgbG9naW4gZm9ybSB3aWxsIGJlIHNob3duIGFuZCBhbGwgb3RoZXIgYmxvY2tzIHdpbGwganVzdCBiZSBlbXB0eS48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFsbG93X25vbmU8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT5TZXQgdG8gdHJ1ZSBpZiB0aGUgdXNlciBtYXkgZW50ZXIgZW1wdHkgdmFsdWVzLiA8YnIgLz5JZiBzZXQgdG8gZmFsc2UgYW5kIHZhbHVlIGlzIGVtcHR5IHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBwYXJhbSAiZGVmYXVsdCIgd2lsbCBiZSB1c2VkLiA8YnIgLz5JZiBzZXQgdG8gdHJ1ZSBhbmQgYmxvY2sgaXMgb2YgdHlwZSBpbWFnZS9maWxlIHRoZSBvcHRpb24gIm5vbmUiIChtb2RlPSJkcm9wZG93biIpIG9yIGEgYnV0dG9uIHRvIGNsZWFyIHRoZSBzZWxlY3RlZCBmaWxlL2ltYWdlIHZhbHVlIChtb2RlPSJmaWxlcGlja2VyIikgd2lsbCBiZSBkaXNwbGF5ZWQuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zbWFydHk8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVR1cm4gc21hcnR5IHByb2Nlc3Npbmcgb2YgdmFsdWVzIG9uL29mZi48YnIgLz4KCQkJCUlmIHNldCB0byB0cnVlIGFueSBnaXZlbiB2YWx1ZSB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGUgc21hcnR5IGVuZ2luZS48YnIgLz4KCQkJCTxlbT48c3Ryb25nPk5vdGljZTogPC9zdHJvbmc+IENvbnNpZGVyIHRoYXQgeW91IGNhbm5vdCB1c2UgdGhlIGRlZmF1bHQgc21hcnR5IGRlbGltaXRlcnMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdGVtcGxhdGUuIFRoaXMgd2lsbCBjYXVzZSBzbWFydHkgZXJyb3JzIGluIGZyb250ZW5kLjxiciAvPgoJCQkJU28geW91IG5lZWQgdG8gdXNlIDo6OiBhcyBkZWxpbWl0ZXIgaW5zdGVhZC48YnIgLz48L2VtPgoJCQkJRS5nLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9IkNhdGVnb3JpZXMiIGxhYmVsPSJTZWxlY3QgYSBjYXRlZ29yeSIgYmxvY2tfdHlwZT0iZHJvcGRvd24iIGl0ZW1zPSI6OjpnbG9iYWxfY29udGVudCBuYW1lPSdjYXRlZ29yeWxpc3QnOjo6IiBzbWFydHk9InRydWUifTwvY29kZT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZXNjcmlwdGlvbjwvdHQ+IChzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPkFsbG93cyB5b3UgdG8gYWRkIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gdG8gdGhhdCBibG9jayBmb3IgeW91ciBlZGl0b3JzLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+Y29sbGFwc2U8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVNldCB0byB0cnVlL2ZhbHNlIHRvIGRpc3BsYXkgYmxvY2sgaW4gYmFja2VuZCBpbiBjb2xsYXBzZWQvZXhwYW5kZWQgbW9kZSBieSBkZWZhdWx0LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiB3aWxsIGJlIGFsd2F5cyBmYWxzZSBpZiBub19jb2xsYXBzZT10cnVlIGlzIHVzZWQuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ub19jb2xsYXBzZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgZm9sZGluZyBvZiBibG9ja3MuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHNldCB0byB0cnVlIHBhcmFtIGNvbGxhcHNlIGlzIGFsd2F5cyBmYWxzZS48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnJlcXVpcmVkPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlTZXQgdG8gdHJ1ZSBpZiB0aGlzIGJsb2NrIG1heSBub3QgYmUgZW1wdHkuPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAiY2hlY2tib3giOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAodHJ1ZS9mYWxzZSkgCgkJPHVsPgoJCQk8bGk+CgkJCQljaGVja3MvdW5jaGVja3MgdGhlIGNoZWNrYm94IGJ5IGRlZmF1bHQgd2hlbiBhZGRpbmcgYSBwYWdlPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFVzZSAiMSIgZm9yIGNoZWNrZWQgYW5kICIwIiBmb3IgdW5jaGVja2VkIGJ5IGRlZmF1bHQ8YnIgLz48L2VtPgoJCQkJRS5nLiA8Y29kZT57Y29udGVudCBibG9ja190eXBlPSJjaGVja2JveCIgZGVmYXVsdD0xfTwvY29kZT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgQ29sb3JwaWNrZXI6PC9zdHJvbmc+IG5vIGFkZGl0aW9uYWwgcGFyYW1ldGVyczwvcD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgU2xpZGVyOjwvc3Ryb25nPiAoc2VlIGFsc28gZG9jdW1lbnRhdGlvbiBvZiB0aGUgYnVpbHQgaW4ganF1ZXJ5IHNsaWRlciBwbHVnaW4pPC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZnJvbTwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJc3RhcnQgdmFsdWUKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnRvPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQllbmQgdmFsdWUKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXA8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCWFtb3VudCBvZiBzdGVwcyB0aGUgc2xpZGVyIGNoYW5nZXMgdGhlIHZhbHVlcwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cm91bmQ8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCWRpZ2l0cyBhZnRlciB0aGUgY29tbWEKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmhldGVyb2dlbmVpdHk8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVRvRG8KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRpbWVuc2lvbjwvdHQ+IChzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPgoJCQkJdW5pdHMgYWZ0ZXIgdGhlIHZhbHVlCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5saW1pdHM8L3R0PiAodHJ1ZS9mYWxzZSkgCgkJPHVsPgoJCQk8bGk+CgkJCQlUb0RvCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zY2FsZTwvdHQ+IChzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPgoJCQkJVG9EbwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2tpbjwvdHQ+IChzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPgoJCQkJdGhlIHNraW4gdG8gdXNlIHdoZW4gcmVuZGVyaW5nIHRoZSBzbGlkZXIKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNhbGN1bGF0ZTwvdHQ+IChzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPgoJCQkJYSBqYXZhc2NyaXB0IGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgZGlzcGxheWVkIHZhbHVlcwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+b25zdGF0ZWNoYW5nZTwvdHQ+IChzdHJpbmcpIAoJCTx1bD4KCQkJPGxpPgoJCQkJYSBqYXZhc2NyaXB0IGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgd2hlbiBjaGFuZ2luZyB0aGUgdmFsdWUKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNhbGxiYWNrPC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlhIGphdmFzY3JpcHQgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCBhZnRlciBhIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICJkcm9wZG93biIvInNlbGVjdF9tdWx0aXBsZSI6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aXRlbXM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkl0ZW0gbGFiZWwocykgb2YgdGhlIGZpZWxkKHMpIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5WYWx1ZShzKSBvZiB0aGUgaXRlbXMgKHNlcGFyYXRlZCBieSBhIGRlbGltaXRlciAtIGRlZmF1bHQgaXMgfCAocGlwZSkpPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlcmUgYXJlIGxlc3MgdmFsdWVzIHRoYW4gaXRlbXMgdGhlIGl0ZW0gbGFiZWxzIHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXMgKGFuZCB2aXNlIHZlcnNhKS48L2VtPjxiciAvPjxiciAvPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJUHJlc2VsZWN0ZWQgdmFsdWUocykgKHNlcGFyYXRlZCBieSBhIGRlbGltaXRlciAtIGRlZmF1bHQgaXMgfCAocGlwZSkpPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFVzZSB0aGUgaXRlbSA8c3Ryb25nPnZhbHVlczwvc3Ryb25nPiBhcyBkZWZhdWx0LCBub3QgdGhlIGl0ZW0gbGFiZWxzLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVsaW1pdGVyPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5BIHNpZ24gb3Igc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldmlkZSB0aGUgaXRlbXMvdmFsdWVzIChkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2l6ZTwvdHQ+IChpbnRlZ2VyKQoJCTx1bD4KCQkJPGxpPkhlaWdodCBvZiBjb250ZW50IGJsb2NrIGluIGJhY2sgZW5kIGlmIDxjb2RlPmJsb2NrX3R5cGU9InNlbGVjdF9tdWx0aXBsZSI8L2NvZGU+IGlzIHNldC4gPGVtPihEZWZhdWx0IGlzIG51bWJlciBvZiBpdGVtcyk8L2VtPjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGU8L3R0PiAodHJ1ZS9mYWxzZSkgLSBzZWxlY3RfbXVsdGlwbGUgb25seQoJCTx1bD4KCQkJPGxpPgoJCQkJSWYgc2V0IHRvIHRydWUgdGhlIGl0ZW1zIHdvbid0IGJlIHNob3duIGFzIGEgbXVsdGlwbGUgc2VsZWN0IGlucHV0IHdpdGggb3B0aW9ucyBidXQgYXMgYSBsaXN0IG9mIGNoZWNrYm94ZXMgdGhhdCBjYW4gYmUgcmVvcmRlcmVkLjxiciAvPkVhY2ggcm93IGNvbnRhaW5zIHRoZSBpdGVtIGxhYmVsIGFuZCBhIGNoZWNrYm94IHdpdGggdGhlIGl0ZW0gdmFsdWUuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IG9ubHkgdGhlIG9yZGVyIG9mIHRoZSA8c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+IGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBhbHdheXMgZGlzcGxheWVkIG9uIHRoZSB0b3Agb2YgdGhlIGxpc3Qgd2hlbiByZWxvYWRpbmcgdGhlIGVkaXQgcGFnZS48YnIgLz4KCQkJCVVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIHRlbXBsYXRlPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+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+RnVsbCBFeGFtcGxlOjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCXsqIGRlZmluZSB0aGUgY29udGVudCBibG9jayAqfQoJCXtjb250ZW50IGJsb2NrPSJteV9tb2R1bGVzIiBibG9ja190eXBlPSJtdWx0aV9pbnB1dCIgaW5wdXRzPSJNb2R1bGUsTW9kdWxlLE1vZHVsZSxNb2R1bGUiIGFzc2lnbj0ibW9kdWxlcyJ9CgkJCgkJeyogZXhwbG9kZSBibG9jayBjb250ZW50IGluIGFuIGFycmF5IHRvIGdldCB0aGUgaW5wdXQgZ3JvdXBzICp9CgkJe2Fzc2lnbiB2YXI9bW9kdWxlcyB2YWx1ZT0iJmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7InxleHBsb2RlOiRtb2R1bGVzfQoJCQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQoJCXtmb3JlYWNoIGZyb209JG1vZHVsZXMgaXRlbT0ibW9kdWxlIn0KCQkJe2lmICRtb2R1bGUgIT0gJyd9CgkJCQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0KCQkJCXthc3NpZ24gdmFyPW1vZHVsZV9pdGVtcyB2YWx1ZT0iJmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7InxleHBsb2RlOiRtb2R1bGV9CgkJCQkKCQkJCXtpZiAkbW9kdWxlX2l0ZW1zWzBdICE9ICcnfQoJCQkJCgkJCQkJeyogY2FsbCB0aGUgbW9kdWxlICp9CgkJCQkJe2lmIGlzc2V0KCRtb2R1bGVfaXRlbXNbMV0pfQoJCQkJCQl7ZXZhbCB2YXI9JHNtYXJ0eS5sZGVsaW18Y2F0OidjbXNfbW9kdWxlIG1vZHVsZT0iJ3xjYXQ6JG1vZHVsZV9pdGVtc1swXXxjYXQ6JyIgJ3xjYXQ6JG1vZHVsZV9pdGVtc1sxXXxjYXQ6JHNtYXJ0eS5yZGVsaW19CgkJCQkJe2Vsc2V9CgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6J2Ntc19tb2R1bGUgbW9kdWxlPSInfGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDonIid8Y2F0OiRzbWFydHkucmRlbGltfQoJCQkJCXsvaWZ9CgkJCQkJCgkJCQl7L2lmfQoJCQkJCgkJCXsvaWZ9CgkJCgkJey9mb3JlYWNofQoJCTwvY29kZT4KCQk8L3ByZT4KCTwvbGk+CjwvdWw+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgoJPGxpPlRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLyI+aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi88L2E+PC9saT4KCTxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIENNUyBNYWRlIFNpbXBsZSBGb3J1bXM6PGJyIC8+Cgk8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5kZSI+aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUuZGU8L2E+PGJyIC8+Cgk8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPmh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZzwvYT48L2xpPgo8L3VsPgo8YnIgLz4KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTAtMjAxMSwgR2VvcmcgQnVzY2ggKE5hTikuIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KPHA+CglBcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy48YnIgLz4KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPgoJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Y8YnIgLz4KCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS48YnIgLz4KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4KCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPGJyIC8+CglhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZTxiciAvPgoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4KCU9yIHJlYWQgaXQgb25saW5lOiA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPmh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTDwvYT48YnIgLz4KCVBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLgo8L3A+CjxiciAvPgo=]]></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/jpicker/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/jpicker/AlphaBar.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/jpicker/bar-opacity.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiPHPmDAMMGBsbw9lMDDgA6RKM////h3POnj1LCzsAAgwAQtYIcFfEyzkAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/jpicker/Bars.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAA84CAYAAADKKOIFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASBJREFUeNrs2ssOgjAQheFDF77/8xLI2AEENWIo4CWdn8UXtbMprSdtQSZZki6qBZl6S33+klqpGvJleaBy/2pB6sxnX+fzr1Ut+AS05P2rhTxO3qfOg6L1wasD2TBU3ksN5Nk4fZpoSj5tbWhKSnY2FJX8gHRe8c7WoobDxf/+2znFnxutw8Vf48hfcmtDUZZsaFgvfnGRiWQimUgmxslEjUvF+fJNy1xiaVhAAgCEYojFMQl9H00mAkBslmUjmQgArBN1S8L7py1kIgBEjMN354njphoAIBJr7+KQiQAQk+UxNJkIAOHXict5otg7A0DsOHw4T3xeJ45hCQAQiPX3E7k5ABCSlfcTuTkAEHCdOD93Xk4WyUQACLltzl4FGACT38aTA+sZOgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/jpicker/map-opacity.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUeNpiPHPmDAM2YGxsjFWciYFEMKqBGMD4//9/rBJnz54dDSX6aQAIMABCtQiAsDRF+wAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/jpicker/mappoint.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhDwAPAJECAAAAAP///////wAAACH5BAEAAAIALAAAAAAPAA8AAAIulA2Zx5IB4WIANnlqaAa7zXXAFzLBUx5nlYpsu4LpSZb0J5s3fu2IFplwFEJDAQA7]]></data>
	</file>
	<file>
	  <filename>/images/jpicker/Maps.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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AIwaHXWjRbcZ9ToAvavek9KUzs6Z1qjZo7500UdH/ToAPWuX4OtL3uLfTVYCM7aec/Xsm6vzT1ejjo66+aJLjtoegJKw9NnLJjX1u8laZj57WfwbVqOOjvrCRR8ftR6/+MXRteLo30LP6/7f1SLH/3v+jte1v71Rs0fdbNEtRq3H3/7tEV7xqd87OMW9v9eo2b93s0W3GLUev/zlMbxE7/+jbxO4iD2z9P7/69cZNXvUzRbdYtR6/N3fHbesmPH/GybK+79Rs/+/2aJbjFqPv//7I+US3/E+Gi9WxjTPB8Co2QG4edEtRq3HP/zDkbrczN8zMEH2lOMBMGr092626Baj1uMf//HoWqBnldH3Fbho0ddlvq8jdTijXgVg0UW3GLUev/rVMXTD6J0v65znmZcZNftlmy26xaj1+Kd/OprvG9nz+sz32XixRl+f8z6Nmv0+N1x0+VHr8c//fHTfObpnqZH3MXhxMybLD4BRswOw0KLLj1qPf/mXY8rDoeY8xGr4It/3vFGzn99w0eVHrcevf310XcIn3uabi9Fz0ee/jVGz32bDRZcftR7/+q9H1xpPvK7xIq7xOqNmv27TRZcetR7/9m9H9yUf/fXgQdiOztZm//rr1xk1e9RNF1161Hr85jdHytER73gfwYueMV//+zBq9vvYdNGlR63Hb397dF3q3rXyVu2epXe+2NsZNXvUjRdddtR6/PDDMXxalJr8soHP1Rnz9r29UbPf58aLLjtqPf7934/wpXvq5QnT3vdyo2a/fPNFlxy1Hr/73dF98PO7X9cx7XOvM2r2616w6HKj1uM//uNIOQn6He9jYNrW35P3Poya/T5esuhSo9bjP//zaL5EkUs+430mTxz5ffH3adTs9/nCRR8ftR7/9V9H96W7++0mT5z7dkbNfruXL/rIqPX4/e+PKZf0/vVunW5eAIyaHYAXLDpt1Hr8938fG62w0V+VUXcIwKePWo8fGQI+U/X1DwIACAAgAMBnBKAc//u0i548efqkp58V3wDAxxIAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQABEAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAEAABAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAQACMAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAMCZehwKAAIACAAgAMBnBOAPVwPW4smTp897cisAfDABAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAQAAEAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAEQABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEAATACCAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgCcqcehACAAgAAAAgB8RADKH64GrMWTJ0+f9/Qz//7D5xIAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQABEAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAEAAbgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAcKYehwSAAAACAAgA8BkBKD8WoBZPnjx93pNbAeCDCQAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgACIAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAIgA1AAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQABgX7//7Q/lz3/+cwGAT/RnP/+rstLXnACAHwEAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAEAABAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAQABsAAIACAAgAIAAAK9Wj0MCQAAAAQAEAPiEAJSjHPWPz3jy5OnTnn5WfAMAH0sAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAYIcAHL8upf6N8eAjA1D/+sf//PDj018aED7zR4C/+MO3AgYE1wEAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIAAiAAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgACAAAgACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAIAAGAEEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEAHhWPQ4FAAEABAAQAOATAlB+LED94zOePHn6tCe3AsAHEwAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAEQABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEAAQAAEAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQABAAIwAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAwJn/EWAAyihyDzKRI84AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/jpicker/NoColor.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABEAAAAPCAIAAACN07NGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcpJREFUeNqcks9LAlEQx79jK0KRiRCY/bhkh9C8lBQGIUgUYXrt7/MWQSgIGqhEEUhYqXTMiwlSEUmQUYtNM6tmRJcalsfu2/nOfOb7HrXx5zB0CQYRj3M4DLcbRGAe/pdPed7f0WjQyQkyGTSbquGtLfh8dHPDiQSmpmAY+PhQpWSPjODtDdUq1eu8uanKZtOmxfx+LC/j6YmSSZTL8oLXV7y8oNPBwwPlcpROY2wMa2uYnpZ0S+NwIBDgaFTKU6GAy0uFkXh+pmIR5+fweDgWg9dLhjGYp9vVdXGRJya05NmZ7NDcHFerqvf5eGcH4+OaI8z9Pr2hBX1mhvf2SJRHRygU6PSUV1a0g8v13RhjaJG1S2KdGCjzXF1hfZ0CAZmEeyC/aMSlbpfv7uj4GI+PqiyX2W7X6aXQN5nRz5YwTdze0uEhiyXxOHm9PDkpeGi3eXdX8QZhzWO5getrOjhgpxORCJaWRIBQiDc2cH9P+/totax026CP0F9cUD6vDCKYn4cgCYxQhcOCR6USpVI8OsqmSX1NpaKmLSyop1L+R2xv8+ysVpSDajT6fSibFeN5dRWl0tD6L2OExzS1mxxdraZ7/7jXnwIMAH77vof+JfgrAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/jpicker/picker.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhGQAYAKIEANjY2P////Dw8BseI////wAAAAAAAAAAACH5BAEAAAQALAAAAAAZABgAAANXKLDc/kvBSWO4OOssVyBgKI5i0HxkOpoMqr6s984x4M5kfePlyae6X84n7LWKRhltE+jYcLXJblh50qpWWGMAma4Yg/DDawybHeRQFCJgcrDwijPuECQAADs=]]></data>
	</file>
	<file>
	  <filename>/images/jpicker/preview-opacity.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiPHPmDAMSMDY2RuYyMeAFNJVm/P//PzL/7Nmzg8VpAAEGALE5CHQT4Ca/AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/jpicker/rangearrows.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFAAHAJEDAAAAAHRyav///7u7uyH5BAEAAAMALAAAAAAUAAcAAAIdjDOpm2cCEVsBimflrJlnAIZeNGpM6Zlbd0zbUQAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/slider/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/slider/jslider.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAfQAAAA8CAYAAACQGkjnAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4lJREFUeNrs3c9rHFUAwPE3m02aJghGzGalWjSXKoggQjEK7VF7sbTiwSKVQkXPPfhHePAsKASL1IJoqJe2IgUrNkEQj5VekhRra+3GbEjsJptNnFnTlRhnf7RTzMrnA8OEfY93mBy++yY7m2h/rK+v772enp69uVwuAADb3/r6eqjVaqFarX4fH+/mh4eHTw8NDRUHBgZCPp93hQCgC6ytrYVKpRLK5fLeubm50/nR0dHiyMhIGBwcDPEuPURR5CoBwDbfnSdHEvRSqRRmZ2eL+UKhcC0+diU7dLfcAaB7or68vFzfjC8tLV3Lx47Hx3h8FAUdALon6Mlt997e3htJy6PkBQCguwk6AAg6ACDoAICgAwCCDgCCDgAIOgAg6ACAoAOAoAMAgg4ACDoAIOgAIOgAwDYN+tuHg6IDQJfLjz3jIgCAoAMA/7lo8Vu33AGg64O+MiXoAND1QfcpdwAQdABA0AEAQQcABB0ABB0AEHQAQNABAEEHAEEHAAQdABB0AEDQAUDQAQBBBwDuU9A3zv3x8eDGOU0lPuaTc7M3AVEUZboeANBe0JPoPn7wyInLrSafOfX+U/FpJg5wpUnQM10PAGgv6MU4vtd3P/FoOPbGwdSJ45+cCVenf04i/Egc4BtNgl5fb+fDhXD0yCup65089WW4fetmy/UAgNbyGzv0sOfpPeFmqZw6MRlPgh6a30ZvjPcXHwvT10vpk+LxJOhtrAcAtBH0utXVWlhY/CN1YjLeieXqavhtfrHpOACQddBrtfD7QnqAk/FOrMRvAH65tdB0HADIOOjVOLBLlfTPplU7DPBKvAMvL95uOp5z/QEg26DvKjyU6cJP7h5pOefK1Z/8BgAgo6DXt+UzV6bDgZf3pU48e+7inR9bPWJWH++Z/zW8sH8sddKlbybbXQ8AaGHTc+j7XnwuvP7agS2TPv3sbLj43Q8dP4c+9vyz4fChl7bM+WLifJic+tFz6ACQ8Q595q+4nri8c0dfeOvNQ40JH348sSnmbe7QG+s9MLAjHD/693ofnZzYFHM7dADIJuhbIhzlovDOsVfDB+Ofh/MXJu8mvpvWy+VyjfW+ujAl5gBwn4L+jwiH+te2nvv60r3EN+v1AIAU0b+81vgbeFp82/jnLJmtBwDcXdDvRLh/I7xbdtIdBv2e1gMA2gi6mAKAoAMAgg4ACDoAIOgA8H/xpwADAPARxuhzeeDjAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/slider/jslider.round.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></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/main.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/YTphKyJweCIpfX0pLGEualF1ZXJ5PWEuJD1kfSkod2luZG93KTsKCi8qIQogKiBqUXVlcnkgVUkgMS44LjExCiAqCiAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSQogKi8KKGZ1bmN0aW9uKGMsail7ZnVuY3Rpb24gayhhKXtyZXR1cm4hYyhhKS5wYXJlbnRzKCkuYW5kU2VsZigpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBjLmN1ckNTUyh0aGlzLCJ2aXNpYmlsaXR5Iik9PT0iaGlkZGVuInx8Yy5leHByLmZpbHRlcnMuaGlkZGVuKHRoaXMpfSkubGVuZ3RofWMudWk9Yy51aXx8e307aWYoIWMudWkudmVyc2lvbil7Yy5leHRlbmQoYy51aSx7dmVyc2lvbjoiMS44LjExIixrZXlDb2RlOntBTFQ6MTgsQkFDS1NQQUNFOjgsQ0FQU19MT0NLOjIwLENPTU1BOjE4OCxDT01NQU5EOjkxLENPTU1BTkRfTEVGVDo5MSxDT01NQU5EX1JJR0hUOjkzLENPTlRST0w6MTcsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LElOU0VSVDo0NSxMRUZUOjM3LE1FTlU6OTMsTlVNUEFEX0FERDoxMDcsTlVNUEFEX0RFQ0lNQUw6MTEwLE5VTVBBRF9ESVZJREU6MTExLE5VTVBBRF9FTlRFUjoxMDgsTlVNUEFEX01VTFRJUExZOjEwNiwKTlVNUEFEX1NVQlRSQUNUOjEwOSxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQRVJJT0Q6MTkwLFJJR0hUOjM5LFNISUZUOjE2LFNQQUNFOjMyLFRBQjo5LFVQOjM4LFdJTkRPV1M6OTF9fSk7Yy5mbi5leHRlbmQoe19mb2N1czpjLmZuLmZvY3VzLGZvY3VzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciI/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YyhkKS5mb2N1cygpO2ImJmIuY2FsbChkKX0sYSl9KTp0aGlzLl9mb2N1cy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHNjcm9sbFBhcmVudDpmdW5jdGlvbigpe3ZhciBhO2E9Yy5icm93c2VyLm1zaWUmJi8oc3RhdGljfHJlbGF0aXZlKS8udGVzdCh0aGlzLmNzcygicG9zaXRpb24iKSl8fC9hYnNvbHV0ZS8udGVzdCh0aGlzLmNzcygicG9zaXRpb24iKSk/dGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuLyhyZWxhdGl2ZXxhYnNvbHV0ZXxmaXhlZCkvLnRlc3QoYy5jdXJDU1ModGhpcywKInBvc2l0aW9uIiwxKSkmJi8oYXV0b3xzY3JvbGwpLy50ZXN0KGMuY3VyQ1NTKHRoaXMsIm92ZXJmbG93IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy15IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy14IiwxKSl9KS5lcSgwKTp0aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4vKGF1dG98c2Nyb2xsKS8udGVzdChjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdyIsMSkrYy5jdXJDU1ModGhpcywib3ZlcmZsb3cteSIsMSkrYy5jdXJDU1ModGhpcywib3ZlcmZsb3cteCIsMSkpfSkuZXEoMCk7cmV0dXJuL2ZpeGVkLy50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKXx8IWEubGVuZ3RoP2MoZG9jdW1lbnQpOmF9LHpJbmRleDpmdW5jdGlvbihhKXtpZihhIT09ailyZXR1cm4gdGhpcy5jc3MoInpJbmRleCIsYSk7aWYodGhpcy5sZW5ndGgpe2E9Yyh0aGlzWzBdKTtmb3IodmFyIGI7YS5sZW5ndGgmJmFbMF0hPT1kb2N1bWVudDspe2I9YS5jc3MoInBvc2l0aW9uIik7CmlmKGI9PT0iYWJzb2x1dGUifHxiPT09InJlbGF0aXZlInx8Yj09PSJmaXhlZCIpe2I9cGFyc2VJbnQoYS5jc3MoInpJbmRleCIpLDEwKTtpZighaXNOYU4oYikmJmIhPT0wKXJldHVybiBifWE9YS5wYXJlbnQoKX19cmV0dXJuIDB9LGRpc2FibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iaW5kKChjLnN1cHBvcnQuc2VsZWN0c3RhcnQ/InNlbGVjdHN0YXJ0IjoibW91c2Vkb3duIikrIi51aS1kaXNhYmxlU2VsZWN0aW9uIixmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCl9KX0sZW5hYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5iaW5kKCIudWktZGlzYWJsZVNlbGVjdGlvbiIpfX0pO2MuZWFjaChbIldpZHRoIiwiSGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKGYsZyxsLG0pe2MuZWFjaChlLGZ1bmN0aW9uKCl7Zy09cGFyc2VGbG9hdChjLmN1ckNTUyhmLCJwYWRkaW5nIit0aGlzLHRydWUpKXx8MDtpZihsKWctPXBhcnNlRmxvYXQoYy5jdXJDU1MoZiwKImJvcmRlciIrdGhpcysiV2lkdGgiLHRydWUpKXx8MDtpZihtKWctPXBhcnNlRmxvYXQoYy5jdXJDU1MoZiwibWFyZ2luIit0aGlzLHRydWUpKXx8MH0pO3JldHVybiBnfXZhciBlPWI9PT0iV2lkdGgiP1siTGVmdCIsIlJpZ2h0Il06WyJUb3AiLCJCb3R0b20iXSxoPWIudG9Mb3dlckNhc2UoKSxpPXtpbm5lcldpZHRoOmMuZm4uaW5uZXJXaWR0aCxpbm5lckhlaWdodDpjLmZuLmlubmVySGVpZ2h0LG91dGVyV2lkdGg6Yy5mbi5vdXRlcldpZHRoLG91dGVySGVpZ2h0OmMuZm4ub3V0ZXJIZWlnaHR9O2MuZm5bImlubmVyIitiXT1mdW5jdGlvbihmKXtpZihmPT09ailyZXR1cm4gaVsiaW5uZXIiK2JdLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2ModGhpcykuY3NzKGgsZCh0aGlzLGYpKyJweCIpfSl9O2MuZm5bIm91dGVyIitiXT1mdW5jdGlvbihmLGcpe2lmKHR5cGVvZiBmIT09Im51bWJlciIpcmV0dXJuIGlbIm91dGVyIitiXS5jYWxsKHRoaXMsZik7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2ModGhpcykuY3NzKGgsCmQodGhpcyxmLHRydWUsZykrInB4Iil9KX19KTtjLmV4dGVuZChjLmV4cHJbIjoiXSx7ZGF0YTpmdW5jdGlvbihhLGIsZCl7cmV0dXJuISFjLmRhdGEoYSxkWzNdKX0sZm9jdXNhYmxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxkPWMuYXR0cihhLCJ0YWJpbmRleCIpO2lmKCJhcmVhIj09PWIpe2I9YS5wYXJlbnROb2RlO2Q9Yi5uYW1lO2lmKCFhLmhyZWZ8fCFkfHxiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0ibWFwIilyZXR1cm4gZmFsc2U7YT1jKCJpbWdbdXNlbWFwPSMiK2QrIl0iKVswXTtyZXR1cm4hIWEmJmsoYSl9cmV0dXJuKC9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdC8udGVzdChiKT8hYS5kaXNhYmxlZDoiYSI9PWI/YS5ocmVmfHwhaXNOYU4oZCk6IWlzTmFOKGQpKSYmayhhKX0sdGFiYmFibGU6ZnVuY3Rpb24oYSl7dmFyIGI9Yy5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuKGlzTmFOKGIpfHxiPj0wKSYmYyhhKS5pcygiOmZvY3VzYWJsZSIpfX0pOwpjKGZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuYm9keSxiPWEuYXBwZW5kQ2hpbGQoYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Yy5leHRlbmQoYi5zdHlsZSx7bWluSGVpZ2h0OiIxMDBweCIsaGVpZ2h0OiJhdXRvIixwYWRkaW5nOjAsYm9yZGVyV2lkdGg6MH0pO2Muc3VwcG9ydC5taW5IZWlnaHQ9Yi5vZmZzZXRIZWlnaHQ9PT0xMDA7Yy5zdXBwb3J0LnNlbGVjdHN0YXJ0PSJvbnNlbGVjdHN0YXJ0ImluIGI7YS5yZW1vdmVDaGlsZChiKS5zdHlsZS5kaXNwbGF5PSJub25lIn0pO2MuZXh0ZW5kKGMudWkse3BsdWdpbjp7YWRkOmZ1bmN0aW9uKGEsYixkKXthPWMudWlbYV0ucHJvdG90eXBlO2Zvcih2YXIgZSBpbiBkKXthLnBsdWdpbnNbZV09YS5wbHVnaW5zW2VdfHxbXTthLnBsdWdpbnNbZV0ucHVzaChbYixkW2VdXSl9fSxjYWxsOmZ1bmN0aW9uKGEsYixkKXtpZigoYj1hLnBsdWdpbnNbYl0pJiZhLmVsZW1lbnRbMF0ucGFyZW50Tm9kZSlmb3IodmFyIGU9MDtlPGIubGVuZ3RoO2UrKylhLm9wdGlvbnNbYltlXVswXV0mJgpiW2VdWzFdLmFwcGx5KGEuZWxlbWVudCxkKX19LGNvbnRhaW5zOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGRvY3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTY6YSE9PWImJmEuY29udGFpbnMoYil9LGhhc1Njcm9sbDpmdW5jdGlvbihhLGIpe2lmKGMoYSkuY3NzKCJvdmVyZmxvdyIpPT09ImhpZGRlbiIpcmV0dXJuIGZhbHNlO2I9YiYmYj09PSJsZWZ0Ij8ic2Nyb2xsTGVmdCI6InNjcm9sbFRvcCI7dmFyIGQ9ZmFsc2U7aWYoYVtiXT4wKXJldHVybiB0cnVlO2FbYl09MTtkPWFbYl0+MDthW2JdPTA7cmV0dXJuIGR9LGlzT3ZlckF4aXM6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBhPmImJmE8YitkfSxpc092ZXI6ZnVuY3Rpb24oYSxiLGQsZSxoLGkpe3JldHVybiBjLnVpLmlzT3ZlckF4aXMoYSxkLGgpJiZjLnVpLmlzT3ZlckF4aXMoYixlLGkpfX0pfX0pKGpRdWVyeSk7CgovKiEKICogalF1ZXJ5IFVJIFdpZGdldCAxLjguNwogKgogKiBDb3B5cmlnaHQgMjAxMCwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvV2lkZ2V0CiAqLwooZnVuY3Rpb24oYixqKXtpZihiLmNsZWFuRGF0YSl7dmFyIGs9Yi5jbGVhbkRhdGE7Yi5jbGVhbkRhdGE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPTAsZDsoZD1hW2NdKSE9bnVsbDtjKyspYihkKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIik7ayhhKX19ZWxzZXt2YXIgbD1iLmZuLnJlbW92ZTtiLmZuLnJlbW92ZT1mdW5jdGlvbihhLGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZighYylpZighYXx8Yi5maWx0ZXIoYSxbdGhpc10pLmxlbmd0aCliKCIqIix0aGlzKS5hZGQoW3RoaXNdKS5lYWNoKGZ1bmN0aW9uKCl7Yih0aGlzKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIil9KTtyZXR1cm4gbC5jYWxsKGIodGhpcyksYSxjKX0pfX1iLndpZGdldD1mdW5jdGlvbihhLGMsZCl7dmFyIGU9YS5zcGxpdCgiLiIpWzBdLGY7YT1hLnNwbGl0KCIuIilbMV07Zj1lKyItIithO2lmKCFkKXtkPWM7Yz1iLldpZGdldH1iLmV4cHJbIjoiXVtmXT1mdW5jdGlvbihoKXtyZXR1cm4hIWIuZGF0YShoLAphKX07YltlXT1iW2VdfHx7fTtiW2VdW2FdPWZ1bmN0aW9uKGgsZyl7YXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGgsZyl9O2M9bmV3IGM7Yy5vcHRpb25zPWIuZXh0ZW5kKHRydWUse30sYy5vcHRpb25zKTtiW2VdW2FdLnByb3RvdHlwZT1iLmV4dGVuZCh0cnVlLGMse25hbWVzcGFjZTplLHdpZGdldE5hbWU6YSx3aWRnZXRFdmVudFByZWZpeDpiW2VdW2FdLnByb3RvdHlwZS53aWRnZXRFdmVudFByZWZpeHx8YSx3aWRnZXRCYXNlQ2xhc3M6Zn0sZCk7Yi53aWRnZXQuYnJpZGdlKGEsYltlXVthXSl9O2Iud2lkZ2V0LmJyaWRnZT1mdW5jdGlvbihhLGMpe2IuZm5bYV09ZnVuY3Rpb24oZCl7dmFyIGU9dHlwZW9mIGQ9PT0ic3RyaW5nIixmPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxoPXRoaXM7ZD0hZSYmZi5sZW5ndGg/Yi5leHRlbmQuYXBwbHkobnVsbCxbdHJ1ZSxkXS5jb25jYXQoZikpOmQ7aWYoZSYmZC5jaGFyQXQoMCk9PT0iXyIpcmV0dXJuIGg7CmU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGc9Yi5kYXRhKHRoaXMsYSksaT1nJiZiLmlzRnVuY3Rpb24oZ1tkXSk/Z1tkXS5hcHBseShnLGYpOmc7aWYoaSE9PWcmJmkhPT1qKXtoPWk7cmV0dXJuIGZhbHNlfX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBnPWIuZGF0YSh0aGlzLGEpO2c/Zy5vcHRpb24oZHx8e30pLl9pbml0KCk6Yi5kYXRhKHRoaXMsYSxuZXcgYyhkLHRoaXMpKX0pO3JldHVybiBofX07Yi5XaWRnZXQ9ZnVuY3Rpb24oYSxjKXthcmd1bWVudHMubGVuZ3RoJiZ0aGlzLl9jcmVhdGVXaWRnZXQoYSxjKX07Yi5XaWRnZXQucHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLG9wdGlvbnM6e2Rpc2FibGVkOmZhbHNlfSxfY3JlYXRlV2lkZ2V0OmZ1bmN0aW9uKGEsYyl7Yi5kYXRhKGMsdGhpcy53aWRnZXROYW1lLHRoaXMpO3RoaXMuZWxlbWVudD1iKGMpO3RoaXMub3B0aW9ucz1iLmV4dGVuZCh0cnVlLHt9LHRoaXMub3B0aW9ucywKdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLGEpO3ZhciBkPXRoaXM7dGhpcy5lbGVtZW50LmJpbmQoInJlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbigpe2QuZGVzdHJveSgpfSk7dGhpcy5fY3JlYXRlKCk7dGhpcy5fdHJpZ2dlcigiY3JlYXRlIik7dGhpcy5faW5pdCgpfSxfZ2V0Q3JlYXRlT3B0aW9uczpmdW5jdGlvbigpe3JldHVybiBiLm1ldGFkYXRhJiZiLm1ldGFkYXRhLmdldCh0aGlzLmVsZW1lbnRbMF0pW3RoaXMud2lkZ2V0TmFtZV19LF9jcmVhdGU6ZnVuY3Rpb24oKXt9LF9pbml0OmZ1bmN0aW9uKCl7fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnVuYmluZCgiLiIrdGhpcy53aWRnZXROYW1lKS5yZW1vdmVEYXRhKHRoaXMud2lkZ2V0TmFtZSk7dGhpcy53aWRnZXQoKS51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0QmFzZUNsYXNzKyItZGlzYWJsZWQgdWktc3RhdGUtZGlzYWJsZWQiKX0sCndpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnR9LG9wdGlvbjpmdW5jdGlvbihhLGMpe3ZhciBkPWE7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApcmV0dXJuIGIuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYodHlwZW9mIGE9PT0ic3RyaW5nIil7aWYoYz09PWopcmV0dXJuIHRoaXMub3B0aW9uc1thXTtkPXt9O2RbYV09Y310aGlzLl9zZXRPcHRpb25zKGQpO3JldHVybiB0aGlzfSxfc2V0T3B0aW9uczpmdW5jdGlvbihhKXt2YXIgYz10aGlzO2IuZWFjaChhLGZ1bmN0aW9uKGQsZSl7Yy5fc2V0T3B0aW9uKGQsZSl9KTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbjpmdW5jdGlvbihhLGMpe3RoaXMub3B0aW9uc1thXT1jO2lmKGE9PT0iZGlzYWJsZWQiKXRoaXMud2lkZ2V0KClbYz8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKHRoaXMud2lkZ2V0QmFzZUNsYXNzKyItZGlzYWJsZWQgdWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIixjKTtyZXR1cm4gdGhpc30sCmVuYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIixmYWxzZSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdHJ1ZSl9LF90cmlnZ2VyOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT10aGlzLm9wdGlvbnNbYV07Yz1iLkV2ZW50KGMpO2MudHlwZT0oYT09PXRoaXMud2lkZ2V0RXZlbnRQcmVmaXg/YTp0aGlzLndpZGdldEV2ZW50UHJlZml4K2EpLnRvTG93ZXJDYXNlKCk7ZD1kfHx7fTtpZihjLm9yaWdpbmFsRXZlbnQpe2E9Yi5ldmVudC5wcm9wcy5sZW5ndGg7Zm9yKHZhciBmO2E7KXtmPWIuZXZlbnQucHJvcHNbLS1hXTtjW2ZdPWMub3JpZ2luYWxFdmVudFtmXX19dGhpcy5lbGVtZW50LnRyaWdnZXIoYyxkKTtyZXR1cm4hKGIuaXNGdW5jdGlvbihlKSYmZS5jYWxsKHRoaXMuZWxlbWVudFswXSxjLGQpPT09ZmFsc2V8fGMuaXNEZWZhdWx0UHJldmVudGVkKCkpfX19KShqUXVlcnkpOwoKLyohCiAqIGpRdWVyeSBVSSBNb3VzZSAxLjguNwogKgogKiBDb3B5cmlnaHQgMjAxMCwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvTW91c2UKICoKICogRGVwZW5kczoKICoJanF1ZXJ5LnVpLndpZGdldC5qcwogKi8KKGZ1bmN0aW9uKGMpe2Mud2lkZ2V0KCJ1aS5tb3VzZSIse29wdGlvbnM6e2NhbmNlbDoiOmlucHV0LG9wdGlvbiIsZGlzdGFuY2U6MSxkZWxheTowfSxfbW91c2VJbml0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmVsZW1lbnQuYmluZCgibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGIpe3JldHVybiBhLl9tb3VzZURvd24oYil9KS5iaW5kKCJjbGljay4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihiKXtpZih0cnVlPT09Yy5kYXRhKGIudGFyZ2V0LGEud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50Iikpe2MucmVtb3ZlRGF0YShiLnRhcmdldCxhLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpO2Iuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7cmV0dXJuIGZhbHNlfX0pO3RoaXMuc3RhcnRlZD1mYWxzZX0sX21vdXNlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSl9LF9tb3VzZURvd246ZnVuY3Rpb24oYSl7YS5vcmlnaW5hbEV2ZW50PQphLm9yaWdpbmFsRXZlbnR8fHt9O2lmKCFhLm9yaWdpbmFsRXZlbnQubW91c2VIYW5kbGVkKXt0aGlzLl9tb3VzZVN0YXJ0ZWQmJnRoaXMuX21vdXNlVXAoYSk7dGhpcy5fbW91c2VEb3duRXZlbnQ9YTt2YXIgYj10aGlzLGU9YS53aGljaD09MSxmPXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsPT0ic3RyaW5nIj9jKGEudGFyZ2V0KS5wYXJlbnRzKCkuYWRkKGEudGFyZ2V0KS5maWx0ZXIodGhpcy5vcHRpb25zLmNhbmNlbCkubGVuZ3RoOmZhbHNlO2lmKCFlfHxmfHwhdGhpcy5fbW91c2VDYXB0dXJlKGEpKXJldHVybiB0cnVlO3RoaXMubW91c2VEZWxheU1ldD0hdGhpcy5vcHRpb25zLmRlbGF5O2lmKCF0aGlzLm1vdXNlRGVsYXlNZXQpdGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLm1vdXNlRGVsYXlNZXQ9dHJ1ZX0sdGhpcy5vcHRpb25zLmRlbGF5KTtpZih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGEpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGEpKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9CnRoaXMuX21vdXNlU3RhcnQoYSkhPT1mYWxzZTtpZighdGhpcy5fbW91c2VTdGFydGVkKXthLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIHRydWV9fXRoaXMuX21vdXNlTW92ZURlbGVnYXRlPWZ1bmN0aW9uKGQpe3JldHVybiBiLl9tb3VzZU1vdmUoZCl9O3RoaXMuX21vdXNlVXBEZWxlZ2F0ZT1mdW5jdGlvbihkKXtyZXR1cm4gYi5fbW91c2VVcChkKX07Yyhkb2N1bWVudCkuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSk7YS5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBhLm9yaWdpbmFsRXZlbnQubW91c2VIYW5kbGVkPXRydWV9fSxfbW91c2VNb3ZlOmZ1bmN0aW9uKGEpe2lmKGMuYnJvd3Nlci5tc2llJiYhKGRvY3VtZW50LmRvY3VtZW50TW9kZT49OSkmJiFhLmJ1dHRvbilyZXR1cm4gdGhpcy5fbW91c2VVcChhKTtpZih0aGlzLl9tb3VzZVN0YXJ0ZWQpe3RoaXMuX21vdXNlRHJhZyhhKTsKcmV0dXJuIGEucHJldmVudERlZmF1bHQoKX1pZih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGEpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGEpKSh0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydCh0aGlzLl9tb3VzZURvd25FdmVudCxhKSE9PWZhbHNlKT90aGlzLl9tb3VzZURyYWcoYSk6dGhpcy5fbW91c2VVcChhKTtyZXR1cm4hdGhpcy5fbW91c2VTdGFydGVkfSxfbW91c2VVcDpmdW5jdGlvbihhKXtjKGRvY3VtZW50KS51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSk7aWYodGhpcy5fbW91c2VTdGFydGVkKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9ZmFsc2U7YS50YXJnZXQ9PXRoaXMuX21vdXNlRG93bkV2ZW50LnRhcmdldCYmYy5kYXRhKGEudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiwKdHJ1ZSk7dGhpcy5fbW91c2VTdG9wKGEpfXJldHVybiBmYWxzZX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLWEucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLWEucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHRydWV9fSl9KShqUXVlcnkpOwoKLyoKICogalF1ZXJ5IFVJIFNvcnRhYmxlIDEuOC4xMQogKgogKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvU29ydGFibGVzCiAqCiAqIERlcGVuZHM6CiAqCWpxdWVyeS51aS5jb3JlLmpzCiAqCWpxdWVyeS51aS5tb3VzZS5qcwogKglqcXVlcnkudWkud2lkZ2V0LmpzCiAqLwooZnVuY3Rpb24oZCl7ZC53aWRnZXQoInVpLnNvcnRhYmxlIixkLnVpLm1vdXNlLHt3aWRnZXRFdmVudFByZWZpeDoic29ydCIsb3B0aW9uczp7YXBwZW5kVG86InBhcmVudCIsYXhpczpmYWxzZSxjb25uZWN0V2l0aDpmYWxzZSxjb250YWlubWVudDpmYWxzZSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OmZhbHNlLGRyb3BPbkVtcHR5OnRydWUsZm9yY2VQbGFjZWhvbGRlclNpemU6ZmFsc2UsZm9yY2VIZWxwZXJTaXplOmZhbHNlLGdyaWQ6ZmFsc2UsaGFuZGxlOmZhbHNlLGhlbHBlcjoib3JpZ2luYWwiLGl0ZW1zOiI+ICoiLG9wYWNpdHk6ZmFsc2UscGxhY2Vob2xkZXI6ZmFsc2UscmV2ZXJ0OmZhbHNlLHNjcm9sbDp0cnVlLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjFFM30sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29udGFpbmVyQ2FjaGU9e307dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zb3J0YWJsZSIpOwp0aGlzLnJlZnJlc2goKTt0aGlzLmZsb2F0aW5nPXRoaXMuaXRlbXMubGVuZ3RoPy9sZWZ0fHJpZ2h0Ly50ZXN0KHRoaXMuaXRlbXNbMF0uaXRlbS5jc3MoImZsb2F0IikpfHwvaW5saW5lfHRhYmxlLWNlbGwvLnRlc3QodGhpcy5pdGVtc1swXS5pdGVtLmNzcygiZGlzcGxheSIpKTpmYWxzZTt0aGlzLm9mZnNldD10aGlzLmVsZW1lbnQub2Zmc2V0KCk7dGhpcy5fbW91c2VJbml0KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlIHVpLXNvcnRhYmxlLWRpc2FibGVkIikucmVtb3ZlRGF0YSgic29ydGFibGUiKS51bmJpbmQoIi5zb3J0YWJsZSIpO3RoaXMuX21vdXNlRGVzdHJveSgpO2Zvcih2YXIgYT10aGlzLml0ZW1zLmxlbmd0aC0xO2E+PTA7YS0tKXRoaXMuaXRlbXNbYV0uaXRlbS5yZW1vdmVEYXRhKCJzb3J0YWJsZS1pdGVtIik7cmV0dXJuIHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24oYSxiKXtpZihhPT09ImRpc2FibGVkIil7dGhpcy5vcHRpb25zW2FdPQpiO3RoaXMud2lkZ2V0KClbYj8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJ1aS1zb3J0YWJsZS1kaXNhYmxlZCIpfWVsc2UgZC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKGEsYil7aWYodGhpcy5yZXZlcnRpbmcpcmV0dXJuIGZhbHNlO2lmKHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8dGhpcy5vcHRpb25zLnR5cGU9PSJzdGF0aWMiKXJldHVybiBmYWxzZTt0aGlzLl9yZWZyZXNoSXRlbXMoYSk7dmFyIGM9bnVsbCxlPXRoaXM7ZChhLnRhcmdldCkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXtpZihkLmRhdGEodGhpcywic29ydGFibGUtaXRlbSIpPT1lKXtjPWQodGhpcyk7cmV0dXJuIGZhbHNlfX0pO2lmKGQuZGF0YShhLnRhcmdldCwic29ydGFibGUtaXRlbSIpPT1lKWM9ZChhLnRhcmdldCk7aWYoIWMpcmV0dXJuIGZhbHNlO2lmKHRoaXMub3B0aW9ucy5oYW5kbGUmJiFiKXt2YXIgZj1mYWxzZTsKZCh0aGlzLm9wdGlvbnMuaGFuZGxlLGMpLmZpbmQoIioiKS5hbmRTZWxmKCkuZWFjaChmdW5jdGlvbigpe2lmKHRoaXM9PWEudGFyZ2V0KWY9dHJ1ZX0pO2lmKCFmKXJldHVybiBmYWxzZX10aGlzLmN1cnJlbnRJdGVtPWM7dGhpcy5fcmVtb3ZlQ3VycmVudHNGcm9tSXRlbXMoKTtyZXR1cm4gdHJ1ZX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oYSxiLGMpe2I9dGhpcy5vcHRpb25zO3ZhciBlPXRoaXM7dGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXM7dGhpcy5yZWZyZXNoUG9zaXRpb25zKCk7dGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVyKGEpO3RoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKTt0aGlzLl9jYWNoZU1hcmdpbnMoKTt0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoKTt0aGlzLm9mZnNldD10aGlzLmN1cnJlbnRJdGVtLm9mZnNldCgpO3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LQp0aGlzLm1hcmdpbnMubGVmdH07dGhpcy5oZWxwZXIuY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIik7dGhpcy5jc3NQb3NpdGlvbj10aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIik7ZC5leHRlbmQodGhpcy5vZmZzZXQse2NsaWNrOntsZWZ0OmEucGFnZVgtdGhpcy5vZmZzZXQubGVmdCx0b3A6YS5wYWdlWS10aGlzLm9mZnNldC50b3B9LHBhcmVudDp0aGlzLl9nZXRQYXJlbnRPZmZzZXQoKSxyZWxhdGl2ZTp0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfSk7dGhpcy5vcmlnaW5hbFBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oYSk7dGhpcy5vcmlnaW5hbFBhZ2VYPWEucGFnZVg7dGhpcy5vcmlnaW5hbFBhZ2VZPWEucGFnZVk7Yi5jdXJzb3JBdCYmdGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihiLmN1cnNvckF0KTt0aGlzLmRvbVBvc2l0aW9uPXtwcmV2OnRoaXMuY3VycmVudEl0ZW0ucHJldigpWzBdLHBhcmVudDp0aGlzLmN1cnJlbnRJdGVtLnBhcmVudCgpWzBdfTsKdGhpcy5oZWxwZXJbMF0hPXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMuY3VycmVudEl0ZW0uaGlkZSgpO3RoaXMuX2NyZWF0ZVBsYWNlaG9sZGVyKCk7Yi5jb250YWlubWVudCYmdGhpcy5fc2V0Q29udGFpbm1lbnQoKTtpZihiLmN1cnNvcil7aWYoZCgiYm9keSIpLmNzcygiY3Vyc29yIikpdGhpcy5fc3RvcmVkQ3Vyc29yPWQoImJvZHkiKS5jc3MoImN1cnNvciIpO2QoImJvZHkiKS5jc3MoImN1cnNvciIsYi5jdXJzb3IpfWlmKGIub3BhY2l0eSl7aWYodGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IikpdGhpcy5fc3RvcmVkT3BhY2l0eT10aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiKTt0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLGIub3BhY2l0eSl9aWYoYi56SW5kZXgpe2lmKHRoaXMuaGVscGVyLmNzcygiekluZGV4IikpdGhpcy5fc3RvcmVkWkluZGV4PXRoaXMuaGVscGVyLmNzcygiekluZGV4Iik7dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLGIuekluZGV4KX1pZih0aGlzLnNjcm9sbFBhcmVudFswXSE9CmRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXS50YWdOYW1lIT0iSFRNTCIpdGhpcy5vdmVyZmxvd09mZnNldD10aGlzLnNjcm9sbFBhcmVudC5vZmZzZXQoKTt0aGlzLl90cmlnZ2VyKCJzdGFydCIsYSx0aGlzLl91aUhhc2goKSk7dGhpcy5fcHJlc2VydmVIZWxwZXJQcm9wb3J0aW9uc3x8dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpO2lmKCFjKWZvcihjPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtjPj0wO2MtLSl0aGlzLmNvbnRhaW5lcnNbY10uX3RyaWdnZXIoImFjdGl2YXRlIixhLGUuX3VpSGFzaCh0aGlzKSk7aWYoZC51aS5kZG1hbmFnZXIpZC51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzO2QudWkuZGRtYW5hZ2VyJiYhYi5kcm9wQmVoYXZpb3VyJiZkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGEpO3RoaXMuZHJhZ2dpbmc9dHJ1ZTt0aGlzLmhlbHBlci5hZGRDbGFzcygidWktc29ydGFibGUtaGVscGVyIik7dGhpcy5fbW91c2VEcmFnKGEpOwpyZXR1cm4gdHJ1ZX0sX21vdXNlRHJhZzpmdW5jdGlvbihhKXt0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oYSk7dGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKTtpZighdGhpcy5sYXN0UG9zaXRpb25BYnMpdGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicztpZih0aGlzLm9wdGlvbnMuc2Nyb2xsKXt2YXIgYj10aGlzLm9wdGlvbnMsYz1mYWxzZTtpZih0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJnRoaXMuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWUhPSJIVE1MIil7aWYodGhpcy5vdmVyZmxvd09mZnNldC50b3ArdGhpcy5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0SGVpZ2h0LWEucGFnZVk8Yi5zY3JvbGxTZW5zaXRpdml0eSl0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9Yz10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3ArYi5zY3JvbGxTcGVlZDtlbHNlIGlmKGEucGFnZVktdGhpcy5vdmVyZmxvd09mZnNldC50b3A8CmIuc2Nyb2xsU2Vuc2l0aXZpdHkpdGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPWM9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLWIuc2Nyb2xsU3BlZWQ7aWYodGhpcy5vdmVyZmxvd09mZnNldC5sZWZ0K3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldFdpZHRoLWEucGFnZVg8Yi5zY3JvbGxTZW5zaXRpdml0eSl0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PWM9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdCtiLnNjcm9sbFNwZWVkO2Vsc2UgaWYoYS5wYWdlWC10aGlzLm92ZXJmbG93T2Zmc2V0LmxlZnQ8Yi5zY3JvbGxTZW5zaXRpdml0eSl0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PWM9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdC1iLnNjcm9sbFNwZWVkfWVsc2V7aWYoYS5wYWdlWS1kKGRvY3VtZW50KS5zY3JvbGxUb3AoKTxiLnNjcm9sbFNlbnNpdGl2aXR5KWM9ZChkb2N1bWVudCkuc2Nyb2xsVG9wKGQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLQpiLnNjcm9sbFNwZWVkKTtlbHNlIGlmKGQod2luZG93KS5oZWlnaHQoKS0oYS5wYWdlWS1kKGRvY3VtZW50KS5zY3JvbGxUb3AoKSk8Yi5zY3JvbGxTZW5zaXRpdml0eSljPWQoZG9jdW1lbnQpLnNjcm9sbFRvcChkKGRvY3VtZW50KS5zY3JvbGxUb3AoKStiLnNjcm9sbFNwZWVkKTtpZihhLnBhZ2VYLWQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKTxiLnNjcm9sbFNlbnNpdGl2aXR5KWM9ZChkb2N1bWVudCkuc2Nyb2xsTGVmdChkKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCktYi5zY3JvbGxTcGVlZCk7ZWxzZSBpZihkKHdpbmRvdykud2lkdGgoKS0oYS5wYWdlWC1kKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkpPGIuc2Nyb2xsU2Vuc2l0aXZpdHkpYz1kKGRvY3VtZW50KS5zY3JvbGxMZWZ0KGQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKStiLnNjcm9sbFNwZWVkKX1jIT09ZmFsc2UmJmQudWkuZGRtYW5hZ2VyJiYhYi5kcm9wQmVoYXZpb3VyJiZkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLAphKX10aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpO2lmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ5Iil0aGlzLmhlbHBlclswXS5zdHlsZS5sZWZ0PXRoaXMucG9zaXRpb24ubGVmdCsicHgiO2lmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ4Iil0aGlzLmhlbHBlclswXS5zdHlsZS50b3A9dGhpcy5wb3NpdGlvbi50b3ArInB4Ijtmb3IoYj10aGlzLml0ZW1zLmxlbmd0aC0xO2I+PTA7Yi0tKXtjPXRoaXMuaXRlbXNbYl07dmFyIGU9Yy5pdGVtWzBdLGY9dGhpcy5faW50ZXJzZWN0c1dpdGhQb2ludGVyKGMpO2lmKGYpaWYoZSE9dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5wbGFjZWhvbGRlcltmPT0xPyJuZXh0IjoicHJldiJdKClbMF0hPWUmJiFkLnVpLmNvbnRhaW5zKHRoaXMucGxhY2Vob2xkZXJbMF0sZSkmJih0aGlzLm9wdGlvbnMudHlwZT09InNlbWktZHluYW1pYyI/IWQudWkuY29udGFpbnModGhpcy5lbGVtZW50WzBdLAplKTp0cnVlKSl7dGhpcy5kaXJlY3Rpb249Zj09MT8iZG93biI6InVwIjtpZih0aGlzLm9wdGlvbnMudG9sZXJhbmNlPT0icG9pbnRlciJ8fHRoaXMuX2ludGVyc2VjdHNXaXRoU2lkZXMoYykpdGhpcy5fcmVhcnJhbmdlKGEsYyk7ZWxzZSBicmVhazt0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLGEsdGhpcy5fdWlIYXNoKCkpO2JyZWFrfX10aGlzLl9jb250YWN0Q29udGFpbmVycyhhKTtkLnVpLmRkbWFuYWdlciYmZC51aS5kZG1hbmFnZXIuZHJhZyh0aGlzLGEpO3RoaXMuX3RyaWdnZXIoInNvcnQiLGEsdGhpcy5fdWlIYXNoKCkpO3RoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9zaXRpb25BYnM7cmV0dXJuIGZhbHNlfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGEsYil7aWYoYSl7ZC51aS5kZG1hbmFnZXImJiF0aGlzLm9wdGlvbnMuZHJvcEJlaGF2aW91ciYmZC51aS5kZG1hbmFnZXIuZHJvcCh0aGlzLGEpO2lmKHRoaXMub3B0aW9ucy5yZXZlcnQpe3ZhciBjPXRoaXM7Yj1jLnBsYWNlaG9sZGVyLm9mZnNldCgpOwpjLnJldmVydGluZz10cnVlO2QodGhpcy5oZWxwZXIpLmFuaW1hdGUoe2xlZnQ6Yi5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LWMubWFyZ2lucy5sZWZ0Kyh0aGlzLm9mZnNldFBhcmVudFswXT09ZG9jdW1lbnQuYm9keT8wOnRoaXMub2Zmc2V0UGFyZW50WzBdLnNjcm9sbExlZnQpLHRvcDpiLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLWMubWFyZ2lucy50b3ArKHRoaXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsVG9wKX0scGFyc2VJbnQodGhpcy5vcHRpb25zLnJldmVydCwxMCl8fDUwMCxmdW5jdGlvbigpe2MuX2NsZWFyKGEpfSl9ZWxzZSB0aGlzLl9jbGVhcihhLGIpO3JldHVybiBmYWxzZX19LGNhbmNlbDpmdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYodGhpcy5kcmFnZ2luZyl7dGhpcy5fbW91c2VVcCh7dGFyZ2V0Om51bGx9KTt0aGlzLm9wdGlvbnMuaGVscGVyPT0ib3JpZ2luYWwiP3RoaXMuY3VycmVudEl0ZW0uY3NzKHRoaXMuX3N0b3JlZENTUykucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpOgp0aGlzLmN1cnJlbnRJdGVtLnNob3coKTtmb3IodmFyIGI9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2I+PTA7Yi0tKXt0aGlzLmNvbnRhaW5lcnNbYl0uX3RyaWdnZXIoImRlYWN0aXZhdGUiLG51bGwsYS5fdWlIYXNoKHRoaXMpKTtpZih0aGlzLmNvbnRhaW5lcnNbYl0uY29udGFpbmVyQ2FjaGUub3Zlcil7dGhpcy5jb250YWluZXJzW2JdLl90cmlnZ2VyKCJvdXQiLG51bGwsYS5fdWlIYXNoKHRoaXMpKTt0aGlzLmNvbnRhaW5lcnNbYl0uY29udGFpbmVyQ2FjaGUub3Zlcj0wfX19aWYodGhpcy5wbGFjZWhvbGRlcil7dGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlJiZ0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wbGFjZWhvbGRlclswXSk7dGhpcy5vcHRpb25zLmhlbHBlciE9Im9yaWdpbmFsIiYmdGhpcy5oZWxwZXImJnRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUmJnRoaXMuaGVscGVyLnJlbW92ZSgpO2QuZXh0ZW5kKHRoaXMse2hlbHBlcjpudWxsLApkcmFnZ2luZzpmYWxzZSxyZXZlcnRpbmc6ZmFsc2UsX25vRmluYWxTb3J0Om51bGx9KTt0aGlzLmRvbVBvc2l0aW9uLnByZXY/ZCh0aGlzLmRvbVBvc2l0aW9uLnByZXYpLmFmdGVyKHRoaXMuY3VycmVudEl0ZW0pOmQodGhpcy5kb21Qb3NpdGlvbi5wYXJlbnQpLnByZXBlbmQodGhpcy5jdXJyZW50SXRlbSl9cmV0dXJuIHRoaXN9LHNlcmlhbGl6ZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KGEmJmEuY29ubmVjdGVkKSxjPVtdO2E9YXx8e307ZChiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9KGQoYS5pdGVtfHx0aGlzKS5hdHRyKGEuYXR0cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKGEuZXhwcmVzc2lvbnx8LyguKylbLT1fXSguKykvKTtpZihlKWMucHVzaCgoYS5rZXl8fGVbMV0rIltdIikrIj0iKyhhLmtleSYmYS5leHByZXNzaW9uP2VbMV06ZVsyXSkpfSk7IWMubGVuZ3RoJiZhLmtleSYmYy5wdXNoKGEua2V5KyI9Iik7cmV0dXJuIGMuam9pbigiJiIpfSwKdG9BcnJheTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KGEmJmEuY29ubmVjdGVkKSxjPVtdO2E9YXx8e307Yi5lYWNoKGZ1bmN0aW9uKCl7Yy5wdXNoKGQoYS5pdGVtfHx0aGlzKS5hdHRyKGEuYXR0cmlidXRlfHwiaWQiKXx8IiIpfSk7cmV0dXJuIGN9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnBvc2l0aW9uQWJzLmxlZnQsYz1iK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsZT10aGlzLnBvc2l0aW9uQWJzLnRvcCxmPWUrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsZz1hLmxlZnQsaD1nK2Eud2lkdGgsaT1hLnRvcCxrPWkrYS5oZWlnaHQsaj10aGlzLm9mZnNldC5jbGljay50b3AsbD10aGlzLm9mZnNldC5jbGljay5sZWZ0O2o9ZStqPmkmJmUrajxrJiZiK2w+ZyYmYitsPGg7cmV0dXJuIHRoaXMub3B0aW9ucy50b2xlcmFuY2U9PSJwb2ludGVyInx8dGhpcy5vcHRpb25zLmZvcmNlUG9pbnRlckZvckNvbnRhaW5lcnN8fAp0aGlzLm9wdGlvbnMudG9sZXJhbmNlIT0icG9pbnRlciImJnRoaXMuaGVscGVyUHJvcG9ydGlvbnNbdGhpcy5mbG9hdGluZz8id2lkdGgiOiJoZWlnaHQiXT5hW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0/ajpnPGIrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yJiZjLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMjxoJiZpPGUrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMiYmZi10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPGt9LF9pbnRlcnNlY3RzV2l0aFBvaW50ZXI6ZnVuY3Rpb24oYSl7dmFyIGI9ZC51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCxhLnRvcCxhLmhlaWdodCk7YT1kLnVpLmlzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQsYS5sZWZ0LGEud2lkdGgpO2I9YiYmYTthPXRoaXMuX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbigpOwp2YXIgYz10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO2lmKCFiKXJldHVybiBmYWxzZTtyZXR1cm4gdGhpcy5mbG9hdGluZz9jJiZjPT0icmlnaHQifHxhPT0iZG93biI/MjoxOmEmJihhPT0iZG93biI/MjoxKX0sX2ludGVyc2VjdHNXaXRoU2lkZXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZC51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCxhLnRvcCthLmhlaWdodC8yLGEuaGVpZ2h0KTthPWQudWkuaXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCxhLmxlZnQrYS53aWR0aC8yLGEud2lkdGgpO3ZhciBjPXRoaXMuX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbigpLGU9dGhpcy5fZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb24oKTtyZXR1cm4gdGhpcy5mbG9hdGluZyYmZT9lPT0icmlnaHQiJiZhfHxlPT0ibGVmdCImJiFhOmMmJihjPT0iZG93biImJmJ8fGM9PSJ1cCImJiFiKX0sCl9nZXREcmFnVmVydGljYWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvc2l0aW9uQWJzLnRvcC10aGlzLmxhc3RQb3NpdGlvbkFicy50b3A7cmV0dXJuIGEhPTAmJihhPjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gYSE9MCYmKGE+MD8icmlnaHQiOiJsZWZ0Iil9LHJlZnJlc2g6ZnVuY3Rpb24oYSl7dGhpcy5fcmVmcmVzaEl0ZW1zKGEpO3RoaXMucmVmcmVzaFBvc2l0aW9ucygpO3JldHVybiB0aGlzfSxfY29ubmVjdFdpdGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7cmV0dXJuIGEuY29ubmVjdFdpdGguY29uc3RydWN0b3I9PVN0cmluZz9bYS5jb25uZWN0V2l0aF06YS5jb25uZWN0V2l0aH0sX2dldEl0ZW1zQXNqUXVlcnk6ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxlPXRoaXMuX2Nvbm5lY3RXaXRoKCk7CmlmKGUmJmEpZm9yKGE9ZS5sZW5ndGgtMTthPj0wO2EtLSlmb3IodmFyIGY9ZChlW2FdKSxnPWYubGVuZ3RoLTE7Zz49MDtnLS0pe3ZhciBoPWQuZGF0YShmW2ddLCJzb3J0YWJsZSIpO2lmKGgmJmghPXRoaXMmJiFoLm9wdGlvbnMuZGlzYWJsZWQpYy5wdXNoKFtkLmlzRnVuY3Rpb24oaC5vcHRpb25zLml0ZW1zKT9oLm9wdGlvbnMuaXRlbXMuY2FsbChoLmVsZW1lbnQpOmQoaC5vcHRpb25zLml0ZW1zLGguZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSxoXSl9Yy5wdXNoKFtkLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnQsbnVsbCx7b3B0aW9uczp0aGlzLm9wdGlvbnMsaXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZCh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KS5ub3QoIi51aS1zb3J0YWJsZS1oZWxwZXIiKS5ub3QoIi51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciIpLAp0aGlzXSk7Zm9yKGE9Yy5sZW5ndGgtMTthPj0wO2EtLSljW2FdWzBdLmVhY2goZnVuY3Rpb24oKXtiLnB1c2godGhpcyl9KTtyZXR1cm4gZChiKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuY3VycmVudEl0ZW0uZmluZCgiOmRhdGEoc29ydGFibGUtaXRlbSkiKSxiPTA7Yjx0aGlzLml0ZW1zLmxlbmd0aDtiKyspZm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYVtjXT09dGhpcy5pdGVtc1tiXS5pdGVtWzBdJiZ0aGlzLml0ZW1zLnNwbGljZShiLDEpfSxfcmVmcmVzaEl0ZW1zOmZ1bmN0aW9uKGEpe3RoaXMuaXRlbXM9W107dGhpcy5jb250YWluZXJzPVt0aGlzXTt2YXIgYj10aGlzLml0ZW1zLGM9W1tkLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sYSx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZCh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSwKdGhpc11dLGU9dGhpcy5fY29ubmVjdFdpdGgoKTtpZihlKWZvcih2YXIgZj1lLmxlbmd0aC0xO2Y+PTA7Zi0tKWZvcih2YXIgZz1kKGVbZl0pLGg9Zy5sZW5ndGgtMTtoPj0wO2gtLSl7dmFyIGk9ZC5kYXRhKGdbaF0sInNvcnRhYmxlIik7aWYoaSYmaSE9dGhpcyYmIWkub3B0aW9ucy5kaXNhYmxlZCl7Yy5wdXNoKFtkLmlzRnVuY3Rpb24oaS5vcHRpb25zLml0ZW1zKT9pLm9wdGlvbnMuaXRlbXMuY2FsbChpLmVsZW1lbnRbMF0sYSx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZChpLm9wdGlvbnMuaXRlbXMsaS5lbGVtZW50KSxpXSk7dGhpcy5jb250YWluZXJzLnB1c2goaSl9fWZvcihmPWMubGVuZ3RoLTE7Zj49MDtmLS0pe2E9Y1tmXVsxXTtlPWNbZl1bMF07aD0wO2ZvcihnPWUubGVuZ3RoO2g8ZztoKyspe2k9ZChlW2hdKTtpLmRhdGEoInNvcnRhYmxlLWl0ZW0iLGEpO2IucHVzaCh7aXRlbTppLGluc3RhbmNlOmEsd2lkdGg6MCxoZWlnaHQ6MCxsZWZ0OjAsdG9wOjB9KX19fSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKGEpe2lmKHRoaXMub2Zmc2V0UGFyZW50JiYKdGhpcy5oZWxwZXIpdGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpO2Zvcih2YXIgYj10aGlzLml0ZW1zLmxlbmd0aC0xO2I+PTA7Yi0tKXt2YXIgYz10aGlzLml0ZW1zW2JdLGU9dGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQ/ZCh0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudCxjLml0ZW0pOmMuaXRlbTtpZighYSl7Yy53aWR0aD1lLm91dGVyV2lkdGgoKTtjLmhlaWdodD1lLm91dGVySGVpZ2h0KCl9ZT1lLm9mZnNldCgpO2MubGVmdD1lLmxlZnQ7Yy50b3A9ZS50b3B9aWYodGhpcy5vcHRpb25zLmN1c3RvbSYmdGhpcy5vcHRpb25zLmN1c3RvbS5yZWZyZXNoQ29udGFpbmVycyl0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzLmNhbGwodGhpcyk7ZWxzZSBmb3IoYj10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7Yj49MDtiLS0pe2U9dGhpcy5jb250YWluZXJzW2JdLmVsZW1lbnQub2Zmc2V0KCk7dGhpcy5jb250YWluZXJzW2JdLmNvbnRhaW5lckNhY2hlLmxlZnQ9CmUubGVmdDt0aGlzLmNvbnRhaW5lcnNbYl0uY29udGFpbmVyQ2FjaGUudG9wPWUudG9wO3RoaXMuY29udGFpbmVyc1tiXS5jb250YWluZXJDYWNoZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbYl0uZWxlbWVudC5vdXRlcldpZHRoKCk7dGhpcy5jb250YWluZXJzW2JdLmNvbnRhaW5lckNhY2hlLmhlaWdodD10aGlzLmNvbnRhaW5lcnNbYl0uZWxlbWVudC5vdXRlckhlaWdodCgpfXJldHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dGhpcyxjPWIub3B0aW9ucztpZighYy5wbGFjZWhvbGRlcnx8Yy5wbGFjZWhvbGRlci5jb25zdHJ1Y3Rvcj09U3RyaW5nKXt2YXIgZT1jLnBsYWNlaG9sZGVyO2MucGxhY2Vob2xkZXI9e2VsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZj1kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYi5jdXJyZW50SXRlbVswXS5ub2RlTmFtZSkpLmFkZENsYXNzKGV8fGIuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUtcGxhY2Vob2xkZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIilbMF07CmlmKCFlKWYuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjtyZXR1cm4gZn0sdXBkYXRlOmZ1bmN0aW9uKGYsZyl7aWYoIShlJiYhYy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkpe2cuaGVpZ2h0KCl8fGcuaGVpZ2h0KGIuY3VycmVudEl0ZW0uaW5uZXJIZWlnaHQoKS1wYXJzZUludChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1RvcCIpfHwwLDEwKS1wYXJzZUludChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0JvdHRvbSIpfHwwLDEwKSk7Zy53aWR0aCgpfHxnLndpZHRoKGIuY3VycmVudEl0ZW0uaW5uZXJXaWR0aCgpLXBhcnNlSW50KGIuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nTGVmdCIpfHwwLDEwKS1wYXJzZUludChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1JpZ2h0Iil8fDAsMTApKX19fX1iLnBsYWNlaG9sZGVyPWQoYy5wbGFjZWhvbGRlci5lbGVtZW50LmNhbGwoYi5lbGVtZW50LGIuY3VycmVudEl0ZW0pKTtiLmN1cnJlbnRJdGVtLmFmdGVyKGIucGxhY2Vob2xkZXIpOwpjLnBsYWNlaG9sZGVyLnVwZGF0ZShiLGIucGxhY2Vob2xkZXIpfSxfY29udGFjdENvbnRhaW5lcnM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPW51bGwsYz1udWxsLGU9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2U+PTA7ZS0tKWlmKCFkLnVpLmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5jb250YWluZXJzW2VdLmVsZW1lbnRbMF0pKWlmKHRoaXMuX2ludGVyc2VjdHNXaXRoKHRoaXMuY29udGFpbmVyc1tlXS5jb250YWluZXJDYWNoZSkpe2lmKCEoYiYmZC51aS5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbZV0uZWxlbWVudFswXSxiLmVsZW1lbnRbMF0pKSl7Yj10aGlzLmNvbnRhaW5lcnNbZV07Yz1lfX1lbHNlIGlmKHRoaXMuY29udGFpbmVyc1tlXS5jb250YWluZXJDYWNoZS5vdmVyKXt0aGlzLmNvbnRhaW5lcnNbZV0uX3RyaWdnZXIoIm91dCIsYSx0aGlzLl91aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tlXS5jb250YWluZXJDYWNoZS5vdmVyPTB9aWYoYilpZih0aGlzLmNvbnRhaW5lcnMubGVuZ3RoPT09CjEpe3RoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dlcigib3ZlciIsYSx0aGlzLl91aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tjXS5jb250YWluZXJDYWNoZS5vdmVyPTF9ZWxzZSBpZih0aGlzLmN1cnJlbnRDb250YWluZXIhPXRoaXMuY29udGFpbmVyc1tjXSl7Yj0xRTQ7ZT1udWxsO2Zvcih2YXIgZj10aGlzLnBvc2l0aW9uQWJzW3RoaXMuY29udGFpbmVyc1tjXS5mbG9hdGluZz8ibGVmdCI6InRvcCJdLGc9dGhpcy5pdGVtcy5sZW5ndGgtMTtnPj0wO2ctLSlpZihkLnVpLmNvbnRhaW5zKHRoaXMuY29udGFpbmVyc1tjXS5lbGVtZW50WzBdLHRoaXMuaXRlbXNbZ10uaXRlbVswXSkpe3ZhciBoPXRoaXMuaXRlbXNbZ11bdGhpcy5jb250YWluZXJzW2NdLmZsb2F0aW5nPyJsZWZ0IjoidG9wIl07aWYoTWF0aC5hYnMoaC1mKTxiKXtiPU1hdGguYWJzKGgtZik7ZT10aGlzLml0ZW1zW2ddfX1pZihlfHx0aGlzLm9wdGlvbnMuZHJvcE9uRW1wdHkpe3RoaXMuY3VycmVudENvbnRhaW5lcj0KdGhpcy5jb250YWluZXJzW2NdO2U/dGhpcy5fcmVhcnJhbmdlKGEsZSxudWxsLHRydWUpOnRoaXMuX3JlYXJyYW5nZShhLG51bGwsdGhpcy5jb250YWluZXJzW2NdLmVsZW1lbnQsdHJ1ZSk7dGhpcy5fdHJpZ2dlcigiY2hhbmdlIixhLHRoaXMuX3VpSGFzaCgpKTt0aGlzLmNvbnRhaW5lcnNbY10uX3RyaWdnZXIoImNoYW5nZSIsYSx0aGlzLl91aUhhc2godGhpcykpO3RoaXMub3B0aW9ucy5wbGFjZWhvbGRlci51cGRhdGUodGhpcy5jdXJyZW50Q29udGFpbmVyLHRoaXMucGxhY2Vob2xkZXIpO3RoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dlcigib3ZlciIsYSx0aGlzLl91aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tjXS5jb250YWluZXJDYWNoZS5vdmVyPTF9fX0sX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnM7YT1kLmlzRnVuY3Rpb24oYi5oZWxwZXIpP2QoYi5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFthLHRoaXMuY3VycmVudEl0ZW1dKSk6CmIuaGVscGVyPT0iY2xvbmUiP3RoaXMuY3VycmVudEl0ZW0uY2xvbmUoKTp0aGlzLmN1cnJlbnRJdGVtO2EucGFyZW50cygiYm9keSIpLmxlbmd0aHx8ZChiLmFwcGVuZFRvIT0icGFyZW50Ij9iLmFwcGVuZFRvOnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSlbMF0uYXBwZW5kQ2hpbGQoYVswXSk7aWYoYVswXT09dGhpcy5jdXJyZW50SXRlbVswXSl0aGlzLl9zdG9yZWRDU1M9e3dpZHRoOnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUud2lkdGgsaGVpZ2h0OnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUuaGVpZ2h0LHBvc2l0aW9uOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJwb3NpdGlvbiIpLHRvcDp0aGlzLmN1cnJlbnRJdGVtLmNzcygidG9wIiksbGVmdDp0aGlzLmN1cnJlbnRJdGVtLmNzcygibGVmdCIpfTtpZihhWzBdLnN0eWxlLndpZHRoPT0iInx8Yi5mb3JjZUhlbHBlclNpemUpYS53aWR0aCh0aGlzLmN1cnJlbnRJdGVtLndpZHRoKCkpO2lmKGFbMF0uc3R5bGUuaGVpZ2h0PT0KIiJ8fGIuZm9yY2VIZWxwZXJTaXplKWEuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpO3JldHVybiBhfSxfYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcjpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09InN0cmluZyIpYT1hLnNwbGl0KCIgIik7aWYoZC5pc0FycmF5KGEpKWE9e2xlZnQ6K2FbMF0sdG9wOithWzFdfHwwfTtpZigibGVmdCJpbiBhKXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9YS5sZWZ0K3RoaXMubWFyZ2lucy5sZWZ0O2lmKCJyaWdodCJpbiBhKXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC1hLnJpZ2h0K3RoaXMubWFyZ2lucy5sZWZ0O2lmKCJ0b3AiaW4gYSl0aGlzLm9mZnNldC5jbGljay50b3A9YS50b3ArdGhpcy5tYXJnaW5zLnRvcDtpZigiYm90dG9tImluIGEpdGhpcy5vZmZzZXQuY2xpY2sudG9wPXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LWEuYm90dG9tK3RoaXMubWFyZ2lucy50b3B9LF9nZXRQYXJlbnRPZmZzZXQ6ZnVuY3Rpb24oKXt0aGlzLm9mZnNldFBhcmVudD0KdGhpcy5oZWxwZXIub2Zmc2V0UGFyZW50KCk7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQub2Zmc2V0KCk7aWYodGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZkLnVpLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSl7YS5sZWZ0Kz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk7YS50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpfWlmKHRoaXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5ib2R5fHx0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lJiZ0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PSJodG1sIiYmZC5icm93c2VyLm1zaWUpYT17dG9wOjAsbGVmdDowfTtyZXR1cm57dG9wOmEudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OmEubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwKMTApfHwwKX19LF9nZXRSZWxhdGl2ZU9mZnNldDpmdW5jdGlvbigpe2lmKHRoaXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSIpe3ZhciBhPXRoaXMuY3VycmVudEl0ZW0ucG9zaXRpb24oKTtyZXR1cm57dG9wOmEudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDphLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpfX1lbHNlIHJldHVybnt0b3A6MCxsZWZ0OjB9fSxfY2FjaGVNYXJnaW5zOmZ1bmN0aW9uKCl7dGhpcy5tYXJnaW5zPXtsZWZ0OnBhcnNlSW50KHRoaXMuY3VycmVudEl0ZW0uY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luVG9wIiksMTApfHwwfX0sX2NhY2hlSGVscGVyUHJvcG9ydGlvbnM6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlclByb3BvcnRpb25zPQp7d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zO2lmKGEuY29udGFpbm1lbnQ9PSJwYXJlbnQiKWEuY29udGFpbm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZTtpZihhLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQifHxhLmNvbnRhaW5tZW50PT0id2luZG93Iil0aGlzLmNvbnRhaW5tZW50PVswLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsMC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCxkKGEuY29udGFpbm1lbnQ9PSJkb2N1bWVudCI/ZG9jdW1lbnQ6d2luZG93KS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKGQoYS5jb250YWlubWVudD09ImRvY3VtZW50Ij9kb2N1bWVudDp3aW5kb3cpLmhlaWdodCgpfHwKZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF07aWYoIS9eKGRvY3VtZW50fHdpbmRvd3xwYXJlbnQpJC8udGVzdChhLmNvbnRhaW5tZW50KSl7dmFyIGI9ZChhLmNvbnRhaW5tZW50KVswXTthPWQoYS5jb250YWlubWVudCkub2Zmc2V0KCk7dmFyIGM9ZChiKS5jc3MoIm92ZXJmbG93IikhPSJoaWRkZW4iO3RoaXMuY29udGFpbm1lbnQ9W2EubGVmdCsocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGQoYikuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLmxlZnQsYS50b3ArKHBhcnNlSW50KGQoYikuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGQoYikuY3NzKCJwYWRkaW5nVG9wIiksMTApfHwwKS10aGlzLm1hcmdpbnMudG9wLGEubGVmdCsoYz9NYXRoLm1heChiLnNjcm9sbFdpZHRoLApiLm9mZnNldFdpZHRoKTpiLm9mZnNldFdpZHRoKS0ocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGQoYikuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsYS50b3ArKGM/TWF0aC5tYXgoYi5zY3JvbGxIZWlnaHQsYi5vZmZzZXRIZWlnaHQpOmIub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoZChiKS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdfX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGEsYil7aWYoIWIpYj10aGlzLnBvc2l0aW9uO2E9YT09ImFic29sdXRlIj8xOi0xO3ZhciBjPXRoaXMuY3NzUG9zaXRpb249PSJhYnNvbHV0ZSImJiEodGhpcy5zY3JvbGxQYXJlbnRbMF0hPQpkb2N1bWVudCYmZC51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkpP3RoaXMub2Zmc2V0UGFyZW50OnRoaXMuc2Nyb2xsUGFyZW50LGU9LyhodG1sfGJvZHkpL2kudGVzdChjWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6Yi50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKmErdGhpcy5vZmZzZXQucGFyZW50LnRvcCphLShkLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmU/MDpjLnNjcm9sbFRvcCgpKSphKSxsZWZ0OmIubGVmdCt0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0KmErdGhpcy5vZmZzZXQucGFyZW50LmxlZnQqYS0oZC5icm93c2VyLnNhZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6CmU/MDpjLnNjcm9sbExlZnQoKSkqYSl9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnMsYz10aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUiJiYhKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmZC51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkpP3RoaXMub2Zmc2V0UGFyZW50OnRoaXMuc2Nyb2xsUGFyZW50LGU9LyhodG1sfGJvZHkpL2kudGVzdChjWzBdLnRhZ05hbWUpO2lmKHRoaXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSImJiEodGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9dGhpcy5vZmZzZXRQYXJlbnRbMF0pKXRoaXMub2Zmc2V0LnJlbGF0aXZlPXRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCk7dmFyIGY9YS5wYWdlWCxnPWEucGFnZVk7aWYodGhpcy5vcmlnaW5hbFBvc2l0aW9uKXtpZih0aGlzLmNvbnRhaW5tZW50KXtpZihhLnBhZ2VYLQp0aGlzLm9mZnNldC5jbGljay5sZWZ0PHRoaXMuY29udGFpbm1lbnRbMF0pZj10aGlzLmNvbnRhaW5tZW50WzBdK3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQ7aWYoYS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5jb250YWlubWVudFsxXSlnPXRoaXMuY29udGFpbm1lbnRbMV0rdGhpcy5vZmZzZXQuY2xpY2sudG9wO2lmKGEucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD50aGlzLmNvbnRhaW5tZW50WzJdKWY9dGhpcy5jb250YWlubWVudFsyXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0O2lmKGEucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9wPnRoaXMuY29udGFpbm1lbnRbM10pZz10aGlzLmNvbnRhaW5tZW50WzNdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcH1pZihiLmdyaWQpe2c9dGhpcy5vcmlnaW5hbFBhZ2VZK01hdGgucm91bmQoKGctdGhpcy5vcmlnaW5hbFBhZ2VZKS9iLmdyaWRbMV0pKmIuZ3JpZFsxXTtnPXRoaXMuY29udGFpbm1lbnQ/IShnLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDwKdGhpcy5jb250YWlubWVudFsxXXx8Zy10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXSk/ZzohKGctdGhpcy5vZmZzZXQuY2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV0pP2ctYi5ncmlkWzFdOmcrYi5ncmlkWzFdOmc7Zj10aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoZi10aGlzLm9yaWdpbmFsUGFnZVgpL2IuZ3JpZFswXSkqYi5ncmlkWzBdO2Y9dGhpcy5jb250YWlubWVudD8hKGYtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdfHxmLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSk/ZjohKGYtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdKT9mLWIuZ3JpZFswXTpmK2IuZ3JpZFswXTpmfX1yZXR1cm57dG9wOmctdGhpcy5vZmZzZXQuY2xpY2sudG9wLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wKyhkLmJyb3dzZXIuc2FmYXJpJiYKdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmU/MDpjLnNjcm9sbFRvcCgpKSxsZWZ0OmYtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KyhkLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6dGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmU/MDpjLnNjcm9sbExlZnQoKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKGEsYixjLGUpe2M/Y1swXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTpiLml0ZW1bMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlclswXSx0aGlzLmRpcmVjdGlvbj09ImRvd24iP2IuaXRlbVswXTpiLml0ZW1bMF0ubmV4dFNpYmxpbmcpO3RoaXMuY291bnRlcj0KdGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7dmFyIGY9dGhpcyxnPXRoaXMuY291bnRlcjt3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2c9PWYuY291bnRlciYmZi5yZWZyZXNoUG9zaXRpb25zKCFlKX0sMCl9LF9jbGVhcjpmdW5jdGlvbihhLGIpe3RoaXMucmV2ZXJ0aW5nPWZhbHNlO3ZhciBjPVtdOyF0aGlzLl9ub0ZpbmFsU29ydCYmdGhpcy5jdXJyZW50SXRlbVswXS5wYXJlbnROb2RlJiZ0aGlzLnBsYWNlaG9sZGVyLmJlZm9yZSh0aGlzLmN1cnJlbnRJdGVtKTt0aGlzLl9ub0ZpbmFsU29ydD1udWxsO2lmKHRoaXMuaGVscGVyWzBdPT10aGlzLmN1cnJlbnRJdGVtWzBdKXtmb3IodmFyIGUgaW4gdGhpcy5fc3RvcmVkQ1NTKWlmKHRoaXMuX3N0b3JlZENTU1tlXT09ImF1dG8ifHx0aGlzLl9zdG9yZWRDU1NbZV09PSJzdGF0aWMiKXRoaXMuX3N0b3JlZENTU1tlXT0iIjt0aGlzLmN1cnJlbnRJdGVtLmNzcyh0aGlzLl9zdG9yZWRDU1MpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oZWxwZXIiKX1lbHNlIHRoaXMuY3VycmVudEl0ZW0uc2hvdygpOwp0aGlzLmZyb21PdXRzaWRlJiYhYiYmYy5wdXNoKGZ1bmN0aW9uKGYpe3RoaXMuX3RyaWdnZXIoInJlY2VpdmUiLGYsdGhpcy5fdWlIYXNoKHRoaXMuZnJvbU91dHNpZGUpKX0pO2lmKCh0aGlzLmZyb21PdXRzaWRlfHx0aGlzLmRvbVBvc2l0aW9uLnByZXYhPXRoaXMuY3VycmVudEl0ZW0ucHJldigpLm5vdCgiLnVpLXNvcnRhYmxlLWhlbHBlciIpWzBdfHx0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCE9dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXSkmJiFiKWMucHVzaChmdW5jdGlvbihmKXt0aGlzLl90cmlnZ2VyKCJ1cGRhdGUiLGYsdGhpcy5fdWlIYXNoKCkpfSk7aWYoIWQudWkuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHRoaXMuY3VycmVudEl0ZW1bMF0pKXtifHxjLnB1c2goZnVuY3Rpb24oZil7dGhpcy5fdHJpZ2dlcigicmVtb3ZlIixmLHRoaXMuX3VpSGFzaCgpKX0pO2ZvcihlPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtlPj0wO2UtLSlpZihkLnVpLmNvbnRhaW5zKHRoaXMuY29udGFpbmVyc1tlXS5lbGVtZW50WzBdLAp0aGlzLmN1cnJlbnRJdGVtWzBdKSYmIWIpe2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7Zi5fdHJpZ2dlcigicmVjZWl2ZSIsZyx0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tlXSkpO2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7Zi5fdHJpZ2dlcigidXBkYXRlIixnLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jb250YWluZXJzW2VdKSl9fWZvcihlPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtlPj0wO2UtLSl7Ynx8Yy5wdXNoKGZ1bmN0aW9uKGYpe3JldHVybiBmdW5jdGlvbihnKXtmLl90cmlnZ2VyKCJkZWFjdGl2YXRlIixnLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jb250YWluZXJzW2VdKSk7aWYodGhpcy5jb250YWluZXJzW2VdLmNvbnRhaW5lckNhY2hlLm92ZXIpe2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7Zi5fdHJpZ2dlcigib3V0IiwKZyx0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tlXSkpO3RoaXMuY29udGFpbmVyc1tlXS5jb250YWluZXJDYWNoZS5vdmVyPTB9fXRoaXMuX3N0b3JlZEN1cnNvciYmZCgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLl9zdG9yZWRDdXJzb3IpO3RoaXMuX3N0b3JlZE9wYWNpdHkmJnRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsdGhpcy5fc3RvcmVkT3BhY2l0eSk7aWYodGhpcy5fc3RvcmVkWkluZGV4KXRoaXMuaGVscGVyLmNzcygiekluZGV4Iix0aGlzLl9zdG9yZWRaSW5kZXg9PSJhdXRvIj8iIjp0aGlzLl9zdG9yZWRaSW5kZXgpO3RoaXMuZHJhZ2dpbmc9ZmFsc2U7aWYodGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsKXtpZighYil7dGhpcy5fdHJpZ2dlcigiYmVmb3JlU3RvcCIsYSx0aGlzLl91aUhhc2goKSk7Zm9yKGU9MDtlPGMubGVuZ3RoO2UrKyljW2VdLmNhbGwodGhpcyxhKTt0aGlzLl90cmlnZ2VyKCJzdG9wIixhLHRoaXMuX3VpSGFzaCgpKX1yZXR1cm4gZmFsc2V9Ynx8CnRoaXMuX3RyaWdnZXIoImJlZm9yZVN0b3AiLGEsdGhpcy5fdWlIYXNoKCkpO3RoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTt0aGlzLmhlbHBlclswXSE9dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5oZWxwZXIucmVtb3ZlKCk7dGhpcy5oZWxwZXI9bnVsbDtpZighYil7Zm9yKGU9MDtlPGMubGVuZ3RoO2UrKyljW2VdLmNhbGwodGhpcyxhKTt0aGlzLl90cmlnZ2VyKCJzdG9wIixhLHRoaXMuX3VpSGFzaCgpKX10aGlzLmZyb21PdXRzaWRlPWZhbHNlO3JldHVybiB0cnVlfSxfdHJpZ2dlcjpmdW5jdGlvbigpe2QuV2lkZ2V0LnByb3RvdHlwZS5fdHJpZ2dlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk9PT1mYWxzZSYmdGhpcy5jYW5jZWwoKX0sX3VpSGFzaDpmdW5jdGlvbihhKXt2YXIgYj1hfHx0aGlzO3JldHVybntoZWxwZXI6Yi5oZWxwZXIscGxhY2Vob2xkZXI6Yi5wbGFjZWhvbGRlcnx8ZChbXSkscG9zaXRpb246Yi5wb3NpdGlvbiwKb3JpZ2luYWxQb3NpdGlvbjpiLm9yaWdpbmFsUG9zaXRpb24sb2Zmc2V0OmIucG9zaXRpb25BYnMsaXRlbTpiLmN1cnJlbnRJdGVtLHNlbmRlcjphP2EuZWxlbWVudDpudWxsfX19KTtkLmV4dGVuZChkLnVpLnNvcnRhYmxlLHt2ZXJzaW9uOiIxLjguMTEifSl9KShqUXVlcnkpOwoKLyoqCiAqIENhbGVuZGFyVmlldyBmb3IgalF1ZXJ5CiAqCiAqIEJhc2VkIG9uIENhbGVuZGFyVmlldyBmb3IgUHJvdG90eXBlIGh0dHA6Ly9jYWxlbmRhcnZpZXcub3JnLyB3aGljaCBpcyBiYXNlZAogKiBvbiBEeW5hcmNoIERIVE1MIENhbGVuZGFyIGh0dHA6Ly93d3cuZHluYXJjaC5jb20vcHJvamVjdHMvY2FsZW5kYXIvb2xkLy4KICoKICogQ2FsZW5kYXJWaWV3IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsCiAqIFB1YmxpYyBMaWNlbnNlIChMR1BMKQogKgogKiBVc2FnZToKICogICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogKiAgICAgJCgnI2RhdGVfaW5wdXQnKS5jYWxlbmRhcigpOwogKiAgIH0KICoKICogICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogKiAgICAgJCgnI2RhdGVfaW5wdXQnKS5jYWxlbmRhcih7dHJpZ2dlckVsZW1lbnQ6ICcjZGF0ZV9pbnB1dF90cmlnZ2VyJ30pOwogKiAgIH0KICoKICogICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogKiAgICAgJCgnI2RhdGVfaW5wdXQnKS5jYWxlbmRhcih7cGFyZW50RWxlbWVudDogJyNjYWxlbmRhcl9jb250YWluZXInfSk7CiAqICAgfQogKgogKiBEZWZhdWx0IG9wdGlvbnM6CiAqICAgdHJpZ2dlckVsZW1lbnQ6IG51bGwsIC8vIFBvcHVwIGNhbGVuZGFyCiAqICAgcGFyZW50RWxlbWVudDogbnVsbCwgLy8gSW5saW5lIGNhbGVuZGFyCiAqICAgbWluWWVhcjogMTkwMCwKICogICBtYXhZZWFyOiAyMTAwLAogKiAgIGZpcnN0RGF5T2ZXZWVrOiAxLCAvLyBNb25kYXkKICogICB3ZWVrZW5kOiAiMCw2IiwgLy8gU3VuZGF5IGFuZCBTYXR1cmRheQogKiAgIGRhdGVGb3JtYXQ6ICclWS0lbS0lZCcsCiAqICAgc2VsZWN0SGFuZGxlcjogbnVsbCwgLy8gV2lsbCB1c2UgZGVmYXVsdCBzZWxlY3QgaGFuZGxlcgogKiAgIGNsb3NlSGFuZGxlcjogbnVsbCAvLyBXaWxsIHVzZSBkZWZhdWx0IGNsb3NlIGhhbmRsZXIKICovCjsoZnVuY3Rpb24oJCkgewoJdmFyIENhbGVuZGFyID0gZnVuY3Rpb24oKSB7CgkJdGhpcy5kYXRlID0gbmV3IERhdGUoKTsKCX07CgoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vIENvbnN0YW50cwoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglDYWxlbmRhci5WRVJTSU9OID0gJzEuMic7CglDYWxlbmRhci5UT0RBWSA9ICdUb2RheSc7CgoJQ2FsZW5kYXIuREFZX05BTUVTID0gbmV3IEFycmF5KAoJCSdTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheScKCSk7CgoJQ2FsZW5kYXIuU0hPUlRfREFZX05BTUVTID0gbmV3IEFycmF5KCdTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYScpOwoKCUNhbGVuZGFyLk1PTlRIX05BTUVTID0gbmV3IEFycmF5KAoJCSdKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywKCQknU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInCgkpOwoKCUNhbGVuZGFyLlNIT1JUX01PTlRIX05BTUVTID0gbmV3IEFycmF5KAoJCSdKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYycKCSk7CgoJQ2FsZW5kYXIuTkFWX1BSRVZJT1VTX1lFQVIgID0gLTI7CglDYWxlbmRhci5OQVZfUFJFVklPVVNfTU9OVEggPSAtMTsKCUNhbGVuZGFyLk5BVl9UT0RBWSAgICAgICAgICA9ICAwOwoJQ2FsZW5kYXIuTkFWX05FWFRfTU9OVEggICAgID0gIDE7CglDYWxlbmRhci5OQVZfTkVYVF9ZRUFSICAgICAgPSAgMjsKCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gU3RhdGljIE1ldGhvZHMKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJLyoqCgkgKiBUaGlzIGdldHMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBhIG1vdXNlIGJ1dHRvbiBhbnl3aGVyZSBpbiB0aGUKCSAqIGRvY3VtZW50LCBpZiB0aGUgY2FsZW5kYXIgaXMgc2hvd24uIElmIHRoZSBjbGljayB3YXMgb3V0c2lkZSB0aGUgb3BlbgoJICogY2FsZW5kYXIgdGhpcyBmdW5jdGlvbiBjbG9zZXMgaXQuCgkgKgoJICogQHBhcmFtIGV2ZW50CgkgKi8KCUNhbGVuZGFyLl9jaGVja0NhbGVuZGFyID0gZnVuY3Rpb24oZXZlbnQpIHsKCQlpZiAoIXdpbmRvdy5fcG9wdXBDYWxlbmRhcikgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoJChldmVudC50YXJnZXQpLnBhcmVudHMoKS5pbmRleCgkKHdpbmRvdy5fcG9wdXBDYWxlbmRhci5jb250YWluZXIpKSA+PSAwKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXdpbmRvdy5fcG9wdXBDYWxlbmRhci5jYWxsQ2xvc2VIYW5kbGVyKCk7CgkJcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cgl9CgoJLyoqCgkgKiBFdmVudCBIYW5kbGVycwoJICogQHBhcmFtIGV2ZW50CgkgKi8KCUNhbGVuZGFyLmhhbmRsZU1vdXNlRG93bkV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpewoJCSQoZG9jdW1lbnQpLm1vdXNldXAoQ2FsZW5kYXIuaGFuZGxlTW91c2VVcEV2ZW50KTsKCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoJfQoKCS8qKgoJICogQ2xpY2tzIG9mIGRpZmZlcmVudCBhY3Rpb25zCgkgKiBAcGFyYW0gZXZlbnQKCSAqLwoJQ2FsZW5kYXIuaGFuZGxlTW91c2VVcEV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgZWwgICAgICAgID0gZXZlbnQudGFyZ2V0OwoJCXZhciBjYWxlbmRhciAgPSBlbC5jYWxlbmRhcjsKCQl2YXIgaXNOZXdEYXRlID0gZmFsc2U7CgoJCS8vIElmIHRoZSBlbGVtZW50IHRoYXQgd2FzIGNsaWNrZWQgb24gZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIENhbGVuZGFyCgkJLy8gb2JqZWN0LCByZXR1cm4gYXMgd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgoJCWlmICghY2FsZW5kYXIpIHJldHVybiBmYWxzZTsKCgkJLy8gQ2xpY2tlZCBvbiBhIGRheQoJCWlmICh0eXBlb2YgZWwubmF2QWN0aW9uID09ICd1bmRlZmluZWQnKSB7CgkJCWlmIChjYWxlbmRhci5jdXJyZW50RGF0ZUVsZW1lbnQpIHsKCQkJCWNhbGVuZGFyLmN1cnJlbnREYXRlRWxlbWVudC5yZW1vdmVDbGFzcygnc2VsZWN0ZWQnKTsKCQkJCSQoZWwpLmFkZENsYXNzKCdzZWxlY3RlZCcpOwoJCQkJY2FsZW5kYXIuc2hvdWxkQ2xvc2UgPSAoY2FsZW5kYXIuY3VycmVudERhdGVFbGVtZW50ID09ICQoZWwpKTsKCQkJCWlmICghY2FsZW5kYXIuc2hvdWxkQ2xvc2UpIHsKCQkJCQljYWxlbmRhci5jdXJyZW50RGF0ZUVsZW1lbnQgPSAkKGVsKTsKCQkJCX0KCQkJfQoJCQljYWxlbmRhci5kYXRlLnNldERhdGVPbmx5KGVsLmRhdGUpOwoJCQlpc05ld0RhdGUgPSB0cnVlOwoJCQljYWxlbmRhci5zaG91bGRDbG9zZSA9ICEkKGVsKS5oYXNDbGFzcygnb3RoZXJEYXknKTsKCQkJdmFyIGlzT3RoZXJNb250aCAgICAgPSAhY2FsZW5kYXIuc2hvdWxkQ2xvc2U7CgkJCWlmIChpc090aGVyTW9udGgpIHsKCQkJCWNhbGVuZGFyLnVwZGF0ZShjYWxlbmRhci5kYXRlKTsKCQkJfQoJCX0gZWxzZSB7CgkJCS8vIENsaWNrZWQgb24gYW4gYWN0aW9uIGJ1dHRvbgoJCQl2YXIgZGF0ZSA9IG5ldyBEYXRlKGNhbGVuZGFyLmRhdGUpOwoKCQkJaWYgKGVsLm5hdkFjdGlvbiA9PSBDYWxlbmRhci5OQVZfVE9EQVkpIHsKCQkJCWRhdGUuc2V0RGF0ZU9ubHkobmV3IERhdGUoKSk7CgkJCX0KCgkJCXZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpOwoJCQl2YXIgbW9uID0gZGF0ZS5nZXRNb250aCgpOwoJCQlmdW5jdGlvbiBzZXRNb250aChtKSB7CgkJCQl2YXIgZGF5ID0gZGF0ZS5nZXREYXRlKCk7CgkJCQl2YXIgbWF4ID0gZGF0ZS5nZXRNb250aERheXMobSk7CgkJCQlpZiAoZGF5ID4gbWF4KSBkYXRlLnNldERhdGUobWF4KQoJCQkJCWRhdGUuc2V0TW9udGgobSk7CgkJCX0KCQkJc3dpdGNoIChlbC5uYXZBY3Rpb24pIHsKCgkJCQkvLyBQcmV2aW91cyBZZWFyCgkJCQljYXNlIENhbGVuZGFyLk5BVl9QUkVWSU9VU19ZRUFSOgoJCQkJCWlmICh5ZWFyID4gY2FsZW5kYXIubWluWWVhcikKCQkJCQkJZGF0ZS5zZXRGdWxsWWVhcih5ZWFyIC0gMSk7CgkJCQkJYnJlYWs7CgoJCQkJLy8gUHJldmlvdXMgTW9udGgKCQkJCWNhc2UgQ2FsZW5kYXIuTkFWX1BSRVZJT1VTX01PTlRIOgoJCQkJCWlmIChtb24gPiAwKSB7CgkJCQkJCXNldE1vbnRoKG1vbiAtIDEpOwoJCQkJCX0KCQkJCQllbHNlIGlmICh5ZWFyLS0gPiBjYWxlbmRhci5taW5ZZWFyKSB7CgkJCQkJCWRhdGUuc2V0RnVsbFllYXIoeWVhcik7CgkJCQkJCXNldE1vbnRoKDExKTsKCQkJCQl9CgkJCQkJYnJlYWs7CgoJCQkJLy8gVG9kYXkKCQkJCWNhc2UgQ2FsZW5kYXIuTkFWX1RPREFZOgoJCQkJCWJyZWFrOwoKCQkJCS8vIE5leHQgTW9udGgKCQkJCWNhc2UgQ2FsZW5kYXIuTkFWX05FWFRfTU9OVEg6CgkJCQkJaWYgKG1vbiA8IDExKSB7CgkJCQkJCXNldE1vbnRoKG1vbiArIDEpOwoJCQkJCX0KCQkJCQllbHNlIGlmICh5ZWFyIDwgY2FsZW5kYXIubWF4WWVhcikgewoJCQkJCQlkYXRlLnNldEZ1bGxZZWFyKHllYXIgKyAxKTsKCQkJCQkJc2V0TW9udGgoMCk7CgkJCQkJfQoJCQkJCWJyZWFrOwoKCQkJCS8vIE5leHQgWWVhcgoJCQkJY2FzZSBDYWxlbmRhci5OQVZfTkVYVF9ZRUFSOgoJCQkJCWlmICh5ZWFyIDwgY2FsZW5kYXIubWF4WWVhcikKCQkJCQkJZGF0ZS5zZXRGdWxsWWVhcih5ZWFyICsgMSk7CgkJCQkJYnJlYWs7CgoJCQl9CgoJCQlpZiAoIWRhdGUuZXF1YWxzVG8oY2FsZW5kYXIuZGF0ZSkpIHsKCQkJCWNhbGVuZGFyLnNob3VsZENsb3NlID0gZmFsc2U7CgkJCQljYWxlbmRhci5zZXREYXRlKGRhdGUpOwoJCQkJaXNOZXdEYXRlID0gdHJ1ZTsKCQkJfSBlbHNlIGlmIChlbC5uYXZBY3Rpb24gPT0gMCkgewoJCQkJaXNOZXdEYXRlID0gKGNhbGVuZGFyLnNob3VsZENsb3NlID0gdHJ1ZSk7CgkJCX0KCQl9CgoJCWlmIChpc05ld0RhdGUpIGV2ZW50ICYmIGNhbGVuZGFyLmNhbGxTZWxlY3RIYW5kbGVyKCk7CgkJaWYgKGNhbGVuZGFyLnNob3VsZENsb3NlKSBldmVudCAmJiBjYWxlbmRhci5jYWxsQ2xvc2VIYW5kbGVyKCk7CgkJJChkb2N1bWVudCkudW5iaW5kKCdtb3VzZXVwJywgQ2FsZW5kYXIuaGFuZGxlTW91c2VVcEV2ZW50KTsKCQlyZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTsKCX07CgoJQ2FsZW5kYXIuZGVmYXVsdFNlbGVjdEhhbmRsZXIgPSBmdW5jdGlvbihjYWxlbmRhcikgewoJCWlmICghY2FsZW5kYXIuZGF0ZUZpZWxkKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCS8vIFVwZGF0ZSBkYXRlRmllbGQgdmFsdWUKCQkoY2FsZW5kYXIuZGF0ZUZpZWxkLmF0dHIoJ3RhZ05hbWUnKSA9PSAnSU5QVVQnKQoJCQk/IGNhbGVuZGFyLmRhdGVGaWVsZC52YWwoY2FsZW5kYXIuZGF0ZS5wcmludChjYWxlbmRhci5kYXRlRm9ybWF0KSkKCQkJOiBjYWxlbmRhci5kYXRlRmllbGQuaHRtbChjYWxlbmRhci5kYXRlLnByaW50KGNhbGVuZGFyLmRhdGVGb3JtYXQpKTsKCgkJLy8gVHJpZ2dlciB0aGUgb25jaGFuZ2UgY2FsbGJhY2sgb24gdGhlIGRhdGVGaWVsZCwgaWYgb25lIGhhcyBiZWVuIGRlZmluZWQKCQljYWxlbmRhci5kYXRlRmllbGQudHJpZ2dlcignY2hhbmdlJyk7CgoJCS8vIENhbGwgdGhlIGNsb3NlIGhhbmRsZXIsIGlmIG5lY2Vzc2FyeQoJCWlmIChjYWxlbmRhci5zaG91bGRDbG9zZSkgewoJCQljYWxlbmRhci5jYWxsQ2xvc2VIYW5kbGVyKCk7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCglDYWxlbmRhci5kZWZhdWx0Q2xvc2VIYW5kbGVyID0gZnVuY3Rpb24oY2FsZW5kYXIpIHsKCQljYWxlbmRhci5oaWRlKCk7Cgl9CgoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vIENhbGVuZGFyIEluc3RhbmNlCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCUNhbGVuZGFyLnByb3RvdHlwZSA9IHsKCQkvLyBUaGUgSFRNTCBDb250YWluZXIgRWxlbWVudAoJCWNvbnRhaW5lcjogbnVsbCwKCgkJLy8gRGF0ZXMKCQlkYXRlOiBudWxsLAoJCWN1cnJlbnREYXRlRWxlbWVudDogbnVsbCwKCgkJLy8gU3RhdHVzCgkJc2hvdWxkQ2xvc2U6IGZhbHNlLAoJCWlzUG9wdXA6IHRydWUsCgoJCS8qKgoJCSAqIFVwZGF0ZSAvIChSZSlpbml0aWFsaXplIENhbGVuZGFyCgkJICogQHBhcmFtIGRhdGUKCQkgKi8KCQl1cGRhdGU6IGZ1bmN0aW9uKGRhdGUpIHsKCQkJdmFyIGNhbGVuZGFyICAgPSB0aGlzOwoJCQl2YXIgdG9kYXkgICAgICA9IG5ldyBEYXRlKCk7CgkJCXZhciB0aGlzWWVhciAgID0gdG9kYXkuZ2V0RnVsbFllYXIoKTsKCQkJdmFyIHRoaXNNb250aCAgPSB0b2RheS5nZXRNb250aCgpOwoJCQl2YXIgdGhpc0RheSAgICA9IHRvZGF5LmdldERhdGUoKTsKCQkJdmFyIG1vbnRoICAgICAgPSBkYXRlLmdldE1vbnRoKCk7CgkJCXZhciBkYXlPZk1vbnRoID0gZGF0ZS5nZXREYXRlKCk7CgoJCQkvLyBFbnN1cmUgZGF0ZSBpcyB3aXRoaW4gdGhlIGRlZmluZWQgcmFuZ2UKCQkJaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSA8IHRoaXMubWluWWVhcikgewoJCQkJZGF0ZS5zZXRGdWxsWWVhcih0aGlzLm1pblllYXIpOwoJCQl9IGVsc2UgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSA+IHRoaXMubWF4WWVhcikgewoJCQkJZGF0ZS5zZXRGdWxsWWVhcih0aGlzLm1heFllYXIpOwoJCQl9CgkJCXRoaXMuZGF0ZSA9IG5ldyBEYXRlKGRhdGUpOwoKCQkJLy8gQ2FsY3VsYXRlIHRoZSBmaXJzdCBkYXkgdG8gZGlzcGxheSAoaW5jbHVkaW5nIHRoZSBwcmV2aW91cyBtb250aCkKCQkJZGF0ZS5zZXREYXRlKDEpOwoJCQl2YXIgZGF5MSA9IChkYXRlLmdldERheSgpIC0gdGhpcy5maXJzdERheU9mV2VlaykgJSA3OwoJCQlpZiAoZGF5MSA8IDApIGRheTEgKz0gNzsKCQkJZGF0ZS5zZXREYXRlKC1kYXkxKTsKCQkJZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7CgoJCQkvLyBGaWxsIGluIHRoZSBkYXlzIG9mIHRoZSBtb250aAoJCQkkKCd0Ym9keSB0cicsIHRoaXMuY29udGFpbmVyKS5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJdmFyIHJvd0hhc0RheXMgPSBmYWxzZTsKCQkJCSQodGhpcykuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJCXZhciBkYXkgICAgICAgICAgICA9IGRhdGUuZ2V0RGF0ZSgpOwoJCQkJCXZhciBkYXlPZldlZWsgICAgICA9IGRhdGUuZ2V0RGF5KCk7CgkJCQkJdmFyIGlzQ3VycmVudE1vbnRoID0gKGRhdGUuZ2V0TW9udGgoKSA9PSBtb250aCk7CgoJCQkJCS8vIFJlc2V0IGNsYXNzZXMgb24gdGhlIGNlbGwKCQkJCQljZWxsID0gJCh0aGlzKTsKCQkJCQljZWxsLnJlbW92ZUF0dHIoJ2NsYXNzJyk7CgkJCQkJY2VsbFswXS5kYXRlID0gbmV3IERhdGUoZGF0ZSk7CgkJCQkJY2VsbC5odG1sKGRheSk7CgoJCQkJCS8vIEFjY291bnQgZm9yIGRheXMgb2YgdGhlIG1vbnRoIG90aGVyIHRoYW4gdGhlIGN1cnJlbnQgbW9udGgKCQkJCQlpZiAoIWlzQ3VycmVudE1vbnRoKSB7CgkJCQkJCWNlbGwuYWRkQ2xhc3MoJ290aGVyRGF5Jyk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJcm93SGFzRGF5cyA9IHRydWU7CgkJCQkJfQoKCQkJCQkvLyBFbnN1cmUgdGhlIGN1cnJlbnQgZGF5IGlzIHNlbGVjdGVkCgkJCQkJaWYgKGlzQ3VycmVudE1vbnRoICYmIGRheSA9PSBkYXlPZk1vbnRoKSB7CgkJCQkJCWNlbGwuYWRkQ2xhc3MoJ3NlbGVjdGVkJyk7CgkJCQkJCWNhbGVuZGFyLmN1cnJlbnREYXRlRWxlbWVudCA9IGNlbGw7CgkJCQkJfQoKCQkJCQkvLyBUb2RheQoJCQkJCWlmIChkYXRlLmdldEZ1bGxZZWFyKCkgPT0gdGhpc1llYXIgJiYgZGF0ZS5nZXRNb250aCgpID09IHRoaXNNb250aCAmJiBkYXkgPT0gdGhpc0RheSkgewoJCQkJCQljZWxsLmFkZENsYXNzKCd0b2RheScpOwoJCQkJCX0KCgkJCQkJLy8gV2Vla2VuZAoJCQkJCWlmIChjYWxlbmRhci53ZWVrZW5kLmluZGV4T2YoZGF5T2ZXZWVrLnRvU3RyaW5nKCkpICE9IC0xKSB7CgkJCQkJCWNlbGwuYWRkQ2xhc3MoJ3dlZWtlbmQnKTsKCQkJCQl9CgoJCQkJCS8vIFNldCB0aGUgZGF0ZSB0byB0b21tb3Jyb3cKCQkJCQlkYXRlLnNldERhdGUoZGF5ICsgMSk7CgkJCQl9KTsKCQkJCS8vIEhpZGUgdGhlIGV4dHJhIHJvdyBpZiBpdCBjb250YWlucyBvbmx5IGRheXMgZnJvbSBhbm90aGVyIG1vbnRoCgkJCQkhcm93SGFzRGF5cyA/ICQodGhpcykuaGlkZSgpIDogJCh0aGlzKS5zaG93KCk7CgkJCX0pOwoKCQkJJCgndGQudGl0bGUnLCB0aGlzLmNvbnRhaW5lcikuaHRtbChDYWxlbmRhci5NT05USF9OQU1FU1ttb250aF0gKyAnICcgKyBjYWxlbmRhci5kYXRlLmdldEZ1bGxZZWFyKCkpOwoJCX0sCgoJCWNyZWF0ZTogZnVuY3Rpb24ocGFyZW50KSB7CgoJCQkvLyBJZiBubyBwYXJlbnQgd2FzIHNwZWNpZmllZCwgYXNzdW1lIHRoYXQgd2UgYXJlIGNyZWF0aW5nIGEgcG9wdXAgY2FsZW5kYXIuCgkJCXRoaXMuaXNQb3B1cCA9IGZhbHNlOwoJCQlpZiAoIXBhcmVudCkgewoJCQkJcGFyZW50ID0gJCgnYm9keScpOwoJCQkJdGhpcy5pc1BvcHVwID0gdHJ1ZTsKCQkJfQoKCQkJLy8gQ2FsZW5kYXIgVGFibGUKCQkJdmFyIHRhYmxlID0gJCgnPHRhYmxlIC8+Jyk7CgoJCQkvLyBDYWxlbmRhciBIZWFkZXIKCQkJdmFyIHRoZWFkID0gJCgnPHRoZWFkIC8+Jyk7CgkJCXRhYmxlLmFwcGVuZCh0aGVhZCk7CgoJCQkvLyBUaXRsZSBQbGFjZWhvbGRlcgoJCQl2YXIgcm93ICA9ICQoJzx0ciAvPicpOwoJCQl2YXIgY2VsbCA9ICQoJzx0ZCBjb2xzcGFuPSI3IiBjbGFzcz0idGl0bGUiIC8+Jyk7CgkJCXJvdy5hcHBlbmQoY2VsbCk7CgkJCXRoZWFkLmFwcGVuZChyb3cpOwoKCQkJLy8gQ2FsZW5kYXIgTmF2aWdhdGlvbgoJCQlyb3cgPSAkKCc8dHIgLz4nKTsKCQkJdGhpcy5fZHJhd0J1dHRvbkNlbGwocm93LCAnJiN4MDBhYjsnLCAxLCBDYWxlbmRhci5OQVZfUFJFVklPVVNfWUVBUik7CgkJCXRoaXMuX2RyYXdCdXR0b25DZWxsKHJvdywgJyYjeDIwMzk7JywgMSwgQ2FsZW5kYXIuTkFWX1BSRVZJT1VTX01PTlRIKTsKCQkJdGhpcy5fZHJhd0J1dHRvbkNlbGwocm93LCBDYWxlbmRhci5UT0RBWSwgICAgMywgQ2FsZW5kYXIuTkFWX1RPREFZKTsKCQkJdGhpcy5fZHJhd0J1dHRvbkNlbGwocm93LCAnJiN4MjAzYTsnLCAxLCBDYWxlbmRhci5OQVZfTkVYVF9NT05USCk7CgkJCXRoaXMuX2RyYXdCdXR0b25DZWxsKHJvdywgJyYjeDAwYmI7JywgMSwgQ2FsZW5kYXIuTkFWX05FWFRfWUVBUik7CgkJCXRoZWFkLmFwcGVuZChyb3cpOwoKCQkJLy8gRGF5IE5hbWVzCgkJCXJvdyA9ICQoJzx0ciAvPicpOwoJCQlmb3IgKHZhciBpID0gMDsgaSA8IDc7ICsraSkgewoJCQkJdmFyIHJlYWxEYXkgPSAoaSArIHRoaXMuZmlyc3REYXlPZldlZWspICUgNzsKCQkJCWNlbGwgPSAkKCc8dGggLz4nKS5odG1sKENhbGVuZGFyLlNIT1JUX0RBWV9OQU1FU1tyZWFsRGF5XSk7CgkJCQlpZiAodGhpcy53ZWVrZW5kLmluZGV4T2YocmVhbERheS50b1N0cmluZygpKSAhPSAtMSkKCQkJCQljZWxsLmFkZENsYXNzKCd3ZWVrZW5kJyk7CgkJCQlyb3cuYXBwZW5kKGNlbGwpOwoJCQl9CgkJCXRoZWFkLmFwcGVuZChyb3cpOwoKCQkJLy8gQ2FsZW5kYXIgRGF5cwoJCQl2YXIgdGJvZHkgPSB0YWJsZS5hcHBlbmQoJCgnPHRib2R5IC8+JykpOwoJCQlmb3IgKGkgPSA2OyBpID4gMDsgLS1pKSB7CgkJCQlyb3cgPSAkKCc8dHIgLz4nKS5hZGRDbGFzcygnZGF5cycpOwoJCQkJdGJvZHkuYXBwZW5kKHJvdyk7CgkJCQlmb3IgKHZhciBqID0gNzsgaiA+IDA7IC0taikgewoJCQkJCWNlbGwgPSAkKCc8dGQgLz4nKTsKCQkJCQljZWxsWzBdLmNhbGVuZGFyID0gdGhpczsKCQkJCQlyb3cuYXBwZW5kKGNlbGwpOwoJCQkJfQoJCQl9CgoJCQkvLyBDYWxlbmRhciBDb250YWluZXIgKGRpdikKCQkJdGhpcy5jb250YWluZXIgPSAkKCc8ZGl2IC8+JykuYWRkQ2xhc3MoJ2NhbGVuZGFyJykuYXBwZW5kKHRhYmxlKTsKCQkJaWYgKHRoaXMuaXNQb3B1cCkgewoJCQkJdGhpcy5jb250YWluZXIuY3NzKHsKCQkJCQlwb3NpdGlvbjogJ2Fic29sdXRlJywKCQkJCQlkaXNwbGF5OiAnbm9uZScKCQkJCX0pLmFkZENsYXNzKCdwb3B1cCcpOwoJCQl9CgoJCQkvLyBJbml0aWFsaXplIENhbGVuZGFyCgkJCXRoaXMudXBkYXRlKHRoaXMuZGF0ZSk7CgoJCQkvLyBPYnNlcnZlIHRoZSBjb250YWluZXIgZm9yIG1vdXNlZG93biBldmVudHMKCQkJdGhpcy5jb250YWluZXIubW91c2Vkb3duKENhbGVuZGFyLmhhbmRsZU1vdXNlRG93bkV2ZW50KTsKCgkJCS8vIEFwcGVuZCB0byBwYXJlbnQgZWxlbWVudAoJCQlwYXJlbnQuYXBwZW5kKHRoaXMuY29udGFpbmVyKTsKCQl9LAoKCQlfZHJhd0J1dHRvbkNlbGw6IGZ1bmN0aW9uKHBhcmVudCwgdGV4dCwgY29sU3BhbiwgbmF2QWN0aW9uKSB7CgkJCXZhciBjZWxsID0gJCgnPHRkIC8+Jyk7CgkJCWlmIChjb2xTcGFuID4gMSkgY2VsbFswXS5jb2xTcGFuID0gY29sU3BhbjsgLy8gSUUgaXNzdWUgYXR0cigpCgkJCWNlbGwuYWRkQ2xhc3MoJ2J1dHRvbicpLmh0bWwodGV4dCkuYXR0cigndW5zZWxlY3RhYmxlJywgJ29uJyk7IC8vIElFOwoJCQljZWxsWzBdLmNhbGVuZGFyICAgICA9IHRoaXM7CgkJCWNlbGxbMF0ubmF2QWN0aW9uICAgID0gbmF2QWN0aW9uOwoJCQlwYXJlbnQuYXBwZW5kKGNlbGwpOwoJCQlyZXR1cm4gY2VsbDsKCQl9LAoKCQkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCS8vIENhbGxiYWNrcwoJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJCS8qKgoJCSAqIENhbGxzIHRoZSBTZWxlY3QgSGFuZGxlciAoaWYgZGVmaW5lZCkKCQkgKi8KCQljYWxsU2VsZWN0SGFuZGxlcjogZnVuY3Rpb24oKSB7CgkJCWlmICh0aGlzLnNlbGVjdEhhbmRsZXIpIHsKCQkJCXRoaXMuc2VsZWN0SGFuZGxlcih0aGlzLCB0aGlzLmRhdGUucHJpbnQodGhpcy5kYXRlRm9ybWF0KSk7CgkJCX0KCQl9LAoKCQkvKioKCQkgKiBDYWxscyB0aGUgQ2xvc2UgSGFuZGxlciAoaWYgZGVmaW5lZCkKCQkgKi8KCQljYWxsQ2xvc2VIYW5kbGVyOiBmdW5jdGlvbigpIHsKCQkJaWYgKHRoaXMuY2xvc2VIYW5kbGVyKSB7CgkJCQl0aGlzLmNsb3NlSGFuZGxlcih0aGlzKTsKCQkJfQoJCX0sCgoJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkJLy8gQ2FsZW5kYXIgRGlzcGxheSBGdW5jdGlvbnMKCQkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCQkvKioKCQkgKiBTaG93cyB0aGUgQ2FsZW5kYXIKCQkgKi8KCQlzaG93OiBmdW5jdGlvbigpIHsKCQkJdGhpcy5jb250YWluZXIuc2hvdygpOwoJCQlpZiAodGhpcy5pc1BvcHVwKSB7CgkJCQl3aW5kb3cuX3BvcHVwQ2FsZW5kYXIgPSB0aGlzOwoJCQkJJChkb2N1bWVudCkubW91c2Vkb3duKENhbGVuZGFyLl9jaGVja0NhbGVuZGFyKTsKCQkJfQoJCX0sCgoJCS8qKgoJCSAqIFNob3dzIHRoZSBjYWxlbmRhciBhdCB0aGUgZ2l2ZW4gYWJzb2x1dGUgcG9zaXRpb24KCQkgKiBAcGFyYW0geAoJCSAqIEBwYXJhbSB5CgkJICovCgkJc2hvd0F0OiBmdW5jdGlvbiAoeCwgeSkgewoJCQl0aGlzLmNvbnRhaW5lci5jc3MoewoJCQkJbGVmdDogeCArICdweCcsCgkJCQl0b3A6IHkgKyAncHgnCgkJCX0pCgkJCXRoaXMuc2hvdygpOwoJCX0sCgoJCS8qKgoJCSAqIFNob3dzIHRoZSBDYWxlbmRhciBhdCB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHByb3ZpZGVkIGVsZW1lbnQKCQkgKiBAcGFyYW0gZWxlbWVudAoJCSAqLwoJCXNob3dBdEVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQkJdmFyIG9mZnNldCA9IGVsZW1lbnQub2Zmc2V0KCk7CgkJCXRoaXMuc2hvd0F0KG9mZnNldC5sZWZ0LCBvZmZzZXQudG9wKTsKCQl9LAoKCQkvKioKCQkgKiBIaWRlcyB0aGUgQ2FsZW5kYXIKCQkgKi8KCQloaWRlOiBmdW5jdGlvbigpIHsKCQkJaWYgKHRoaXMuaXNQb3B1cCkgewoJCQkJJChkb2N1bWVudCkudW5iaW5kKCdtb3VzZWRvd24nLCBDYWxlbmRhci5fY2hlY2tDYWxlbmRhcik7CgkJCX0KCQkJdGhpcy5jb250YWluZXIuaGlkZSgpOwoJCX0sCgoJCS8qKgoJCSAqIFRyaWVzIHRvIGlkZW50aWZ5IHRoZSBkYXRlIHJlcHJlc2VudGVkIGluIGEgc3RyaW5nLiAgSWYgc3VjY2Vzc2Z1bCBpdCBhbHNvCgkJICogY2FsbHMgdGhpcy5zZXREYXRlIHdoaWNoIG1vdmVzIHRoZSBjYWxlbmRhciB0byB0aGUgZ2l2ZW4gZGF0ZS4KCQkgKiBAcGFyYW0gc3RyCgkJICogQHBhcmFtIGZvcm1hdAoJCSAqLwoJCXBhcnNlRGF0ZTogZnVuY3Rpb24oc3RyLCBmb3JtYXQpIHsKCQkJaWYgKCFmb3JtYXQpIHsKCQkJCWZvcm1hdCA9IHRoaXMuZGF0ZUZvcm1hdDsKCQkJfQoJCQl0aGlzLnNldERhdGUoRGF0ZS5wYXJzZURhdGUoc3RyLCBmb3JtYXQpKTsKCQl9LAoKCQlzZXREYXRlOiBmdW5jdGlvbihkYXRlKSB7CgkJCWlmICghZGF0ZS5lcXVhbHNUbyh0aGlzLmRhdGUpKQoJCQkJdGhpcy51cGRhdGUoZGF0ZSk7CgkJfSwKCgkJc2V0UmFuZ2U6IGZ1bmN0aW9uKG1pblllYXIsIG1heFllYXIpIHsKCQkJdGhpcy5taW5ZZWFyID0gbWluWWVhcjsKCQkJdGhpcy5tYXhZZWFyID0gbWF4WWVhcjsKCQl9Cgl9CgoJLy8gZ2xvYmFsIG9iamVjdCB0aGF0IHJlbWVtYmVycyB0aGUgY2FsZW5kYXIKCXdpbmRvdy5fcG9wdXBDYWxlbmRhciA9IG51bGw7CgoJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCS8vIERhdGUgT2JqZWN0IFBhdGNoZXMKCS8vIFRoaXMgaXMgcHJldHR5IG11Y2ggdW50b3VjaGVkIGZyb20gdGhlIG9yaWdpbmFsLgoJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCURhdGUuREFZU19JTl9NT05USCA9IG5ldyBBcnJheSgzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxKTsKCURhdGUuU0VDT05EICAgICAgICA9IDEwMDA7IC8qIG1pbGxpc2Vjb25kcyAqLwoJRGF0ZS5NSU5VVEUgICAgICAgID0gNjAgKiBEYXRlLlNFQ09ORDsKCURhdGUuSE9VUiAgICAgICAgICA9IDYwICogRGF0ZS5NSU5VVEU7CglEYXRlLkRBWSAgICAgICAgICAgPSAyNCAqIERhdGUuSE9VUjsKCURhdGUuV0VFSyAgICAgICAgICA9ICA3ICogRGF0ZS5EQVk7CgoJLy8gUGFyc2VzIERhdGUKCURhdGUucGFyc2VEYXRlID0gZnVuY3Rpb24oc3RyLCBmbXQpIHsKCQl2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpOwoJCXZhciB5ICAgICA9IDA7CgkJdmFyIG0gICAgID0gLTE7CgkJdmFyIGQgICAgID0gMDsKCQl2YXIgYSAgICAgPSBzdHIuc3BsaXQoL1xXKy8pOwoJCXZhciBiICAgICA9IGZtdC5tYXRjaCgvJS4vZyk7CgkJdmFyIGkgICAgID0gMCwgaiA9IDA7CgkJdmFyIGhyICAgID0gMDsKCQl2YXIgbWluICAgPSAwOwoKCQlmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgewoJCQlpZiAoIWFbaV0pIGNvbnRpbnVlOwoJCQlzd2l0Y2ggKGJbaV0pIHsKCQkJCWNhc2UgIiVkIjoKCQkJCWNhc2UgIiVlIjoKCQkJCQlkID0gcGFyc2VJbnQoYVtpXSwgMTApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJW0iOgoJCQkJCW0gPSBwYXJzZUludChhW2ldLCAxMCkgLSAxOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJVkiOgoJCQkJY2FzZSAiJXkiOgoJCQkJCXkgPSBwYXJzZUludChhW2ldLCAxMCk7CgkJCQkJKHkgPCAxMDApICYmICh5ICs9ICh5ID4gMjkpID8gMTkwMCA6IDIwMDApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJWIiOgoJCQkJY2FzZSAiJUIiOgoJCQkJCWZvciAoaiA9IDA7IGogPCAxMjsgKytqKSB7CgkJCQkJCWlmIChDYWxlbmRhci5NT05USF9OQU1FU1tqXS5zdWJzdHIoMCwgYVtpXS5sZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT0gYVtpXS50b0xvd2VyQ2FzZSgpKSB7CgkJCQkJCQltID0gajsKCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJUgiOgoJCQkJY2FzZSAiJUkiOgoJCQkJY2FzZSAiJWsiOgoJCQkJY2FzZSAiJWwiOgoJCQkJCWhyID0gcGFyc2VJbnQoYVtpXSwgMTApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJVAiOgoJCQkJY2FzZSAiJXAiOgoJCQkJCWlmICgvcG0vaS50ZXN0KGFbaV0pICYmIGhyIDwgMTIpCgkJCQkJCWhyICs9IDEyOwoJCQkJCWVsc2UgaWYgKC9hbS9pLnRlc3QoYVtpXSkgJiYgaHIgPj0gMTIpCgkJCQkJCWhyIC09IDEyOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJU0iOgoJCQkJCW1pbiA9IHBhcnNlSW50KGFbaV0sIDEwKTsKCQkJCQlicmVhazsKCQkJfQoJCX0KCQlpZiAoaXNOYU4oeSkpIHkgPSB0b2RheS5nZXRGdWxsWWVhcigpOwoJCWlmIChpc05hTihtKSkgbSA9IHRvZGF5LmdldE1vbnRoKCk7CgkJaWYgKGlzTmFOKGQpKSBkID0gdG9kYXkuZ2V0RGF0ZSgpOwoJCWlmIChpc05hTihocikpIGhyID0gdG9kYXkuZ2V0SG91cnMoKTsKCQlpZiAoaXNOYU4obWluKSkgbWluID0gdG9kYXkuZ2V0TWludXRlcygpOwoJCWlmICh5ICE9IDAgJiYgbSAhPSAtMSAmJiBkICE9IDApCgkJCXJldHVybiBuZXcgRGF0ZSh5LCBtLCBkLCBociwgbWluLCAwKTsKCQl5ID0gMDsgbSA9IC0xOyBkID0gMDsKCQlmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgewoJCQlpZiAoYVtpXS5zZWFyY2goL1thLXpBLVpdKy8pICE9IC0xKSB7CgkJCQl2YXIgdCA9IC0xOwoJCQkJZm9yIChqID0gMDsgaiA8IDEyOyArK2opIHsKCQkJCQlpZiAoQ2FsZW5kYXIuTU9OVEhfTkFNRVNbal0uc3Vic3RyKDAsIGFbaV0ubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09IGFbaV0udG9Mb3dlckNhc2UoKSkgewoJCQkJCQl0ID0gajsgYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQkJaWYgKHQgIT0gLTEpIHsKCQkJCQlpZiAobSAhPSAtMSkgewoJCQkJCQlkID0gbSsxOwoJCQkJCX0KCQkJCQltID0gdDsKCQkJCX0KCQkJfSBlbHNlIGlmIChwYXJzZUludChhW2ldLCAxMCkgPD0gMTIgJiYgbSA9PSAtMSkgewoJCQkJbSA9IGFbaV0tMTsKCQkJfSBlbHNlIGlmIChwYXJzZUludChhW2ldLCAxMCkgPiAzMSAmJiB5ID09IDApIHsKCQkJCXkgPSBwYXJzZUludChhW2ldLCAxMCk7CgkJCQkoeSA8IDEwMCkgJiYgKHkgKz0gKHkgPiAyOSkgPyAxOTAwIDogMjAwMCk7CgkJCX0gZWxzZSBpZiAoZCA9PSAwKSB7CgkJCQlkID0gYVtpXTsKCQkJfQoJCX0KCQlpZiAoeSA9PSAwKQoJCQl5ID0gdG9kYXkuZ2V0RnVsbFllYXIoKTsKCQlpZiAobSAhPSAtMSAmJiBkICE9IDApCgkJCXJldHVybiBuZXcgRGF0ZSh5LCBtLCBkLCBociwgbWluLCAwKTsKCQlyZXR1cm4gdG9kYXk7Cgl9OwoKCS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBjdXJyZW50IG1vbnRoCglEYXRlLnByb3RvdHlwZS5nZXRNb250aERheXMgPSBmdW5jdGlvbihtb250aCkgewoJCXZhciB5ZWFyID0gdGhpcy5nZXRGdWxsWWVhcigpCgkJaWYgKHR5cGVvZiBtb250aCA9PSAidW5kZWZpbmVkIikKCQkJbW9udGggPSB0aGlzLmdldE1vbnRoKCkKCQlpZiAoKCgwID09ICh5ZWFyICUgNCkpICYmICggKDAgIT0gKHllYXIgJSAxMDApKSB8fCAoMCA9PSAoeWVhciAlIDQwMCkpKSkgJiYgbW9udGggPT0gMSkKCQkJcmV0dXJuIDI5CgkJZWxzZQoJCQlyZXR1cm4gRGF0ZS5EQVlTX0lOX01PTlRIW21vbnRoXQoJfTsKCgkvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5IGluIHRoZSB5ZWFyCglEYXRlLnByb3RvdHlwZS5nZXREYXlPZlllYXIgPSBmdW5jdGlvbigpIHsKCQl2YXIgbm93ID0gbmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLCB0aGlzLmdldE1vbnRoKCksIHRoaXMuZ2V0RGF0ZSgpLCAwLCAwLCAwKTsKCQl2YXIgdGhlbiA9IG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwgMCwgMCwgMCwgMCwgMCk7CgkJdmFyIHRpbWUgPSBub3cgLSB0aGVuOwoJCXJldHVybiBNYXRoLmZsb29yKHRpbWUgLyBEYXRlLkRBWSk7Cgl9OwoKCS8qKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIHdlZWsgaW4geWVhciwgYXMgZGVmaW5lZCBpbiBJU08gODYwMS4gKi8KCURhdGUucHJvdG90eXBlLmdldFdlZWtOdW1iZXIgPSBmdW5jdGlvbigpIHsKCQl2YXIgZCA9IG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwgdGhpcy5nZXRNb250aCgpLCB0aGlzLmdldERhdGUoKSwgMCwgMCwgMCk7CgkJdmFyIERvVyA9IGQuZ2V0RGF5KCk7CgkJZC5zZXREYXRlKGQuZ2V0RGF0ZSgpIC0gKERvVyArIDYpICUgNyArIDMpOyAvLyBOZWFyZXN0IFRodQoJCXZhciBtcyA9IGQudmFsdWVPZigpOyAvLyBHTVQKCQlkLnNldE1vbnRoKDApOwoJCWQuc2V0RGF0ZSg0KTsgLy8gVGh1IGluIFdlZWsgMQoJCXJldHVybiBNYXRoLnJvdW5kKChtcyAtIGQudmFsdWVPZigpKSAvICg3ICogODY0ZTUpKSArIDE7Cgl9OwoKCS8qKiBDaGVja3MgZGF0ZSBhbmQgdGltZSBlcXVhbGl0eSAqLwoJRGF0ZS5wcm90b3R5cGUuZXF1YWxzVG8gPSBmdW5jdGlvbihkYXRlKSB7CgkJcmV0dXJuICgodGhpcy5nZXRGdWxsWWVhcigpID09IGRhdGUuZ2V0RnVsbFllYXIoKSkgJiYKCQkJKHRoaXMuZ2V0TW9udGgoKSA9PSBkYXRlLmdldE1vbnRoKCkpICYmCgkJCSh0aGlzLmdldERhdGUoKSA9PSBkYXRlLmdldERhdGUoKSkgJiYKCQkJKHRoaXMuZ2V0SG91cnMoKSA9PSBkYXRlLmdldEhvdXJzKCkpICYmCgkJCSh0aGlzLmdldE1pbnV0ZXMoKSA9PSBkYXRlLmdldE1pbnV0ZXMoKSkpOwoJfTsKCgkvKiogU2V0IG9ubHkgdGhlIHllYXIsIG1vbnRoLCBkYXRlIHBhcnRzIChrZWVwIGV4aXN0aW5nIHRpbWUpICovCglEYXRlLnByb3RvdHlwZS5zZXREYXRlT25seSA9IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgdG1wID0gbmV3IERhdGUoZGF0ZSk7CgkJdGhpcy5zZXREYXRlKDEpOwoJCXRoaXMuc2V0RnVsbFllYXIodG1wLmdldEZ1bGxZZWFyKCkpOwoJCXRoaXMuc2V0TW9udGgodG1wLmdldE1vbnRoKCkpOwoJCXRoaXMuc2V0RGF0ZSh0bXAuZ2V0RGF0ZSgpKTsKCX07CgovKiogQWRkZWQgYnkgTmFOOiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBEYXRlLmZvcm1hdCgpCiAqIHN0cmluZyBmb3JtYXQgKCBzdHJpbmcgZm9ybWF0ICkKICogRm9ybWF0dGluZyBydWxlcyBhY2NvcmRpbmcgdG8gaHR0cDovL3BocC5uZXQvc3RyZnRpbWUKICoKICogQ29weXJpZ2h0IChDKSAyMDA2ICBEYW8gR290dHdhbGQKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQogKgogKiBDb250YWN0IGluZm9ybWF0aW9uOgogKiAgIERhbyBHb3R0d2FsZCAgPGRhbyBhdCBkZXNpZ24tbm9pci5kZT4KICoKICogQHZlcnNpb24gIDAuNwogKiBAdG9kbyAgICAgJWcsICVHLCAlVSwgJVYsICVXLCAleiwgbW9yZS9iZXR0ZXIgbG9jYWxpemF0aW9uCiAqIEB1cmwgICAgICBodHRwOi8vZGVzaWduLW5vaXIuZGUvd2ViZGV2L0pTL0RhdGUuZm9ybWF0LwogKi8KCnZhciBfbGFuZyA9IChuYXZpZ2F0b3Iuc3lzdGVtTGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLnVzZXJMYW5ndWFnZSB8fCBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLmJyb3dzZXJMYW5ndWFnZSB8fCAnJykucmVwbGFjZSgvLS4qLywnJyk7CnN3aXRjaCAoX2xhbmcpIHsKCWNhc2UgJ2RlJzoKCQlEYXRlLl9sMTBuID0gewoJCQlkYXlzOiBbJ1Nvbm50YWcnLCdNb250YWcnLCdEaWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0YWcnLCdTYW1zdGFnJ10sCgkJCW1vbnRoczogWydKYW51YXInLCdGZWJydWFyJywnTVx1MDBFNHJ6JywnQXByaWwnLCdNYWknLCdKdW5pJywnSnVsaScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3ZlbWJlcicsJ0RlemVtYmVyJ10sCgkJCWRhdGU6ICclZS4lbS4lWScsCgkJCXRpbWU6ICclSDolTTolUyd9OwoJCWJyZWFrOwoJY2FzZSAnZXMnOgoJCURhdGUuX2wxMG4gPSB7CgkJCWRheXM6IFsnRG9taW5nbycsJ0x1bmVzJywnTWFydGVzJywnTWnDqXJjb2xlcycsJ0p1ZXZlcycsJ1ZpZXJuZXMnLCdTXHUwMEUxYmFkbyddLAoJCQltb250aHM6IFsnZW5lcm8nLCdmZWJyZXJvJywnbWFyY2hhJywnYWJyaWwnLCdwdWVkZScsJ2p1bmlvJywnanVsaW8nLCdhZ29zdG8nLCdzZXB0aWVtYnJlJywnb2N0dWJyZScsJ25vdmllbWJyZScsJ2RpY2llbWJyZSddLAoJCQlkYXRlOiAnJWUuJW0uJVknLAoJCQl0aW1lOiAnJUg6JU06JVMnfTsKCQlicmVhazsKCWNhc2UgJ2ZyJzoKCQlEYXRlLl9sMTBuID0gewoJCQlkYXlzOiBbJ2RpbWFuY2hlJywnbHVuZGknLCdtYXJkaScsJ21lcmNyZWRpJywnamV1ZGknLCd2ZW5kcmVkaScsJ3NhbWVkaSddLAoJCQltb250aHM6IFsnamFudmllcicsJ2ZcdTAwRTl2cmllcicsJ21hcnMnLCdhdnJpbCcsJ21haScsJ2p1aW4nLCdqdWlsbGV0JywnYW9cdTAwRkJ0Jywnc2VwdGVtYnJlJywnb2N0b2JyZScsJ25vdmVtYnJlJywnZGVjZW1icmUnXSwKCQkJZGF0ZTogJyVlLyVtLyVZJywKCQkJdGltZTogJyVIOiVNOiVTJ307CgkJYnJlYWs7CgljYXNlICdpdCc6CgkJRGF0ZS5fbDEwbiA9IHsKCQkJZGF5czogWydkb21lbmljYScsJ2x1bmVkXHUwMEVDJywnbWFydGVkXHUwMEVDJywnbWVyY29sZWRcdTAwRUMnLCdnaW92ZWRcdTAwRUMnLCd2ZW5lcmRcdTAwRUMnLCdzYWJhdG8nXSwKCQkJbW9udGhzOiBbJ2dlbm5haW8nLCdmZWJicmFpbycsJ21hcnpvJywnYXByaWxlJywnbWFnZ2lvJywnZ2l1Z25vJywnbHVnbGlvJywnYWdvc3RvJywnc2V0dGVtYnJlJywnb3R0b2JyZScsJ25vdmVtYnJlJywnZGljZW1icmUnXSwKCQkJZGF0ZTogJyVlLyVtLyV5JywKCQkJdGltZTogJyVILiVNLiVTJ307CgkJYnJlYWs7CgljYXNlICdwdCc6CgkJRGF0ZS5fbDEwbiA9IHsKCQkJZGF5czogWydEb21pbmdvJywnU2VndW5kYS1mZWlyYScsJ1Rlclx1MDBFN2EtZmVpcmEnLCdRdWFydGEtZmVpcmEnLCdRdWludGEtZmVpcmEnLCdTZXh0YS1mZWlyYScsJ1NcdTAwRTFiYWRvJ10sCgkJCW1vbnRoczogWydKYW5laXJvJywnRmV2ZXJlaXJvJywnTWFyXHUwMEU3bycsJ0FicmlsJywnTWFpbycsJ0p1bmhvJywnSnVsaG8nLCdBZ29zdG8nLCdTZXRlbWJybycsJ091dHVicm8nLCdOb3ZlbWJybycsJ0RlemVtYnJvJ10sCgkJCWRhdGU6ICclZS8lbS8leScsCgkJCXRpbWU6ICclSC4lTS4lUyd9OwoJCWJyZWFrOwoJY2FzZSAnZW4nOgoJZGVmYXVsdDoKCQlEYXRlLl9sMTBuID0gewoJCQlkYXlzOiBbJ1N1bmRheScsJ01vbmRheScsJ1R1ZXNkYXknLCdXZWRuZXNkYXknLCdUaHVyc2RheScsJ0ZyaWRheScsJ1NhdHVyZGF5J10sCgkJCW1vbnRoczogWydKYW51YXJ5JywnRmVicnVhcnknLCdNYXJjaCcsJ0FwcmlsJywnTWF5JywnSnVuZScsJ0p1bHknLCdBdWd1c3QnLCdTZXB0ZW1iZXInLCdPY3RvYmVyJywnTm92ZW1iZXInLCdEZWNlbWJlciddLAoJCQlkYXRlOiAnJVktJW0tJWUnLAoJCQl0aW1lOiAnJUg6JU06JVMnfTsKCQlicmVhazsKfQpEYXRlLl9wYWQgPSBmdW5jdGlvbihudW0sIGxlbikgewoJZm9yICh2YXIgaSA9IDE7IGkgPD0gbGVuOyBpKyspCgkJaWYgKG51bSA8IE1hdGgucG93KDEwLCBpKSkKCQkJcmV0dXJuIG5ldyBBcnJheShsZW4taSsxKS5qb2luKDApICsgbnVtOwoJcmV0dXJuIG51bTsKfTsKRGF0ZS5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24oZm9ybWF0KSB7CglpZiAoZm9ybWF0LmluZGV4T2YoJyUlJykgPiAtMSkgeyAvLyBhIGxpdGVyYWwgYCUnIGNoYXJhY3RlcgoJCWZvcm1hdCA9IGZvcm1hdC5zcGxpdCgnJSUnKTsKCQlmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdC5sZW5ndGg7IGkrKykKCQkJZm9ybWF0W2ldID0gdGhpcy5mb3JtYXQoZm9ybWF0W2ldKTsKCQlyZXR1cm4gZm9ybWF0LmpvaW4oJyUnKTsKCX0KCWZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC8lRC9nLCAnJW0vJWQvJXknKTsgLy8gc2FtZSBhcyAlbS8lZC8leQoJZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoLyVyL2csICclSTolTTolUyAlcCcpOyAvLyB0aW1lIGluIGEubS4gYW5kIHAubS4gbm90YXRpb24KCWZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC8lUi9nLCAnJUg6JU06JVMnKTsgLy8gdGltZSBpbiAyNCBob3VyIG5vdGF0aW9uCglmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgvJVQvZywgJyVIOiVNOiVTJyk7IC8vIGN1cnJlbnQgdGltZSwgZXF1YWwgdG8gJUg6JU06JVMKCWZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC8leC9nLCBEYXRlLl9sMTBuLmRhdGUpOyAvLyBwcmVmZXJyZWQgZGF0ZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIHdpdGhvdXQgdGhlIHRpbWUKCWZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC8lWC9nLCBEYXRlLl9sMTBuLnRpbWUpOyAvLyBwcmVmZXJyZWQgdGltZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIHdpdGhvdXQgdGhlIGRhdGUKCXZhciBkYXRlT2JqID0gdGhpczsKCXJldHVybiBmb3JtYXQucmVwbGFjZSgvJShbYUFiaEJjQ2RlZ0dISWptTW5wU3R1VVZXd3lZelpdKS9nLCBmdW5jdGlvbihtYXRjaDAsIG1hdGNoMSkgewoJCXJldHVybiBkYXRlT2JqLmZvcm1hdF9jYWxsYmFjayhtYXRjaDAsIG1hdGNoMSk7Cgl9KTsKfQpEYXRlLnByb3RvdHlwZS5mb3JtYXRfY2FsbGJhY2sgPSBmdW5jdGlvbihtYXRjaDAsIG1hdGNoMSkgewoJc3dpdGNoIChtYXRjaDEpIHsKCQljYXNlICdhJzogLy8gYWJicmV2aWF0ZWQgd2Vla2RheSBuYW1lIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUKCQkJcmV0dXJuIERhdGUuX2wxMG4uZGF5c1t0aGlzLmdldERheSgpXS5zdWJzdHIoMCwzKTsKCQljYXNlICdBJzogLy8gZnVsbCB3ZWVrZGF5IG5hbWUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZQoJCQlyZXR1cm4gRGF0ZS5fbDEwbi5kYXlzW3RoaXMuZ2V0RGF5KCldOwoJCWNhc2UgJ2InOgoJCWNhc2UgJ2gnOiAvLyBhYmJyZXZpYXRlZCBtb250aCBuYW1lIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUKCQkJcmV0dXJuIERhdGUuX2wxMG4ubW9udGhzW3RoaXMuZ2V0TW9udGgoKV0uc3Vic3RyKDAsMyk7CgkJY2FzZSAnQic6IC8vIGZ1bGwgbW9udGggbmFtZSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlCgkJCXJldHVybiBEYXRlLl9sMTBuLm1vbnRoc1t0aGlzLmdldE1vbnRoKCldOwoJCWNhc2UgJ2MnOiAvLyBwcmVmZXJyZWQgZGF0ZSBhbmQgdGltZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlCgkJCXJldHVybiB0aGlzLnRvTG9jYWxlU3RyaW5nKCk7CgkJY2FzZSAnQyc6IC8vIGNlbnR1cnkgbnVtYmVyICh0aGUgeWVhciBkaXZpZGVkIGJ5IDEwMCBhbmQgdHJ1bmNhdGVkIHRvIGFuIGludGVnZXIsIHJhbmdlIDAwIHRvIDk5KQoJCQlyZXR1cm4gTWF0aC5mbG9vcih0aGlzLmdldEZ1bGxZZWFyKCkgLyAxMDApOwoJCWNhc2UgJ2QnOiAvLyBkYXkgb2YgdGhlIG1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIgKHJhbmdlIDAxIHRvIDMxKQoJCQlyZXR1cm4gRGF0ZS5fcGFkKHRoaXMuZ2V0RGF0ZSgpLCAyKTsKCQljYXNlICdlJzogLy8gZGF5IG9mIHRoZSBtb250aCBhcyBhIGRlY2ltYWwgbnVtYmVyLCBhIHNpbmdsZSBkaWdpdCBpcyBwcmVjZWRlZCBieSBhIHNwYWNlIChyYW5nZSAnIDEnIHRvICczMScpCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXREYXRlKCksIDIpOwoJCS8qY2FzZSAnZyc6IC8vIGxpa2UgJUcsIGJ1dCB3aXRob3V0IHRoZSBjZW50dXJ5CgkJCXJldHVybiA7CgkJY2FzZSAnRyc6IC8vIFRoZSA0LWRpZ2l0IHllYXIgY29ycmVzcG9uZGluZyB0byB0aGUgSVNPIHdlZWsgbnVtYmVyIChzZWUgJVYpLiBUaGlzIGhhcyB0aGUgc2FtZSBmb3JtYXQgYW5kIHZhbHVlIGFzICVZLCBleGNlcHQgdGhhdCBpZiB0aGUgSVNPIHdlZWsgbnVtYmVyIGJlbG9uZ3MgdG8gdGhlIHByZXZpb3VzIG9yIG5leHQgeWVhciwgdGhhdCB5ZWFyIGlzIHVzZWQgaW5zdGVhZAoJCQlyZXR1cm4gOyovCgkJY2FzZSAnSCc6IC8vIGhvdXIgYXMgYSBkZWNpbWFsIG51bWJlciB1c2luZyBhIDI0LWhvdXIgY2xvY2sgKHJhbmdlIDAwIHRvIDIzKQoJCQlyZXR1cm4gRGF0ZS5fcGFkKHRoaXMuZ2V0SG91cnMoKSwgMik7CgkJY2FzZSAnSSc6IC8vIGhvdXIgYXMgYSBkZWNpbWFsIG51bWJlciB1c2luZyBhIDEyLWhvdXIgY2xvY2sgKHJhbmdlIDAxIHRvIDEyKQoJCQlyZXR1cm4gRGF0ZS5fcGFkKHRoaXMuZ2V0SG91cnMoKSAlIDEyLCAyKTsKCQljYXNlICdqJzogLy8gZGF5IG9mIHRoZSB5ZWFyIGFzIGEgZGVjaW1hbCBudW1iZXIgKHJhbmdlIDAwMSB0byAzNjYpCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXRNb250aCgpICogMzAgKyBNYXRoLmNlaWwodGhpcy5nZXRNb250aCgpIC8gMikgKyB0aGlzLmdldERheSgpIC0gMiAqICh0aGlzLmdldE1vbnRoKCkgPiAxKSArICghKHRoaXMuZ2V0RnVsbFllYXIoKSAlIDQwMCkgfHwgKCEodGhpcy5nZXRGdWxsWWVhcigpICUgNCkgJiYgdGhpcy5nZXRGdWxsWWVhcigpICUgMTAwKSksIDMpOwoJCWNhc2UgJ20nOiAvLyBtb250aCBhcyBhIGRlY2ltYWwgbnVtYmVyIChyYW5nZSAwMSB0byAxMikKCQkJcmV0dXJuIERhdGUuX3BhZCh0aGlzLmdldE1vbnRoKCkgKyAxLCAyKTsKCQljYXNlICdNJzogLy8gbWludXRlIGFzIGEgZGVjaW1hbCBudW1iZXIKCQkJcmV0dXJuIERhdGUuX3BhZCh0aGlzLmdldE1pbnV0ZXMoKSwgMik7CgkJY2FzZSAnbic6IC8vIG5ld2xpbmUgY2hhcmFjdGVyCgkJCXJldHVybiAnXG4nOwoJCWNhc2UgJ3AnOiAvLyBlaXRoZXIgYGFtJyBvciBgcG0nIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gdGltZSB2YWx1ZSwgb3IgdGhlIGNvcnJlc3BvbmRpbmcgc3RyaW5ncyBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlCgkJCXJldHVybiB0aGlzLmdldEhvdXJzKCkgPCAxMiA/ICdhbScgOiAncG0nOwoJCWNhc2UgJ1MnOiAvLyBzZWNvbmQgYXMgYSBkZWNpbWFsIG51bWJlcgoJCQlyZXR1cm4gRGF0ZS5fcGFkKHRoaXMuZ2V0U2Vjb25kcygpLCAyKTsKCQljYXNlICd0JzogLy8gdGFiIGNoYXJhY3RlcgoJCQlyZXR1cm4gJ1x0JzsKCQljYXNlICd1JzogLy8gd2Vla2RheSBhcyBhIGRlY2ltYWwgbnVtYmVyIFsxLDddLCB3aXRoIDEgcmVwcmVzZW50aW5nIE1vbmRheQoJCQlyZXR1cm4gdGhpcy5nZXREYXkoKSB8fCA3OwoJCS8qY2FzZSAnVSc6IC8vIHdlZWsgbnVtYmVyIG9mIHRoZSBjdXJyZW50IHllYXIgYXMgYSBkZWNpbWFsIG51bWJlciwgc3RhcnRpbmcgd2l0aCB0aGUgZmlyc3QgU3VuZGF5IGFzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGZpcnN0IHdlZWsKCQkJcmV0dXJuIDsKCQljYXNlICdWJzogLy8gVGhlIElTTyA4NjAxOjE5ODggd2VlayBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhciBhcyBhIGRlY2ltYWwgbnVtYmVyLCByYW5nZSAwMSB0byA1Mywgd2hlcmUgd2VlayAxIGlzIHRoZSBmaXJzdCB3ZWVrIHRoYXQgaGFzIGF0IGxlYXN0IDQgZGF5cyBpbiB0aGUgY3VycmVudCB5ZWFyLCBhbmQgd2l0aCBNb25kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4gKFVzZSAlRyBvciAlZyBmb3IgdGhlIHllYXIgY29tcG9uZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHdlZWsgbnVtYmVyIGZvciB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4pCgkJCXJldHVybiA7CgkJY2FzZSAnVyc6IC8vIHdlZWsgbnVtYmVyIG9mIHRoZSBjdXJyZW50IHllYXIgYXMgYSBkZWNpbWFsIG51bWJlciwgc3RhcnRpbmcgd2l0aCB0aGUgZmlyc3QgTW9uZGF5IGFzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGZpcnN0IHdlZWsKCQkJcmV0dXJuIDsqLwoJCWNhc2UgJ3cnOiAvLyBkYXkgb2YgdGhlIHdlZWsgYXMgYSBkZWNpbWFsLCBTdW5kYXkgYmVpbmcgMAoJCQlyZXR1cm4gdGhpcy5nZXREYXkoKTsKCQljYXNlICd5JzogLy8geWVhciBhcyBhIGRlY2ltYWwgbnVtYmVyIHdpdGhvdXQgYSBjZW50dXJ5IChyYW5nZSAwMCB0byA5OSkKCQkJcmV0dXJuIHRoaXMuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpLnN1YnN0cigyKTsKCQljYXNlICdZJzogLy8geWVhciBhcyBhIGRlY2ltYWwgbnVtYmVyIGluY2x1ZGluZyB0aGUgY2VudHVyeQoJCQlyZXR1cm4gdGhpcy5nZXRGdWxsWWVhcigpOwoJCS8qY2FzZSAneic6CgkJY2FzZSAnWic6IC8vIHRpbWUgem9uZSBvciBuYW1lIG9yIGFiYnJldmlhdGlvbgoJCQlyZXR1cm4gOyovCgkJZGVmYXVsdDoKCQkJcmV0dXJuIG1hdGNoMDsKCX0KfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgkvKiogUHJpbnRzIHRoZSBkYXRlIGluIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZm9ybWF0LiAqLwoJRGF0ZS5wcm90b3R5cGUucHJpbnQgPSBmdW5jdGlvbiAoc3RyKSB7CgkJcmV0dXJuIHRoaXMuZm9ybWF0KHN0cik7CgkJLyoKCQl2YXIgbSA9IHRoaXMuZ2V0TW9udGgoKTsKCQl2YXIgZCA9IHRoaXMuZ2V0RGF0ZSgpOwoJCXZhciB5ID0gdGhpcy5nZXRGdWxsWWVhcigpOwoJCXZhciB3biA9IHRoaXMuZ2V0V2Vla051bWJlcigpOwoJCXZhciB3ID0gdGhpcy5nZXREYXkoKTsKCQl2YXIgcyA9IHt9OwoJCXZhciBociA9IHRoaXMuZ2V0SG91cnMoKTsKCQl2YXIgcG0gPSAoaHIgPj0gMTIpOwoJCXZhciBpciA9IChwbSkgPyAoaHIgLSAxMikgOiBocjsKCQl2YXIgZHkgPSB0aGlzLmdldERheU9mWWVhcigpOwoJCWlmIChpciA9PSAwKQoJCQlpciA9IDEyOwoJCXZhciBtaW4gPSB0aGlzLmdldE1pbnV0ZXMoKTsKCQl2YXIgc2VjID0gdGhpcy5nZXRTZWNvbmRzKCk7CgkJc1siJWEiXSA9IENhbGVuZGFyLlNIT1JUX0RBWV9OQU1FU1t3XTsgLy8gYWJicmV2aWF0ZWQgd2Vla2RheSBuYW1lIFtGSVhNRTogSTE4Tl0KCQlzWyIlQSJdID0gQ2FsZW5kYXIuREFZX05BTUVTW3ddOyAvLyBmdWxsIHdlZWtkYXkgbmFtZQoJCXNbIiViIl0gPSBDYWxlbmRhci5TSE9SVF9NT05USF9OQU1FU1ttXTsgLy8gYWJicmV2aWF0ZWQgbW9udGggbmFtZSBbRklYTUU6IEkxOE5dCgkJc1siJUIiXSA9IENhbGVuZGFyLk1PTlRIX05BTUVTW21dOyAvLyBmdWxsIG1vbnRoIG5hbWUKCQkvLyBGSVhNRTogJWMgOiBwcmVmZXJyZWQgZGF0ZSBhbmQgdGltZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlCgkJc1siJUMiXSA9IDEgKyBNYXRoLmZsb29yKHkgLyAxMDApOyAvLyB0aGUgY2VudHVyeSBudW1iZXIKCQlzWyIlZCJdID0gKGQgPCAxMCkgPyAoIjAiICsgZCkgOiBkOyAvLyB0aGUgZGF5IG9mIHRoZSBtb250aCAocmFuZ2UgMDEgdG8gMzEpCgkJc1siJWUiXSA9IGQ7IC8vIHRoZSBkYXkgb2YgdGhlIG1vbnRoIChyYW5nZSAxIHRvIDMxKQoJCS8vIEZJWE1FOiAlRCA6IGFtZXJpY2FuIGRhdGUgc3R5bGU6ICVtLyVkLyV5CgkJLy8gRklYTUU6ICVFLCAlRiwgJUcsICVnLCAlaCAobWFuIHN0cmZ0aW1lKQoJCXNbIiVIIl0gPSAoaHIgPCAxMCkgPyAoIjAiICsgaHIpIDogaHI7IC8vIGhvdXIsIHJhbmdlIDAwIHRvIDIzICgyNGggZm9ybWF0KQoJCXNbIiVJIl0gPSAoaXIgPCAxMCkgPyAoIjAiICsgaXIpIDogaXI7IC8vIGhvdXIsIHJhbmdlIDAxIHRvIDEyICgxMmggZm9ybWF0KQoJCXNbIiVqIl0gPSAoZHkgPCAxMDApID8gKChkeSA8IDEwKSA/ICgiMDAiICsgZHkpIDogKCIwIiArIGR5KSkgOiBkeTsgLy8gZGF5IG9mIHRoZSB5ZWFyIChyYW5nZSAwMDEgdG8gMzY2KQoJCXNbIiVrIl0gPSBocjsgICAvLyBob3VyLCByYW5nZSAwIHRvIDIzICgyNGggZm9ybWF0KQoJCXNbIiVsIl0gPSBpcjsgICAvLyBob3VyLCByYW5nZSAxIHRvIDEyICgxMmggZm9ybWF0KQoJCXNbIiVtIl0gPSAobSA8IDkpID8gKCIwIiArICgxK20pKSA6ICgxK20pOyAvLyBtb250aCwgcmFuZ2UgMDEgdG8gMTIKCQlzWyIlTSJdID0gKG1pbiA8IDEwKSA/ICgiMCIgKyBtaW4pIDogbWluOyAvLyBtaW51dGUsIHJhbmdlIDAwIHRvIDU5CgkJc1siJW4iXSA9ICJcbiI7ICAgLy8gYSBuZXdsaW5lIGNoYXJhY3RlcgoJCXNbIiVwIl0gPSBwbSA/ICJQTSIgOiAiQU0iOwoJCXNbIiVQIl0gPSBwbSA/ICJwbSIgOiAiYW0iOwoJCS8vIEZJWE1FOiAlciA6IHRoZSB0aW1lIGluIGFtL3BtIG5vdGF0aW9uICVJOiVNOiVTICVwCgkJLy8gRklYTUU6ICVSIDogdGhlIHRpbWUgaW4gMjQtaG91ciBub3RhdGlvbiAlSDolTQoJCXNbIiVzIl0gPSBNYXRoLmZsb29yKHRoaXMuZ2V0VGltZSgpIC8gMTAwMCk7CgkJc1siJVMiXSA9IChzZWMgPCAxMCkgPyAoIjAiICsgc2VjKSA6IHNlYzsgLy8gc2Vjb25kcywgcmFuZ2UgMDAgdG8gNTkKCQlzWyIldCJdID0gIlx0IjsgICAvLyBhIHRhYiBjaGFyYWN0ZXIKCQkvLyBGSVhNRTogJVQgOiB0aGUgdGltZSBpbiAyNC1ob3VyIG5vdGF0aW9uICglSDolTTolUykKCQlzWyIlVSJdID0gc1siJVciXSA9IHNbIiVWIl0gPSAod24gPCAxMCkgPyAoIjAiICsgd24pIDogd247CgkJc1siJXUiXSA9IHcgKyAxOyAgLy8gdGhlIGRheSBvZiB0aGUgd2VlayAocmFuZ2UgMSB0byA3LCAxID0gTU9OKQoJCXNbIiV3Il0gPSB3OyAgICAvLyB0aGUgZGF5IG9mIHRoZSB3ZWVrIChyYW5nZSAwIHRvIDYsIDAgPSBTVU4pCgkJLy8gRklYTUU6ICV4IDogcHJlZmVycmVkIGRhdGUgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBjdXJyZW50IGxvY2FsZSB3aXRob3V0IHRoZSB0aW1lCgkJLy8gRklYTUU6ICVYIDogcHJlZmVycmVkIHRpbWUgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBjdXJyZW50IGxvY2FsZSB3aXRob3V0IHRoZSBkYXRlCgkJc1siJXkiXSA9ICgnJyArIHkpLnN1YnN0cigyLCAyKTsgLy8geWVhciB3aXRob3V0IHRoZSBjZW50dXJ5IChyYW5nZSAwMCB0byA5OSkKCQlzWyIlWSJdID0geTsgICAgLy8geWVhciB3aXRoIHRoZSBjZW50dXJ5CgkJc1siJSUiXSA9ICIlIjsgICAgLy8gYSBsaXRlcmFsICclJyBjaGFyYWN0ZXIKCgkJdmFyIHJlID0gLyUuL2c7CgkJdmFyIGEgPSBzdHIubWF0Y2gocmUpOwoJCWZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgewoJCQl2YXIgdG1wID0gc1thW2ldXTsKCQkJaWYgKHRtcCkgewoJCQkJcmUgPSBuZXcgUmVnRXhwKGFbaV0sICdnJyk7CgkJCQlzdHIgPSBzdHIucmVwbGFjZShyZSwgdG1wKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHN0cjsKCQkqLwoJfTsKCglEYXRlLnByb3RvdHlwZS5fX21zaF9vbGRTZXRGdWxsWWVhciA9IERhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyOwoJRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXIgPSBmdW5jdGlvbih5KSB7CgkJdmFyIGQgPSBuZXcgRGF0ZSh0aGlzKTsKCQlkLl9fbXNoX29sZFNldEZ1bGxZZWFyKHkpOwoJCWlmIChkLmdldE1vbnRoKCkgIT0gdGhpcy5nZXRNb250aCgpKQoJCQl0aGlzLnNldERhdGUoMjgpOwoJCXRoaXMuX19tc2hfb2xkU2V0RnVsbFllYXIoeSk7Cgl9CgoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vIFRoZSBqUXVlcnkgcGx1Z2luIGZ1bmN0aW9uCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJJC5mbi5jYWxlbmRhciA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQl2YXIgZGVmYXVsdHMgPSB7CgkJCXRyaWdnZXJFbGVtZW50OiBudWxsLCAvLyBQb3B1cCBjYWxlbmRhcgoJCQlwYXJlbnRFbGVtZW50OiBudWxsLCAvLyBJbmxpbmUgY2FsZW5kYXIKCQkJbWluWWVhcjogMTkwMCwKCQkJbWF4WWVhcjogMjEwMCwKCQkJZmlyc3REYXlPZldlZWs6IDEsIC8vIE1vbmRheQoJCQl3ZWVrZW5kOiAiMCw2IiwgLy8gU3VuZGF5IGFuZCBTYXR1cmRheQoJCQlkYXRlRm9ybWF0OiAnJVktJW0tJWQnLAoJCQlkYXRlRmllbGQ6IG51bGwsCgkJCXNlbGVjdEhhbmRsZXI6IG51bGwsCgkJCWNsb3NlSGFuZGxlcjogbnVsbAoJCX07CgkJdmFyIHNldHRpbmdzID0gJC5leHRlbmQoe30sIGRlZmF1bHRzLCBvcHRpb25zKTsKCgkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQl2YXIgc2VsZiA9ICQodGhpcyk7CgkJCXZhciBjYWxlbmRhciA9IG5ldyBDYWxlbmRhcigpOwoKCQkJY2FsZW5kYXIubWluWWVhciA9IHNldHRpbmdzLm1pblllYXI7CgkJCWNhbGVuZGFyLm1heFllYXIgPSBzZXR0aW5ncy5tYXhZZWFyOwoKCQkJY2FsZW5kYXIuZmlyc3REYXlPZldlZWsgPSBzZXR0aW5ncy5maXJzdERheU9mV2VlazsKCQkJY2FsZW5kYXIud2Vla2VuZCA9IHNldHRpbmdzLndlZWtlbmQ7CgkJCWNhbGVuZGFyLmRhdGVGb3JtYXQgPSBzZXR0aW5ncy5kYXRlRm9ybWF0OwoJCQljYWxlbmRhci5kYXRlRmllbGQgPSAoc2V0dGluZ3MuZGF0ZUZpZWxkIHx8IHNlbGYpOwoKCQkJY2FsZW5kYXIuc2VsZWN0SGFuZGxlciA9IChzZXR0aW5ncy5zZWxlY3RIYW5kbGVyIHx8IENhbGVuZGFyLmRlZmF1bHRTZWxlY3RIYW5kbGVyKTsKCgkJCS8vIElubGluZSBDYWxlbmRhcgoJCQl2YXIgc2VsZkRhdGUgPSBzZWxmLmh0bWwoKSB8fCBzZWxmLnZhbCgpOwoJCQlpZiAoc2V0dGluZ3MucGFyZW50RWxlbWVudCkgewoJCQkJY2FsZW5kYXIuY3JlYXRlKCQoc2V0dGluZ3MucGFyZW50RWxlbWVudCkpOwoJCQkJaWYgKHNlbGZEYXRlKSBjYWxlbmRhci5wYXJzZURhdGUoc2VsZkRhdGUpOwoJCQkJY2FsZW5kYXIuc2hvdygpOwoJCQl9IGVsc2UgewoJCQkJLy8gUG9wdXAgQ2FsZW5kYXIKCQkJCWNhbGVuZGFyLmNyZWF0ZSgpOwoJCQkJaWYgKHNlbGZEYXRlKSBjYWxlbmRhci5wYXJzZURhdGUoc2VsZkRhdGUpOwoJCQkJdmFyIHRyaWdnZXJFbGVtZW50ID0gJChzZXR0aW5ncy50cmlnZ2VyRWxlbWVudCB8fCBzZWxmKTsKCQkJCXRyaWdnZXJFbGVtZW50LmNsaWNrKGZ1bmN0aW9uKCkgewoJCQkJCWNhbGVuZGFyLmNsb3NlSGFuZGxlciA9IChzZXR0aW5ncy5jbG9zZUhhbmRsZXIgfHwgQ2FsZW5kYXIuZGVmYXVsdENsb3NlSGFuZGxlcik7CgkJCQkJY2FsZW5kYXIuc2hvd0F0RWxlbWVudCh0cmlnZ2VyRWxlbWVudCk7CgkJCQl9KTsKCQkJfQoJCX0pOwoKCQlyZXR1cm4gdGhpczsKCX0KCn0pKGpRdWVyeSk7Ci8qIQogKiBqUXVlcnkgRm9ybSBQbHVnaW4KICogdmVyc2lvbjogMi40MyAoMTItTUFSLTIwMTApCiAqIEByZXF1aXJlcyBqUXVlcnkgdjEuMy4yIG9yIGxhdGVyCiAqCiAqIEV4YW1wbGVzIGFuZCBkb2N1bWVudGF0aW9uIGF0OiBodHRwOi8vbWFsc3VwLmNvbS9qcXVlcnkvZm9ybS8KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXM6CiAqICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAKICogICBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwKICovCihmdW5jdGlvbigkKSB7JC5mbi5hamF4U3VibWl0PWZ1bmN0aW9uKG9wdGlvbnMpe2lmKCF0aGlzLmxlbmd0aCl7bG9nKCdhamF4U3VibWl0OiBza2lwcGluZyBzdWJtaXQgcHJvY2VzcyAtIG5vIGVsZW1lbnQgc2VsZWN0ZWQnKTtyZXR1cm4gdGhpc31pZih0eXBlb2Ygb3B0aW9ucz09J2Z1bmN0aW9uJylvcHRpb25zPXtzdWNjZXNzOm9wdGlvbnN9O3ZhciB1cmw9JC50cmltKHRoaXMuYXR0cignYWN0aW9uJykpO2lmKHVybCl7dXJsPSh1cmwubWF0Y2goL14oW14jXSspLyl8fFtdKVsxXX11cmw9dXJsfHx3aW5kb3cubG9jYXRpb24uaHJlZnx8Jyc7b3B0aW9ucz0kLmV4dGVuZCh7dXJsOnVybCx0eXBlOnRoaXMuYXR0cignbWV0aG9kJyl8fCdHRVQnLGlmcmFtZVNyYzovXmh0dHBzL2kudGVzdCh3aW5kb3cubG9jYXRpb24uaHJlZnx8JycpPydqYXZhc2NyaXB0OmZhbHNlJzonYWJvdXQ6YmxhbmsnfSxvcHRpb25zfHx7fSk7dmFyIHZldG89e307dGhpcy50cmlnZ2VyKCdmb3JtLXByZS1zZXJpYWxpemUnLFt0aGlzLG9wdGlvbnMsdmV0b10pO2lmKHZldG8udmV0byl7bG9nKCdhamF4U3VibWl0OiBzdWJtaXQgdmV0b2VkIHZpYSBmb3JtLXByZS1zZXJpYWxpemUgdHJpZ2dlcicpO3JldHVybiB0aGlzfWlmKG9wdGlvbnMuYmVmb3JlU2VyaWFsaXplJiZvcHRpb25zLmJlZm9yZVNlcmlhbGl6ZSh0aGlzLG9wdGlvbnMpPT09ZmFsc2Upe2xvZygnYWpheFN1Ym1pdDogc3VibWl0IGFib3J0ZWQgdmlhIGJlZm9yZVNlcmlhbGl6ZSBjYWxsYmFjaycpO3JldHVybiB0aGlzfXZhciBhPXRoaXMuZm9ybVRvQXJyYXkob3B0aW9ucy5zZW1hbnRpYyk7aWYob3B0aW9ucy5kYXRhKXtvcHRpb25zLmV4dHJhRGF0YT1vcHRpb25zLmRhdGE7Zm9yKHZhciBuIGluIG9wdGlvbnMuZGF0YSl7aWYob3B0aW9ucy5kYXRhW25daW5zdGFuY2VvZiBBcnJheSl7Zm9yKHZhciBrIGluIG9wdGlvbnMuZGF0YVtuXSlhLnB1c2goe25hbWU6bix2YWx1ZTpvcHRpb25zLmRhdGFbbl1ba119KX1lbHNlIGEucHVzaCh7bmFtZTpuLHZhbHVlOm9wdGlvbnMuZGF0YVtuXX0pfX1pZihvcHRpb25zLmJlZm9yZVN1Ym1pdCYmb3B0aW9ucy5iZWZvcmVTdWJtaXQoYSx0aGlzLG9wdGlvbnMpPT09ZmFsc2Upe2xvZygnYWpheFN1Ym1pdDogc3VibWl0IGFib3J0ZWQgdmlhIGJlZm9yZVN1Ym1pdCBjYWxsYmFjaycpO3JldHVybiB0aGlzfXRoaXMudHJpZ2dlcignZm9ybS1zdWJtaXQtdmFsaWRhdGUnLFthLHRoaXMsb3B0aW9ucyx2ZXRvXSk7aWYodmV0by52ZXRvKXtsb2coJ2FqYXhTdWJtaXQ6IHN1Ym1pdCB2ZXRvZWQgdmlhIGZvcm0tc3VibWl0LXZhbGlkYXRlIHRyaWdnZXInKTtyZXR1cm4gdGhpc312YXIgcT0kLnBhcmFtKGEpO2lmKG9wdGlvbnMudHlwZS50b1VwcGVyQ2FzZSgpPT0nR0VUJyl7b3B0aW9ucy51cmwrPShvcHRpb25zLnVybC5pbmRleE9mKCc/Jyk+PTA/JyYnOic/JykrcTtvcHRpb25zLmRhdGE9bnVsbH1lbHNlIG9wdGlvbnMuZGF0YT1xO3ZhciAkZm9ybT10aGlzLGNhbGxiYWNrcz1bXTtpZihvcHRpb25zLnJlc2V0Rm9ybSljYWxsYmFja3MucHVzaChmdW5jdGlvbigpeyRmb3JtLnJlc2V0Rm9ybSgpfSk7aWYob3B0aW9ucy5jbGVhckZvcm0pY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oKXskZm9ybS5jbGVhckZvcm0oKX0pO2lmKCFvcHRpb25zLmRhdGFUeXBlJiZvcHRpb25zLnRhcmdldCl7dmFyIG9sZFN1Y2Nlc3M9b3B0aW9ucy5zdWNjZXNzfHxmdW5jdGlvbigpe307Y2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oZGF0YSl7dmFyIGZuPW9wdGlvbnMucmVwbGFjZVRhcmdldD8ncmVwbGFjZVdpdGgnOidodG1sJzskKG9wdGlvbnMudGFyZ2V0KVtmbl0oZGF0YSkuZWFjaChvbGRTdWNjZXNzLGFyZ3VtZW50cyl9KX1lbHNlIGlmKG9wdGlvbnMuc3VjY2VzcyljYWxsYmFja3MucHVzaChvcHRpb25zLnN1Y2Nlc3MpO29wdGlvbnMuc3VjY2Vzcz1mdW5jdGlvbihkYXRhLHN0YXR1cyx4aHIpe2Zvcih2YXIgaT0wLG1heD1jYWxsYmFja3MubGVuZ3RoO2k8bWF4O2krKyljYWxsYmFja3NbaV0uYXBwbHkob3B0aW9ucyxbZGF0YSxzdGF0dXMseGhyfHwkZm9ybSwkZm9ybV0pfTt2YXIgZmlsZXM9JCgnaW5wdXQ6ZmlsZScsdGhpcykuZmllbGRWYWx1ZSgpO3ZhciBmb3VuZD1mYWxzZTtmb3IodmFyIGo9MDtqPGZpbGVzLmxlbmd0aDtqKyspaWYoZmlsZXNbal0pZm91bmQ9dHJ1ZTt2YXIgbXVsdGlwYXJ0PWZhbHNlO2lmKChmaWxlcy5sZW5ndGgmJm9wdGlvbnMuaWZyYW1lIT09ZmFsc2UpfHxvcHRpb25zLmlmcmFtZXx8Zm91bmR8fG11bHRpcGFydCl7aWYob3B0aW9ucy5jbG9zZUtlZXBBbGl2ZSkkLmdldChvcHRpb25zLmNsb3NlS2VlcEFsaXZlLGZpbGVVcGxvYWQpO2Vsc2UgZmlsZVVwbG9hZCgpfWVsc2UgJC5hamF4KG9wdGlvbnMpO3RoaXMudHJpZ2dlcignZm9ybS1zdWJtaXQtbm90aWZ5JyxbdGhpcyxvcHRpb25zXSk7cmV0dXJuIHRoaXM7ZnVuY3Rpb24gZmlsZVVwbG9hZCgpe3ZhciBmb3JtPSRmb3JtWzBdO2lmKCQoJzppbnB1dFtuYW1lPXN1Ym1pdF0nLGZvcm0pLmxlbmd0aCl7YWxlcnQoJ0Vycm9yOiBGb3JtIGVsZW1lbnRzIG11c3Qgbm90IGJlIG5hbWVkICJzdWJtaXQiLicpO3JldHVybn12YXIgb3B0cz0kLmV4dGVuZCh7fSwkLmFqYXhTZXR0aW5ncyxvcHRpb25zKTt2YXIgcz0kLmV4dGVuZCh0cnVlLHt9LCQuZXh0ZW5kKHRydWUse30sJC5hamF4U2V0dGluZ3MpLG9wdHMpO3ZhciBpZD0nanFGb3JtSU8nKyhuZXcgRGF0ZSgpLmdldFRpbWUoKSk7dmFyICRpbz0kKCc8aWZyYW1lIGlkPSInK2lkKyciIG5hbWU9IicraWQrJyIgc3JjPSInK29wdHMuaWZyYW1lU3JjKyciIG9ubG9hZD0iKGpRdWVyeSh0aGlzKS5kYXRhKFwnZm9ybS1wbHVnaW4tb25sb2FkXCcpKSgpIiAvPicpO3ZhciBpbz0kaW9bMF07JGlvLmNzcyh7cG9zaXRpb246J2Fic29sdXRlJyx0b3A6Jy0xMDAwcHgnLGxlZnQ6Jy0xMDAwcHgnfSk7dmFyIHhocj17YWJvcnRlZDowLHJlc3BvbnNlVGV4dDpudWxsLHJlc3BvbnNlWE1MOm51bGwsc3RhdHVzOjAsc3RhdHVzVGV4dDonbi9hJyxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXt9LGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKCl7fSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKCl7fSxhYm9ydDpmdW5jdGlvbigpe3RoaXMuYWJvcnRlZD0xOyRpby5hdHRyKCdzcmMnLG9wdHMuaWZyYW1lU3JjKX19O3ZhciBnPW9wdHMuZ2xvYmFsO2lmKGcmJiEkLmFjdGl2ZSsrKSQuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iik7aWYoZykkLmV2ZW50LnRyaWdnZXIoImFqYXhTZW5kIixbeGhyLG9wdHNdKTtpZihzLmJlZm9yZVNlbmQmJnMuYmVmb3JlU2VuZCh4aHIscyk9PT1mYWxzZSl7cy5nbG9iYWwmJiQuYWN0aXZlLS07cmV0dXJufWlmKHhoci5hYm9ydGVkKXJldHVybjt2YXIgY2JJbnZva2VkPWZhbHNlO3ZhciB0aW1lZE91dD0wO3ZhciBzdWI9Zm9ybS5jbGs7aWYoc3ViKXt2YXIgbj1zdWIubmFtZTtpZihuJiYhc3ViLmRpc2FibGVkKXtvcHRzLmV4dHJhRGF0YT1vcHRzLmV4dHJhRGF0YXx8e307b3B0cy5leHRyYURhdGFbbl09c3ViLnZhbHVlO2lmKHN1Yi50eXBlPT0iaW1hZ2UiKXtvcHRzLmV4dHJhRGF0YVtuKycueCddPWZvcm0uY2xrX3g7b3B0cy5leHRyYURhdGFbbisnLnknXT1mb3JtLmNsa195fX19ZnVuY3Rpb24gZG9TdWJtaXQoKXt2YXIgdD0kZm9ybS5hdHRyKCd0YXJnZXQnKSxhPSRmb3JtLmF0dHIoJ2FjdGlvbicpO2Zvcm0uc2V0QXR0cmlidXRlKCd0YXJnZXQnLGlkKTtpZihmb3JtLmdldEF0dHJpYnV0ZSgnbWV0aG9kJykhPSdQT1NUJylmb3JtLnNldEF0dHJpYnV0ZSgnbWV0aG9kJywnUE9TVCcpO2lmKGZvcm0uZ2V0QXR0cmlidXRlKCdhY3Rpb24nKSE9b3B0cy51cmwpZm9ybS5zZXRBdHRyaWJ1dGUoJ2FjdGlvbicsb3B0cy51cmwpO2lmKCFvcHRzLnNraXBFbmNvZGluZ092ZXJyaWRlKXskZm9ybS5hdHRyKHtlbmNvZGluZzonbXVsdGlwYXJ0L2Zvcm0tZGF0YScsZW5jdHlwZTonbXVsdGlwYXJ0L2Zvcm0tZGF0YSd9KX1pZihvcHRzLnRpbWVvdXQpc2V0VGltZW91dChmdW5jdGlvbigpe3RpbWVkT3V0PXRydWU7Y2IoKX0sb3B0cy50aW1lb3V0KTt2YXIgZXh0cmFJbnB1dHM9W107dHJ5e2lmKG9wdHMuZXh0cmFEYXRhKWZvcih2YXIgbiBpbiBvcHRzLmV4dHJhRGF0YSlleHRyYUlucHV0cy5wdXNoKCQoJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicrbisnIiB2YWx1ZT0iJytvcHRzLmV4dHJhRGF0YVtuXSsnIiAvPicpLmFwcGVuZFRvKGZvcm0pWzBdKTskaW8uYXBwZW5kVG8oJ2JvZHknKTskaW8uZGF0YSgnZm9ybS1wbHVnaW4tb25sb2FkJyxjYik7Zm9ybS5zdWJtaXQoKX1maW5hbGx5e2Zvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLGEpO3Q/Zm9ybS5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsdCk6JGZvcm0ucmVtb3ZlQXR0cigndGFyZ2V0Jyk7JChleHRyYUlucHV0cykucmVtb3ZlKCl9fTtpZihvcHRzLmZvcmNlU3luYylkb1N1Ym1pdCgpO2Vsc2Ugc2V0VGltZW91dChkb1N1Ym1pdCwxMCk7dmFyIGRvbUNoZWNrQ291bnQ9MTAwO2Z1bmN0aW9uIGNiKCl7aWYoY2JJbnZva2VkKXJldHVybjt2YXIgb2s9dHJ1ZTt0cnl7aWYodGltZWRPdXQpdGhyb3cndGltZW91dCc7dmFyIGRhdGEsZG9jO2RvYz1pby5jb250ZW50V2luZG93P2lvLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6aW8uY29udGVudERvY3VtZW50P2lvLmNvbnRlbnREb2N1bWVudDppby5kb2N1bWVudDt2YXIgaXNYbWw9b3B0cy5kYXRhVHlwZT09J3htbCd8fGRvYy5YTUxEb2N1bWVudHx8JC5pc1hNTERvYyhkb2MpO2xvZygnaXNYbWw9Jytpc1htbCk7aWYoIWlzWG1sJiYoZG9jLmJvZHk9PW51bGx8fGRvYy5ib2R5LmlubmVySFRNTD09JycpKXtpZigtLWRvbUNoZWNrQ291bnQpe2xvZygncmVxdWVpbmcgb25Mb2FkIGNhbGxiYWNrLCBET00gbm90IGF2YWlsYWJsZScpO3NldFRpbWVvdXQoY2IsMjUwKTtyZXR1cm59bG9nKCdDb3VsZCBub3QgYWNjZXNzIGlmcmFtZSBET00gYWZ0ZXIgMTAwIHRyaWVzLicpO3JldHVybn1sb2coJ3Jlc3BvbnNlIGRldGVjdGVkJyk7Y2JJbnZva2VkPXRydWU7eGhyLnJlc3BvbnNlVGV4dD1kb2MuYm9keT9kb2MuYm9keS5pbm5lckhUTUw6bnVsbDt4aHIucmVzcG9uc2VYTUw9ZG9jLlhNTERvY3VtZW50P2RvYy5YTUxEb2N1bWVudDpkb2M7eGhyLmdldFJlc3BvbnNlSGVhZGVyPWZ1bmN0aW9uKGhlYWRlcil7dmFyIGhlYWRlcnM9eydjb250ZW50LXR5cGUnOm9wdHMuZGF0YVR5cGV9O3JldHVybiBoZWFkZXJzW2hlYWRlcl19O2lmKG9wdHMuZGF0YVR5cGU9PSdqc29uJ3x8b3B0cy5kYXRhVHlwZT09J3NjcmlwdCcpe3ZhciB0YT1kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RleHRhcmVhJylbMF07aWYodGEpeGhyLnJlc3BvbnNlVGV4dD10YS52YWx1ZTtlbHNle3ZhciBwcmU9ZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwcmUnKVswXTtpZihwcmUpeGhyLnJlc3BvbnNlVGV4dD1wcmUuaW5uZXJIVE1MfX1lbHNlIGlmKG9wdHMuZGF0YVR5cGU9PSd4bWwnJiYheGhyLnJlc3BvbnNlWE1MJiZ4aHIucmVzcG9uc2VUZXh0IT1udWxsKXt4aHIucmVzcG9uc2VYTUw9dG9YbWwoeGhyLnJlc3BvbnNlVGV4dCl9ZGF0YT0kLmh0dHBEYXRhKHhocixvcHRzLmRhdGFUeXBlKX1jYXRjaChlKXtsb2coJ2Vycm9yIGNhdWdodDonLGUpO29rPWZhbHNlO3hoci5lcnJvcj1lOyQuaGFuZGxlRXJyb3Iob3B0cyx4aHIsJ2Vycm9yJyxlKX1pZihvayl7b3B0cy5zdWNjZXNzKGRhdGEsJ3N1Y2Nlc3MnKTtpZihnKSQuZXZlbnQudHJpZ2dlcigiYWpheFN1Y2Nlc3MiLFt4aHIsb3B0c10pfWlmKGcpJC5ldmVudC50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt4aHIsb3B0c10pO2lmKGcmJiEtLSQuYWN0aXZlKSQuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKTtpZihvcHRzLmNvbXBsZXRlKW9wdHMuY29tcGxldGUoeGhyLG9rPydzdWNjZXNzJzonZXJyb3InKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGlvLnJlbW92ZURhdGEoJ2Zvcm0tcGx1Z2luLW9ubG9hZCcpOyRpby5yZW1vdmUoKTt4aHIucmVzcG9uc2VYTUw9bnVsbH0sMTAwKX07ZnVuY3Rpb24gdG9YbWwocyxkb2Mpe2lmKHdpbmRvdy5BY3RpdmVYT2JqZWN0KXtkb2M9bmV3IEFjdGl2ZVhPYmplY3QoJ01pY3Jvc29mdC5YTUxET00nKTtkb2MuYXN5bmM9J2ZhbHNlJztkb2MubG9hZFhNTChzKX1lbHNlIGRvYz0obmV3IERPTVBhcnNlcigpKS5wYXJzZUZyb21TdHJpbmcocywndGV4dC94bWwnKTtyZXR1cm4oZG9jJiZkb2MuZG9jdW1lbnRFbGVtZW50JiZkb2MuZG9jdW1lbnRFbGVtZW50LnRhZ05hbWUhPSdwYXJzZXJlcnJvcicpP2RvYzpudWxsfX19OyQuZm4uYWpheEZvcm09ZnVuY3Rpb24ob3B0aW9ucyl7cmV0dXJuIHRoaXMuYWpheEZvcm1VbmJpbmQoKS5iaW5kKCdzdWJtaXQuZm9ybS1wbHVnaW4nLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTskKHRoaXMpLmFqYXhTdWJtaXQob3B0aW9ucyl9KS5iaW5kKCdjbGljay5mb3JtLXBsdWdpbicsZnVuY3Rpb24oZSl7dmFyIHRhcmdldD1lLnRhcmdldDt2YXIgJGVsPSQodGFyZ2V0KTtpZighKCRlbC5pcygiOnN1Ym1pdCxpbnB1dDppbWFnZSIpKSl7dmFyIHQ9JGVsLmNsb3Nlc3QoJzpzdWJtaXQnKTtpZih0Lmxlbmd0aD09MClyZXR1cm47dGFyZ2V0PXRbMF19dmFyIGZvcm09dGhpcztmb3JtLmNsaz10YXJnZXQ7aWYodGFyZ2V0LnR5cGU9PSdpbWFnZScpe2lmKGUub2Zmc2V0WCE9dW5kZWZpbmVkKXtmb3JtLmNsa194PWUub2Zmc2V0WDtmb3JtLmNsa195PWUub2Zmc2V0WX1lbHNlIGlmKHR5cGVvZiAkLmZuLm9mZnNldD09J2Z1bmN0aW9uJyl7dmFyIG9mZnNldD0kZWwub2Zmc2V0KCk7Zm9ybS5jbGtfeD1lLnBhZ2VYLW9mZnNldC5sZWZ0O2Zvcm0uY2xrX3k9ZS5wYWdlWS1vZmZzZXQudG9wfWVsc2V7Zm9ybS5jbGtfeD1lLnBhZ2VYLXRhcmdldC5vZmZzZXRMZWZ0O2Zvcm0uY2xrX3k9ZS5wYWdlWS10YXJnZXQub2Zmc2V0VG9wfX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zm9ybS5jbGs9Zm9ybS5jbGtfeD1mb3JtLmNsa195PW51bGx9LDEwMCl9KX07JC5mbi5hamF4Rm9ybVVuYmluZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVuYmluZCgnc3VibWl0LmZvcm0tcGx1Z2luIGNsaWNrLmZvcm0tcGx1Z2luJyl9OyQuZm4uZm9ybVRvQXJyYXk9ZnVuY3Rpb24oc2VtYW50aWMpe3ZhciBhPVtdO2lmKHRoaXMubGVuZ3RoPT0wKXJldHVybiBhO3ZhciBmb3JtPXRoaXNbMF07dmFyIGVscz1zZW1hbnRpYz9mb3JtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJyk6Zm9ybS5lbGVtZW50cztpZighZWxzKXJldHVybiBhO2Zvcih2YXIgaT0wLG1heD1lbHMubGVuZ3RoO2k8bWF4O2krKyl7dmFyIGVsPWVsc1tpXTt2YXIgbj1lbC5uYW1lO2lmKCFuKWNvbnRpbnVlO2lmKHNlbWFudGljJiZmb3JtLmNsayYmZWwudHlwZT09ImltYWdlIil7aWYoIWVsLmRpc2FibGVkJiZmb3JtLmNsaz09ZWwpe2EucHVzaCh7bmFtZTpuLHZhbHVlOiQoZWwpLnZhbCgpfSk7YS5wdXNoKHtuYW1lOm4rJy54Jyx2YWx1ZTpmb3JtLmNsa194fSx7bmFtZTpuKycueScsdmFsdWU6Zm9ybS5jbGtfeX0pfWNvbnRpbnVlfXZhciB2PSQuZmllbGRWYWx1ZShlbCx0cnVlKTtpZih2JiZ2LmNvbnN0cnVjdG9yPT1BcnJheSl7Zm9yKHZhciBqPTAsam1heD12Lmxlbmd0aDtqPGptYXg7aisrKWEucHVzaCh7bmFtZTpuLHZhbHVlOnZbal19KX1lbHNlIGlmKHYhPT1udWxsJiZ0eXBlb2YgdiE9J3VuZGVmaW5lZCcpYS5wdXNoKHtuYW1lOm4sdmFsdWU6dn0pfWlmKCFzZW1hbnRpYyYmZm9ybS5jbGspe3ZhciAkaW5wdXQ9JChmb3JtLmNsayksaW5wdXQ9JGlucHV0WzBdLG49aW5wdXQubmFtZTtpZihuJiYhaW5wdXQuZGlzYWJsZWQmJmlucHV0LnR5cGU9PSdpbWFnZScpe2EucHVzaCh7bmFtZTpuLHZhbHVlOiRpbnB1dC52YWwoKX0pO2EucHVzaCh7bmFtZTpuKycueCcsdmFsdWU6Zm9ybS5jbGtfeH0se25hbWU6bisnLnknLHZhbHVlOmZvcm0uY2xrX3l9KX19cmV0dXJuIGF9OyQuZm4uZm9ybVNlcmlhbGl6ZT1mdW5jdGlvbihzZW1hbnRpYyl7cmV0dXJuICQucGFyYW0odGhpcy5mb3JtVG9BcnJheShzZW1hbnRpYykpfTskLmZuLmZpZWxkU2VyaWFsaXplPWZ1bmN0aW9uKHN1Y2Nlc3NmdWwpe3ZhciBhPVtdO3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBuPXRoaXMubmFtZTtpZighbilyZXR1cm47dmFyIHY9JC5maWVsZFZhbHVlKHRoaXMsc3VjY2Vzc2Z1bCk7aWYodiYmdi5jb25zdHJ1Y3Rvcj09QXJyYXkpe2Zvcih2YXIgaT0wLG1heD12Lmxlbmd0aDtpPG1heDtpKyspYS5wdXNoKHtuYW1lOm4sdmFsdWU6dltpXX0pfWVsc2UgaWYodiE9PW51bGwmJnR5cGVvZiB2IT0ndW5kZWZpbmVkJylhLnB1c2goe25hbWU6dGhpcy5uYW1lLHZhbHVlOnZ9KX0pO3JldHVybiAkLnBhcmFtKGEpfTskLmZuLmZpZWxkVmFsdWU9ZnVuY3Rpb24oc3VjY2Vzc2Z1bCl7Zm9yKHZhciB2YWw9W10saT0wLG1heD10aGlzLmxlbmd0aDtpPG1heDtpKyspe3ZhciBlbD10aGlzW2ldO3ZhciB2PSQuZmllbGRWYWx1ZShlbCxzdWNjZXNzZnVsKTtpZih2PT09bnVsbHx8dHlwZW9mIHY9PSd1bmRlZmluZWQnfHwodi5jb25zdHJ1Y3Rvcj09QXJyYXkmJiF2Lmxlbmd0aCkpY29udGludWU7di5jb25zdHJ1Y3Rvcj09QXJyYXk/JC5tZXJnZSh2YWwsdik6dmFsLnB1c2godil9cmV0dXJuIHZhbH07JC5maWVsZFZhbHVlPWZ1bmN0aW9uKGVsLHN1Y2Nlc3NmdWwpe3ZhciBuPWVsLm5hbWUsdD1lbC50eXBlLHRhZz1lbC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7aWYodHlwZW9mIHN1Y2Nlc3NmdWw9PSd1bmRlZmluZWQnKXN1Y2Nlc3NmdWw9dHJ1ZTtpZihzdWNjZXNzZnVsJiYoIW58fGVsLmRpc2FibGVkfHx0PT0ncmVzZXQnfHx0PT0nYnV0dG9uJ3x8KHQ9PSdjaGVja2JveCd8fHQ9PSdyYWRpbycpJiYhZWwuY2hlY2tlZHx8KHQ9PSdzdWJtaXQnfHx0PT0naW1hZ2UnKSYmZWwuZm9ybSYmZWwuZm9ybS5jbGshPWVsfHx0YWc9PSdzZWxlY3QnJiZlbC5zZWxlY3RlZEluZGV4PT0tMSkpcmV0dXJuIG51bGw7aWYodGFnPT0nc2VsZWN0Jyl7dmFyIGluZGV4PWVsLnNlbGVjdGVkSW5kZXg7aWYoaW5kZXg8MClyZXR1cm4gbnVsbDt2YXIgYT1bXSxvcHM9ZWwub3B0aW9uczt2YXIgb25lPSh0PT0nc2VsZWN0LW9uZScpO3ZhciBtYXg9KG9uZT9pbmRleCsxOm9wcy5sZW5ndGgpO2Zvcih2YXIgaT0ob25lP2luZGV4OjApO2k8bWF4O2krKyl7dmFyIG9wPW9wc1tpXTtpZihvcC5zZWxlY3RlZCl7dmFyIHY9b3AudmFsdWU7aWYoIXYpdj0ob3AuYXR0cmlidXRlcyYmb3AuYXR0cmlidXRlc1sndmFsdWUnXSYmIShvcC5hdHRyaWJ1dGVzWyd2YWx1ZSddLnNwZWNpZmllZCkpP29wLnRleHQ6b3AudmFsdWU7aWYob25lKXJldHVybiB2O2EucHVzaCh2KX19cmV0dXJuIGF9cmV0dXJuIGVsLnZhbHVlfTskLmZuLmNsZWFyRm9ybT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXskKCdpbnB1dCxzZWxlY3QsdGV4dGFyZWEnLHRoaXMpLmNsZWFyRmllbGRzKCl9KX07JC5mbi5jbGVhckZpZWxkcz0kLmZuLmNsZWFySW5wdXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXRoaXMudHlwZSx0YWc9dGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCk7aWYodD09J3RleHQnfHx0PT0ncGFzc3dvcmQnfHx0YWc9PSd0ZXh0YXJlYScpdGhpcy52YWx1ZT0nJztlbHNlIGlmKHQ9PSdjaGVja2JveCd8fHQ9PSdyYWRpbycpdGhpcy5jaGVja2VkPWZhbHNlO2Vsc2UgaWYodGFnPT0nc2VsZWN0Jyl0aGlzLnNlbGVjdGVkSW5kZXg9LTF9KX07JC5mbi5yZXNldEZvcm09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYodHlwZW9mIHRoaXMucmVzZXQ9PSdmdW5jdGlvbid8fCh0eXBlb2YgdGhpcy5yZXNldD09J29iamVjdCcmJiF0aGlzLnJlc2V0Lm5vZGVUeXBlKSl0aGlzLnJlc2V0KCl9KX07JC5mbi5lbmFibGU9ZnVuY3Rpb24oYil7aWYoYj09dW5kZWZpbmVkKWI9dHJ1ZTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD0hYn0pfTskLmZuLnNlbGVjdGVkPWZ1bmN0aW9uKHNlbGVjdCl7aWYoc2VsZWN0PT11bmRlZmluZWQpc2VsZWN0PXRydWU7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXRoaXMudHlwZTtpZih0PT0nY2hlY2tib3gnfHx0PT0ncmFkaW8nKXRoaXMuY2hlY2tlZD1zZWxlY3Q7ZWxzZSBpZih0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09J29wdGlvbicpe3ZhciAkc2VsPSQodGhpcykucGFyZW50KCdzZWxlY3QnKTtpZihzZWxlY3QmJiRzZWxbMF0mJiRzZWxbMF0udHlwZT09J3NlbGVjdC1vbmUnKXskc2VsLmZpbmQoJ29wdGlvbicpLnNlbGVjdGVkKGZhbHNlKX10aGlzLnNlbGVjdGVkPXNlbGVjdH19KX07ZnVuY3Rpb24gbG9nKCl7aWYoJC5mbi5hamF4U3VibWl0LmRlYnVnKXt2YXIgbXNnPSdbanF1ZXJ5LmZvcm1dICcrQXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbChhcmd1bWVudHMsJycpO2lmKHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cpd2luZG93LmNvbnNvbGUubG9nKG1zZyk7ZWxzZSBpZih3aW5kb3cub3BlcmEmJndpbmRvdy5vcGVyYS5wb3N0RXJyb3Ipd2luZG93Lm9wZXJhLnBvc3RFcnJvcihtc2cpfX19KShqUXVlcnkpOwovKgogKiBEZXBlbmQgQ2xhc3MgdjAuMWIgOiBhdHRhY2ggY2xhc3MgYmFzZWQgb24gZmlyc3QgY2xhc3MgaW4gbGlzdCBvZiBjdXJyZW50IGVsZW1lbnQKICogRmlsZToganF1ZXJ5LmRlcGVuZENsYXNzLmpzCiAqIENvcHlyaWdodCAoYykgMjAwOSBFZ29yIEhtZWx5b2ZmLCBobWVseW9mZkBnbWFpbC5jb20KICovCihmdW5jdGlvbigkKSB7CgkvLyBJbml0IHBsdWdpbiBmdW5jdGlvbgoJJC5iYXNlQ2xhc3MgPSBmdW5jdGlvbihvYmopewoJICBvYmogPSAkKG9iaik7CgkgIHJldHVybiBvYmouZ2V0KDApLmNsYXNzTmFtZS5tYXRjaCgvKFteIF0rKS8pWzFdOwoJfTsKCQoJJC5mbi5hZGREZXBlbmRDbGFzcyA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgZGVsaW1pdGVyKXsKCQl2YXIgb3B0aW9ucyA9IHsKCQkgIGRlbGltaXRlcjogZGVsaW1pdGVyID8gZGVsaW1pdGVyIDogJy0nCgkJfQoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsKCQkgIHZhciBiYXNlQ2xhc3MgPSAkLmJhc2VDbGFzcyh0aGlzKTsKCQkgIGlmKGJhc2VDbGFzcykKICAgIAkJJCh0aGlzKS5hZGRDbGFzcyhiYXNlQ2xhc3MgKyBvcHRpb25zLmRlbGltaXRlciArIGNsYXNzTmFtZSk7CgkJfSk7Cgl9OwoKCSQuZm4ucmVtb3ZlRGVwZW5kQ2xhc3MgPSBmdW5jdGlvbihjbGFzc05hbWUsIGRlbGltaXRlcil7CgkJdmFyIG9wdGlvbnMgPSB7CgkJICBkZWxpbWl0ZXI6IGRlbGltaXRlciA/IGRlbGltaXRlciA6ICctJwoJCX0KCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7CgkJICB2YXIgYmFzZUNsYXNzID0gJC5iYXNlQ2xhc3ModGhpcyk7CgkJICBpZihiYXNlQ2xhc3MpCiAgICAJCSQodGhpcykucmVtb3ZlQ2xhc3MoYmFzZUNsYXNzICsgb3B0aW9ucy5kZWxpbWl0ZXIgKyBjbGFzc05hbWUpOwoJCX0pOwoJfTsKCgkkLmZuLnRvZ2dsZURlcGVuZENsYXNzID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBkZWxpbWl0ZXIpewoJCXZhciBvcHRpb25zID0gewoJCSAgZGVsaW1pdGVyOiBkZWxpbWl0ZXIgPyBkZWxpbWl0ZXIgOiAnLScKCQl9CgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpewoJCSAgdmFyIGJhc2VDbGFzcyA9ICQuYmFzZUNsYXNzKHRoaXMpOwoJCSAgaWYoYmFzZUNsYXNzKQoJCSAgICBpZigkKHRoaXMpLmlzKCIuIiArIGJhc2VDbGFzcyArIG9wdGlvbnMuZGVsaW1pdGVyICsgY2xhc3NOYW1lKSkKICAgIAkJICAkKHRoaXMpLnJlbW92ZUNsYXNzKGJhc2VDbGFzcyArIG9wdGlvbnMuZGVsaW1pdGVyICsgY2xhc3NOYW1lKTsKICAgIAkJZWxzZQogICAgCQkgICQodGhpcykuYWRkQ2xhc3MoYmFzZUNsYXNzICsgb3B0aW9ucy5kZWxpbWl0ZXIgKyBjbGFzc05hbWUpOwoJCX0pOwoJfTsKCgkvLyBlbmQgb2YgY2xvc3VyZQp9KShqUXVlcnkpOwovKiBqU2xpZGVyICovCihmdW5jdGlvbigpe0Z1bmN0aW9uLnByb3RvdHlwZS5pbmhlcml0RnJvbT1mdW5jdGlvbihiLGMpe3ZhciBkPWZ1bmN0aW9uKCl7fTtkLnByb3RvdHlwZT1iLnByb3RvdHlwZTt0aGlzLnByb3RvdHlwZT1uZXcgZCgpO3RoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yPXRoaXM7dGhpcy5wcm90b3R5cGUuYmFzZUNvbnN0cnVjdG9yPWI7dGhpcy5wcm90b3R5cGUuc3VwZXJDbGFzcz1iLnByb3RvdHlwZTtpZihjKXtmb3IodmFyIGEgaW4gYyl7dGhpcy5wcm90b3R5cGVbYV09Y1thXX19fTtOdW1iZXIucHJvdG90eXBlLmpTbGlkZXJOaWNlPWZ1bmN0aW9uKGwpe3ZhciBvPS9eKC0pPyhcZCspKFtcLixdKFxkKykpPyQvO3ZhciBkPU51bWJlcih0aGlzKTt2YXIgaj1TdHJpbmcoZCk7dmFyIGs7dmFyIGM9IiI7dmFyIGI9IiAiO2lmKChrPWoubWF0Y2gobykpKXt2YXIgZj1rWzJdO3ZhciBtPShrWzRdKT9OdW1iZXIoIjAuIitrWzRdKTowO2lmKG0pe3ZhciBlPU1hdGgucG93KDEwLChsKT9sOjIpO209TWF0aC5yb3VuZChtKmUpO3NOZXdEZWNQYXJ0PVN0cmluZyhtKTtjPXNOZXdEZWNQYXJ0O2lmKHNOZXdEZWNQYXJ0Lmxlbmd0aDxsKXt2YXIgYT1sLXNOZXdEZWNQYXJ0Lmxlbmd0aDtmb3IodmFyIGc9MDtnPGE7ZysrKXtjPSIwIitjfX1jPSIsIitjfWVsc2V7aWYobCYmbCE9MCl7Zm9yKHZhciBnPTA7ZzxsO2crKyl7Yys9IjAifWM9IiwiK2N9fXZhciBoO2lmKE51bWJlcihmKTwxMDAwKXtoPWYrY31lbHNle3ZhciBuPSIiO3ZhciBnO2ZvcihnPTE7ZyozPGYubGVuZ3RoO2crKyl7bj1iK2Yuc3Vic3RyaW5nKGYubGVuZ3RoLWcqMyxmLmxlbmd0aC0oZy0xKSozKStufWg9Zi5zdWJzdHIoMCwzLWcqMytmLmxlbmd0aCkrbitjfWlmKGtbMV0pe3JldHVybiItIitofWVsc2V7cmV0dXJuIGh9fWVsc2V7cmV0dXJuIGp9fTt0aGlzLmpTbGlkZXJJc0FycmF5PWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0idW5kZWZpbmVkIil7cmV0dXJuIGZhbHNlfWlmKGEgaW5zdGFuY2VvZiBBcnJheXx8KCEoYSBpbnN0YW5jZW9mIE9iamVjdCkmJihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoKGEpKT09IltvYmplY3QgQXJyYXldIil8fHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciImJnR5cGVvZiBhLnNwbGljZSE9InVuZGVmaW5lZCImJnR5cGVvZiBhLnByb3BlcnR5SXNFbnVtZXJhYmxlIT0idW5kZWZpbmVkIiYmIWEucHJvcGVydHlJc0VudW1lcmFibGUoInNwbGljZSIpKSl7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfX0pKCk7KGZ1bmN0aW9uKCl7dmFyIGE9e307dGhpcy5qU2xpZGVyVG1wbD1mdW5jdGlvbiBiKGUsZCl7dmFyIGM9ISgvXFcvKS50ZXN0KGUpP2FbZV09YVtlXXx8YihlKTpuZXcgRnVuY3Rpb24oIm9iaiIsInZhciBwPVtdLHByaW50PWZ1bmN0aW9uKCl7cC5wdXNoLmFwcGx5KHAsYXJndW1lbnRzKTt9O3dpdGgob2JqKXtwLnB1c2goJyIrZS5yZXBsYWNlKC9bXHJcdFxuXS9nLCIgIikuc3BsaXQoIjwlIikuam9pbigiXHQiKS5yZXBsYWNlKC8oKF58JT4pW15cdF0qKScvZywiJDFcciIpLnJlcGxhY2UoL1x0PSguKj8pJT4vZywiJywkMSwnIikuc3BsaXQoIlx0Iikuam9pbigiJyk7Iikuc3BsaXQoIiU+Iikuam9pbigicC5wdXNoKCciKS5zcGxpdCgiXHIiKS5qb2luKCJcXCciKSsiJyk7fXJldHVybiBwLmpvaW4oJycpOyIpO3JldHVybiBkP2MoZCk6Y319KSgpOyhmdW5jdGlvbihhKXt0aGlzLkRyYWdnYWJsZT1mdW5jdGlvbigpe3RoaXMuX2luaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtEcmFnZ2FibGUucHJvdG90eXBlPXtvbmluaXQ6ZnVuY3Rpb24oKXt9LGV2ZW50czpmdW5jdGlvbigpe30sb25tb3VzZWRvd246ZnVuY3Rpb24oKXt0aGlzLnB0ci5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9KX0sb25tb3VzZW1vdmU6ZnVuY3Rpb24oYyxiLGQpe3RoaXMucHRyLmNzcyh7bGVmdDpiLHRvcDpkfSl9LG9ubW91c2V1cDpmdW5jdGlvbigpe30saXNEZWZhdWx0OntkcmFnOmZhbHNlLGNsaWNrZWQ6ZmFsc2UsdG9jbGljazp0cnVlLG1vdXNldXA6ZmFsc2V9LF9pbml0OmZ1bmN0aW9uKCl7aWYoYXJndW1lbnRzLmxlbmd0aD4wKXt0aGlzLnB0cj1hKGFyZ3VtZW50c1swXSk7dGhpcy5vdXRlcj1hKCIuZHJhZ2dhYmxlLW91dGVyIik7dGhpcy5pcz17fTthLmV4dGVuZCh0aGlzLmlzLHRoaXMuaXNEZWZhdWx0KTt2YXIgYj10aGlzLnB0ci5vZmZzZXQoKTt0aGlzLmQ9e2xlZnQ6Yi5sZWZ0LHRvcDpiLnRvcCx3aWR0aDp0aGlzLnB0ci53aWR0aCgpLGhlaWdodDp0aGlzLnB0ci5oZWlnaHQoKX07dGhpcy5vbmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuX2V2ZW50cygpfX0sX2dldFBhZ2VDb29yZHM6ZnVuY3Rpb24oYil7aWYoYi50YXJnZXRUb3VjaGVzJiZiLnRhcmdldFRvdWNoZXNbMF0pe3JldHVybnt4OmIudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCx5OmIudGFyZ2V0VG91Y2hlc1swXS5wYWdlWX19ZWxzZXtyZXR1cm57eDpiLnBhZ2VYLHk6Yi5wYWdlWX19fSxfYmluZEV2ZW50OmZ1bmN0aW9uKGUsYyxkKXt2YXIgYj10aGlzO2lmKHRoaXMuc3VwcG9ydFRvdWNoZXNfKXtlLmdldCgwKS5hZGRFdmVudExpc3RlbmVyKHRoaXMuZXZlbnRzX1tjXSxkLGZhbHNlKX1lbHNle2UuYmluZCh0aGlzLmV2ZW50c19bY10sZCl9fSxfZXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGI9dGhpczt0aGlzLnN1cHBvcnRUb3VjaGVzXz0oYS5icm93c2VyLndlYmtpdCYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNb2JpbGUiKSE9LTEpO3RoaXMuZXZlbnRzXz17Y2xpY2s6dGhpcy5zdXBwb3J0VG91Y2hlc18/InRvdWNoc3RhcnQiOiJjbGljayIsZG93bjp0aGlzLnN1cHBvcnRUb3VjaGVzXz8idG91Y2hzdGFydCI6Im1vdXNlZG93biIsbW92ZTp0aGlzLnN1cHBvcnRUb3VjaGVzXz8idG91Y2htb3ZlIjoibW91c2Vtb3ZlIix1cDp0aGlzLnN1cHBvcnRUb3VjaGVzXz8idG91Y2hlbmQiOiJtb3VzZXVwIn07dGhpcy5fYmluZEV2ZW50KGEoZG9jdW1lbnQpLCJtb3ZlIixmdW5jdGlvbihjKXtpZihiLmlzLmRyYWcpe2Muc3RvcFByb3BhZ2F0aW9uKCk7Yy5wcmV2ZW50RGVmYXVsdCgpO2IuX21vdXNlbW92ZShjKX19KTt0aGlzLl9iaW5kRXZlbnQoYShkb2N1bWVudCksImRvd24iLGZ1bmN0aW9uKGMpe2lmKGIuaXMuZHJhZyl7Yy5zdG9wUHJvcGFnYXRpb24oKTtjLnByZXZlbnREZWZhdWx0KCl9fSk7dGhpcy5fYmluZEV2ZW50KGEoZG9jdW1lbnQpLCJ1cCIsZnVuY3Rpb24oYyl7Yi5fbW91c2V1cChjKX0pO3RoaXMuX2JpbmRFdmVudCh0aGlzLnB0ciwiZG93biIsZnVuY3Rpb24oYyl7Yi5fbW91c2Vkb3duKGMpO3JldHVybiBmYWxzZX0pO3RoaXMuX2JpbmRFdmVudCh0aGlzLnB0ciwidXAiLGZ1bmN0aW9uKGMpe2IuX21vdXNldXAoYyl9KTt0aGlzLnB0ci5maW5kKCJhIikuY2xpY2soZnVuY3Rpb24oKXtiLmlzLmNsaWNrZWQ9dHJ1ZTtpZighYi5pcy50b2NsaWNrKXtiLmlzLnRvY2xpY2s9dHJ1ZTtyZXR1cm4gZmFsc2V9fSkubW91c2Vkb3duKGZ1bmN0aW9uKGMpe2IuX21vdXNlZG93bihjKTtyZXR1cm4gZmFsc2V9KTt0aGlzLmV2ZW50cygpfSxfbW91c2Vkb3duOmZ1bmN0aW9uKGIpe3RoaXMuaXMuZHJhZz10cnVlO3RoaXMuaXMuY2xpY2tlZD1mYWxzZTt0aGlzLmlzLm1vdXNldXA9ZmFsc2U7dmFyIGM9dGhpcy5wdHIub2Zmc2V0KCk7dmFyIGQ9dGhpcy5fZ2V0UGFnZUNvb3JkcyhiKTt0aGlzLmN4PWQueC1jLmxlZnQ7dGhpcy5jeT1kLnktYy50b3A7YS5leHRlbmQodGhpcy5kLHtsZWZ0OmMubGVmdCx0b3A6Yy50b3Asd2lkdGg6dGhpcy5wdHIud2lkdGgoKSxoZWlnaHQ6dGhpcy5wdHIuaGVpZ2h0KCl9KTtpZih0aGlzLm91dGVyJiZ0aGlzLm91dGVyLmdldCgwKSl7dGhpcy5vdXRlci5jc3Moe2hlaWdodDpNYXRoLm1heCh0aGlzLm91dGVyLmhlaWdodCgpLGEoZG9jdW1lbnQuYm9keSkuaGVpZ2h0KCkpLG92ZXJmbG93OiJoaWRkZW4ifSl9dGhpcy5vbm1vdXNlZG93bihiKX0sX21vdXNlbW92ZTpmdW5jdGlvbihiKXt0aGlzLmlzLnRvY2xpY2s9ZmFsc2U7dmFyIGM9dGhpcy5fZ2V0UGFnZUNvb3JkcyhiKTt0aGlzLm9ubW91c2Vtb3ZlKGIsYy54LXRoaXMuY3gsYy55LXRoaXMuY3kpfSxfbW91c2V1cDpmdW5jdGlvbihiKXt2YXIgYz10aGlzO2lmKHRoaXMuaXMuZHJhZyl7dGhpcy5pcy5kcmFnPWZhbHNlO2lmKHRoaXMub3V0ZXImJnRoaXMub3V0ZXIuZ2V0KDApKXtpZihhLmJyb3dzZXIubW96aWxsYSl7dGhpcy5vdXRlci5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSl9ZWxzZXt0aGlzLm91dGVyLmNzcyh7b3ZlcmZsb3c6InZpc2libGUifSl9aWYoYS5icm93c2VyLm1zaWUmJmEuYnJvd3Nlci52ZXJzaW9uPT0iNi4wIil7dGhpcy5vdXRlci5jc3Moe2hlaWdodDoiMTAwJSJ9KX1lbHNle3RoaXMub3V0ZXIuY3NzKHtoZWlnaHQ6ImF1dG8ifSl9fXRoaXMub25tb3VzZXVwKGIpfX19fSkoalF1ZXJ5KTsoZnVuY3Rpb24oYil7Yi5zbGlkZXI9ZnVuY3Rpb24oZixlKXt2YXIgZD1iKGYpO2lmKCFkLmRhdGEoImpzbGlkZXIiKSl7ZC5kYXRhKCJqc2xpZGVyIixuZXcgalNsaWRlcihmLGUpKX1yZXR1cm4gZC5kYXRhKCJqc2xpZGVyIil9O2IuZm4uc2xpZGVyPWZ1bmN0aW9uKGgsZSl7dmFyIGcsZj1hcmd1bWVudHM7ZnVuY3Rpb24gZChqKXtyZXR1cm4gaiE9PXVuZGVmaW5lZH1mdW5jdGlvbiBpKGope3JldHVybiBqIT1udWxsfXRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBrPWIuc2xpZGVyKHRoaXMsaCk7aWYodHlwZW9mIGg9PSJzdHJpbmciKXtzd2l0Y2goaCl7Y2FzZSJ2YWx1ZSI6aWYoZChmWzFdKSYmZChmWzJdKSl7dmFyIGo9ay5nZXRQb2ludGVycygpO2lmKGkoalswXSkmJmkoZlsxXSkpe2pbMF0uc2V0KGZbMV0pO2pbMF0uc2V0SW5kZXhPdmVyKCl9aWYoaShqWzFdKSYmaShmWzJdKSl7alsxXS5zZXQoZlsyXSk7alsxXS5zZXRJbmRleE92ZXIoKX19ZWxzZXtpZihkKGZbMV0pKXt2YXIgaj1rLmdldFBvaW50ZXJzKCk7aWYoaShqWzBdKSYmaShmWzFdKSl7alswXS5zZXQoZlsxXSk7alswXS5zZXRJbmRleE92ZXIoKX19ZWxzZXtnPWsuZ2V0VmFsdWUoKX19YnJlYWs7Y2FzZSJwcmMiOmlmKGQoZlsxXSkmJmQoZlsyXSkpe3ZhciBqPWsuZ2V0UG9pbnRlcnMoKTtpZihpKGpbMF0pJiZpKGZbMV0pKXtqWzBdLl9zZXQoZlsxXSk7alswXS5zZXRJbmRleE92ZXIoKX1pZihpKGpbMV0pJiZpKGZbMl0pKXtqWzFdLl9zZXQoZlsyXSk7alsxXS5zZXRJbmRleE92ZXIoKX19ZWxzZXtpZihkKGZbMV0pKXt2YXIgaj1rLmdldFBvaW50ZXJzKCk7aWYoaShqWzBdKSYmaShmWzFdKSl7alswXS5fc2V0KGZbMV0pO2pbMF0uc2V0SW5kZXhPdmVyKCl9fWVsc2V7Zz1rLmdldFByY1ZhbHVlKCl9fWJyZWFrO2Nhc2UiY2FsY3VsYXRlZFZhbHVlIjp2YXIgbT1rLmdldFZhbHVlKCkuc3BsaXQoIjsiKTtnPSIiO2Zvcih2YXIgbD0wO2w8bS5sZW5ndGg7bCsrKXtnKz0obD4wPyI7IjoiIikray5uaWNlKG1bbF0pfWJyZWFrO2Nhc2Uic2tpbiI6ay5zZXRTa2luKGZbMV0pO2JyZWFrfX1lbHNle2lmKCFoJiYhZSl7aWYoIWpTbGlkZXJJc0FycmF5KGcpKXtnPVtdfWcucHVzaChzbGlkZXIpfX19KTtpZihqU2xpZGVySXNBcnJheShnKSYmZy5sZW5ndGg9PTEpe2c9Z1swXX1yZXR1cm4gZ3x8dGhpc307dmFyIGM9e3NldHRpbmdzOntmcm9tOjEsdG86MTAsc3RlcDoxLHNtb290aDp0cnVlLGxpbWl0czp0cnVlLHJvdW5kOjAsdmFsdWU6IjU7NyIsZGltZW5zaW9uOiIifSxjbGFzc05hbWU6ImpzbGlkZXIiLHNlbGVjdG9yOiIuanNsaWRlci0iLHRlbXBsYXRlOmpTbGlkZXJUbXBsKCc8c3BhbiBjbGFzcz0iPCU9Y2xhc3NOYW1lJT4iPjx0YWJsZT48dHI+PHRkPjxkaXYgY2xhc3M9IjwlPWNsYXNzTmFtZSU+LWJnIj48aSBjbGFzcz0ibCI+PGk+PC9pPjwvaT48aSBjbGFzcz0iciI+PGk+PC9pPjwvaT48aSBjbGFzcz0idiI+PGk+PC9pPjwvaT48L2Rpdj48ZGl2IGNsYXNzPSI8JT1jbGFzc05hbWUlPi1wb2ludGVyIj48aT48L2k+PC9kaXY+PGRpdiBjbGFzcz0iPCU9Y2xhc3NOYW1lJT4tcG9pbnRlciA8JT1jbGFzc05hbWUlPi1wb2ludGVyLXRvIj48aT48L2k+PC9kaXY+PGRpdiBjbGFzcz0iPCU9Y2xhc3NOYW1lJT4tbGFiZWwiPjxzcGFuPjwlPXNldHRpbmdzLmZyb20lPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSI8JT1jbGFzc05hbWUlPi1sYWJlbCA8JT1jbGFzc05hbWUlPi1sYWJlbC10byI+PHNwYW4+PCU9c2V0dGluZ3MudG8lPjwvc3Bhbj48JT1zZXR0aW5ncy5kaW1lbnNpb24lPjwvZGl2PjxkaXYgY2xhc3M9IjwlPWNsYXNzTmFtZSU+LXZhbHVlIj48c3Bhbj48L3NwYW4+PCU9c2V0dGluZ3MuZGltZW5zaW9uJT48L2Rpdj48ZGl2IGNsYXNzPSI8JT1jbGFzc05hbWUlPi12YWx1ZSA8JT1jbGFzc05hbWUlPi12YWx1ZS10byI+PHNwYW4+PC9zcGFuPjwlPXNldHRpbmdzLmRpbWVuc2lvbiU+PC9kaXY+PGRpdiBjbGFzcz0iPCU9Y2xhc3NOYW1lJT4tc2NhbGUiPjwlPXNjYWxlJT48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT48L3NwYW4+Jyl9O3RoaXMualNsaWRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtqU2xpZGVyLnByb3RvdHlwZT17aW5pdDpmdW5jdGlvbihlLGQpe3RoaXMuc2V0dGluZ3M9Yi5leHRlbmQodHJ1ZSx7fSxjLnNldHRpbmdzLGQ/ZDp7fSk7dGhpcy5pbnB1dE5vZGU9YihlKS5oaWRlKCk7dGhpcy5zZXR0aW5ncy5pbnRlcnZhbD10aGlzLnNldHRpbmdzLnRvLXRoaXMuc2V0dGluZ3MuZnJvbTt0aGlzLnNldHRpbmdzLnZhbHVlPXRoaXMuaW5wdXROb2RlLmF0dHIoInZhbHVlIik7aWYodGhpcy5zZXR0aW5ncy5jYWxjdWxhdGUmJmIuaXNGdW5jdGlvbih0aGlzLnNldHRpbmdzLmNhbGN1bGF0ZSkpe3RoaXMubmljZT10aGlzLnNldHRpbmdzLmNhbGN1bGF0ZX1pZih0aGlzLnNldHRpbmdzLm9uc3RhdGVjaGFuZ2UmJmIuaXNGdW5jdGlvbih0aGlzLnNldHRpbmdzLm9uc3RhdGVjaGFuZ2UpKXt0aGlzLm9uc3RhdGVjaGFuZ2U9dGhpcy5zZXR0aW5ncy5vbnN0YXRlY2hhbmdlfXRoaXMuaXM9e2luaXQ6ZmFsc2V9O3RoaXMubz17fTt0aGlzLmNyZWF0ZSgpfSxvbnN0YXRlY2hhbmdlOmZ1bmN0aW9uKCl7fSxjcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMuZG9tTm9kZT1iKGMudGVtcGxhdGUoe2NsYXNzTmFtZTpjLmNsYXNzTmFtZSxzZXR0aW5nczp7ZnJvbTp0aGlzLm5pY2UodGhpcy5zZXR0aW5ncy5mcm9tKSx0bzp0aGlzLm5pY2UodGhpcy5zZXR0aW5ncy50byksZGltZW5zaW9uOnRoaXMuc2V0dGluZ3MuZGltZW5zaW9ufSxzY2FsZTp0aGlzLmdlbmVyYXRlU2NhbGUoKX0pKTt0aGlzLmlucHV0Tm9kZS5hZnRlcih0aGlzLmRvbU5vZGUpO3RoaXMuZHJhd1NjYWxlKCk7aWYodGhpcy5zZXR0aW5ncy5za2luJiZ0aGlzLnNldHRpbmdzLnNraW4ubGVuZ3RoPjApe3RoaXMuc2V0U2tpbih0aGlzLnNldHRpbmdzLnNraW4pfXRoaXMuc2l6ZXM9e2RvbVdpZHRoOnRoaXMuZG9tTm9kZS53aWR0aCgpLGRvbU9mZnNldDp0aGlzLmRvbU5vZGUub2Zmc2V0KCl9O2IuZXh0ZW5kKHRoaXMubyx7cG9pbnRlcnM6e30sbGFiZWxzOnswOntvOnRoaXMuZG9tTm9kZS5maW5kKGMuc2VsZWN0b3IrInZhbHVlIikubm90KGMuc2VsZWN0b3IrInZhbHVlLXRvIil9LDE6e286dGhpcy5kb21Ob2RlLmZpbmQoYy5zZWxlY3RvcisidmFsdWUiKS5maWx0ZXIoYy5zZWxlY3RvcisidmFsdWUtdG8iKX19LGxpbWl0czp7MDp0aGlzLmRvbU5vZGUuZmluZChjLnNlbGVjdG9yKyJsYWJlbCIpLm5vdChjLnNlbGVjdG9yKyJsYWJlbC10byIpLDE6dGhpcy5kb21Ob2RlLmZpbmQoYy5zZWxlY3RvcisibGFiZWwiKS5maWx0ZXIoYy5zZWxlY3RvcisibGFiZWwtdG8iKX19KTtiLmV4dGVuZCh0aGlzLm8ubGFiZWxzWzBdLHt2YWx1ZTp0aGlzLm8ubGFiZWxzWzBdLm8uZmluZCgic3BhbiIpfSk7Yi5leHRlbmQodGhpcy5vLmxhYmVsc1sxXSx7dmFsdWU6dGhpcy5vLmxhYmVsc1sxXS5vLmZpbmQoInNwYW4iKX0pO2lmKCFkLnNldHRpbmdzLnZhbHVlLnNwbGl0KCI7IilbMV0pe3RoaXMuc2V0dGluZ3Muc2luZ2xlPXRydWU7dGhpcy5kb21Ob2RlLmFkZERlcGVuZENsYXNzKCJzaW5nbGUiKX1pZighZC5zZXR0aW5ncy5saW1pdHMpe3RoaXMuZG9tTm9kZS5hZGREZXBlbmRDbGFzcygibGltaXRsZXNzIil9dGhpcy5kb21Ob2RlLmZpbmQoYy5zZWxlY3RvcisicG9pbnRlciIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIGc9ZC5zZXR0aW5ncy52YWx1ZS5zcGxpdCgiOyIpW2VdO2lmKGcpe2Quby5wb2ludGVyc1tlXT1uZXcgYSh0aGlzLGUsZCk7dmFyIGY9ZC5zZXR0aW5ncy52YWx1ZS5zcGxpdCgiOyIpW2UtMV07aWYoZiYmbmV3IE51bWJlcihnKTxuZXcgTnVtYmVyKGYpKXtnPWZ9Zz1nPGQuc2V0dGluZ3MuZnJvbT9kLnNldHRpbmdzLmZyb206ZztnPWc+ZC5zZXR0aW5ncy50bz9kLnNldHRpbmdzLnRvOmc7ZC5vLnBvaW50ZXJzW2VdLnNldChnLHRydWUpfX0pO3RoaXMuby52YWx1ZT10aGlzLmRvbU5vZGUuZmluZCgiLnYiKTt0aGlzLmlzLmluaXQ9dHJ1ZTtiLmVhY2godGhpcy5vLnBvaW50ZXJzLGZ1bmN0aW9uKGUpe2QucmVkcmF3KHRoaXMpfSk7KGZ1bmN0aW9uKGUpe2Iod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKXtlLm9ucmVzaXplKCl9KX0pKHRoaXMpfSxzZXRTa2luOmZ1bmN0aW9uKGQpe2lmKHRoaXMuc2tpbl8pe3RoaXMuZG9tTm9kZS5yZW1vdmVEZXBlbmRDbGFzcyh0aGlzLnNraW5fLCJfIil9dGhpcy5kb21Ob2RlLmFkZERlcGVuZENsYXNzKHRoaXMuc2tpbl89ZCwiXyIpfSxzZXRQb2ludGVyc0luZGV4OmZ1bmN0aW9uKGQpe2IuZWFjaCh0aGlzLmdldFBvaW50ZXJzKCksZnVuY3Rpb24oZSl7dGhpcy5pbmRleChlKX0pfSxnZXRQb2ludGVyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLm8ucG9pbnRlcnN9LGdlbmVyYXRlU2NhbGU6ZnVuY3Rpb24oKXtpZih0aGlzLnNldHRpbmdzLnNjYWxlJiZ0aGlzLnNldHRpbmdzLnNjYWxlLmxlbmd0aD4wKXt2YXIgZj0iIjt2YXIgZT10aGlzLnNldHRpbmdzLnNjYWxlO3ZhciBnPU1hdGgucm91bmQoKDEwMC8oZS5sZW5ndGgtMSkpKjEwKS8xMDtmb3IodmFyIGQ9MDtkPGUubGVuZ3RoO2QrKyl7Zis9JzxzcGFuIHN0eWxlPSJsZWZ0OiAnK2QqZysnJSI+JysoZVtkXSE9InwiPyI8aW5zPiIrZVtkXSsiPC9pbnM+IjoiIikrIjwvc3Bhbj4ifXJldHVybiBmfWVsc2V7cmV0dXJuIiJ9cmV0dXJuIiJ9LGRyYXdTY2FsZTpmdW5jdGlvbigpe3RoaXMuZG9tTm9kZS5maW5kKGMuc2VsZWN0b3IrInNjYWxlIHNwYW4gaW5zIikuZWFjaChmdW5jdGlvbigpe2IodGhpcykuY3NzKHttYXJnaW5MZWZ0Oi1iKHRoaXMpLm91dGVyV2lkdGgoKS8yfSl9KX0sb25yZXNpemU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMuc2l6ZXM9e2RvbVdpZHRoOnRoaXMuZG9tTm9kZS53aWR0aCgpLGRvbU9mZnNldDp0aGlzLmRvbU5vZGUub2Zmc2V0KCl9O2IuZWFjaCh0aGlzLm8ucG9pbnRlcnMsZnVuY3Rpb24oZSl7ZC5yZWRyYXcodGhpcyl9KX0sbGltaXRzOmZ1bmN0aW9uKGQsZyl7aWYoIXRoaXMuc2V0dGluZ3Muc21vb3RoKXt2YXIgZj10aGlzLnNldHRpbmdzLnN0ZXAqMTAwLyh0aGlzLnNldHRpbmdzLmludGVydmFsKTtkPU1hdGgucm91bmQoZC9mKSpmfXZhciBlPXRoaXMuby5wb2ludGVyc1sxLWcudWlkXTtpZihlJiZnLnVpZCYmZDxlLnZhbHVlLnByYyl7ZD1lLnZhbHVlLnByY31pZihlJiYhZy51aWQmJmQ+ZS52YWx1ZS5wcmMpe2Q9ZS52YWx1ZS5wcmN9aWYoZDwwKXtkPTB9aWYoZD4xMDApe2Q9MTAwfXJldHVybiBNYXRoLnJvdW5kKGQqMTApLzEwfSxyZWRyYXc6ZnVuY3Rpb24oZCl7aWYoIXRoaXMuaXMuaW5pdCl7cmV0dXJuIGZhbHNlfXRoaXMuc2V0VmFsdWUoKTtpZih0aGlzLm8ucG9pbnRlcnNbMF0mJnRoaXMuby5wb2ludGVyc1sxXSl7dGhpcy5vLnZhbHVlLmNzcyh7bGVmdDp0aGlzLm8ucG9pbnRlcnNbMF0udmFsdWUucHJjKyIlIix3aWR0aDoodGhpcy5vLnBvaW50ZXJzWzFdLnZhbHVlLnByYy10aGlzLm8ucG9pbnRlcnNbMF0udmFsdWUucHJjKSsiJSJ9KX10aGlzLm8ubGFiZWxzW2QudWlkXS52YWx1ZS5odG1sKHRoaXMubmljZShkLnZhbHVlLm9yaWdpbikpO3RoaXMucmVkcmF3TGFiZWxzKGQpfSxyZWRyYXdMYWJlbHM6ZnVuY3Rpb24oail7ZnVuY3Rpb24gZihsLG0sbil7bS5tYXJnaW49LW0ubGFiZWwvMjtsYWJlbF9sZWZ0PW0uYm9yZGVyK20ubWFyZ2luO2lmKGxhYmVsX2xlZnQ8MCl7bS5tYXJnaW4tPWxhYmVsX2xlZnR9aWYobS5ib3JkZXIrbS5sYWJlbC8yPmUuc2l6ZXMuZG9tV2lkdGgpe20ubWFyZ2luPTA7bS5yaWdodD10cnVlfWVsc2V7bS5yaWdodD1mYWxzZX1sLm8uY3NzKHtsZWZ0Om4rIiUiLG1hcmdpbkxlZnQ6bS5tYXJnaW4scmlnaHQ6ImF1dG8ifSk7aWYobS5yaWdodCl7bC5vLmNzcyh7bGVmdDoiYXV0byIscmlnaHQ6MH0pfXJldHVybiBtfXZhciBlPXRoaXM7dmFyIGc9dGhpcy5vLmxhYmVsc1tqLnVpZF07dmFyIGs9ai52YWx1ZS5wcmM7dmFyIGg9e2xhYmVsOmcuby5vdXRlcldpZHRoKCkscmlnaHQ6ZmFsc2UsYm9yZGVyOihrKnRoaXMuc2l6ZXMuZG9tV2lkdGgpLzEwMH07aWYoIXRoaXMuc2V0dGluZ3Muc2luZ2xlKXt2YXIgZD10aGlzLm8ucG9pbnRlcnNbMS1qLnVpZF07dmFyIGk9dGhpcy5vLmxhYmVsc1tkLnVpZF07c3dpdGNoKGoudWlkKXtjYXNlIDA6aWYoaC5ib3JkZXIraC5sYWJlbC8yPmkuby5vZmZzZXQoKS5sZWZ0LXRoaXMuc2l6ZXMuZG9tT2Zmc2V0LmxlZnQpe2kuby5jc3Moe3Zpc2liaWxpdHk6ImhpZGRlbiJ9KTtpLnZhbHVlLmh0bWwodGhpcy5uaWNlKGQudmFsdWUub3JpZ2luKSk7Zy5vLmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSJ9KTtrPShkLnZhbHVlLnByYy1rKS8yK2s7aWYoZC52YWx1ZS5wcmMhPWoudmFsdWUucHJjKXtnLnZhbHVlLmh0bWwodGhpcy5uaWNlKGoudmFsdWUub3JpZ2luKSsiJm5ic3A7Jm5kYXNoOyZuYnNwOyIrdGhpcy5uaWNlKGQudmFsdWUub3JpZ2luKSk7aC5sYWJlbD1nLm8ub3V0ZXJXaWR0aCgpO2guYm9yZGVyPShrKnRoaXMuc2l6ZXMuZG9tV2lkdGgpLzEwMH19ZWxzZXtpLm8uY3NzKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIn0pfWJyZWFrO2Nhc2UgMTppZihoLmJvcmRlci1oLmxhYmVsLzI8aS5vLm9mZnNldCgpLmxlZnQtdGhpcy5zaXplcy5kb21PZmZzZXQubGVmdCtpLm8ub3V0ZXJXaWR0aCgpKXtpLm8uY3NzKHt2aXNpYmlsaXR5OiJoaWRkZW4ifSk7aS52YWx1ZS5odG1sKHRoaXMubmljZShkLnZhbHVlLm9yaWdpbikpO2cuby5jc3Moe3Zpc2liaWxpdHk6InZpc2libGUifSk7az0oay1kLnZhbHVlLnByYykvMitkLnZhbHVlLnByYztpZihkLnZhbHVlLnByYyE9ai52YWx1ZS5wcmMpe2cudmFsdWUuaHRtbCh0aGlzLm5pY2UoZC52YWx1ZS5vcmlnaW4pKyImbmJzcDsmbmRhc2g7Jm5ic3A7Iit0aGlzLm5pY2Uoai52YWx1ZS5vcmlnaW4pKTtoLmxhYmVsPWcuby5vdXRlcldpZHRoKCk7aC5ib3JkZXI9KGsqdGhpcy5zaXplcy5kb21XaWR0aCkvMTAwfX1lbHNle2kuby5jc3Moe3Zpc2liaWxpdHk6InZpc2libGUifSl9YnJlYWt9fWg9ZihnLGgsayk7aWYoaSl7dmFyIGg9e2xhYmVsOmkuby5vdXRlcldpZHRoKCkscmlnaHQ6ZmFsc2UsYm9yZGVyOihkLnZhbHVlLnByYyp0aGlzLnNpemVzLmRvbVdpZHRoKS8xMDB9O2g9ZihpLGgsZC52YWx1ZS5wcmMpfXRoaXMucmVkcmF3TGltaXRzKCl9LHJlZHJhd0xpbWl0czpmdW5jdGlvbigpe2lmKHRoaXMuc2V0dGluZ3MubGltaXRzKXt2YXIgZj1bdHJ1ZSx0cnVlXTtmb3Ioa2V5IGluIHRoaXMuby5wb2ludGVycyl7aWYoIXRoaXMuc2V0dGluZ3Muc2luZ2xlfHxrZXk9PTApe3ZhciBqPXRoaXMuby5wb2ludGVyc1trZXldO3ZhciBlPXRoaXMuby5sYWJlbHNbai51aWRdO3ZhciBoPWUuby5vZmZzZXQoKS5sZWZ0LXRoaXMuc2l6ZXMuZG9tT2Zmc2V0LmxlZnQ7dmFyIGQ9dGhpcy5vLmxpbWl0c1swXTtpZihoPGQub3V0ZXJXaWR0aCgpKXtmWzBdPWZhbHNlfXZhciBkPXRoaXMuby5saW1pdHNbMV07aWYoaCtlLm8ub3V0ZXJXaWR0aCgpPnRoaXMuc2l6ZXMuZG9tV2lkdGgtZC5vdXRlcldpZHRoKCkpe2ZbMV09ZmFsc2V9fX1mb3IodmFyIGc9MDtnPGYubGVuZ3RoO2crKyl7aWYoZltnXSl7dGhpcy5vLmxpbWl0c1tnXS5mYWRlSW4oImZhc3QiKX1lbHNle3RoaXMuby5saW1pdHNbZ10uZmFkZU91dCgiZmFzdCIpfX19fSxzZXRWYWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuZ2V0VmFsdWUoKTt0aGlzLmlucHV0Tm9kZS5hdHRyKCJ2YWx1ZSIsZCk7dGhpcy5vbnN0YXRlY2hhbmdlLmNhbGwodGhpcyxkKX0sZ2V0VmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5pcy5pbml0KXtyZXR1cm4gZmFsc2V9dmFyIGU9dGhpczt2YXIgZD0iIjtiLmVhY2godGhpcy5vLnBvaW50ZXJzLGZ1bmN0aW9uKGYpe2lmKHRoaXMudmFsdWUucHJjIT11bmRlZmluZWQmJiFpc05hTih0aGlzLnZhbHVlLnByYykpe2QrPShmPjA/IjsiOiIiKStlLnByY1RvVmFsdWUodGhpcy52YWx1ZS5wcmMpfX0pO3JldHVybiBkfSxnZXRQcmNWYWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmlzLmluaXQpe3JldHVybiBmYWxzZX12YXIgZT10aGlzO3ZhciBkPSIiO2IuZWFjaCh0aGlzLm8ucG9pbnRlcnMsZnVuY3Rpb24oZil7aWYodGhpcy52YWx1ZS5wcmMhPXVuZGVmaW5lZCYmIWlzTmFOKHRoaXMudmFsdWUucHJjKSl7ZCs9KGY+MD8iOyI6IiIpK3RoaXMudmFsdWUucHJjfX0pO3JldHVybiBkfSxwcmNUb1ZhbHVlOmZ1bmN0aW9uKGwpe2lmKHRoaXMuc2V0dGluZ3MuaGV0ZXJvZ2VuZWl0eSYmdGhpcy5zZXR0aW5ncy5oZXRlcm9nZW5laXR5Lmxlbmd0aD4wKXt2YXIgZz10aGlzLnNldHRpbmdzLmhldGVyb2dlbmVpdHk7dmFyIGY9MDt2YXIgaz10aGlzLnNldHRpbmdzLmZyb207Zm9yKHZhciBlPTA7ZTw9Zy5sZW5ndGg7ZSsrKXtpZihnW2VdKXt2YXIgZD1nW2VdLnNwbGl0KCIvIil9ZWxzZXt2YXIgZD1bMTAwLHRoaXMuc2V0dGluZ3MudG9dfWRbMF09bmV3IE51bWJlcihkWzBdKTtkWzFdPW5ldyBOdW1iZXIoZFsxXSk7aWYobD49ZiYmbDw9ZFswXSl7dmFyIGo9aysoKGwtZikqKGRbMV0taykpLyhkWzBdLWYpfWY9ZFswXTtrPWRbMV19fWVsc2V7dmFyIGo9dGhpcy5zZXR0aW5ncy5mcm9tKyhsKnRoaXMuc2V0dGluZ3MuaW50ZXJ2YWwpLzEwMH1yZXR1cm4gdGhpcy5yb3VuZChqKX0sdmFsdWVUb1ByYzpmdW5jdGlvbihqLGwpe2lmKHRoaXMuc2V0dGluZ3MuaGV0ZXJvZ2VuZWl0eSYmdGhpcy5zZXR0aW5ncy5oZXRlcm9nZW5laXR5Lmxlbmd0aD4wKXt2YXIgZz10aGlzLnNldHRpbmdzLmhldGVyb2dlbmVpdHk7dmFyIGY9MDt2YXIgaz10aGlzLnNldHRpbmdzLmZyb207Zm9yKHZhciBlPTA7ZTw9Zy5sZW5ndGg7ZSsrKXtpZihnW2VdKXt2YXIgZD1nW2VdLnNwbGl0KCIvIil9ZWxzZXt2YXIgZD1bMTAwLHRoaXMuc2V0dGluZ3MudG9dfWRbMF09bmV3IE51bWJlcihkWzBdKTtkWzFdPW5ldyBOdW1iZXIoZFsxXSk7aWYoaj49ayYmajw9ZFsxXSl7dmFyIG09bC5saW1pdHMoZisoai1rKSooZFswXS1mKS8oZFsxXS1rKSl9Zj1kWzBdO2s9ZFsxXX19ZWxzZXt2YXIgbT1sLmxpbWl0cygoai10aGlzLnNldHRpbmdzLmZyb20pKjEwMC90aGlzLnNldHRpbmdzLmludGVydmFsKX1yZXR1cm4gbX0scm91bmQ6ZnVuY3Rpb24oZCl7ZD1NYXRoLnJvdW5kKGQvdGhpcy5zZXR0aW5ncy5zdGVwKSp0aGlzLnNldHRpbmdzLnN0ZXA7aWYodGhpcy5zZXR0aW5ncy5yb3VuZCl7ZD1NYXRoLnJvdW5kKGQqTWF0aC5wb3coMTAsdGhpcy5zZXR0aW5ncy5yb3VuZCkpL01hdGgucG93KDEwLHRoaXMuc2V0dGluZ3Mucm91bmQpfWVsc2V7ZD1NYXRoLnJvdW5kKGQpfXJldHVybiBkfSxuaWNlOmZ1bmN0aW9uKGQpe2Q9ZC50b1N0cmluZygpLnJlcGxhY2UoLywvZ2ksIi4iKTtkPWQudG9TdHJpbmcoKS5yZXBsYWNlKC8gL2dpLCIiKTtpZihOdW1iZXIucHJvdG90eXBlLmpTbGlkZXJOaWNlKXtyZXR1cm4obmV3IE51bWJlcihkKSkualNsaWRlck5pY2UodGhpcy5zZXR0aW5ncy5yb3VuZCkucmVwbGFjZSgvLS9naSwiJm1pbnVzOyIpfWVsc2V7cmV0dXJuIG5ldyBOdW1iZXIoZCl9fX07ZnVuY3Rpb24gYSgpe3RoaXMuYmFzZUNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1hLmluaGVyaXRGcm9tKERyYWdnYWJsZSx7b25pbml0OmZ1bmN0aW9uKGYsZSxkKXt0aGlzLnVpZD1lO3RoaXMucGFyZW50PWQ7dGhpcy52YWx1ZT17fTt0aGlzLnNldHRpbmdzPXRoaXMucGFyZW50LnNldHRpbmdzfSxvbm1vdXNlZG93bjpmdW5jdGlvbihkKXt0aGlzLl9wYXJlbnQ9e29mZnNldDp0aGlzLnBhcmVudC5kb21Ob2RlLm9mZnNldCgpLHdpZHRoOnRoaXMucGFyZW50LmRvbU5vZGUud2lkdGgoKX07dGhpcy5wdHIuYWRkRGVwZW5kQ2xhc3MoImhvdmVyIik7dGhpcy5zZXRJbmRleE92ZXIoKX0sb25tb3VzZW1vdmU6ZnVuY3Rpb24oZSxkKXt2YXIgZj10aGlzLl9nZXRQYWdlQ29vcmRzKGUpO3RoaXMuX3NldCh0aGlzLmNhbGMoZi54KSl9LG9ubW91c2V1cDpmdW5jdGlvbihkKXtpZih0aGlzLnBhcmVudC5zZXR0aW5ncy5jYWxsYmFjayYmYi5pc0Z1bmN0aW9uKHRoaXMucGFyZW50LnNldHRpbmdzLmNhbGxiYWNrKSl7dGhpcy5wYXJlbnQuc2V0dGluZ3MuY2FsbGJhY2suY2FsbCh0aGlzLnBhcmVudCx0aGlzLnBhcmVudC5nZXRWYWx1ZSgpKX10aGlzLnB0ci5yZW1vdmVEZXBlbmRDbGFzcygiaG92ZXIiKX0sc2V0SW5kZXhPdmVyOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQuc2V0UG9pbnRlcnNJbmRleCgxKTt0aGlzLmluZGV4KDIpfSxpbmRleDpmdW5jdGlvbihkKXt0aGlzLnB0ci5jc3Moe3pJbmRleDpkfSl9LGxpbWl0czpmdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5wYXJlbnQubGltaXRzKGQsdGhpcyl9LGNhbGM6ZnVuY3Rpb24oZSl7dmFyIGQ9dGhpcy5saW1pdHMoKChlLXRoaXMuX3BhcmVudC5vZmZzZXQubGVmdCkqMTAwKS90aGlzLl9wYXJlbnQud2lkdGgpO3JldHVybiBkfSxzZXQ6ZnVuY3Rpb24oZCxlKXt0aGlzLnZhbHVlLm9yaWdpbj10aGlzLnBhcmVudC5yb3VuZChkKTt0aGlzLl9zZXQodGhpcy5wYXJlbnQudmFsdWVUb1ByYyhkLHRoaXMpLGUpfSxfc2V0OmZ1bmN0aW9uKGUsZCl7aWYoIWQpe3RoaXMudmFsdWUub3JpZ2luPXRoaXMucGFyZW50LnByY1RvVmFsdWUoZSl9dGhpcy52YWx1ZS5wcmM9ZTt0aGlzLnB0ci5jc3Moe2xlZnQ6ZSsiJSJ9KTt0aGlzLnBhcmVudC5yZWRyYXcodGhpcyl9fSl9KShqUXVlcnkpOwovKiBqUGlja2VyICovCu+7vyhmdW5jdGlvbihlLGEpe01hdGgucHJlY2lzaW9uPWZ1bmN0aW9uKGosaCl7aWYoaD09PXVuZGVmaW5lZCl7aD0wfXJldHVybiBNYXRoLnJvdW5kKGoqTWF0aC5wb3coMTAsaCkpL01hdGgucG93KDEwLGgpfTt2YXIgZD1mdW5jdGlvbih6LGspe3ZhciBvPXRoaXMsaj16LmZpbmQoImltZzpmaXJzdCIpLEY9MCxFPTEwMCx3PTEwMCxEPTAsQz0xMDAsdj0xMDAscz0wLHA9MCxuLHEsdT1uZXcgQXJyYXkoKSxsPWZ1bmN0aW9uKHkpe2Zvcih2YXIgeD0wO3g8dS5sZW5ndGg7eCsrKXt1W3hdLmNhbGwobyxvLHkpfX0sSD1mdW5jdGlvbih4KXt2YXIgeT16Lm9mZnNldCgpO249e2w6eS5sZWZ0fDAsdDp5LnRvcHwwfTtjbGVhclRpbWVvdXQocSk7cT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7QS5jYWxsKG8seCl9LDApO2UoZG9jdW1lbnQpLmJpbmQoIm1vdXNlbW92ZSIsaCkuYmluZCgibW91c2V1cCIsQik7eC5wcmV2ZW50RGVmYXVsdCgpfSxoPWZ1bmN0aW9uKHgpe2NsZWFyVGltZW91dChxKTtxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtBLmNhbGwobyx4KX0sMCk7eC5zdG9wUHJvcGFnYXRpb24oKTt4LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIGZhbHNlfSxCPWZ1bmN0aW9uKHgpe2UoZG9jdW1lbnQpLnVuYmluZCgibW91c2V1cCIsQikudW5iaW5kKCJtb3VzZW1vdmUiLGgpO3guc3RvcFByb3BhZ2F0aW9uKCk7eC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBmYWxzZX0sQT1mdW5jdGlvbihNKXt2YXIgSz1NLnBhZ2VYLW4ubCx4PU0ucGFnZVktbi50LEw9ei53LHk9ei5oO2lmKEs8MCl7Sz0wfWVsc2V7aWYoSz5MKXtLPUx9fWlmKHg8MCl7eD0wfWVsc2V7aWYoeD55KXt4PXl9fUouY2FsbChvLCJ4eSIse3g6KChLL0wpKncpK0YseTooKHgveSkqdikrRH0pfSxyPWZ1bmN0aW9uKCl7dmFyIEw9MCx4PTAsTj16LncsSz16LmgsTT1qLncseT1qLmg7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKHc+MCl7aWYocz09RSl7TD1OfWVsc2V7TD0oKHMvdykqTil8MH19aWYodj4wKXtpZihwPT1DKXt4PUt9ZWxzZXt4PSgocC92KSpLKXwwfX1pZihNPj1OKXtMPShOPj4xKS0oTT4+MSl9ZWxzZXtMLT1NPj4xfWlmKHk+PUspe3g9KEs+PjEpLSh5Pj4xKX1lbHNle3gtPXk+PjF9ai5jc3Moe2xlZnQ6TCsicHgiLHRvcDp4KyJweCJ9KX0sMCl9LEo9ZnVuY3Rpb24oeCxLLHkpe3ZhciBPPUshPT11bmRlZmluZWQ7aWYoIU8pe2lmKHg9PT11bmRlZmluZWR8fHg9PW51bGwpe3g9Inh5In1zd2l0Y2goeC50b0xvd2VyQ2FzZSgpKXtjYXNlIngiOnJldHVybiBzO2Nhc2UieSI6cmV0dXJuIHA7Y2FzZSJ4eSI6ZGVmYXVsdDpyZXR1cm57eDpzLHk6cH19fWlmKHkhPW51bGwmJnk9PW8pe3JldHVybn12YXIgTj1mYWxzZSxNLEw7aWYoeD09bnVsbCl7eD0ieHkifXN3aXRjaCh4LnRvTG93ZXJDYXNlKCkpe2Nhc2UieCI6TT1LJiYoSy54JiZLLnh8MHx8S3wwKXx8MDticmVhaztjYXNlInkiOkw9SyYmKEsueSYmSy55fDB8fEt8MCl8fDA7YnJlYWs7Y2FzZSJ4eSI6ZGVmYXVsdDpNPUsmJksueCYmSy54fDB8fDA7TD1LJiZLLnkmJksueXwwfHwwO2JyZWFrfWlmKE0hPW51bGwpe2lmKE08Ril7TT1GfWVsc2V7aWYoTT5FKXtNPUV9fWlmKHMhPU0pe3M9TTtOPXRydWV9fWlmKEwhPW51bGwpe2lmKEw8RCl7TD1EfWVsc2V7aWYoTD5DKXtMPUN9fWlmKHAhPUwpe3A9TDtOPXRydWV9fU4mJmwuY2FsbChvLHl8fG8pfSx0PWZ1bmN0aW9uKHgsTCl7dmFyIFA9TCE9PXVuZGVmaW5lZDtpZighUCl7aWYoeD09PXVuZGVmaW5lZHx8eD09bnVsbCl7eD0iYWxsIn1zd2l0Y2goeC50b0xvd2VyQ2FzZSgpKXtjYXNlIm1pbngiOnJldHVybiBGO2Nhc2UibWF4eCI6cmV0dXJuIEU7Y2FzZSJyYW5nZXgiOnJldHVybnttaW5YOkYsbWF4WDpFLHJhbmdlWDp3fTtjYXNlIm1pbnkiOnJldHVybiBEO2Nhc2UibWF4eSI6cmV0dXJuIEM7Y2FzZSJyYW5nZXkiOnJldHVybnttaW5ZOkQsbWF4WTpDLHJhbmdlWTp2fTtjYXNlImFsbCI6ZGVmYXVsdDpyZXR1cm57bWluWDpGLG1heFg6RSxyYW5nZVg6dyxtaW5ZOkQsbWF4WTpDLHJhbmdlWTp2fX19dmFyIE89ZmFsc2UsTixLLE0seTtpZih4PT1udWxsKXt4PSJhbGwifXN3aXRjaCh4LnRvTG93ZXJDYXNlKCkpe2Nhc2UibWlueCI6Tj1MJiYoTC5taW5YJiZMLm1pblh8MHx8THwwKXx8MDticmVhaztjYXNlIm1heHgiOks9TCYmKEwubWF4WCYmTC5tYXhYfDB8fEx8MCl8fDA7YnJlYWs7Y2FzZSJyYW5nZXgiOk49TCYmTC5taW5YJiZMLm1pblh8MHx8MDtLPUwmJkwubWF4WCYmTC5tYXhYfDB8fDA7YnJlYWs7Y2FzZSJtaW55IjpNPUwmJihMLm1pblkmJkwubWluWXwwfHxMfDApfHwwO2JyZWFrO2Nhc2UibWF4eSI6eT1MJiYoTC5tYXhZJiZMLm1heFl8MHx8THwwKXx8MDticmVhaztjYXNlInJhbmdleSI6TT1MJiZMLm1pblkmJkwubWluWXwwfHwwO3k9TCYmTC5tYXhZJiZMLm1heFl8MHx8MDticmVhaztjYXNlImFsbCI6ZGVmYXVsdDpOPUwmJkwubWluWCYmTC5taW5YfDB8fDA7Sz1MJiZMLm1heFgmJkwubWF4WHwwfHwwO009TCYmTC5taW5ZJiZMLm1pbll8MHx8MDt5PUwmJkwubWF4WSYmTC5tYXhZfDB8fDA7YnJlYWt9aWYoTiE9bnVsbCYmRiE9Til7Rj1OO3c9RS1GfWlmKEshPW51bGwmJkUhPUspe0U9Szt3PUUtRn1pZihNIT1udWxsJiZEIT1NKXtEPU07dj1DLUR9aWYoeSE9bnVsbCYmQyE9eSl7Qz15O3Y9Qy1EfX0sST1mdW5jdGlvbih4KXtpZihlLmlzRnVuY3Rpb24oeCkpe3UucHVzaCh4KX19LG09ZnVuY3Rpb24oeSl7aWYoIWUuaXNGdW5jdGlvbih5KSl7cmV0dXJufXZhciB4O3doaWxlKCh4PWUuaW5BcnJheSh5LHUpKSE9LTEpe3Uuc3BsaWNlKHgsMSl9fSxHPWZ1bmN0aW9uKCl7ZShkb2N1bWVudCkudW5iaW5kKCJtb3VzZXVwIixCKS51bmJpbmQoIm1vdXNlbW92ZSIsaCk7ei51bmJpbmQoIm1vdXNlZG93biIsSCk7ej1udWxsO2o9bnVsbDt1PW51bGx9O2UuZXh0ZW5kKHRydWUsbyx7dmFsOkoscmFuZ2U6dCxiaW5kOkksdW5iaW5kOm0sZGVzdHJveTpHfSk7ai5zcmM9ay5hcnJvdyYmay5hcnJvdy5pbWFnZTtqLnc9ay5hcnJvdyYmay5hcnJvdy53aWR0aHx8ai53aWR0aCgpO2ouaD1rLmFycm93JiZrLmFycm93LmhlaWdodHx8ai5oZWlnaHQoKTt6Lnc9ay5tYXAmJmsubWFwLndpZHRofHx6LndpZHRoKCk7ei5oPWsubWFwJiZrLm1hcC5oZWlnaHR8fHouaGVpZ2h0KCk7ei5iaW5kKCJtb3VzZWRvd24iLEgpO0kuY2FsbChvLHIpfSxiPWZ1bmN0aW9uKHUseixrLHkpe3ZhciBxPXRoaXMsbD11LmZpbmQoInRkLlRleHQgaW5wdXQiKSxyPWwuZXEoMyksdj1sLmVxKDQpLGg9bC5lcSg1KSxvPWwubGVuZ3RoPjc/bC5lcSg2KTpudWxsLG49bC5lcSgwKSxwPWwuZXEoMSkseD1sLmVxKDIpLHM9bC5lcShsLmxlbmd0aD43Pzc6NiksQj1sLmxlbmd0aD43P2wuZXEoOCk6bnVsbCxDPWZ1bmN0aW9uKEUpe2lmKEUudGFyZ2V0LnZhbHVlPT0iIiYmRS50YXJnZXQhPXMuZ2V0KDApJiYoayE9bnVsbCYmRS50YXJnZXQhPWsuZ2V0KDApfHxrPT1udWxsKSl7cmV0dXJufWlmKCF0KEUpKXtyZXR1cm4gRX1zd2l0Y2goRS50YXJnZXQpe2Nhc2Ugci5nZXQoMCk6c3dpdGNoKEUua2V5Q29kZSl7Y2FzZSAzODpyLnZhbChqLmNhbGwocSwoci52YWwoKTw8MCkrMSwwLDI1NSkpO3oudmFsKCJyIixyLnZhbCgpLEUudGFyZ2V0KTtyZXR1cm4gZmFsc2U7Y2FzZSA0MDpyLnZhbChqLmNhbGwocSwoci52YWwoKTw8MCktMSwwLDI1NSkpO3oudmFsKCJyIixyLnZhbCgpLEUudGFyZ2V0KTtyZXR1cm4gZmFsc2V9YnJlYWs7Y2FzZSB2LmdldCgwKTpzd2l0Y2goRS5rZXlDb2RlKXtjYXNlIDM4OnYudmFsKGouY2FsbChxLCh2LnZhbCgpPDwwKSsxLDAsMjU1KSk7ei52YWwoImciLHYudmFsKCksRS50YXJnZXQpO3JldHVybiBmYWxzZTtjYXNlIDQwOnYudmFsKGouY2FsbChxLCh2LnZhbCgpPDwwKS0xLDAsMjU1KSk7ei52YWwoImciLHYudmFsKCksRS50YXJnZXQpO3JldHVybiBmYWxzZX1icmVhaztjYXNlIGguZ2V0KDApOnN3aXRjaChFLmtleUNvZGUpe2Nhc2UgMzg6aC52YWwoai5jYWxsKHEsKGgudmFsKCk8PDApKzEsMCwyNTUpKTt6LnZhbCgiYiIsaC52YWwoKSxFLnRhcmdldCk7cmV0dXJuIGZhbHNlO2Nhc2UgNDA6aC52YWwoai5jYWxsKHEsKGgudmFsKCk8PDApLTEsMCwyNTUpKTt6LnZhbCgiYiIsaC52YWwoKSxFLnRhcmdldCk7cmV0dXJuIGZhbHNlfWJyZWFrO2Nhc2UgbyYmby5nZXQoMCk6c3dpdGNoKEUua2V5Q29kZSl7Y2FzZSAzODpvLnZhbChqLmNhbGwocSxwYXJzZUZsb2F0KG8udmFsKCkpKzEsMCwxMDApKTt6LnZhbCgiYSIsTWF0aC5wcmVjaXNpb24oKG8udmFsKCkqMjU1KS8xMDAseSksRS50YXJnZXQpO3JldHVybiBmYWxzZTtjYXNlIDQwOm8udmFsKGouY2FsbChxLHBhcnNlRmxvYXQoby52YWwoKSktMSwwLDEwMCkpO3oudmFsKCJhIixNYXRoLnByZWNpc2lvbigoby52YWwoKSoyNTUpLzEwMCx5KSxFLnRhcmdldCk7cmV0dXJuIGZhbHNlfWJyZWFrO2Nhc2Ugbi5nZXQoMCk6c3dpdGNoKEUua2V5Q29kZSl7Y2FzZSAzODpuLnZhbChqLmNhbGwocSwobi52YWwoKTw8MCkrMSwwLDM2MCkpO3oudmFsKCJoIixuLnZhbCgpLEUudGFyZ2V0KTtyZXR1cm4gZmFsc2U7Y2FzZSA0MDpuLnZhbChqLmNhbGwocSwobi52YWwoKTw8MCktMSwwLDM2MCkpO3oudmFsKCJoIixuLnZhbCgpLEUudGFyZ2V0KTtyZXR1cm4gZmFsc2V9YnJlYWs7Y2FzZSBwLmdldCgwKTpzd2l0Y2goRS5rZXlDb2RlKXtjYXNlIDM4OnAudmFsKGouY2FsbChxLChwLnZhbCgpPDwwKSsxLDAsMTAwKSk7ei52YWwoInMiLHAudmFsKCksRS50YXJnZXQpO3JldHVybiBmYWxzZTtjYXNlIDQwOnAudmFsKGouY2FsbChxLChwLnZhbCgpPDwwKS0xLDAsMTAwKSk7ei52YWwoInMiLHAudmFsKCksRS50YXJnZXQpO3JldHVybiBmYWxzZX1icmVhaztjYXNlIHguZ2V0KDApOnN3aXRjaChFLmtleUNvZGUpe2Nhc2UgMzg6eC52YWwoai5jYWxsKHEsKHgudmFsKCk8PDApKzEsMCwxMDApKTt6LnZhbCgidiIseC52YWwoKSxFLnRhcmdldCk7cmV0dXJuIGZhbHNlO2Nhc2UgNDA6eC52YWwoai5jYWxsKHEsKHgudmFsKCk8PDApLTEsMCwxMDApKTt6LnZhbCgidiIseC52YWwoKSxFLnRhcmdldCk7cmV0dXJuIGZhbHNlfWJyZWFrfX0sdz1mdW5jdGlvbihFKXtpZihFLnRhcmdldC52YWx1ZT09IiImJkUudGFyZ2V0IT1zLmdldCgwKSYmKGshPW51bGwmJkUudGFyZ2V0IT1rLmdldCgwKXx8az09bnVsbCkpe3JldHVybn1pZighdChFKSl7cmV0dXJuIEV9c3dpdGNoKEUudGFyZ2V0KXtjYXNlIHIuZ2V0KDApOnIudmFsKGouY2FsbChxLHIudmFsKCksMCwyNTUpKTt6LnZhbCgiciIsci52YWwoKSxFLnRhcmdldCk7YnJlYWs7Y2FzZSB2LmdldCgwKTp2LnZhbChqLmNhbGwocSx2LnZhbCgpLDAsMjU1KSk7ei52YWwoImciLHYudmFsKCksRS50YXJnZXQpO2JyZWFrO2Nhc2UgaC5nZXQoMCk6aC52YWwoai5jYWxsKHEsaC52YWwoKSwwLDI1NSkpO3oudmFsKCJiIixoLnZhbCgpLEUudGFyZ2V0KTticmVhaztjYXNlIG8mJm8uZ2V0KDApOm8udmFsKGouY2FsbChxLG8udmFsKCksMCwxMDApKTt6LnZhbCgiYSIsTWF0aC5wcmVjaXNpb24oKG8udmFsKCkqMjU1KS8xMDAseSksRS50YXJnZXQpO2JyZWFrO2Nhc2Ugbi5nZXQoMCk6bi52YWwoai5jYWxsKHEsbi52YWwoKSwwLDM2MCkpO3oudmFsKCJoIixuLnZhbCgpLEUudGFyZ2V0KTticmVhaztjYXNlIHAuZ2V0KDApOnAudmFsKGouY2FsbChxLHAudmFsKCksMCwxMDApKTt6LnZhbCgicyIscC52YWwoKSxFLnRhcmdldCk7YnJlYWs7Y2FzZSB4LmdldCgwKTp4LnZhbChqLmNhbGwocSx4LnZhbCgpLDAsMTAwKSk7ei52YWwoInYiLHgudmFsKCksRS50YXJnZXQpO2JyZWFrO2Nhc2Ugcy5nZXQoMCk6cy52YWwocy52YWwoKS5yZXBsYWNlKC9bXmEtZkEtRjAtOV0vZywiIikudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMCw2KSk7ayYmay52YWwocy52YWwoKSk7ei52YWwoImhleCIscy52YWwoKSE9IiI/cy52YWwoKTpudWxsLEUudGFyZ2V0KTticmVhaztjYXNlIGsmJmsuZ2V0KDApOmsudmFsKGsudmFsKCkucmVwbGFjZSgvW15hLWZBLUYwLTldL2csIiIpLnRvTG93ZXJDYXNlKCkuc3Vic3RyaW5nKDAsNikpO3MudmFsKGsudmFsKCkpO3oudmFsKCJoZXgiLGsudmFsKCkhPSIiP2sudmFsKCk6bnVsbCxFLnRhcmdldCk7YnJlYWs7Y2FzZSBCJiZCLmdldCgwKTpCLnZhbChCLnZhbCgpLnJlcGxhY2UoL1teYS1mQS1GMC05XS9nLCIiKS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZygwLDIpKTt6LnZhbCgiYSIsQi52YWwoKSE9bnVsbD9wYXJzZUludChCLnZhbCgpLDE2KTpudWxsLEUudGFyZ2V0KTticmVha319LEE9ZnVuY3Rpb24oRSl7aWYoei52YWwoKSE9bnVsbCl7c3dpdGNoKEUudGFyZ2V0KXtjYXNlIHIuZ2V0KDApOnIudmFsKHoudmFsKCJyIikpO2JyZWFrO2Nhc2Ugdi5nZXQoMCk6di52YWwoei52YWwoImciKSk7YnJlYWs7Y2FzZSBoLmdldCgwKTpoLnZhbCh6LnZhbCgiYiIpKTticmVhaztjYXNlIG8mJm8uZ2V0KDApOm8udmFsKE1hdGgucHJlY2lzaW9uKCh6LnZhbCgiYSIpKjEwMCkvMjU1LHkpKTticmVhaztjYXNlIG4uZ2V0KDApOm4udmFsKHoudmFsKCJoIikpO2JyZWFrO2Nhc2UgcC5nZXQoMCk6cC52YWwoei52YWwoInMiKSk7YnJlYWs7Y2FzZSB4LmdldCgwKTp4LnZhbCh6LnZhbCgidiIpKTticmVhaztjYXNlIHMuZ2V0KDApOmNhc2UgayYmay5nZXQoMCk6cy52YWwoei52YWwoImhleCIpKTtrJiZrLnZhbCh6LnZhbCgiaGV4IikpO2JyZWFrO2Nhc2UgQiYmQi5nZXQoMCk6Qi52YWwoei52YWwoImFoZXgiKS5zdWJzdHJpbmcoNikpO2JyZWFrfX19LHQ9ZnVuY3Rpb24oRSl7c3dpdGNoKEUua2V5Q29kZSl7Y2FzZSA5OmNhc2UgMTY6Y2FzZSAyOTpjYXNlIDM3OmNhc2UgMzk6cmV0dXJuIGZhbHNlO2Nhc2UiYyIuY2hhckNvZGVBdCgpOmNhc2UidiIuY2hhckNvZGVBdCgpOmlmKEUuY3RybEtleSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX0saj1mdW5jdGlvbihHLEYsRSl7aWYoRz09IiJ8fGlzTmFOKEcpKXtyZXR1cm4gRn1pZihHPkUpe3JldHVybiBFfWlmKEc8Ril7cmV0dXJuIEZ9cmV0dXJuIEd9LG09ZnVuY3Rpb24oRyxFKXt2YXIgRj1HLnZhbCgiYWxsIik7aWYoRSE9ci5nZXQoMCkpe3IudmFsKEYhPW51bGw/Ri5yOiIiKX1pZihFIT12LmdldCgwKSl7di52YWwoRiE9bnVsbD9GLmc6IiIpfWlmKEUhPWguZ2V0KDApKXtoLnZhbChGIT1udWxsP0YuYjoiIil9aWYobyYmRSE9by5nZXQoMCkpe28udmFsKEYhPW51bGw/TWF0aC5wcmVjaXNpb24oKEYuYSoxMDApLzI1NSx5KToiIil9aWYoRSE9bi5nZXQoMCkpe24udmFsKEYhPW51bGw/Ri5oOiIiKX1pZihFIT1wLmdldCgwKSl7cC52YWwoRiE9bnVsbD9GLnM6IiIpfWlmKEUhPXguZ2V0KDApKXt4LnZhbChGIT1udWxsP0YudjoiIil9aWYoRSE9cy5nZXQoMCkmJihrJiZFIT1rLmdldCgwKXx8IWspKXtzLnZhbChGIT1udWxsP0YuaGV4OiIiKX1pZihrJiZFIT1rLmdldCgwKSYmRSE9cy5nZXQoMCkpe2sudmFsKEYhPW51bGw/Ri5oZXg6IiIpfWlmKEImJkUhPUIuZ2V0KDApKXtCLnZhbChGIT1udWxsP0YuYWhleC5zdWJzdHJpbmcoNik6IiIpfX0sRD1mdW5jdGlvbigpe3IuYWRkKHYpLmFkZChoKS5hZGQobykuYWRkKG4pLmFkZChwKS5hZGQoeCkuYWRkKHMpLmFkZChrKS5hZGQoQikudW5iaW5kKCJrZXl1cCIsdykudW5iaW5kKCJibHVyIixBKTtyLmFkZCh2KS5hZGQoaCkuYWRkKG8pLmFkZChuKS5hZGQocCkuYWRkKHgpLnVuYmluZCgia2V5ZG93biIsQyk7ei51bmJpbmQobSk7cj1udWxsO3Y9bnVsbDtoPW51bGw7bz1udWxsO249bnVsbDtwPW51bGw7eD1udWxsO3M9bnVsbDtCPW51bGx9O2UuZXh0ZW5kKHRydWUscSx7ZGVzdHJveTpEfSk7ci5hZGQodikuYWRkKGgpLmFkZChvKS5hZGQobikuYWRkKHApLmFkZCh4KS5hZGQocykuYWRkKGspLmFkZChCKS5iaW5kKCJrZXl1cCIsdykuYmluZCgiYmx1ciIsQSk7ci5hZGQodikuYWRkKGgpLmFkZChvKS5hZGQobikuYWRkKHApLmFkZCh4KS5iaW5kKCJrZXlkb3duIixDKTt6LmJpbmQobSl9O2UualBpY2tlcj17TGlzdDpbXSxDb2xvcjpmdW5jdGlvbih6KXt2YXIgcT10aGlzLGosbyx0LHUsbixBLHgsaz1uZXcgQXJyYXkoKSxtPWZ1bmN0aW9uKHIpe2Zvcih2YXIgaD0wO2g8ay5sZW5ndGg7aCsrKXtrW2hdLmNhbGwocSxxLHIpfX0sbD1mdW5jdGlvbihoLEcscil7dmFyIEY9RyE9PXVuZGVmaW5lZDtpZighRil7aWYoaD09PXVuZGVmaW5lZHx8aD09bnVsbHx8aD09IiIpe2g9ImFsbCJ9aWYoaj09bnVsbCl7cmV0dXJuIG51bGx9c3dpdGNoKGgudG9Mb3dlckNhc2UoKSl7Y2FzZSJhaGV4IjpyZXR1cm4gZy5yZ2JhVG9IZXgoe3I6aixnOm8sYjp0LGE6dX0pO2Nhc2UiaGV4IjpyZXR1cm4gbCgiYWhleCIpLnN1YnN0cmluZygwLDYpO2Nhc2UiYWxsIjpyZXR1cm57cjpqLGc6byxiOnQsYTp1LGg6bixzOkEsdjp4LGhleDpsLmNhbGwocSwiaGV4IiksYWhleDpsLmNhbGwocSwiYWhleCIpfTtkZWZhdWx0OnZhciBEPXt9O2Zvcih2YXIgQj0wO0I8aC5sZW5ndGg7QisrKXtzd2l0Y2goaC5jaGFyQXQoQikpe2Nhc2UiciI6aWYoaC5sZW5ndGg9PTEpe0Q9an1lbHNle0Qucj1qfWJyZWFrO2Nhc2UiZyI6aWYoaC5sZW5ndGg9PTEpe0Q9b31lbHNle0QuZz1vfWJyZWFrO2Nhc2UiYiI6aWYoaC5sZW5ndGg9PTEpe0Q9dH1lbHNle0QuYj10fWJyZWFrO2Nhc2UiYSI6aWYoaC5sZW5ndGg9PTEpe0Q9dX1lbHNle0QuYT11fWJyZWFrO2Nhc2UiaCI6aWYoaC5sZW5ndGg9PTEpe0Q9bn1lbHNle0QuaD1ufWJyZWFrO2Nhc2UicyI6aWYoaC5sZW5ndGg9PTEpe0Q9QX1lbHNle0Qucz1BfWJyZWFrO2Nhc2UidiI6aWYoaC5sZW5ndGg9PTEpe0Q9eH1lbHNle0Qudj14fWJyZWFrfX1yZXR1cm4gRD09e30/bC5jYWxsKHEsImFsbCIpOkQ7YnJlYWt9fWlmKHIhPW51bGwmJnI9PXEpe3JldHVybn12YXIgdj1mYWxzZTtpZihoPT1udWxsKXtoPSIifWlmKEc9PW51bGwpe2lmKGohPW51bGwpe2o9bnVsbDt2PXRydWV9aWYobyE9bnVsbCl7bz1udWxsO3Y9dHJ1ZX1pZih0IT1udWxsKXt0PW51bGw7dj10cnVlfWlmKHUhPW51bGwpe3U9bnVsbDt2PXRydWV9aWYobiE9bnVsbCl7bj1udWxsO3Y9dHJ1ZX1pZihBIT1udWxsKXtBPW51bGw7dj10cnVlfWlmKHghPW51bGwpe3g9bnVsbDt2PXRydWV9diYmbS5jYWxsKHEscnx8cSk7cmV0dXJufXN3aXRjaChoLnRvTG93ZXJDYXNlKCkpe2Nhc2UiYWhleCI6Y2FzZSJoZXgiOnZhciBEPWcuaGV4VG9SZ2JhKEcmJihHLmFoZXh8fEcuaGV4KXx8R3x8IjAwMDAwMDAwIik7bC5jYWxsKHEsInJnYmEiLHtyOkQucixnOkQuZyxiOkQuYixhOmg9PSJhaGV4Ij9ELmE6dSE9bnVsbD91OjI1NX0scik7YnJlYWs7ZGVmYXVsdDppZihHJiYoRy5haGV4IT1udWxsfHxHLmhleCE9bnVsbCkpe2wuY2FsbChxLCJhaGV4IixHLmFoZXh8fEcuaGV4fHwiMDAwMDAwMDAiLHIpO3JldHVybn12YXIgcz17fSxFPWZhbHNlLEM9ZmFsc2U7aWYoRy5yIT09dW5kZWZpbmVkJiYhaC5pbmRleE9mKCJyIik9PS0xKXtoKz0iciJ9aWYoRy5nIT09dW5kZWZpbmVkJiYhaC5pbmRleE9mKCJnIik9PS0xKXtoKz0iZyJ9aWYoRy5iIT09dW5kZWZpbmVkJiYhaC5pbmRleE9mKCJiIik9PS0xKXtoKz0iYiJ9aWYoRy5hIT09dW5kZWZpbmVkJiYhaC5pbmRleE9mKCJhIik9PS0xKXtoKz0iYSJ9aWYoRy5oIT09dW5kZWZpbmVkJiYhaC5pbmRleE9mKCJoIik9PS0xKXtoKz0iaCJ9aWYoRy5zIT09dW5kZWZpbmVkJiYhaC5pbmRleE9mKCJzIik9PS0xKXtoKz0icyJ9aWYoRy52IT09dW5kZWZpbmVkJiYhaC5pbmRleE9mKCJ2Iik9PS0xKXtoKz0idiJ9Zm9yKHZhciBCPTA7QjxoLmxlbmd0aDtCKyspe3N3aXRjaChoLmNoYXJBdChCKSl7Y2FzZSJyIjppZihDKXtjb250aW51ZX1FPXRydWU7cy5yPUcmJkcuciYmRy5yfDB8fEcmJkd8MHx8MDtpZihzLnI8MCl7cy5yPTB9ZWxzZXtpZihzLnI+MjU1KXtzLnI9MjU1fX1pZihqIT1zLnIpe2o9cy5yO3Y9dHJ1ZX1icmVhaztjYXNlImciOmlmKEMpe2NvbnRpbnVlfUU9dHJ1ZTtzLmc9RyYmRy5nJiZHLmd8MHx8RyYmR3wwfHwwO2lmKHMuZzwwKXtzLmc9MH1lbHNle2lmKHMuZz4yNTUpe3MuZz0yNTV9fWlmKG8hPXMuZyl7bz1zLmc7dj10cnVlfWJyZWFrO2Nhc2UiYiI6aWYoQyl7Y29udGludWV9RT10cnVlO3MuYj1HJiZHLmImJkcuYnwwfHxHJiZHfDB8fDA7aWYocy5iPDApe3MuYj0wfWVsc2V7aWYocy5iPjI1NSl7cy5iPTI1NX19aWYodCE9cy5iKXt0PXMuYjt2PXRydWV9YnJlYWs7Y2FzZSJhIjpzLmE9RyYmRy5hIT1udWxsP0cuYXwwOkchPW51bGw/R3wwOjI1NTtpZihzLmE8MCl7cy5hPTB9ZWxzZXtpZihzLmE+MjU1KXtzLmE9MjU1fX1pZih1IT1zLmEpe3U9cy5hO3Y9dHJ1ZX1icmVhaztjYXNlImgiOmlmKEUpe2NvbnRpbnVlfUM9dHJ1ZTtzLmg9RyYmRy5oJiZHLmh8MHx8RyYmR3wwfHwwO2lmKHMuaDwwKXtzLmg9MH1lbHNle2lmKHMuaD4zNjApe3MuaD0zNjB9fWlmKG4hPXMuaCl7bj1zLmg7dj10cnVlfWJyZWFrO2Nhc2UicyI6aWYoRSl7Y29udGludWV9Qz10cnVlO3Mucz1HJiZHLnMhPW51bGw/Ry5zfDA6RyE9bnVsbD9HfDA6MTAwO2lmKHMuczwwKXtzLnM9MH1lbHNle2lmKHMucz4xMDApe3Mucz0xMDB9fWlmKEEhPXMucyl7QT1zLnM7dj10cnVlfWJyZWFrO2Nhc2UidiI6aWYoRSl7Y29udGludWV9Qz10cnVlO3Mudj1HJiZHLnYhPW51bGw/Ry52fDA6RyE9bnVsbD9HfDA6MTAwO2lmKHMudjwwKXtzLnY9MH1lbHNle2lmKHMudj4xMDApe3Mudj0xMDB9fWlmKHghPXMudil7eD1zLnY7dj10cnVlfWJyZWFrfX1pZih2KXtpZihFKXtqPWp8fDA7bz1vfHwwO3Q9dHx8MDt2YXIgRD1nLnJnYlRvSHN2KHtyOmosZzpvLGI6dH0pO249RC5oO0E9RC5zO3g9RC52fWVsc2V7aWYoQyl7bj1ufHwwO0E9QSE9bnVsbD9BOjEwMDt4PXghPW51bGw/eDoxMDA7dmFyIEQ9Zy5oc3ZUb1JnYih7aDpuLHM6QSx2Onh9KTtqPUQucjtvPUQuZzt0PUQuYn19dT11IT1udWxsP3U6MjU1O20uY2FsbChxLHJ8fHEpfWJyZWFrfX0scD1mdW5jdGlvbihoKXtpZihlLmlzRnVuY3Rpb24oaCkpe2sucHVzaChoKX19LHk9ZnVuY3Rpb24ocil7aWYoIWUuaXNGdW5jdGlvbihyKSl7cmV0dXJufXZhciBoO3doaWxlKChoPWUuaW5BcnJheShyLGspKSE9LTEpe2suc3BsaWNlKGgsMSl9fSx3PWZ1bmN0aW9uKCl7az1udWxsfTtlLmV4dGVuZCh0cnVlLHEse3ZhbDpsLGJpbmQ6cCx1bmJpbmQ6eSxkZXN0cm95Ond9KTtpZih6KXtpZih6LmFoZXghPW51bGwpe2woImFoZXgiLHopfWVsc2V7aWYoei5oZXghPW51bGwpe2woKHouYSE9bnVsbD8iYSI6IiIpKyJoZXgiLHouYSE9bnVsbD97YWhleDp6LmhleCtnLmludFRvSGV4KHouYSl9OnopfWVsc2V7aWYoei5yIT1udWxsJiZ6LmchPW51bGwmJnouYiE9bnVsbCl7bCgicmdiIisoei5hIT1udWxsPyJhIjoiIikseil9ZWxzZXtpZih6LmghPW51bGwmJnoucyE9bnVsbCYmei52IT1udWxsKXtsKCJoc3YiKyh6LmEhPW51bGw/ImEiOiIiKSx6KX19fX19fSxDb2xvck1ldGhvZHM6e2hleFRvUmdiYTpmdW5jdGlvbihtKXttPXRoaXMudmFsaWRhdGVIZXgobSk7aWYobT09IiIpe3JldHVybntyOm51bGwsZzpudWxsLGI6bnVsbCxhOm51bGx9fXZhciBsPSIwMCIsaz0iMDAiLGg9IjAwIixqPSIyNTUiO2lmKG0ubGVuZ3RoPT02KXttKz0iZmYifWlmKG0ubGVuZ3RoPjYpe2w9bS5zdWJzdHJpbmcoMCwyKTtrPW0uc3Vic3RyaW5nKDIsNCk7aD1tLnN1YnN0cmluZyg0LDYpO2o9bS5zdWJzdHJpbmcoNixtLmxlbmd0aCl9ZWxzZXtpZihtLmxlbmd0aD40KXtsPW0uc3Vic3RyaW5nKDQsbS5sZW5ndGgpO209bS5zdWJzdHJpbmcoMCw0KX1pZihtLmxlbmd0aD4yKXtrPW0uc3Vic3RyaW5nKDIsbS5sZW5ndGgpO209bS5zdWJzdHJpbmcoMCwyKX1pZihtLmxlbmd0aD4wKXtoPW0uc3Vic3RyaW5nKDAsbS5sZW5ndGgpfX1yZXR1cm57cjp0aGlzLmhleFRvSW50KGwpLGc6dGhpcy5oZXhUb0ludChrKSxiOnRoaXMuaGV4VG9JbnQoaCksYTp0aGlzLmhleFRvSW50KGopfX0sdmFsaWRhdGVIZXg6ZnVuY3Rpb24oaCl7aD1oLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLWYwLTldL2csIiIpO2lmKGgubGVuZ3RoPjgpe2g9aC5zdWJzdHJpbmcoMCw4KX1yZXR1cm4gaH0scmdiYVRvSGV4OmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmludFRvSGV4KGgucikrdGhpcy5pbnRUb0hleChoLmcpK3RoaXMuaW50VG9IZXgoaC5iKSt0aGlzLmludFRvSGV4KGguYSl9LGludFRvSGV4OmZ1bmN0aW9uKGope3ZhciBoPShqfDApLnRvU3RyaW5nKDE2KTtpZihoLmxlbmd0aD09MSl7aD0oIjAiK2gpfXJldHVybiBoLnRvTG93ZXJDYXNlKCl9LGhleFRvSW50OmZ1bmN0aW9uKGgpe3JldHVybiBwYXJzZUludChoLDE2KX0scmdiVG9Ic3Y6ZnVuY3Rpb24obCl7dmFyIG89bC5yLzI1NSxuPWwuZy8yNTUsaj1sLmIvMjU1LGs9e2g6MCxzOjAsdjowfSxtPTAsaD0wLHA7aWYobz49biYmbz49ail7aD1vO209bj5qP2o6bn1lbHNle2lmKG4+PWomJm4+PW8pe2g9bjttPW8+aj9qOm99ZWxzZXtoPWo7bT1uPm8/bzpufX1rLnY9aDtrLnM9aD8oaC1tKS9oOjA7aWYoIWsucyl7ay5oPTB9ZWxzZXtwPWgtbTtpZihvPT1oKXtrLmg9KG4taikvcH1lbHNle2lmKG49PWgpe2suaD0yKyhqLW8pL3B9ZWxzZXtrLmg9NCsoby1uKS9wfX1rLmg9cGFyc2VJbnQoay5oKjYwKTtpZihrLmg8MCl7ay5oKz0zNjB9fWsucz0oay5zKjEwMCl8MDtrLnY9KGsudioxMDApfDA7cmV0dXJuIGt9LGhzdlRvUmdiOmZ1bmN0aW9uKG4pe3ZhciByPXtyOjAsZzowLGI6MCxhOjEwMH0sbT1uLmgseD1uLnMsdT1uLnY7aWYoeD09MCl7aWYodT09MCl7ci5yPXIuZz1yLmI9MH1lbHNle3Iucj1yLmc9ci5iPSh1KjI1NS8xMDApfDB9fWVsc2V7aWYobT09MzYwKXttPTB9bS89NjA7eD14LzEwMDt1PXUvMTAwO3ZhciBsPW18MCxvPW0tbCxrPXUqKDEteCksaj11KigxLSh4Km8pKSx3PXUqKDEtKHgqKDEtbykpKTtzd2l0Y2gobCl7Y2FzZSAwOnIucj11O3IuZz13O3IuYj1rO2JyZWFrO2Nhc2UgMTpyLnI9ajtyLmc9dTtyLmI9azticmVhaztjYXNlIDI6ci5yPWs7ci5nPXU7ci5iPXc7YnJlYWs7Y2FzZSAzOnIucj1rO3IuZz1qO3IuYj11O2JyZWFrO2Nhc2UgNDpyLnI9dztyLmc9aztyLmI9dTticmVhaztjYXNlIDU6ci5yPXU7ci5nPWs7ci5iPWo7YnJlYWt9ci5yPShyLnIqMjU1KXwwO3IuZz0oci5nKjI1NSl8MDtyLmI9KHIuYioyNTUpfDB9cmV0dXJuIHJ9fX07dmFyIGY9ZS5qUGlja2VyLkNvbG9yLGM9ZS5qUGlja2VyLkxpc3QsZz1lLmpQaWNrZXIuQ29sb3JNZXRob2RzO2UuZm4ualBpY2tlcj1mdW5jdGlvbihqKXt2YXIgaD1hcmd1bWVudHM7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB3PXRoaXMsYXY9ZS5leHRlbmQodHJ1ZSx7fSxlLmZuLmpQaWNrZXIuZGVmYXVsdHMsaik7aWYoZSh3KS5nZXQoMCkubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09ImlucHV0Iil7ZS5leHRlbmQodHJ1ZSxhdix7d2luZG93OntiaW5kVG9JbnB1dDp0cnVlLGV4cGFuZGFibGU6dHJ1ZSxpbnB1dDplKHcpfX0pO2lmKGUodykudmFsKCk9PSIiKXthdi5jb2xvci5hY3RpdmU9bmV3IGYoe2hleDpudWxsfSk7YXYuY29sb3IuY3VycmVudD1uZXcgZih7aGV4Om51bGx9KX1lbHNle2lmKGcudmFsaWRhdGVIZXgoZSh3KS52YWwoKSkpe2F2LmNvbG9yLmFjdGl2ZT1uZXcgZih7aGV4OmUodykudmFsKCksYTphdi5jb2xvci5hY3RpdmUudmFsKCJhIil9KTthdi5jb2xvci5jdXJyZW50PW5ldyBmKHtoZXg6ZSh3KS52YWwoKSxhOmF2LmNvbG9yLmFjdGl2ZS52YWwoImEiKX0pfX19aWYoYXYud2luZG93LmV4cGFuZGFibGUpe2UodykuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJqUGlja2VyIj48c3BhbiBjbGFzcz0iSWNvbiI+PHNwYW4gY2xhc3M9IkNvbG9yIj4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9IkFscGhhIj4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9IkltYWdlIiB0aXRsZT0iQ2xpY2sgVG8gT3BlbiBDb2xvciBQaWNrZXIiPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0iQ29udGFpbmVyIj4mbmJzcDs8L3NwYW4+PC9zcGFuPjwvc3Bhbj4nKX1lbHNle2F2LndpbmRvdy5saXZlVXBkYXRlPWZhbHNlfXZhciBRPXBhcnNlRmxvYXQobmF2aWdhdG9yLmFwcFZlcnNpb24uc3BsaXQoIk1TSUUiKVsxXSk8NyYmZG9jdW1lbnQuYm9keS5maWx0ZXJzLFI9bnVsbCxsPW51bGwscz1udWxsLGF1PW51bGwsYXQ9bnVsbCxhcj1udWxsLFA9bnVsbCxPPW51bGwsTj1udWxsLE09bnVsbCxMPW51bGwsSz1udWxsLEQ9bnVsbCxVPW51bGwsYXc9bnVsbCxKPW51bGwsST1udWxsLGFtPW51bGwsYWk9bnVsbCxFPW51bGwsYW49bnVsbCxhaD1udWxsLFg9bnVsbCxhYj1udWxsLGFxPW51bGwscj1udWxsLEM9bnVsbCx1PW51bGwsYWc9ZnVuY3Rpb24oYUIpe3ZhciBhRD1HLmFjdGl2ZSxhRT1uLmNsaWVudFBhdGgsYUE9YUQudmFsKCJoZXgiKSxhQyxhejthdi5jb2xvci5tb2RlPWFCO3N3aXRjaChhQil7Y2FzZSJoIjpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eS5jYWxsKHcsbCwidHJhbnNwYXJlbnQiKTt4LmNhbGwodyxhdSwwKTtZLmNhbGwodyxhdSwxMDApO3guY2FsbCh3LGF0LDI2MCk7WS5jYWxsKHcsYXQsMTAwKTt5LmNhbGwodyxzLCJ0cmFuc3BhcmVudCIpO3guY2FsbCh3LFAsMCk7WS5jYWxsKHcsUCwxMDApO3guY2FsbCh3LE8sMjYwKTtZLmNhbGwodyxPLDEwMCk7eC5jYWxsKHcsTiwyNjApO1kuY2FsbCh3LE4sMTAwKTt4LmNhbGwodyxNLDI2MCk7WS5jYWxsKHcsTSwxMDApO3guY2FsbCh3LEssMjYwKTtZLmNhbGwodyxLLDEwMCl9LDApO0QucmFuZ2UoImFsbCIse21pblg6MCxtYXhYOjEwMCxtaW5ZOjAsbWF4WToxMDB9KTtVLnJhbmdlKCJyYW5nZVkiLHttaW5ZOjAsbWF4WTozNjB9KTtpZihhRC52YWwoImFoZXgiKT09bnVsbCl7YnJlYWt9RC52YWwoInh5Iix7eDphRC52YWwoInMiKSx5OjEwMC1hRC52YWwoInYiKX0sRCk7VS52YWwoInkiLDM2MC1hRC52YWwoImgiKSxVKTticmVhaztjYXNlInMiOnNldFRpbWVvdXQoZnVuY3Rpb24oKXt5LmNhbGwodyxsLCJ0cmFuc3BhcmVudCIpO3guY2FsbCh3LGF1LC0yNjApO3guY2FsbCh3LGF0LC01MjApO3guY2FsbCh3LFAsLTI2MCk7eC5jYWxsKHcsTywtNTIwKTt4LmNhbGwodyxLLDI2MCk7WS5jYWxsKHcsSywxMDApfSwwKTtELnJhbmdlKCJhbGwiLHttaW5YOjAsbWF4WDozNjAsbWluWTowLG1heFk6MTAwfSk7VS5yYW5nZSgicmFuZ2VZIix7bWluWTowLG1heFk6MTAwfSk7aWYoYUQudmFsKCJhaGV4Iik9PW51bGwpe2JyZWFrfUQudmFsKCJ4eSIse3g6YUQudmFsKCJoIikseToxMDAtYUQudmFsKCJ2Iil9LEQpO1UudmFsKCJ5IiwxMDAtYUQudmFsKCJzIiksVSk7YnJlYWs7Y2FzZSJ2IjpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eS5jYWxsKHcsbCwiMDAwMDAwIik7eC5jYWxsKHcsYXUsLTc4MCk7eC5jYWxsKHcsYXQsMjYwKTt5LmNhbGwodyxzLGFBKTt4LmNhbGwodyxQLC01MjApO3guY2FsbCh3LE8sMjYwKTtZLmNhbGwodyxPLDEwMCk7eC5jYWxsKHcsSywyNjApO1kuY2FsbCh3LEssMTAwKX0sMCk7RC5yYW5nZSgiYWxsIix7bWluWDowLG1heFg6MzYwLG1pblk6MCxtYXhZOjEwMH0pO1UucmFuZ2UoInJhbmdlWSIse21pblk6MCxtYXhZOjEwMH0pO2lmKGFELnZhbCgiYWhleCIpPT1udWxsKXticmVha31ELnZhbCgieHkiLHt4OmFELnZhbCgiaCIpLHk6MTAwLWFELnZhbCgicyIpfSxEKTtVLnZhbCgieSIsMTAwLWFELnZhbCgidiIpLFUpO2JyZWFrO2Nhc2UiciI6YUM9LTEwNDA7YXo9LTc4MDtELnJhbmdlKCJhbGwiLHttaW5YOjAsbWF4WDoyNTUsbWluWTowLG1heFk6MjU1fSk7VS5yYW5nZSgicmFuZ2VZIix7bWluWTowLG1heFk6MjU1fSk7aWYoYUQudmFsKCJhaGV4Iik9PW51bGwpe2JyZWFrfUQudmFsKCJ4eSIse3g6YUQudmFsKCJiIikseToyNTUtYUQudmFsKCJnIil9LEQpO1UudmFsKCJ5IiwyNTUtYUQudmFsKCJyIiksVSk7YnJlYWs7Y2FzZSJnIjphQz0tMTU2MDthej0tMTgyMDtELnJhbmdlKCJhbGwiLHttaW5YOjAsbWF4WDoyNTUsbWluWTowLG1heFk6MjU1fSk7VS5yYW5nZSgicmFuZ2VZIix7bWluWTowLG1heFk6MjU1fSk7aWYoYUQudmFsKCJhaGV4Iik9PW51bGwpe2JyZWFrfUQudmFsKCJ4eSIse3g6YUQudmFsKCJiIikseToyNTUtYUQudmFsKCJyIil9LEQpO1UudmFsKCJ5IiwyNTUtYUQudmFsKCJnIiksVSk7YnJlYWs7Y2FzZSJiIjphQz0tMjA4MDthej0tMjg2MDtELnJhbmdlKCJhbGwiLHttaW5YOjAsbWF4WDoyNTUsbWluWTowLG1heFk6MjU1fSk7VS5yYW5nZSgicmFuZ2VZIix7bWluWTowLG1heFk6MjU1fSk7aWYoYUQudmFsKCJhaGV4Iik9PW51bGwpe2JyZWFrfUQudmFsKCJ4eSIse3g6YUQudmFsKCJyIikseToyNTUtYUQudmFsKCJnIil9LEQpO1UudmFsKCJ5IiwyNTUtYUQudmFsKCJiIiksVSk7YnJlYWs7Y2FzZSJhIjpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eS5jYWxsKHcsbCwidHJhbnNwYXJlbnQiKTt4LmNhbGwodyxhdSwtMjYwKTt4LmNhbGwodyxhdCwtNTIwKTt4LmNhbGwodyxQLDI2MCk7eC5jYWxsKHcsTywyNjApO1kuY2FsbCh3LE8sMTAwKTt4LmNhbGwodyxLLDApO1kuY2FsbCh3LEssMTAwKX0sMCk7RC5yYW5nZSgiYWxsIix7bWluWDowLG1heFg6MzYwLG1pblk6MCxtYXhZOjEwMH0pO1UucmFuZ2UoInJhbmdlWSIse21pblk6MCxtYXhZOjI1NX0pO2lmKGFELnZhbCgiYWhleCIpPT1udWxsKXticmVha31ELnZhbCgieHkiLHt4OmFELnZhbCgiaCIpLHk6MTAwLWFELnZhbCgidiIpfSxEKTtVLnZhbCgieSIsMjU1LWFELnZhbCgiYSIpLFUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgKCJJbnZhbGlkIE1vZGUiKTticmVha31zd2l0Y2goYUIpe2Nhc2UiaCI6YnJlYWs7Y2FzZSJzIjpjYXNlInYiOmNhc2UiYSI6c2V0VGltZW91dChmdW5jdGlvbigpe1kuY2FsbCh3LGF1LDEwMCk7WS5jYWxsKHcsUCwxMDApO3guY2FsbCh3LE4sMjYwKTtZLmNhbGwodyxOLDEwMCk7eC5jYWxsKHcsTSwyNjApO1kuY2FsbCh3LE0sMTAwKX0sMCk7YnJlYWs7Y2FzZSJyIjpjYXNlImciOmNhc2UiYiI6c2V0VGltZW91dChmdW5jdGlvbigpe3kuY2FsbCh3LGwsInRyYW5zcGFyZW50Iik7eS5jYWxsKHcscywidHJhbnNwYXJlbnQiKTtZLmNhbGwodyxQLDEwMCk7WS5jYWxsKHcsYXUsMTAwKTt4LmNhbGwodyxhdSxhQyk7eC5jYWxsKHcsYXQsYUMtMjYwKTt4LmNhbGwodyxQLGF6LTc4MCk7eC5jYWxsKHcsTyxhei01MjApO3guY2FsbCh3LE4sYXopO3guY2FsbCh3LE0sYXotMjYwKTt4LmNhbGwodyxLLDI2MCk7WS5jYWxsKHcsSywxMDApfSwwKTticmVha31pZihhRC52YWwoImFoZXgiKT09bnVsbCl7cmV0dXJufWFqLmNhbGwodyxhRCl9LGFqPWZ1bmN0aW9uKGFBLGF6KXtpZihhej09bnVsbHx8KGF6IT1VJiZheiE9RCkpe3YuY2FsbCh3LGFBLGF6KX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YXkuY2FsbCh3LGFBKTthbC5jYWxsKHcsYUEpO1cuY2FsbCh3LGFBKX0sMCl9LHo9ZnVuY3Rpb24oYUEsYXope3ZhciBhQz1HLmFjdGl2ZTtpZihheiE9RCYmYUMudmFsKCk9PW51bGwpe3JldHVybn12YXIgYUI9YUEudmFsKCJhbGwiKTtzd2l0Y2goYXYuY29sb3IubW9kZSl7Y2FzZSJoIjphQy52YWwoInN2Iix7czphQi54LHY6MTAwLWFCLnl9LGF6KTticmVhaztjYXNlInMiOmNhc2UiYSI6YUMudmFsKCJodiIse2g6YUIueCx2OjEwMC1hQi55fSxheik7YnJlYWs7Y2FzZSJ2IjphQy52YWwoImhzIix7aDphQi54LHM6MTAwLWFCLnl9LGF6KTticmVhaztjYXNlInIiOmFDLnZhbCgiZ2IiLHtnOjI1NS1hQi55LGI6YUIueH0sYXopO2JyZWFrO2Nhc2UiZyI6YUMudmFsKCJyYiIse3I6MjU1LWFCLnksYjphQi54fSxheik7YnJlYWs7Y2FzZSJiIjphQy52YWwoInJnIix7cjphQi54LGc6MjU1LWFCLnl9LGF6KTticmVha319LGFjPWZ1bmN0aW9uKGFBLGF6KXt2YXIgYUI9Ry5hY3RpdmU7aWYoYXohPVUmJmFCLnZhbCgpPT1udWxsKXtyZXR1cm59c3dpdGNoKGF2LmNvbG9yLm1vZGUpe2Nhc2UiaCI6YUIudmFsKCJoIix7aDozNjAtYUEudmFsKCJ5Iil9LGF6KTticmVhaztjYXNlInMiOmFCLnZhbCgicyIse3M6MTAwLWFBLnZhbCgieSIpfSxheik7YnJlYWs7Y2FzZSJ2IjphQi52YWwoInYiLHt2OjEwMC1hQS52YWwoInkiKX0sYXopO2JyZWFrO2Nhc2UiciI6YUIudmFsKCJyIix7cjoyNTUtYUEudmFsKCJ5Iil9LGF6KTticmVhaztjYXNlImciOmFCLnZhbCgiZyIse2c6MjU1LWFBLnZhbCgieSIpfSxheik7YnJlYWs7Y2FzZSJiIjphQi52YWwoImIiLHtiOjI1NS1hQS52YWwoInkiKX0sYXopO2JyZWFrO2Nhc2UiYSI6YUIudmFsKCJhIiwyNTUtYUEudmFsKCJ5IiksYXopO2JyZWFrfX0sdj1mdW5jdGlvbihhQyxheil7aWYoYXohPUQpe3N3aXRjaChhdi5jb2xvci5tb2RlKXtjYXNlImgiOnZhciBhSD1hQy52YWwoInN2Iik7RC52YWwoInh5Iix7eDphSCE9bnVsbD9hSC5zOjEwMCx5OjEwMC0oYUghPW51bGw/YUgudjoxMDApfSxheik7YnJlYWs7Y2FzZSJzIjpjYXNlImEiOnZhciBhQj1hQy52YWwoImh2Iik7RC52YWwoInh5Iix7eDphQiYmYUIuaHx8MCx5OjEwMC0oYUIhPW51bGw/YUIudjoxMDApfSxheik7YnJlYWs7Y2FzZSJ2Ijp2YXIgYUU9YUMudmFsKCJocyIpO0QudmFsKCJ4eSIse3g6YUUmJmFFLmh8fDAseToxMDAtKGFFIT1udWxsP2FFLnM6MTAwKX0sYXopO2JyZWFrO2Nhc2UiciI6dmFyIGFBPWFDLnZhbCgiYmciKTtELnZhbCgieHkiLHt4OmFBJiZhQS5ifHwwLHk6MjU1LShhQSYmYUEuZ3x8MCl9LGF6KTticmVhaztjYXNlImciOnZhciBhST1hQy52YWwoImJyIik7RC52YWwoInh5Iix7eDphSSYmYUkuYnx8MCx5OjI1NS0oYUkmJmFJLnJ8fDApfSxheik7YnJlYWs7Y2FzZSJiIjp2YXIgYUc9YUMudmFsKCJyZyIpO0QudmFsKCJ4eSIse3g6YUcmJmFHLnJ8fDAseToyNTUtKGFHJiZhRy5nfHwwKX0sYXopO2JyZWFrfX1pZihheiE9VSl7c3dpdGNoKGF2LmNvbG9yLm1vZGUpe2Nhc2UiaCI6VS52YWwoInkiLDM2MC0oYUMudmFsKCJoIil8fDApLGF6KTticmVhaztjYXNlInMiOnZhciBhSj1hQy52YWwoInMiKTtVLnZhbCgieSIsMTAwLShhSiE9bnVsbD9hSjoxMDApLGF6KTticmVhaztjYXNlInYiOnZhciBhRj1hQy52YWwoInYiKTtVLnZhbCgieSIsMTAwLShhRiE9bnVsbD9hRjoxMDApLGF6KTticmVhaztjYXNlInIiOlUudmFsKCJ5IiwyNTUtKGFDLnZhbCgiciIpfHwwKSxheik7YnJlYWs7Y2FzZSJnIjpVLnZhbCgieSIsMjU1LShhQy52YWwoImciKXx8MCksYXopO2JyZWFrO2Nhc2UiYiI6VS52YWwoInkiLDI1NS0oYUMudmFsKCJiIil8fDApLGF6KTticmVhaztjYXNlImEiOnZhciBhRD1hQy52YWwoImEiKTtVLnZhbCgieSIsMjU1LShhRCE9bnVsbD9hRDoyNTUpLGF6KTticmVha319fSxheT1mdW5jdGlvbihhQSl7dHJ5e3ZhciBhej1hQS52YWwoImFsbCIpO0UuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6YXomJiIjIithei5oZXh8fCJ0cmFuc3BhcmVudCJ9KTtZLmNhbGwodyxFLGF6JiZNYXRoLnByZWNpc2lvbigoYXouYSoxMDApLzI1NSw0KXx8MCl9Y2F0Y2goYUIpe319LGFsPWZ1bmN0aW9uKGFDKXtzd2l0Y2goYXYuY29sb3IubW9kZSl7Y2FzZSJoIjp5LmNhbGwodyxsLG5ldyBmKHtoOmFDLnZhbCgiaCIpfHwwLHM6MTAwLHY6MTAwfSkudmFsKCJoZXgiKSk7YnJlYWs7Y2FzZSJzIjpjYXNlImEiOnZhciBhQj1hQy52YWwoInMiKTtZLmNhbGwodyxhdCwxMDAtKGFCIT1udWxsP2FCOjEwMCkpO2JyZWFrO2Nhc2UidiI6dmFyIGFBPWFDLnZhbCgidiIpO1kuY2FsbCh3LGF1LGFBIT1udWxsP2FBOjEwMCk7YnJlYWs7Y2FzZSJyIjpZLmNhbGwodyxhdCxNYXRoLnByZWNpc2lvbigoYUMudmFsKCJyIil8fDApLzI1NSoxMDAsNCkpO2JyZWFrO2Nhc2UiZyI6WS5jYWxsKHcsYXQsTWF0aC5wcmVjaXNpb24oKGFDLnZhbCgiZyIpfHwwKS8yNTUqMTAwLDQpKTticmVhaztjYXNlImIiOlkuY2FsbCh3LGF0LE1hdGgucHJlY2lzaW9uKChhQy52YWwoImIiKXx8MCkvMjU1KjEwMCkpO2JyZWFrfXZhciBhej1hQy52YWwoImEiKTtZLmNhbGwodyxhcixNYXRoLnByZWNpc2lvbigoKDI1NS0oYXp8fDApKSoxMDApLzI1NSw0KSl9LFc9ZnVuY3Rpb24oYUYpe3N3aXRjaChhdi5jb2xvci5tb2RlKXtjYXNlImgiOnZhciBhSD1hRi52YWwoImEiKTtZLmNhbGwodyxMLE1hdGgucHJlY2lzaW9uKCgoMjU1LShhSHx8MCkpKjEwMCkvMjU1LDQpKTticmVhaztjYXNlInMiOnZhciBhQT1hRi52YWwoImh2YSIpLGFCPW5ldyBmKHtoOmFBJiZhQS5ofHwwLHM6MTAwLHY6YUEhPW51bGw/YUEudjoxMDB9KTt5LmNhbGwodyxzLGFCLnZhbCgiaGV4IikpO1kuY2FsbCh3LE8sMTAwLShhQSE9bnVsbD9hQS52OjEwMCkpO1kuY2FsbCh3LEwsTWF0aC5wcmVjaXNpb24oKCgyNTUtKGFBJiZhQS5hfHwwKSkqMTAwKS8yNTUsNCkpO2JyZWFrO2Nhc2UidiI6dmFyIGFDPWFGLnZhbCgiaHNhIiksYUU9bmV3IGYoe2g6YUMmJmFDLmh8fDAsczphQyE9bnVsbD9hQy5zOjEwMCx2OjEwMH0pO3kuY2FsbCh3LHMsYUUudmFsKCJoZXgiKSk7WS5jYWxsKHcsTCxNYXRoLnByZWNpc2lvbigoKDI1NS0oYUMmJmFDLmF8fDApKSoxMDApLzI1NSw0KSk7YnJlYWs7Y2FzZSJyIjpjYXNlImciOmNhc2UiYiI6dmFyIGFEPTAsYUc9MCxhej1hRi52YWwoInJnYmEiKTtpZihhdi5jb2xvci5tb2RlPT0iciIpe2FEPWF6JiZhei5ifHwwO2FHPWF6JiZhei5nfHwwfWVsc2V7aWYoYXYuY29sb3IubW9kZT09ImciKXthRD1heiYmYXouYnx8MDthRz1heiYmYXoucnx8MH1lbHNle2lmKGF2LmNvbG9yLm1vZGU9PSJiIil7YUQ9YXomJmF6LnJ8fDA7YUc9YXomJmF6Lmd8fDB9fX12YXIgYUk9YUc+YUQ/YUQ6YUc7WS5jYWxsKHcsTyxhRD5hRz9NYXRoLnByZWNpc2lvbigoKGFELWFHKS8oMjU1LWFHKSkqMTAwLDQpOjApO1kuY2FsbCh3LE4sYUc+YUQ/TWF0aC5wcmVjaXNpb24oKChhRy1hRCkvKDI1NS1hRCkpKjEwMCw0KTowKTtZLmNhbGwodyxNLE1hdGgucHJlY2lzaW9uKChhSS8yNTUpKjEwMCw0KSk7WS5jYWxsKHcsTCxNYXRoLnByZWNpc2lvbigoKDI1NS0oYXomJmF6LmF8fDApKSoxMDApLzI1NSw0KSk7YnJlYWs7Y2FzZSJhIjp2YXIgYUg9YUYudmFsKCJhIik7eS5jYWxsKHcscyxhRi52YWwoImhleCIpfHwiMDAwMDAwIik7WS5jYWxsKHcsTCxhSCE9bnVsbD8wOjEwMCk7WS5jYWxsKHcsSyxhSCE9bnVsbD8xMDA6MCk7YnJlYWt9fSx5PWZ1bmN0aW9uKGF6LGFBKXthei5jc3Moe2JhY2tncm91bmRDb2xvcjphQSYmYUEubGVuZ3RoPT02JiYiIyIrYUF8fCJ0cmFuc3BhcmVudCJ9KX0sdD1mdW5jdGlvbihheixhQSl7aWYoUSYmKGFBLmluZGV4T2YoIkFscGhhQmFyLnBuZyIpIT0tMXx8YUEuaW5kZXhPZigiQmFycy5wbmciKSE9LTF8fGFBLmluZGV4T2YoIk1hcHMucG5nIikhPS0xKSl7YXouYXR0cigicG5nU3JjIixhQSk7YXouY3NzKHtiYWNrZ3JvdW5kSW1hZ2U6Im5vbmUiLGZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoc3JjPSciK2FBKyInLCBzaXppbmdNZXRob2Q9J3NjYWxlJykifSl9ZWxzZXthei5jc3Moe2JhY2tncm91bmRJbWFnZToidXJsKCciK2FBKyInKSJ9KX19LHg9ZnVuY3Rpb24oYXosYUEpe2F6LmNzcyh7dG9wOmFBKyJweCJ9KX0sWT1mdW5jdGlvbihhQSxheil7YUEuY3NzKHt2aXNpYmlsaXR5OmF6PjA/InZpc2libGUiOiJoaWRkZW4ifSk7aWYoYXo+MCYmYXo8MTAwKXtpZihRKXt2YXIgYUI9YUEuYXR0cigicG5nU3JjIik7aWYoYUIhPW51bGwmJihhQi5pbmRleE9mKCJBbHBoYUJhci5wbmciKSE9LTF8fGFCLmluZGV4T2YoIkJhcnMucG5nIikhPS0xfHxhQi5pbmRleE9mKCJNYXBzLnBuZyIpIT0tMSkpe2FBLmNzcyh7ZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihzcmM9JyIrYUIrIicsIHNpemluZ01ldGhvZD0nc2NhbGUnKSBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0iK2F6KyIpIn0pfWVsc2V7YUEuY3NzKHtvcGFjaXR5Ok1hdGgucHJlY2lzaW9uKGF6LzEwMCw0KX0pfX1lbHNle2FBLmNzcyh7b3BhY2l0eTpNYXRoLnByZWNpc2lvbihhei8xMDAsNCl9KX19ZWxzZXtpZihhej09MHx8YXo9PTEwMCl7aWYoUSl7dmFyIGFCPWFBLmF0dHIoInBuZ1NyYyIpO2lmKGFCIT1udWxsJiYoYUIuaW5kZXhPZigiQWxwaGFCYXIucG5nIikhPS0xfHxhQi5pbmRleE9mKCJCYXJzLnBuZyIpIT0tMXx8YUIuaW5kZXhPZigiTWFwcy5wbmciKSE9LTEpKXthQS5jc3Moe2ZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoc3JjPSciK2FCKyInLCBzaXppbmdNZXRob2Q9J3NjYWxlJykifSl9ZWxzZXthQS5jc3Moe29wYWNpdHk6IiJ9KX19ZWxzZXthQS5jc3Moe29wYWNpdHk6IiJ9KX19fX0sQj1mdW5jdGlvbigpe0cuYWN0aXZlLnZhbCgiYWhleCIsRy5jdXJyZW50LnZhbCgiYWhleCIpKX0sVD1mdW5jdGlvbigpe0cuY3VycmVudC52YWwoImFoZXgiLEcuYWN0aXZlLnZhbCgiYWhleCIpKX0sQT1mdW5jdGlvbihheil7ZSh0aGlzKS5wYXJlbnRzKCJ0Ym9keTpmaXJzdCIpLmZpbmQoJ2lucHV0OnJhZGlvW3ZhbHVlIT0iJythei50YXJnZXQudmFsdWUrJyJdJykucmVtb3ZlQXR0cigiY2hlY2tlZCIpO2FnLmNhbGwodyxhei50YXJnZXQudmFsdWUpfSxaPWZ1bmN0aW9uKCl7Qi5jYWxsKHcpfSxxPWZ1bmN0aW9uKCl7Qi5jYWxsKHcpO2F2LndpbmRvdy5leHBhbmRhYmxlJiZhby5jYWxsKHcpO2UuaXNGdW5jdGlvbihheCkmJmF4LmNhbGwodyxHLmFjdGl2ZSxYKX0sbT1mdW5jdGlvbigpe1QuY2FsbCh3KTthdi53aW5kb3cuZXhwYW5kYWJsZSYmYW8uY2FsbCh3KTtlLmlzRnVuY3Rpb24oYWUpJiZhZS5jYWxsKHcsRy5hY3RpdmUsYWgpfSxhZj1mdW5jdGlvbigpe1YuY2FsbCh3KX0sYXA9ZnVuY3Rpb24oYUIsYXope3ZhciBhQT1hQi52YWwoImhleCIpO2FuLmNzcyh7YmFja2dyb3VuZENvbG9yOmFBJiYiIyIrYUF8fCJ0cmFuc3BhcmVudCJ9KTtZLmNhbGwodyxhbixNYXRoLnByZWNpc2lvbigoKGFCLnZhbCgiYSIpfHwwKSoxMDApLzI1NSw0KSl9LEg9ZnVuY3Rpb24oYUMsYXope3ZhciBhQj1hQy52YWwoImhleCIpO3ZhciBhQT1hQy52YWwoInZhIik7YXEuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6YUImJiIjIithQnx8InRyYW5zcGFyZW50In0pO1kuY2FsbCh3LHIsTWF0aC5wcmVjaXNpb24oKCgyNTUtKGFBJiZhQS5hfHwwKSkqMTAwKS8yNTUsNCkpO2lmKGF2LndpbmRvdy5iaW5kVG9JbnB1dCYmYXYud2luZG93LnVwZGF0ZUlucHV0Q29sb3Ipe2F2LndpbmRvdy5pbnB1dC5jc3Moe2JhY2tncm91bmRDb2xvcjphQiYmIiMiK2FCfHwidHJhbnNwYXJlbnQiLGNvbG9yOmFBPT1udWxsfHxhQS52Pjc1PyIjMDAwMDAwIjoiI2ZmZmZmZiJ9KX19LFM9ZnVuY3Rpb24oYUIpe3ZhciBhej1hdi53aW5kb3cuZWxlbWVudCxhQT1hdi53aW5kb3cucGFnZTtKPXBhcnNlSW50KFIuY3NzKCJsZWZ0IikpO0k9cGFyc2VJbnQoUi5jc3MoInRvcCIpKTthbT1hQi5wYWdlWDthaT1hQi5wYWdlWTtlKGRvY3VtZW50KS5iaW5kKCJtb3VzZW1vdmUiLGspLmJpbmQoIm1vdXNldXAiLHApO2FCLnByZXZlbnREZWZhdWx0KCl9LGs9ZnVuY3Rpb24oYXope1IuY3NzKHtsZWZ0OkotKGFtLWF6LnBhZ2VYKSsicHgiLHRvcDpJLShhaS1hei5wYWdlWSkrInB4In0pO2lmKGF2LndpbmRvdy5leHBhbmRhYmxlJiYhZS5zdXBwb3J0LmJveE1vZGVsKXtSLnByZXYoKS5jc3Moe2xlZnQ6Ui5jc3MoImxlZnQiKSx0b3A6Ui5jc3MoInRvcCIpfSl9YXouc3RvcFByb3BhZ2F0aW9uKCk7YXoucHJldmVudERlZmF1bHQoKTtyZXR1cm4gZmFsc2V9LHA9ZnVuY3Rpb24oYXope2UoZG9jdW1lbnQpLnVuYmluZCgibW91c2Vtb3ZlIixrKS51bmJpbmQoIm1vdXNldXAiLHApO2F6LnN0b3BQcm9wYWdhdGlvbigpO2F6LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIGZhbHNlfSxGPWZ1bmN0aW9uKGF6KXthei5wcmV2ZW50RGVmYXVsdCgpO2F6LnN0b3BQcm9wYWdhdGlvbigpO0cuYWN0aXZlLnZhbCgiYWhleCIsZSh0aGlzKS5hdHRyKCJ0aXRsZSIpfHxudWxsLGF6LnRhcmdldCk7cmV0dXJuIGZhbHNlfSxhZT1lLmlzRnVuY3Rpb24oaFsxXSkmJmhbMV18fG51bGwsYWQ9ZS5pc0Z1bmN0aW9uKGhbMl0pJiZoWzJdfHxudWxsLGF4PWUuaXNGdW5jdGlvbihoWzNdKSYmaFszXXx8bnVsbCxWPWZ1bmN0aW9uKCl7Ry5jdXJyZW50LnZhbCgiYWhleCIsRy5hY3RpdmUudmFsKCJhaGV4IikpO3ZhciBhej1mdW5jdGlvbigpe2lmKCFhdi53aW5kb3cuZXhwYW5kYWJsZXx8ZS5zdXBwb3J0LmJveE1vZGVsKXtyZXR1cm59dmFyIGFBPVIuZmluZCgidGFibGU6Zmlyc3QiKTtSLmJlZm9yZSgiPGlmcmFtZS8+Iik7Ui5wcmV2KCkuY3NzKHt3aWR0aDphQS53aWR0aCgpLGhlaWdodDpSLmhlaWdodCgpLG9wYWNpdHk6MCxwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6Ui5jc3MoImxlZnQiKSx0b3A6Ui5jc3MoInRvcCIpfSl9O2lmKGF2LndpbmRvdy5leHBhbmRhYmxlKXtlKGRvY3VtZW50LmJvZHkpLmNoaWxkcmVuKCJkaXYualBpY2tlci5Db250YWluZXIiKS5jc3Moe3pJbmRleDoxMH0pO1IuY3NzKHt6SW5kZXg6MjB9KX1zd2l0Y2goYXYud2luZG93LmVmZmVjdHMudHlwZSl7Y2FzZSJmYWRlIjpSLmZhZGVJbihhdi53aW5kb3cuZWZmZWN0cy5zcGVlZC5zaG93LGF6KTticmVhaztjYXNlInNsaWRlIjpSLnNsaWRlRG93bihhdi53aW5kb3cuZWZmZWN0cy5zcGVlZC5zaG93LGF6KTticmVhaztjYXNlInNob3ciOmRlZmF1bHQ6Ui5zaG93KGF2LndpbmRvdy5lZmZlY3RzLnNwZWVkLnNob3csYXopO2JyZWFrfX0sYW89ZnVuY3Rpb24oKXt2YXIgYXo9ZnVuY3Rpb24oKXtpZihhdi53aW5kb3cuZXhwYW5kYWJsZSl7Ui5jc3Moe3pJbmRleDoxMH0pfWlmKCFhdi53aW5kb3cuZXhwYW5kYWJsZXx8ZS5zdXBwb3J0LmJveE1vZGVsKXtyZXR1cm59Ui5wcmV2KCkucmVtb3ZlKCl9O3N3aXRjaChhdi53aW5kb3cuZWZmZWN0cy50eXBlKXtjYXNlImZhZGUiOlIuZmFkZU91dChhdi53aW5kb3cuZWZmZWN0cy5zcGVlZC5oaWRlLGF6KTticmVhaztjYXNlInNsaWRlIjpSLnNsaWRlVXAoYXYud2luZG93LmVmZmVjdHMuc3BlZWQuaGlkZSxheik7YnJlYWs7Y2FzZSJzaG93IjpkZWZhdWx0OlIuaGlkZShhdi53aW5kb3cuZWZmZWN0cy5zcGVlZC5oaWRlLGF6KTticmVha319LG89ZnVuY3Rpb24oKXt2YXIgYUc9YXYud2luZG93LGF6PWFHLmV4cGFuZGFibGU/ZSh3KS5uZXh0KCkuZmluZCgiLkNvbnRhaW5lcjpmaXJzdCIpOm51bGw7Uj1hRy5leHBhbmRhYmxlP2UoIjxkaXYvPiIpOmUodyk7Ui5hZGRDbGFzcygialBpY2tlciBDb250YWluZXIiKTtpZihhRy5leHBhbmRhYmxlKXtSLmhpZGUoKX1SLmdldCgwKS5vbnNlbGVjdHN0YXJ0PWZ1bmN0aW9uKGFOKXtpZihhTi50YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJpbnB1dCIpe3JldHVybiBmYWxzZX19O3ZhciBhSj1HLmFjdGl2ZS52YWwoImFsbCIpO2lmKGFHLmFscGhhUHJlY2lzaW9uPDApe2FHLmFscGhhUHJlY2lzaW9uPTB9ZWxzZXtpZihhRy5hbHBoYVByZWNpc2lvbj4yKXthRy5hbHBoYVByZWNpc2lvbj0yfX12YXIgYUs9Jzx0YWJsZSBjbGFzcz0ialBpY2tlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dGJvZHk+JysoYUcuZXhwYW5kYWJsZT8nPHRyPjx0ZCBjbGFzcz0iTW92ZSIgY29sc3Bhbj0iNSI+Jm5ic3A7PC90ZD48L3RyPic6IiIpKyc8dHI+PHRkIHJvd3NwYW49IjkiPjxoMiBjbGFzcz0iVGl0bGUiPicrKGFHLnRpdGxlfHxhYS50ZXh0LnRpdGxlKSsnPC9oMj48ZGl2IGNsYXNzPSJNYXAiPjxzcGFuIGNsYXNzPSJNYXAxIj4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9Ik1hcDIiPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0iTWFwMyI+Jm5ic3A7PC9zcGFuPjxpbWcgc3JjPSInK24uY2xpZW50UGF0aCtuLmNvbG9yTWFwLmFycm93LmZpbGUrJyIgY2xhc3M9IkFycm93Ii8+PC9kaXY+PC90ZD48dGQgcm93c3Bhbj0iOSI+PGRpdiBjbGFzcz0iQmFyIj48c3BhbiBjbGFzcz0iTWFwMSI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJNYXAyIj4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9Ik1hcDMiPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0iTWFwNCI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJNYXA1Ij4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9Ik1hcDYiPiZuYnNwOzwvc3Bhbj48aW1nIHNyYz0iJytuLmNsaWVudFBhdGgrbi5jb2xvckJhci5hcnJvdy5maWxlKyciIGNsYXNzPSJBcnJvdyIvPjwvZGl2PjwvdGQ+PHRkIGNvbHNwYW49IjIiIGNsYXNzPSJQcmV2aWV3Ij4nK2FhLnRleHQubmV3Q29sb3IrJzxkaXY+PHNwYW4gY2xhc3M9IkFjdGl2ZSIgdGl0bGU9IicrYWEudG9vbHRpcHMuY29sb3JzLm5ld0NvbG9yKyciPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0iQ3VycmVudCIgdGl0bGU9IicrYWEudG9vbHRpcHMuY29sb3JzLmN1cnJlbnRDb2xvcisnIj4mbmJzcDs8L3NwYW4+PC9kaXY+JythYS50ZXh0LmN1cnJlbnRDb2xvcisnPC90ZD48dGQgcm93c3Bhbj0iOSIgY2xhc3M9IkJ1dHRvbiI+PGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9Ik9rIiB2YWx1ZT0iJythYS50ZXh0Lm9rKyciIHRpdGxlPSInK2FhLnRvb2x0aXBzLmJ1dHRvbnMub2srJyIvPjxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSJDYW5jZWwiIHZhbHVlPSInK2FhLnRleHQuY2FuY2VsKyciIHRpdGxlPSInK2FhLnRvb2x0aXBzLmJ1dHRvbnMuY2FuY2VsKyciLz48aHIvPjxkaXYgY2xhc3M9IkdyaWQiPiZuYnNwOzwvZGl2PjwvdGQ+PC90cj48dHIgY2xhc3M9Ikh1ZSI+PHRkIGNsYXNzPSJSYWRpbyI+PGxhYmVsIHRpdGxlPSInK2FhLnRvb2x0aXBzLmh1ZS5yYWRpbysnIj48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJoIicrKGF2LmNvbG9yLm1vZGU9PSJoIj8nIGNoZWNrZWQ9ImNoZWNrZWQiJzoiIikrJy8+SDo8L2xhYmVsPjwvdGQ+PHRkIGNsYXNzPSJUZXh0Ij48aW5wdXQgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIzIiB2YWx1ZT0iJysoYUohPW51bGw/YUouaDoiIikrJyIgdGl0bGU9IicrYWEudG9vbHRpcHMuaHVlLnRleHRib3grJyIvPiZuYnNwOyZkZWc7PC90ZD48L3RyPjx0ciBjbGFzcz0iU2F0dXJhdGlvbiI+PHRkIGNsYXNzPSJSYWRpbyI+PGxhYmVsIHRpdGxlPSInK2FhLnRvb2x0aXBzLnNhdHVyYXRpb24ucmFkaW8rJyI+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0icyInKyhhdi5jb2xvci5tb2RlPT0icyI/JyBjaGVja2VkPSJjaGVja2VkIic6IiIpKycvPlM6PC9sYWJlbD48L3RkPjx0ZCBjbGFzcz0iVGV4dCI+PGlucHV0IHR5cGU9InRleHQiIG1heGxlbmd0aD0iMyIgdmFsdWU9IicrKGFKIT1udWxsP2FKLnM6IiIpKyciIHRpdGxlPSInK2FhLnRvb2x0aXBzLnNhdHVyYXRpb24udGV4dGJveCsnIi8+Jm5ic3A7JTwvdGQ+PC90cj48dHIgY2xhc3M9IlZhbHVlIj48dGQgY2xhc3M9IlJhZGlvIj48bGFiZWwgdGl0bGU9IicrYWEudG9vbHRpcHMudmFsdWUucmFkaW8rJyI+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0idiInKyhhdi5jb2xvci5tb2RlPT0idiI/JyBjaGVja2VkPSJjaGVja2VkIic6IiIpKycvPlY6PC9sYWJlbD48YnIvPjxici8+PC90ZD48dGQgY2xhc3M9IlRleHQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjMiIHZhbHVlPSInKyhhSiE9bnVsbD9hSi52OiIiKSsnIiB0aXRsZT0iJythYS50b29sdGlwcy52YWx1ZS50ZXh0Ym94KyciLz4mbmJzcDslPGJyLz48YnIvPjwvdGQ+PC90cj48dHIgY2xhc3M9IlJlZCI+PHRkIGNsYXNzPSJSYWRpbyI+PGxhYmVsIHRpdGxlPSInK2FhLnRvb2x0aXBzLnJlZC5yYWRpbysnIj48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJyIicrKGF2LmNvbG9yLm1vZGU9PSJyIj8nIGNoZWNrZWQ9ImNoZWNrZWQiJzoiIikrJy8+Ujo8L2xhYmVsPjwvdGQ+PHRkIGNsYXNzPSJUZXh0Ij48aW5wdXQgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIzIiB2YWx1ZT0iJysoYUohPW51bGw/YUoucjoiIikrJyIgdGl0bGU9IicrYWEudG9vbHRpcHMucmVkLnRleHRib3grJyIvPjwvdGQ+PC90cj48dHIgY2xhc3M9IkdyZWVuIj48dGQgY2xhc3M9IlJhZGlvIj48bGFiZWwgdGl0bGU9IicrYWEudG9vbHRpcHMuZ3JlZW4ucmFkaW8rJyI+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iZyInKyhhdi5jb2xvci5tb2RlPT0iZyI/JyBjaGVja2VkPSJjaGVja2VkIic6IiIpKycvPkc6PC9sYWJlbD48L3RkPjx0ZCBjbGFzcz0iVGV4dCI+PGlucHV0IHR5cGU9InRleHQiIG1heGxlbmd0aD0iMyIgdmFsdWU9IicrKGFKIT1udWxsP2FKLmc6IiIpKyciIHRpdGxlPSInK2FhLnRvb2x0aXBzLmdyZWVuLnRleHRib3grJyIvPjwvdGQ+PC90cj48dHIgY2xhc3M9IkJsdWUiPjx0ZCBjbGFzcz0iUmFkaW8iPjxsYWJlbCB0aXRsZT0iJythYS50b29sdGlwcy5ibHVlLnJhZGlvKyciPjxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9ImIiJysoYXYuY29sb3IubW9kZT09ImIiPycgY2hlY2tlZD0iY2hlY2tlZCInOiIiKSsnLz5COjwvbGFiZWw+PC90ZD48dGQgY2xhc3M9IlRleHQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjMiIHZhbHVlPSInKyhhSiE9bnVsbD9hSi5iOiIiKSsnIiB0aXRsZT0iJythYS50b29sdGlwcy5ibHVlLnRleHRib3grJyIvPjwvdGQ+PC90cj48dHIgY2xhc3M9IkFscGhhIj48dGQgY2xhc3M9IlJhZGlvIj4nKyhhRy5hbHBoYVN1cHBvcnQ/JzxsYWJlbCB0aXRsZT0iJythYS50b29sdGlwcy5hbHBoYS5yYWRpbysnIj48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJhIicrKGF2LmNvbG9yLm1vZGU9PSJhIj8nIGNoZWNrZWQ9ImNoZWNrZWQiJzoiIikrIi8+QTo8L2xhYmVsPiI6IiZuYnNwOyIpKyc8L3RkPjx0ZCBjbGFzcz0iVGV4dCI+JysoYUcuYWxwaGFTdXBwb3J0Pyc8aW5wdXQgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSInKygzK2FHLmFscGhhUHJlY2lzaW9uKSsnIiB2YWx1ZT0iJysoYUohPW51bGw/TWF0aC5wcmVjaXNpb24oKGFKLmEqMTAwKS8yNTUsYUcuYWxwaGFQcmVjaXNpb24pOiIiKSsnIiB0aXRsZT0iJythYS50b29sdGlwcy5hbHBoYS50ZXh0Ym94KyciLz4mbmJzcDslJzoiJm5ic3A7IikrJzwvdGQ+PC90cj48dHIgY2xhc3M9IkhleCI+PHRkIGNvbHNwYW49IjIiIGNsYXNzPSJUZXh0Ij48bGFiZWwgdGl0bGU9IicrYWEudG9vbHRpcHMuaGV4LnRleHRib3grJyI+Izo8aW5wdXQgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSI2IiBjbGFzcz0iSGV4IiB2YWx1ZT0iJysoYUohPW51bGw/YUouaGV4OiIiKSsnIi8+PC9sYWJlbD4nKyhhRy5hbHBoYVN1cHBvcnQ/JzxpbnB1dCB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjIiIGNsYXNzPSJBSGV4IiB2YWx1ZT0iJysoYUohPW51bGw/YUouYWhleC5zdWJzdHJpbmcoNik6IiIpKyciIHRpdGxlPSInK2FhLnRvb2x0aXBzLmhleC5hbHBoYSsnIi8+PC90ZD4nOiImbmJzcDsiKSsiPC90cj48L3Rib2R5PjwvdGFibGU+IjtpZihhRy5leHBhbmRhYmxlKXtSLmh0bWwoYUspO2lmKGUoZG9jdW1lbnQuYm9keSkuY2hpbGRyZW4oImRpdi5qUGlja2VyLkNvbnRhaW5lciIpLmxlbmd0aD09MCl7ZShkb2N1bWVudC5ib2R5KS5wcmVwZW5kKFIpfWVsc2V7ZShkb2N1bWVudC5ib2R5KS5jaGlsZHJlbigiZGl2LmpQaWNrZXIuQ29udGFpbmVyOmxhc3QiKS5hZnRlcihSKX1SLm1vdXNlZG93bihmdW5jdGlvbigpe2UoZG9jdW1lbnQuYm9keSkuY2hpbGRyZW4oImRpdi5qUGlja2VyLkNvbnRhaW5lciIpLmNzcyh7ekluZGV4OjEwfSk7Ui5jc3Moe3pJbmRleDoyMH0pfSk7Ui5jc3Moe2xlZnQ6YUcucG9zaXRpb24ueD09ImxlZnQiPyhhei5vZmZzZXQoKS5sZWZ0LTUzMC0oYUcucG9zaXRpb24ueT09ImNlbnRlciI/MjU6MCkpKyJweCI6YUcucG9zaXRpb24ueD09ImNlbnRlciI/KGF6Lm9mZnNldCgpLmxlZnQtMjYwKSsicHgiOmFHLnBvc2l0aW9uLng9PSJyaWdodCI/KGF6Lm9mZnNldCgpLmxlZnQtMTArKGFHLnBvc2l0aW9uLnk9PSJjZW50ZXIiPzI1OjApKSsicHgiOmFHLnBvc2l0aW9uLng9PSJzY3JlZW5DZW50ZXIiPygoZShkb2N1bWVudCkud2lkdGgoKT4+MSktMjYwKSsicHgiOihhei5vZmZzZXQoKS5sZWZ0K3BhcnNlSW50KGFHLnBvc2l0aW9uLngpKSsicHgiLHBvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOmFHLnBvc2l0aW9uLnk9PSJ0b3AiPyhhei5vZmZzZXQoKS50b3AtMzEyKSsicHgiOmFHLnBvc2l0aW9uLnk9PSJjZW50ZXIiPyhhei5vZmZzZXQoKS50b3AtMTU2KSsicHgiOmFHLnBvc2l0aW9uLnk9PSJib3R0b20iPyhhei5vZmZzZXQoKS50b3ArMjUpKyJweCI6KGF6Lm9mZnNldCgpLnRvcCtwYXJzZUludChhRy5wb3NpdGlvbi55KSkrInB4In0pfWVsc2V7Uj1lKHcpO1IuaHRtbChhSyl9dmFyIGFEPVIuZmluZCgidGJvZHk6Zmlyc3QiKTtsPWFELmZpbmQoImRpdi5NYXA6Zmlyc3QiKTtzPWFELmZpbmQoImRpdi5CYXI6Zmlyc3QiKTt2YXIgYUw9bC5maW5kKCJzcGFuIiksYUk9cy5maW5kKCJzcGFuIik7YXU9YUwuZmlsdGVyKCIuTWFwMTpmaXJzdCIpO2F0PWFMLmZpbHRlcigiLk1hcDI6Zmlyc3QiKTthcj1hTC5maWx0ZXIoIi5NYXAzOmZpcnN0Iik7UD1hSS5maWx0ZXIoIi5NYXAxOmZpcnN0Iik7Tz1hSS5maWx0ZXIoIi5NYXAyOmZpcnN0Iik7Tj1hSS5maWx0ZXIoIi5NYXAzOmZpcnN0Iik7TT1hSS5maWx0ZXIoIi5NYXA0OmZpcnN0Iik7TD1hSS5maWx0ZXIoIi5NYXA1OmZpcnN0Iik7Sz1hSS5maWx0ZXIoIi5NYXA2OmZpcnN0Iik7RD1uZXcgZChsLHttYXA6e3dpZHRoOm4uY29sb3JNYXAud2lkdGgsaGVpZ2h0Om4uY29sb3JNYXAuaGVpZ2h0fSxhcnJvdzp7aW1hZ2U6bi5jbGllbnRQYXRoK24uY29sb3JNYXAuYXJyb3cuZmlsZSx3aWR0aDpuLmNvbG9yTWFwLmFycm93LndpZHRoLGhlaWdodDpuLmNvbG9yTWFwLmFycm93LmhlaWdodH19KTtELmJpbmQoeik7VT1uZXcgZChzLHttYXA6e3dpZHRoOm4uY29sb3JCYXIud2lkdGgsaGVpZ2h0Om4uY29sb3JCYXIuaGVpZ2h0fSxhcnJvdzp7aW1hZ2U6bi5jbGllbnRQYXRoK24uY29sb3JCYXIuYXJyb3cuZmlsZSx3aWR0aDpuLmNvbG9yQmFyLmFycm93LndpZHRoLGhlaWdodDpuLmNvbG9yQmFyLmFycm93LmhlaWdodH19KTtVLmJpbmQoYWMpO2F3PW5ldyBiKGFELEcuYWN0aXZlLGFHLmV4cGFuZGFibGUmJmFHLmJpbmRUb0lucHV0P2FHLmlucHV0Om51bGwsYUcuYWxwaGFQcmVjaXNpb24pO3ZhciBhQj1hSiE9bnVsbD9hSi5oZXg6bnVsbCxhSD1hRC5maW5kKCIuUHJldmlldyIpLGFGPWFELmZpbmQoIi5CdXR0b24iKTtFPWFILmZpbmQoIi5BY3RpdmU6Zmlyc3QiKS5jc3Moe2JhY2tncm91bmRDb2xvcjphQiYmIiMiK2FCfHwidHJhbnNwYXJlbnQifSk7YW49YUguZmluZCgiLkN1cnJlbnQ6Zmlyc3QiKS5jc3Moe2JhY2tncm91bmRDb2xvcjphQiYmIiMiK2FCfHwidHJhbnNwYXJlbnQifSkuYmluZCgiY2xpY2siLFopO1kuY2FsbCh3LGFuLE1hdGgucHJlY2lzaW9uKEcuY3VycmVudC52YWwoImEiKSoxMDApLzI1NSw0KTthaD1hRi5maW5kKCIuT2s6Zmlyc3QiKS5iaW5kKCJjbGljayIsbSk7WD1hRi5maW5kKCIuQ2FuY2VsOmZpcnN0IikuYmluZCgiY2xpY2siLHEpO2FiPWFGLmZpbmQoIi5HcmlkOmZpcnN0Iik7c2V0VGltZW91dChmdW5jdGlvbigpe3QuY2FsbCh3LGF1LG4uY2xpZW50UGF0aCsiTWFwcy5wbmciKTt0LmNhbGwodyxhdCxuLmNsaWVudFBhdGgrIk1hcHMucG5nIik7dC5jYWxsKHcsYXIsbi5jbGllbnRQYXRoKyJtYXAtb3BhY2l0eS5wbmciKTt0LmNhbGwodyxQLG4uY2xpZW50UGF0aCsiQmFycy5wbmciKTt0LmNhbGwodyxPLG4uY2xpZW50UGF0aCsiQmFycy5wbmciKTt0LmNhbGwodyxOLG4uY2xpZW50UGF0aCsiQmFycy5wbmciKTt0LmNhbGwodyxNLG4uY2xpZW50UGF0aCsiQmFycy5wbmciKTt0LmNhbGwodyxMLG4uY2xpZW50UGF0aCsiYmFyLW9wYWNpdHkucG5nIik7dC5jYWxsKHcsSyxuLmNsaWVudFBhdGgrIkFscGhhQmFyLnBuZyIpO3QuY2FsbCh3LGFILmZpbmQoImRpdjpmaXJzdCIpLG4uY2xpZW50UGF0aCsicHJldmlldy1vcGFjaXR5LnBuZyIpfSwwKTthRC5maW5kKCJ0ZC5SYWRpbyBpbnB1dCIpLmJpbmQoImNsaWNrIixBKTtpZihHLnF1aWNrTGlzdCYmRy5xdWlja0xpc3QubGVuZ3RoPjApe3ZhciBhRT0iIjtmb3IoaT0wO2k8Ry5xdWlja0xpc3QubGVuZ3RoO2krKyl7aWYoKHR5cGVvZihHLnF1aWNrTGlzdFtpXSkpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKT09InN0cmluZyIpe0cucXVpY2tMaXN0W2ldPW5ldyBmKHtoZXg6Ry5xdWlja0xpc3RbaV19KX12YXIgYUM9Ry5xdWlja0xpc3RbaV0udmFsKCJhIik7dmFyIGFNPUcucXVpY2tMaXN0W2ldLnZhbCgiYWhleCIpO2lmKCFhRy5hbHBoYVN1cHBvcnQmJmFNKXthTT1hTS5zdWJzdHJpbmcoMCw2KSsiZmYifXZhciBhQT1HLnF1aWNrTGlzdFtpXS52YWwoImhleCIpO2FFKz0nPHNwYW4gY2xhc3M9IlF1aWNrQ29sb3IiJysoYU0mJicgdGl0bGU9IiMnK2FNKyciJ3x8IiIpKycgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6JysoYUEmJiIjIithQXx8IiIpKyI7IisoYUE/IiI6ImJhY2tncm91bmQtaW1hZ2U6dXJsKCIrbi5jbGllbnRQYXRoKyJOb0NvbG9yLnBuZykiKSsoYUcuYWxwaGFTdXBwb3J0JiZhQyYmYUM8MjU1PyI7b3BhY2l0eToiK01hdGgucHJlY2lzaW9uKGFDLzI1NSw0KSsiO2ZpbHRlcjpBbHBoYShvcGFjaXR5PSIrTWF0aC5wcmVjaXNpb24oYUMvMi41NSw0KSsiKSI6IiIpKyciPiZuYnNwOzwvc3Bhbj4nfXQuY2FsbCh3LGFiLG4uY2xpZW50UGF0aCsiYmFyLW9wYWNpdHkucG5nIik7YWIuaHRtbChhRSk7YWIuZmluZCgiLlF1aWNrQ29sb3IiKS5jbGljayhGKX1hZy5jYWxsKHcsYXYuY29sb3IubW9kZSk7Ry5hY3RpdmUuYmluZChhaik7ZS5pc0Z1bmN0aW9uKGFkKSYmRy5hY3RpdmUuYmluZChhZCk7Ry5jdXJyZW50LmJpbmQoYXApO2lmKGFHLmV4cGFuZGFibGUpe3cuaWNvbj1hei5wYXJlbnRzKCIuSWNvbjpmaXJzdCIpO2FxPXcuaWNvbi5maW5kKCIuQ29sb3I6Zmlyc3QiKS5jc3Moe2JhY2tncm91bmRDb2xvcjphQiYmIiMiK2FCfHwidHJhbnNwYXJlbnQifSk7cj13Lmljb24uZmluZCgiLkFscGhhOmZpcnN0Iik7dC5jYWxsKHcscixuLmNsaWVudFBhdGgrImJhci1vcGFjaXR5LnBuZyIpO1kuY2FsbCh3LHIsTWF0aC5wcmVjaXNpb24oKCgyNTUtKGFKIT1udWxsP2FKLmE6MCkpKjEwMCkvMjU1LDQpKTtDPXcuaWNvbi5maW5kKCIuSW1hZ2U6Zmlyc3QiKS5jc3Moe2JhY2tncm91bmRJbWFnZToidXJsKCciK24uY2xpZW50UGF0aCtuLnBpY2tlci5maWxlKyInKSJ9KS5iaW5kKCJjbGljayIsYWYpO2lmKGFHLmJpbmRUb0lucHV0JiZhRy51cGRhdGVJbnB1dENvbG9yKXthRy5pbnB1dC5jc3Moe2JhY2tncm91bmRDb2xvcjphQiYmIiMiK2FCfHwidHJhbnNwYXJlbnQiLGNvbG9yOmFKPT1udWxsfHxhSi52Pjc1PyIjMDAwMDAwIjoiI2ZmZmZmZiJ9KX11PWFELmZpbmQoIi5Nb3ZlOmZpcnN0IikuYmluZCgibW91c2Vkb3duIixTKTtHLmFjdGl2ZS5iaW5kKEgpfWVsc2V7Vi5jYWxsKHcpfX0sYWs9ZnVuY3Rpb24oKXtSLmZpbmQoInRkLlJhZGlvIGlucHV0IikudW5iaW5kKCJjbGljayIsQSk7YW4udW5iaW5kKCJjbGljayIsWik7WC51bmJpbmQoImNsaWNrIixxKTthaC51bmJpbmQoImNsaWNrIixtKTtpZihhdi53aW5kb3cuZXhwYW5kYWJsZSl7Qy51bmJpbmQoImNsaWNrIixhZik7dS51bmJpbmQoIm1vdXNlZG93biIsUyk7dy5pY29uPW51bGx9Ui5maW5kKCIuUXVpY2tDb2xvciIpLnVuYmluZCgiY2xpY2siLEYpO2w9bnVsbDtzPW51bGw7YXU9bnVsbDthdD1udWxsO2FyPW51bGw7UD1udWxsO089bnVsbDtOPW51bGw7TT1udWxsO0w9bnVsbDtLPW51bGw7RC5kZXN0cm95KCk7RD1udWxsO1UuZGVzdHJveSgpO1U9bnVsbDthdy5kZXN0cm95KCk7YXc9bnVsbDtFPW51bGw7YW49bnVsbDthaD1udWxsO1g9bnVsbDthYj1udWxsO2FlPW51bGw7YXg9bnVsbDthZD1udWxsO1IuaHRtbCgiIik7Zm9yKGk9MDtpPGMubGVuZ3RoO2krKyl7aWYoY1tpXT09dyl7Yy5zcGxpY2UoaSwxKX19fSxuPWF2LmltYWdlcyxhYT1hdi5sb2NhbGl6YXRpb24sRz17YWN0aXZlOih0eXBlb2YoYXYuY29sb3IuYWN0aXZlKSkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpPT0ic3RyaW5nIj9uZXcgZih7YWhleDohYXYud2luZG93LmFscGhhU3VwcG9ydCYmYXYuY29sb3IuYWN0aXZlP2F2LmNvbG9yLmFjdGl2ZS5zdWJzdHJpbmcoMCw2KSsiZmYiOmF2LmNvbG9yLmFjdGl2ZX0pOm5ldyBmKHthaGV4OiFhdi53aW5kb3cuYWxwaGFTdXBwb3J0JiZhdi5jb2xvci5hY3RpdmUudmFsKCJhaGV4Iik/YXYuY29sb3IuYWN0aXZlLnZhbCgiYWhleCIpLnN1YnN0cmluZygwLDYpKyJmZiI6YXYuY29sb3IuYWN0aXZlLnZhbCgiYWhleCIpfSksY3VycmVudDoodHlwZW9mKGF2LmNvbG9yLmFjdGl2ZSkpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKT09InN0cmluZyI/bmV3IGYoe2FoZXg6IWF2LndpbmRvdy5hbHBoYVN1cHBvcnQmJmF2LmNvbG9yLmFjdGl2ZT9hdi5jb2xvci5hY3RpdmUuc3Vic3RyaW5nKDAsNikrImZmIjphdi5jb2xvci5hY3RpdmV9KTpuZXcgZih7YWhleDohYXYud2luZG93LmFscGhhU3VwcG9ydCYmYXYuY29sb3IuYWN0aXZlLnZhbCgiYWhleCIpP2F2LmNvbG9yLmFjdGl2ZS52YWwoImFoZXgiKS5zdWJzdHJpbmcoMCw2KSsiZmYiOmF2LmNvbG9yLmFjdGl2ZS52YWwoImFoZXgiKX0pLHF1aWNrTGlzdDphdi5jb2xvci5xdWlja0xpc3R9O2UuZXh0ZW5kKHRydWUsdyx7Y29tbWl0Q2FsbGJhY2s6YWUsbGl2ZUNhbGxiYWNrOmFkLGNhbmNlbENhbGxiYWNrOmF4LGNvbG9yOkcsc2hvdzpWLGhpZGU6YW8sZGVzdHJveTpha30pO2MucHVzaCh3KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7by5jYWxsKHcpfSwwKX0pfTtlLmZuLmpQaWNrZXIuZGVmYXVsdHM9e3dpbmRvdzp7dGl0bGU6bnVsbCxlZmZlY3RzOnt0eXBlOiJzbGlkZSIsc3BlZWQ6e3Nob3c6InNsb3ciLGhpZGU6ImZhc3QifX0scG9zaXRpb246e3g6InNjcmVlbkNlbnRlciIseToidG9wIn0sZXhwYW5kYWJsZTpmYWxzZSxsaXZlVXBkYXRlOnRydWUsYWxwaGFTdXBwb3J0OmZhbHNlLGFscGhhUHJlY2lzaW9uOjAsdXBkYXRlSW5wdXRDb2xvcjp0cnVlfSxjb2xvcjp7bW9kZToiaCIsYWN0aXZlOm5ldyBmKHthaGV4OiIjZmZjYzAwZmYifSkscXVpY2tMaXN0OltuZXcgZih7aDozNjAsczozMyx2OjEwMH0pLG5ldyBmKHtoOjM2MCxzOjY2LHY6MTAwfSksbmV3IGYoe2g6MzYwLHM6MTAwLHY6MTAwfSksbmV3IGYoe2g6MzYwLHM6MTAwLHY6NzV9KSxuZXcgZih7aDozNjAsczoxMDAsdjo1MH0pLG5ldyBmKHtoOjE4MCxzOjAsdjoxMDB9KSxuZXcgZih7aDozMCxzOjMzLHY6MTAwfSksbmV3IGYoe2g6MzAsczo2Nix2OjEwMH0pLG5ldyBmKHtoOjMwLHM6MTAwLHY6MTAwfSksbmV3IGYoe2g6MzAsczoxMDAsdjo3NX0pLG5ldyBmKHtoOjMwLHM6MTAwLHY6NTB9KSxuZXcgZih7aDoxODAsczowLHY6OTB9KSxuZXcgZih7aDo2MCxzOjMzLHY6MTAwfSksbmV3IGYoe2g6NjAsczo2Nix2OjEwMH0pLG5ldyBmKHtoOjYwLHM6MTAwLHY6MTAwfSksbmV3IGYoe2g6NjAsczoxMDAsdjo3NX0pLG5ldyBmKHtoOjYwLHM6MTAwLHY6NTB9KSxuZXcgZih7aDoxODAsczowLHY6ODB9KSxuZXcgZih7aDo5MCxzOjMzLHY6MTAwfSksbmV3IGYoe2g6OTAsczo2Nix2OjEwMH0pLG5ldyBmKHtoOjkwLHM6MTAwLHY6MTAwfSksbmV3IGYoe2g6OTAsczoxMDAsdjo3NX0pLG5ldyBmKHtoOjkwLHM6MTAwLHY6NTB9KSxuZXcgZih7aDoxODAsczowLHY6NzB9KSxuZXcgZih7aDoxMjAsczozMyx2OjEwMH0pLG5ldyBmKHtoOjEyMCxzOjY2LHY6MTAwfSksbmV3IGYoe2g6MTIwLHM6MTAwLHY6MTAwfSksbmV3IGYoe2g6MTIwLHM6MTAwLHY6NzV9KSxuZXcgZih7aDoxMjAsczoxMDAsdjo1MH0pLG5ldyBmKHtoOjE4MCxzOjAsdjo2MH0pLG5ldyBmKHtoOjE1MCxzOjMzLHY6MTAwfSksbmV3IGYoe2g6MTUwLHM6NjYsdjoxMDB9KSxuZXcgZih7aDoxNTAsczoxMDAsdjoxMDB9KSxuZXcgZih7aDoxNTAsczoxMDAsdjo3NX0pLG5ldyBmKHtoOjE1MCxzOjEwMCx2OjUwfSksbmV3IGYoe2g6MTgwLHM6MCx2OjUwfSksbmV3IGYoe2g6MTgwLHM6MzMsdjoxMDB9KSxuZXcgZih7aDoxODAsczo2Nix2OjEwMH0pLG5ldyBmKHtoOjE4MCxzOjEwMCx2OjEwMH0pLG5ldyBmKHtoOjE4MCxzOjEwMCx2Ojc1fSksbmV3IGYoe2g6MTgwLHM6MTAwLHY6NTB9KSxuZXcgZih7aDoxODAsczowLHY6NDB9KSxuZXcgZih7aDoyMTAsczozMyx2OjEwMH0pLG5ldyBmKHtoOjIxMCxzOjY2LHY6MTAwfSksbmV3IGYoe2g6MjEwLHM6MTAwLHY6MTAwfSksbmV3IGYoe2g6MjEwLHM6MTAwLHY6NzV9KSxuZXcgZih7aDoyMTAsczoxMDAsdjo1MH0pLG5ldyBmKHtoOjE4MCxzOjAsdjozMH0pLG5ldyBmKHtoOjI0MCxzOjMzLHY6MTAwfSksbmV3IGYoe2g6MjQwLHM6NjYsdjoxMDB9KSxuZXcgZih7aDoyNDAsczoxMDAsdjoxMDB9KSxuZXcgZih7aDoyNDAsczoxMDAsdjo3NX0pLG5ldyBmKHtoOjI0MCxzOjEwMCx2OjUwfSksbmV3IGYoe2g6MTgwLHM6MCx2OjIwfSksbmV3IGYoe2g6MjcwLHM6MzMsdjoxMDB9KSxuZXcgZih7aDoyNzAsczo2Nix2OjEwMH0pLG5ldyBmKHtoOjI3MCxzOjEwMCx2OjEwMH0pLG5ldyBmKHtoOjI3MCxzOjEwMCx2Ojc1fSksbmV3IGYoe2g6MjcwLHM6MTAwLHY6NTB9KSxuZXcgZih7aDoxODAsczowLHY6MTB9KSxuZXcgZih7aDozMDAsczozMyx2OjEwMH0pLG5ldyBmKHtoOjMwMCxzOjY2LHY6MTAwfSksbmV3IGYoe2g6MzAwLHM6MTAwLHY6MTAwfSksbmV3IGYoe2g6MzAwLHM6MTAwLHY6NzV9KSxuZXcgZih7aDozMDAsczoxMDAsdjo1MH0pLG5ldyBmKHtoOjE4MCxzOjAsdjowfSksbmV3IGYoe2g6MzMwLHM6MzMsdjoxMDB9KSxuZXcgZih7aDozMzAsczo2Nix2OjEwMH0pLG5ldyBmKHtoOjMzMCxzOjEwMCx2OjEwMH0pLG5ldyBmKHtoOjMzMCxzOjEwMCx2Ojc1fSksbmV3IGYoe2g6MzMwLHM6MTAwLHY6NTB9KSxuZXcgZigpXX0saW1hZ2VzOntjbGllbnRQYXRoOiIvalBpY2tlci9pbWFnZXMvIixjb2xvck1hcDp7d2lkdGg6MjU2LGhlaWdodDoyNTYsYXJyb3c6e2ZpbGU6Im1hcHBvaW50LmdpZiIsd2lkdGg6MTUsaGVpZ2h0OjE1fX0sY29sb3JCYXI6e3dpZHRoOjIwLGhlaWdodDoyNTYsYXJyb3c6e2ZpbGU6InJhbmdlYXJyb3dzLmdpZiIsd2lkdGg6MjAsaGVpZ2h0Ojd9fSxwaWNrZXI6e2ZpbGU6InBpY2tlci5naWYiLHdpZHRoOjI1LGhlaWdodDoyNH19LGxvY2FsaXphdGlvbjp7dGV4dDp7dGl0bGU6IkRyYWcgTWFya2VycyBUbyBQaWNrIEEgQ29sb3IiLG5ld0NvbG9yOiJuZXciLGN1cnJlbnRDb2xvcjoiY3VycmVudCIsb2s6Ik9LIixjYW5jZWw6IkNhbmNlbCJ9LHRvb2x0aXBzOntjb2xvcnM6e25ld0NvbG9yOiJOZXcgQ29sb3IgLSBQcmVzcyAmbGRxdW87T0smcmRxdW87IFRvIENvbW1pdCIsY3VycmVudENvbG9yOiJDbGljayBUbyBSZXZlcnQgVG8gT3JpZ2luYWwgQ29sb3IifSxidXR0b25zOntvazoiQ29tbWl0IFRvIFRoaXMgQ29sb3IgU2VsZWN0aW9uIixjYW5jZWw6IkNhbmNlbCBBbmQgUmV2ZXJ0IFRvIE9yaWdpbmFsIENvbG9yIn0saHVlOntyYWRpbzoiU2V0IFRvICZsZHF1bztIdWUmcmRxdW87IENvbG9yIE1vZGUiLHRleHRib3g6IkVudGVyIEEgJmxkcXVvO0h1ZSZyZHF1bzsgVmFsdWUgKDAtMzYwJmRlZzspIn0sc2F0dXJhdGlvbjp7cmFkaW86IlNldCBUbyAmbGRxdW87U2F0dXJhdGlvbiZyZHF1bzsgQ29sb3IgTW9kZSIsdGV4dGJveDoiRW50ZXIgQSAmbGRxdW87U2F0dXJhdGlvbiZyZHF1bzsgVmFsdWUgKDAtMTAwJSkifSx2YWx1ZTp7cmFkaW86IlNldCBUbyAmbGRxdW87VmFsdWUmcmRxdW87IENvbG9yIE1vZGUiLHRleHRib3g6IkVudGVyIEEgJmxkcXVvO1ZhbHVlJnJkcXVvOyBWYWx1ZSAoMC0xMDAlKSJ9LHJlZDp7cmFkaW86IlNldCBUbyAmbGRxdW87UmVkJnJkcXVvOyBDb2xvciBNb2RlIix0ZXh0Ym94OiJFbnRlciBBICZsZHF1bztSZWQmcmRxdW87IFZhbHVlICgwLTI1NSkifSxncmVlbjp7cmFkaW86IlNldCBUbyAmbGRxdW87R3JlZW4mcmRxdW87IENvbG9yIE1vZGUiLHRleHRib3g6IkVudGVyIEEgJmxkcXVvO0dyZWVuJnJkcXVvOyBWYWx1ZSAoMC0yNTUpIn0sYmx1ZTp7cmFkaW86IlNldCBUbyAmbGRxdW87Qmx1ZSZyZHF1bzsgQ29sb3IgTW9kZSIsdGV4dGJveDoiRW50ZXIgQSAmbGRxdW87Qmx1ZSZyZHF1bzsgVmFsdWUgKDAtMjU1KSJ9LGFscGhhOntyYWRpbzoiU2V0IFRvICZsZHF1bztBbHBoYSZyZHF1bzsgQ29sb3IgTW9kZSIsdGV4dGJveDoiRW50ZXIgQSAmbGRxdW87QWxwaGEmcmRxdW87IFZhbHVlICgwLTEwMCkifSxoZXg6e3RleHRib3g6IkVudGVyIEEgJmxkcXVvO0hleCZyZHF1bzsgQ29sb3IgVmFsdWUgKCMwMDAwMDAtI2ZmZmZmZikiLGFscGhhOiJFbnRlciBBICZsZHF1bztBbHBoYSZyZHF1bzsgVmFsdWUgKCMwMC0jZmYpIn19fX19KShqUXVlcnksIjEuMS42Iik7Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0Vyd2VpdGVydGVyIEluaGFsdCc7CiRsYW5nWydhZHZhbmNlZGNvbnRlbnRfdGFibmFtZSddID0gJ0Vyd2VpdGVydGUgT3B0aW9uZW4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGluc3RhbGxpZXJ0JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGRlaW5zdGFsbGllcnQnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBBZHZhbmNlZENvbnRlbnQgYXVmIFZlcnNpb24gJXMgYWt0dWFsaXNpZXJ0JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGluc3RhbGxpZXJ0Lic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGRlaW5zdGFsbGllcnQuJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICclc1dvbGxlbiBTaWUgZGFzIE1vZHVsIEFkdmFuY2VkQ29udGVudCB3aXJrbGljaCBkZWluc3RhbGxpZXJlbj8nOwokbGFuZ1snd2FybmluZ3VuaW5zdGFsbCddID0gIldBUk5VTkchIFNpZSBoYWJlbiBpbiBkZW4gTW9kdWxlaW5zdGVsbHVuZ2VuIGtlaW5lIEFrdGlvbiBiZWltIERlaW5zdGFsbGllcmVuIGdld8OkaGx0ISBTdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgYWxsZSBTZWl0ZW4gdm9tIFR5cCAnRXJ3ZWl0ZXJ0ZXIgSW5oYWx0JyB6dXLDvGNrIGF1ZiBkZW4gU3RhbmRhcmQtSW5oYWx0c3R5cGVuIGdlw6RuZGVydCBvZGVyIGdlbMO2c2NodCB3ZXJkZW4gYmV2b3IgU2llIGRhcyBNb2R1bCBlbnRmZXJuZW4hIEFuZGVyZW5mYWxscyBmdW5rdGlvbmllcnQgSWhyZSBDTVMgSW5zdGFsbGF0aW9uIG5pY2h0IG1laHIhICI7CiRsYW5nWyd3YXJuaW5ndW5pbnN0YWxsMSddID0gIldBUk5VTkchIERhbWl0IHdlcmRlbiBhbGxlIFNlaXRlbiB2b20gVHlwICdFcndlaXRlcnRlciBJbmhhbHQnIGdlbMO2c2NodCEgIjsKJGxhbmdbJ3dhcm5pbmd1bmluc3RhbGwyJ10gPSAiSElOV0VJUzogQWxsZSBTZWl0ZW4gdm9tIFR5cCAnRXJ3ZWl0ZXJ0ZXIgSW5oYWx0JyB3ZXJkZW4gd2llZGVyIGF1ZiBkZW4gU3RhbmRhcmQtSW5oYWx0c3R5cGVuIGdlc2V0enQhICI7CiRsYW5nWyd3YXJuaW5ndW5pbnN0YWxsMyddID0gIldBUk5VTkchIEFsbGUgU2VpdGVuIHZvbSBUeXAgJ0Vyd2VpdGVydGVyIEluaGFsdCcgd2VyZGVuIHdpZWRlciBhdWYgZGVuIFN0YW5kYXJkLUluaGFsdHN0eXBlbiBnZXNldHp0IHVuZCBhbGxlIHp1c8OkdHppY2hlbiBJbmhhbHRzYmzDtmNrZSB3ZXJkZW4gZ2Vsw7ZzY2h0ISAiOwokbGFuZ1snbm90aWNlX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBEaWVzZXIgQmxvY2sgd2lyZCBtZWhyZmFjaCBpbSBUZW1wbGF0ZSB2ZXJ3ZW5kZXQuIFNpZSBzZWhlbiBoaWVyIG51ciBkZW4gZXJzdGVuIEJsb2NrLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2Jhc2ljYXR0cmliJ10gPSAiPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gRGVyIEJhc2lzLUluaGFsdHMtRWlnZW5zY2hhZnRzLU5hbWUgJyVzJyBrYW5uIG5pY2h0IGFscyBXZXJ0IGYmdXVtbDtyIGRlbiBQYXJhbWV0ZXIgJ2Jsb2NrJyB2ZXJ3ZW5kZXQgd2VyZGVuLiA8YnIgLz5EaWVzZXIgQmxvY2sgaXN0IGluYWt0aXYuIE51ciBkZXIgZXJzdGUgQmxvY2sgd2lyZCBhbmdlemVpZ3QuIFByJnV1bWw7ZmVuIFNpZSBJaHIgU2VpdGVuLVRlbXBsYXRlIHVuZCB3JmF1bWw7aGxlbiBTaWUgZiZ1dW1sO3IgZGVuIFBhcmFtZXRlciAnYmxvY2snIGVpbmVuIGFuZGVyZW4gV2VydC48L2VtPiI7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnRGFzIEVuZGRhdHVtIG11c3MgaGludGVyIGRlbSBTdGFydGRhdHVtIGxpZWdlbi4nOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAnQWt0dWVsbGVzIFZlcnplaWNobmlzJzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICdCaWxkZ3Imb3VtbDsmc3psaWc7ZSc7CiRsYW5nWydzaXplJ10gPSAnRGF0ZWlnciZvdW1sOyZzemxpZztlJzsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSA9ICdWb20gJnV1bWw7YmVyZ2VvcmRuZXRlbiBFbGVtZW50ICZ1dW1sO2Jlcm5laG1lbic7CiRsYW5nWydub25lJ10gPSAnbmljaHRzJzsKJGxhbmdbJ2ludmFsaWQnXSA9ICd1bmcmdXVtbDtsdGlnJzsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gPSAiPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBVbmcmdXVtbDtsdGlnZXIgV2VydCAnJXMnIGRlcyBQYXJhbWV0ZXJzIGJsb2NrX3R5cGUgaW0gQmxvY2sgJyVzJy48YnIgLz5CaXR0ZSBwciZ1dW1sO2ZlbiBTaWUgSWhyIFNlaXRlbi1UZW1wbGF0ZS48L2VtPiI7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRfYmxvY2twYXJhbXMnXSA9ICI8ZW0+PHN0cm9uZz5GZWhsZXI6PC9zdHJvbmc+IFVuenVyZWljaGVuZGUgcGFyYW1ldGVyLiA8YnIgLz5GZWhsZW5kZXIgcGFyYW0gJyVzJyBmJnV1bWw7ciBibG9jayAnJXMnLiAmVXVtbDtiZXJwciZ1dW1sO2ZlbiBTaWUgSWhyIFNlaXRlbi1UZW1wbGF0ZS48L2VtPiI7CiRsYW5nWyd5ZXMnXSA9ICdKYSc7CiRsYW5nWydubyddID0gJ05laW4nOwokbGFuZ1snZnJvbnRlbmRhY2Nlc3MnXSA9ICdGcm9udGVuZC1adWdyaWZmJzsKJGxhbmdbJ3JlZGlyZWN0cGFnZSddID0gJ1NlaXRlIGF1ZiBkaWUgdW1nZWxlaXRldCB3ZXJkZW4gc29sbCwgd2VubiBkZXIgWnVncmlmZiBuaWNodCBlcmxhdWJ0IGlzdCc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnQW5tZWxkZS1Gb3JtdWxhciBhbnplaWdlbic7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdOdXIgZiZ1dW1sO3IgcmVnaXN0cmllcnRlIE51dHplcic7CiRsYW5nWydibG9jayddID0gJ0Jsb2NrICc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnQWJsYXVmZGF0dW0gdmVyd2VuZGVuJzsKJGxhbmdbJ3N0YXJ0ZGF0ZSddID0gJ1N0YXJ0ZGF0dW0nOwokbGFuZ1snZW5kZGF0ZSddID0gJ0VuZGRhdHVtJzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ0Jsb2NrLUluaGFsdCc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdTZWl0ZSBhdWYgaW5ha3RpdiBzZXR6ZW4nOwokbGFuZ1snZGVsZXRlcGFnZSddID0gJ1NlaXRlIGwmb3VtbDtzY2hlbic7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdBa3Rpb24gYmVpbSBEZWluc3RhbGxpZXJlbic7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ0FsbGUgU2VpdGVuIGF1ZiBUeXAgIkluaGFsdCIgc2V0emVuJzsKJGxhbmdbJ3NldGNvbnRlbnQyJ10gPSAnQWxsZSBTZWl0ZW4gYXVmIFR5cCAiSW5oYWx0IiBzZXR6ZW4gdW5kIEFkdmFuY2VkQ29udGVudC1CbCZvdW1sO2NrZSBsJm91bWw7c2NoZW4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnRWluc3RlbGx1bmdlbiBha3R1YWxpc2llcnQnOwokbGFuZ1snc3VjY2VzcyddID0gJ09LJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRmVobGVyJzsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gPSAnQWxsZSBTZWl0ZW4gdm9tIFR5cCAiRXJ3ZWl0ZXJ0ZXIgSW5oYWx0IiBsJm91bWw7c2NoZW4nOwokbGFuZ1snaW1wb3J0cGFnZXMnXSA9ICJBbGxlIFNlaXRlbiB2b20gVHlwICclcycgYXVmIFR5cCAnJXMnIHNldHplbi4iOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ1dvbGxlbiBTaWUgd2lya2xpY2ggZGVuIEluaGFsdHMtVHlwIGFsbGVyIEluaGFsdHNzZWl0ZW4gJmF1bWw7bmRlcm4/JzsKJGxhbmdbJ3RvZ2dsZV9tZXNzYWdlJ10gPSAnRGllc2UgTmFjaHJpY2h0IHZlcmJlcmdlbic7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICdTdGFuZGFyZC1FaW5zdGVsbHVuZ2VuIGYmdXVtbDtyIGRlbiBUYWIgIkVyd2VpdGVydGUgT3B0aW9uZW4iJzsKJGxhbmdbJ3JlZGlyZWN0cGFyYW1zJ10gPSAnVVJMLVBhcmFtZXRlciwgZGllIGJlaSBVbWxlaXR1bmcgYW5nZWhhbmdlbiB3ZXJkZW4gc29sbGVuJzsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gPSAnU21hcnR5IHZlcndlbmRlbiwgdW0gZGllIFBhcmFtZXRlciB6dSB2ZXJhcmJlaXRlbic7CiRsYW5nWydlcnJvcl9sb2FkaW5nX21vZHVsZSddID0gIjxlbT48c3Ryb25nPkZlaGxlcjo8L3N0cm9uZz4gTW9kdWwgJyVzJyBrb25udGUgbmljaHQgZ2VsYWRlbiB3ZXJkZW4uIChhbmdlZ2ViZW4gZiZ1dW1sO3IgQmxvY2sgJyVzJyBpbSBTZWl0ZW4tVGVtcGxhdGUuKTwvZW0+IjsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0J10gPSAiPGVtPjxzdHJvbmc+RmVobGVyOjwvc3Ryb25nPiBNb2R1bCAnJXMnIHVudGVyc3QmdXVtbDt0enQga2VpbmUgSW5oYWx0c2JsJm91bWw7Y2tlLiAoYW5nZWdlYmVuIGYmdXVtbDsgYmxvY2sgJyVzJyBpbSBTZWl0ZW4tVGVtcGxhdGUuKTwvZW0+IjsKJGxhbmdbJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnXSA9ICJBbGxlIFNlaXRlbiBkZXMgVHlwcyAnJXMnIGVyZm9sZ3JlaWNoIGdlJmF1bWw7bmRlcnQgaW4gJyVzJyI7CiRsYW5nWydzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJ10gPSAiWmVpZ2UgVGFiICdFcndlaXRlcnRlIE9wdGlvbmVuJyI7CiRsYW5nWydkaXNwbGF5X3NldHRpbmdzJ10gPSAnJXMgRWluc3RlbGx1bmdlbiBhbnplaWdlbic7CiRsYW5nWydzYXZlX2NvbGxhcHNlX3N0YXR1cyddID0gJ1NwZWljaGVyZSBTaWNodGJhcmtlaXQgdm9uICVzJzsKJGxhbmdbJ2NvbnRlbnRfYmxvY2tzJ10gPSAnSW5oYWx0c2JsJm91bWw7Y2tlJzsKJGxhbmdbJ2Jsb2NrX21lc3NhZ2UnXSA9ICdCbG9jay1NaXR0ZWlsdW5nZW4nOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gPSAnQmxvY2tncnVwcGUnOwokbGFuZ1snY29sbGFwc2VfZGVmYXVsdCddID0gJ0JsZW5kZSAlcyBhdXMnOwokbGFuZ1sncGVyX3BhZ2UnXSA9ICdwcm8gU2VpdGUnOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gPSAncHJvIFRlbXBsYXRlJzsKJGxhbmdbJ2JvdGgxJ10gPSAnVGVtcGxhdGUgT0RFUiBTZWl0ZSAnOwokbGFuZ1snYm90aDInXSA9ICdUZW1wbGF0ZSBVTkQgU2VpdGUnOwokbGFuZ1snY29udGVudCddID0gJ0luaGFsdCc7CiRsYW5nWydjb250ZW50MiddID0gJ0Vyd2VpdGVydGVyIEluaGFsdCc7CiRsYW5nWydwcmVmcyddID0gJ0VpbnN0ZWxsdW5nZW4nOwokbGFuZ1snbXVsdGlfaW5wdXQnXSA9ICdNdWx0aSBJbnB1dHMnOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsJ10gPSAnTXVsdGkgSW5wdXQgVGVtcGxhdGVzJzsKJGxhbmdbJ2FkZF9tdWx0aV9pbnB1dCddID0gJ05ldWVzIG11bHRpIGlucHV0IGhpbnp1ZyZ1dW1sO2dlbic7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXRfdHBsJ10gPSAnTmV1ZXMgbXVsdGkgaW5wdXQgdGVtcGxhdGUgaGluenVmJnV1bWw7Z2VuJzsKJGxhbmdbJ2lucHV0X2lkJ10gPSAnRWluZ2FiZS1JRCc7CiRsYW5nWydpbnB1dF9maWVsZHMnXSA9ICdFaW5nYWJlZmVsZGVyJzsKJGxhbmdbJ3RwbF9uYW1lJ10gPSAnVGVtcGxhdGUgTmFtZSc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIGlzdCBlaW4gUGZsaWNodGZlbGQgdW5kIGRhcmYgbmljaHQgbGVlciBzZWluICc7CiRsYW5nWydlcnJvcl9pbnB1dF9maWVsZHMnXSA9ICdFaW5nYWJlZmVsZGVyIGlzdCBlaW4gUGZsaWNodGZlbGQgdW5kIGRhcmYgbmljaHQgbGVlciBzZWluLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZCddID0gJ0tlaW5lIEVpbmdhYmUtSUQgYW5nZWdlYmVuIG9kZXIgRWluZ2FiZS1JRCBpc3QgYmVyZWl0cyB2b3JoYW5kZW4uJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2lkX2V4aXN0cyddID0gJ0VpbmdhYmUtSUQgd2lyZCBiZXJlaXRzIHZlcndlbmRldC4gVyZhdW1sO2hsZW4gU2llIGVpbmUgYW5kZXJlLiAoTXVzcyBlaW5kZXV0aWcgc2VpbiknOwokbGFuZ1snbXVsdGlfaW5wdXRfYWRkZWQnXSA9ICdNdWx0aSBJbnB1dCBoaW56dWdlZiZ1dW1sO2d0Lic7CiRsYW5nWydtdWx0aV9pbnB1dF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgZ2VsJm91bWw7c2NodC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdXBkYXRlZCddID0gJ011bHRpIElucHV0IGFrdHVhbGlzaWVydC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgaGluenVnZWYmdXVtbDtndC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX3VwZGF0ZWQnXSA9ICdNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBha3R1YWxpc2llcnQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgZ2VsJm91bWw7c2NodC4nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnQXVzZ2V3JmF1bWw7aGx0ZSBFbGVtZW50ZSBsJm91bWw7c2NoZW4nOwokbGFuZ1snY29uZmlybV9kZWxldGUnXSA9ICdXb2xsZW4gU2llIHdpcmtsaWNoLCBkaWVzZXMgRWxlbWVudCBsJm91bWw7c2NoZW4/JzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJ10gPSAnV29sbGVuIFNpZSB3aXJrbGljaCwgZGllIGF1c2dldyZhdW1sO2hsdGVuIEVsZW1lbnRlIGwmb3VtbDtzY2hlbj8nOwokbGFuZ1snaGlkZV9jb250ZW50J10gPSAnS2VpbmUgKG51ciBJbmhhbHQgdmVyYmVyZ2VuKSc7CiRsYW5nWydoaWRlX21lbnVfaXRlbSddID0gJ1NlaXRlIGltIE1lbiZ1dW1sOyB2ZXJiZXJnZW4nOwokbGFuZ1snbG9nZ2Vkb3V0J10gPSAnd2VubiBhdXNnZWxvZ2d0JzsKJGxhbmdbJ2xvZ2dlZGluJ10gPSAnd2VubiBlaW5nZWxvZ2d0JzsKJGxhbmdbJ2FmdGVyY3VycmRhdGUnXSA9ICduYWNoIGRlbSBha3R1ZWxsZW4gRGF0dW0nOwokbGFuZ1snYWZ0ZXJzdGFydGRhdGUnXSA9ICduYWNoIGRlbSBTdGFydGRhdHVtJzsKJGxhbmdbJ21pbnV0ZXMnXSA9ICdNaW51dGVuJzsKJGxhbmdbJ2hvdXJzJ10gPSAnU3R1bmRlbic7CiRsYW5nWydkYXlzJ10gPSAnVGFnZSc7CiRsYW5nWyd3ZWVrcyddID0gJ1dvY2hlbic7CiRsYW5nWydtb250aHMnXSA9ICdNb25hdGUnOwokbGFuZ1sneWVhcnMnXSA9ICdKYWhyZSc7CiRsYW5nWydoZWxwX3RwbF92YXJzJ10gPSAnPHA+PHN0cm9uZz5UZW1wbGF0ZS1WYXJpYWJsZW46PC9zdHJvbmc+PC9wPgo8cD48cHJlPjxjb2RlPnskaW5wdXRzfTwvY29kZT48L3ByZT4gaXN0IGVpbiBBcnJheSB3ZWxjaGVzIGFsbGUgSW5wdXQtRWxlbWVudGUgZGVzIE11bHRpSW5wdXQgQmxvY2tzIGVudGgmYXVtbDt0LjxiciAvPgpKZWRlcyBJbnB1dC1FbGVtZW50IGlzdCB3aWVkZXJ1bSBlaW4gQXJyYXkgd2VsY2hlcyBhbGxlIFBhcmFtZXRlciBlbnRoJmF1bWw7bHQuIDxiciAvPgooU2llaGUgTW9kdWxoaWxmZSk8YnIgLz4KWnVzJmF1bWw7dHpsaWNoZXIgUGFyYW1ldGVyIGlzdCAiaW5wdXQiLiBEaWVzZXIgZ2lidCBkYXMgSW5wdXRmZWxkIGF1cy48YnIgLz4KVW0gYXVmIGRpZSBQYXJhbWF0ZXIgenV6dWdyZWlmZW4gd2lyZCBkZXIgUHVua3QtU3ludGF4IHZlcndlbmRldC48YnIgLz4KQmVpc3BpZWw6PC9wPgo8cHJlPjxjb2RlPntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0KCXskZWxtLmxhYmVsfTombmJzcDt7JGVsbS5pbnB1dH08YnIgLz4Key9mb3JlYWNofTwvY29kZT48L3ByZT4nOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddICAgICAgICAgICAgICAgID0gIkFkdmFuY2VkIENvbnRlbnQiOwokbGFuZ1snYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnXSAgICAgICAgPSAiQWR2YW5jZWQgT3B0aW9ucyI7CiRsYW5nWydpbnN0YWxsZWQnXSAgICAgICAgICAgICAgICAgICAgICA9ICJNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGluc3RhbGxlZCI7CiRsYW5nWyd1bmluc3RhbGxlZCddICAgICAgICAgICAgICAgICAgICA9ICJNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIHVuaW5zdGFsbGVkIjsKJGxhbmdbJ3VwZ3JhZGVkJ10gICAgICAgICAgICAgICAgICAgICAgID0gIk1vZHVsZSBBZHZhbmNlZENvbnRlbnQgdXBncmFkZWQgdG8gJXMiOwokbGFuZ1sncG9zdGluc3RhbGwnXSAgICAgICAgICAgICAgICAgICAgPSAiTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBpbnN0YWxsZWQuIjsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSAgICAgICAgICAgICAgICAgID0gIk1vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgdW5pbnN0YWxsZWQuIjsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSAgICAgICAgICAgICAgID0gIiVzRG8geW91IHJlYWxseSB3YW50IHVuaW5zdGFsbCB0aGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudD8iOwokbGFuZ1snd2FybmluZ3VuaW5zdGFsbCddICAgICAgICAgICAgICAgPSAiV0FSTklORyEgWW91IGRpZCBub3Qgc2VsZWN0IGFuIHVuaW5zdGFsbCBhY3Rpb24gaW4gdGhlIG1vZHVsZSBwcmVmZXJlbmNlcyEgTWFrZSBzdXJlIGFsbCBwYWdlcyBvZiBhZHZhbmNlZCBjb250ZW50IGFyZSByZXZlcnRlZCB0byB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUgb3IgZGVsZXRlZCBiZWZvcmUgcmVtb3ZpbmcgdGhpcyBtb2R1bGUhIE90aGVyd2lzZSB5b3VyIG1heSBicmljayB5b3VyIENNUyBpbnN0YWxsYXRpb24hICI7CiRsYW5nWyd3YXJuaW5ndW5pbnN0YWxsMSddICAgICAgICAgICAgICA9ICJXQVJOSU5HISBUaGlzIHdpbGwgZGVsZXRlIGFsbCBwYWdlcyBvZiB0eXBlIEFkdmFuY2VkQ29udGVudCEgIjsKJGxhbmdbJ3dhcm5pbmd1bmluc3RhbGwyJ10gICAgICAgICAgICAgID0gIk5PVElDRTogVGhpcyB3aWxsIHJldmVydCBhbGwgcGFnZXMgb2YgQWR2YW5jZWRDb250ZW50IGJhY2sgdG8gdGhlIGRlZmF1bHQgY29udGVudHR5cGUuICI7CiRsYW5nWyd3YXJuaW5ndW5pbnN0YWxsMyddICAgICAgICAgICAgICA9ICJXQVJOSU5HISBUaGlzIHdpbGwgcmV2ZXJ0IGFsbCBwYWdlcyBvZiBBZHZhbmNlZENvbnRlbnQgYmFjayB0byB0aGUgZGVmYXVsdCBjb250ZW50dHlwZSBhbmQgZGVsZXRlIGFsbCBhZGRpdGlvbmFsIGNvbnRlbnRibG9ja3MgKGV4Y2VwdCB0aGUgZGVmYXVsdCBjb250ZW50IGJsb2NrKS4gIjsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gICAgICAgID0gIjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhpcyBibG9jayBpcyB1c2VkIG11bHRpcGxlIHRpbWVzIGluIHRlbXBsYXRlLiBZb3Ugb25seSBzZWUgdGhlIGZpcnN0IGJsb2NrIGhlcmUuPC9lbT4iOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSAgICAgICAgICAgICAgPSAiPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBDYW5ub3QgdXNlIGJhc2ljIGNvbnRlbnQgcHJvcGVydHkgbmFtZSAnJXMnIGFzIHZhbHVlIG9mIHBhcmFtICdibG9jaycuIDxiciAvPlRoaXMgYmxvY2sgaXMgZGlzYWJsZWQuIENoZWNrIHlvdXIgcGFnZSB0ZW1wbGF0ZSBhbmQgY2hvc2UgYSBkaWZmZXJlbnQgdmFsdWUgb2YgcGFyYW0gJ2Jsb2NrJy48L2VtPiI7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gICAgICAgICAgICAgICA9ICJFbmQgZGF0ZSBtdXN0IGJlIGxhdGVyIHRoYW4gc3RhcnQgZGF0ZS4iOwokbGFuZ1sneW91YXJlaW50ZXh0J10gICAgICAgICAgICAgICAgICAgPSAiQ3VycmVudCBkaXJlY3RvcnkiOwokbGFuZ1snZGltZW5zaW9ucyddICAgICAgICAgICAgICAgICAgICAgPSAiSW1hZ2VzaXplIjsKJGxhbmdbJ3NpemUnXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIkZpbGVzaXplIjsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSAgICAgICAgICAgID0gIkluaGVyaXQgZnJvbSBwYXJlbnQiOwokbGFuZ1snbm9uZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAibm9uZSI7CiRsYW5nWydpbnZhbGlkJ10gICAgICAgICAgICAgICAgICAgICAgICA9ICJpbnZhbGlkIjsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gICAgICAgICAgICAgID0gIjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gSW52YWxpZCB2YWx1ZSAnJXMnIG9mIHBhcmFtIGJsb2NrX3R5cGUgaW4gYmxvY2sgJyVzJy48YnIgLz5DaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4iOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50X2Jsb2NrcGFyYW1zJ10gPSAiPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IEluc3VmZmljaWVudCBwYXJhbXMuIDxiciAvPk1pc3NpbmcgcGFyYW0gJyVzJyBmb3IgYmxvY2sgJyVzJy4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+IjsKJGxhbmdbJ3llcyddICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIlllcyI7CiRsYW5nWydubyddICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJObyI7CiRsYW5nWydmcm9udGVuZGFjY2VzcyddICAgICAgICAgICAgICAgICA9ICJGcm9udGVuZCBhY2Nlc3MiOwokbGFuZ1sncmVkaXJlY3RwYWdlJ10gICAgICAgICAgICAgICAgICAgPSAiUGFnZSB0byByZWRpcmVjdCB0byBpZiBubyBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcGFnZSI7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gICAgICAgICAgICAgICAgICA9ICJTaG93IGxvZ2luIGZvcm0iOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gICAgICAgICAgICAgICAgPSAiUmVnaXN0ZXJlZCB1c2VycyBvbmx5IjsKJGxhbmdbJ2Jsb2NrJ10gICAgICAgICAgICAgICAgICAgICAgICAgID0gIkJsb2NrIjsKJGxhbmdbJ3VzZWV4cGlyZWRhdGUnXSAgICAgICAgICAgICAgICAgID0gIlVzZSBleHBpcmUgZGF0ZSI7CiRsYW5nWydzdGFydGRhdGUnXSAgICAgICAgICAgICAgICAgICAgICA9ICJTdGFydCBEYXRlIjsKJGxhbmdbJ2VuZGRhdGUnXSAgICAgICAgICAgICAgICAgICAgICAgID0gIkVuZCBEYXRlIjsKJGxhbmdbJ2Jsb2NrY29udGVudCddICAgICAgICAgICAgICAgICAgID0gIkJsb2NrIENvbnRlbnQiOwokbGFuZ1snc2V0cGFnZWluYWN0aXZlJ10gICAgICAgICAgICAgICAgPSAiU2V0IFBhZ2UgdG8gSW5hY3RpdmUiOwokbGFuZ1snZGVsZXRlcGFnZSddICAgICAgICAgICAgICAgICAgICAgPSAiRGVsZXRlIFBhZ2UiOwokbGFuZ1sndW5pbnN0YWxsYWN0aW9uJ10gICAgICAgICAgICAgICAgPSAiVW5pbnN0YWxsIGFjdGlvbiI7CiRsYW5nWydzZXRjb250ZW50MSddICAgICAgICAgICAgICAgICAgICA9ICJTZXQgYWxsIFBhZ2VzIG9mICdBZHZhbmNlZENvbnRlbnQnIGJhY2sgdG8gdHlwZSAnQ29udGVudCciOwokbGFuZ1snc2V0Y29udGVudDInXSAgICAgICAgICAgICAgICAgICAgPSAiU2V0IGFsbCBQYWdlcyBvZiAnQWR2YW5jZWRDb250ZW50JyBiYWNrIHRvIHR5cGUgJ0NvbnRlbnQnIGFuZCByZW1vdmUgQWR2YW5jZWRDb250ZW50IGJsb2NrcyI7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSAgICAgICAgICAgICAgICAgICA9ICJQcmVmZXJlbmNlcyB1cGRhdGVkIjsKJGxhbmdbJ3N1Y2Nlc3MnXSAgICAgICAgICAgICAgICAgICAgICAgID0gIk9rIjsKJGxhbmdbJ2Vycm9yJ10gICAgICAgICAgICAgICAgICAgICAgICAgID0gIkVycm9yIjsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gICAgICAgICAgICAgICAgICAgID0gIkRlbGV0ZSBhbGwgcGFnZXMgb2YgdHlwZSBBZHZhbmNlZENvbnRlbnQiOwokbGFuZ1snaW1wb3J0cGFnZXMnXSAgICAgICAgICAgICAgICAgICAgPSAiU2V0IGFsbCBQYWdlcyBvZiB0eXBlICclcycgdG8gdHlwZSAnJXMnLiI7CiRsYW5nWydjb25maXJtaW1wb3J0J10gICAgICAgICAgICAgICAgICA9ICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgYWxsIGNvbnRlbnQgcGFnZXM/IjsKJGxhbmdbJ3RvZ2dsZV9tZXNzYWdlJ10gICAgICAgICAgICAgICAgID0gIkhpZGUgdGhpcyBtZXNzYWdlIjsKJGxhbmdbJ2NvbnRlbnRzZXR0aW5ncyddICAgICAgICAgICAgICAgID0gIkRlZmF1bHQgQWR2YW5jZWRDb250ZW50IHNldHRpbmdzIjsKJGxhbmdbJ3JlZGlyZWN0cGFyYW1zJ10gICAgICAgICAgICAgICAgID0gIlVSTCBwYXJhbXMgdG8gYXBwZW5kIHdoZW4gcmVkaXJlY3RpbmciOwokbGFuZ1snZXZhbHVhdGVzbWFydHknXSAgICAgICAgICAgICAgICAgPSAiVXNlIHNtYXJ0eSB0byBwcm9jZXNzIHRoZSBwYXJhbXMiOwokbGFuZ1snZXJyb3JfbG9hZGluZ19tb2R1bGUnXSAgICAgICAgICAgPSAiPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IENvdWxkIG5vdCBsb2FkIG1vZHVsZSAnJXMnLiAoRGVmaW5lZCBmb3IgYmxvY2sgJyVzJyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+IjsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0J10gICAgID0gIjxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBNb2R1bGUgJyVzJyBkb2VzIG5vdCBzdXBwb3J0IGNvbnRlbnRibG9ja3MuIChEZWZpbmVkIGZvciBibG9jayAnJXMnIGluIHlvdXIgcGFnZSB0ZW1wbGF0ZS4pPC9lbT4iOwokbGFuZ1snc3VjY2Vzc19pbXBvcnRwYWdlcyddICAgICAgICAgICAgPSAiQWxsIHBhZ2VzIG9mIHR5cGUgJyVzJyBzdWNjZXNmdWxseSBjaGFuZ2VkIHRvICclcyciOwokbGFuZ1snc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucyddICAgPSAiU2hvdyBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWIiOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddICAgICAgICAgICAgICAgPSAiJXMgZGlzcGxheSBzZXR0aW5ncyI7CiRsYW5nWydzYXZlX2NvbGxhcHNlX3N0YXR1cyddICAgICAgICAgICA9ICJTYXZlIGNvbGxwYXNlIHN0YXR1cyBvZiAlcyI7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddICAgICAgICAgICAgICAgICA9ICJjb250ZW50IGJsb2NrcyI7CiRsYW5nWydibG9ja19tZXNzYWdlJ10gICAgICAgICAgICAgICAgICA9ICJjb250ZW50IGJsb2NrIG1lc3NhZ2UiOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gICAgICAgICAgICAgICAgICAgPSAiYmxvY2sgZ3JvdXBzIjsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSAgICAgICAgICAgICAgID0gIkNvbGxhcHNlICVzIGJ5IGRlZmF1bHQiOwokbGFuZ1sncGVyX3BhZ2UnXSAgICAgICAgICAgICAgICAgICAgICAgPSAicGVyIHBhZ2UiOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gICAgICAgICAgICAgICAgICAgPSAicGVyIHRlbXBsYXRlIjsKJGxhbmdbJ2JvdGgxJ10gICAgICAgICAgICAgICAgICAgICAgICAgID0gInRlbXBsYXRlIE9SIHBhZ2UgIjsKJGxhbmdbJ2JvdGgyJ10gICAgICAgICAgICAgICAgICAgICAgICAgID0gInRlbXBsYXRlIEFORCBwYWdlIjsKJGxhbmdbJ2NvbnRlbnQnXSAgICAgICAgICAgICAgICAgICAgICAgID0gJ0NvbnRlbnQnOwokbGFuZ1snY29udGVudDInXSAgICAgICAgICAgICAgICAgICAgICAgPSAnQWR2YW5jZWQgQ29udGVudCc7CiRsYW5nWydwcmVmcyddICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydtdWx0aV9pbnB1dCddICAgICAgICAgICAgICAgICAgICA9ICdNdWx0aSBJbnB1dHMnOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsJ10gICAgICAgICAgICAgICAgPSAnTXVsdGkgSW5wdXQgVGVtcGxhdGVzJzsKJGxhbmdbJ2FkZF9tdWx0aV9pbnB1dCddICAgICAgICAgICAgICAgID0gJ0FkZCBuZXcgbXVsdGkgaW5wdXQnOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddICAgICAgICAgICAgPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCB0ZW1wbGF0ZSc7CiRsYW5nWydpbnB1dF9pZCddICAgICAgICAgICAgICAgICAgICAgICA9ICdJbnB1dCBJRCc7CiRsYW5nWydpbnB1dF9maWVsZHMnXSAgICAgICAgICAgICAgICAgICA9ICdJbnB1dCBmaWVsZHMnOwokbGFuZ1sndHBsX25hbWUnXSAgICAgICAgICAgICAgICAgICAgICAgPSAnVGVtcGxhdGUgbmFtZSc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddICAgICAgICAgICAgICAgICA9ICdUZW1wbGF0ZSBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5JzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddICAgICAgICAgICAgID0gIklucHV0IGZpZWxkcyBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5LiI7CiRsYW5nWydlcnJvcl9pbnB1dF9pZCddICAgICAgICAgICAgICAgICA9ICJObyBpbnB1dCBpZCBnaXZlbiBvciBpbnB1dCBpZCBhbHJlYWR5IGV4aXN0cy4iOwokbGFuZ1snZXJyb3JfaW5wdXRfaWRfZXhpc3RzJ10gICAgICAgICAgPSAiSW5wdXQgSUQgaXMgYWxyZWFkeSBpbiB1c2UuIENob29zZSBhIGRpZmZlcmVudCBvbmUuIChtdXN0IGJlIHVuaXF1ZSkiOwokbGFuZ1snbXVsdGlfaW5wdXRfYWRkZWQnXSAgICAgICAgICAgICAgPSAiTXVsdGkgSW5wdXQgYWRkZWQuIjsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSAgICAgICAgICAgID0gIk11bHRpIElucHV0IGRlbGV0ZWQuIjsKJGxhbmdbJ211bHRpX2lucHV0X3VwZGF0ZWQnXSAgICAgICAgICAgID0gIk11bHRpIElucHV0IHVwZGF0ZWQuIjsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9hZGRlZCddICAgICAgICAgID0gIk11bHRpIElucHV0IHRlbXBsYXRlIGFkZGVkLiI7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfdXBkYXRlZCddICAgICAgICA9ICJNdWx0aSBJbnB1dCB0ZW1wbGF0ZSB1cGRhdGVkLiI7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCddICAgICAgICA9ICJNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBkZWxldGVkLiI7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSAgICAgICAgICAgICAgICA9ICJEZWxldGUgc2VsZWN0ZWQgaXRlbXMiOwokbGFuZ1snY29uZmlybV9kZWxldGUnXSAgICAgICAgICAgICAgICAgPSAiRG8geW91IHJlYWxseSB3YW50IGRvIGRlbGV0ZSB0aGlzIGl0ZW0/IjsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJ10gICAgICAgID0gIkRvIHlvdSByZWFsbHkgd2FudCBkbyBkZWxldGUgdGhlIHNlbGVjdGVkIGl0ZW1zPyI7CiRsYW5nWydoaWRlX2NvbnRlbnQnXSAgICAgICAgICAgICAgICAgICA9ICdOb25lIChqdXN0IGhpZGUgdGhlIGNvbnRlbnQpJzsKJGxhbmdbJ2hpZGVfbWVudV9pdGVtJ10gICAgICAgICAgICAgICAgID0gJ0hpZGUgZnJvbSBtZW51JzsKJGxhbmdbJ2xvZ2dlZG91dCddICAgICAgICAgICAgICAgICAgICAgID0gJ2lmIGxvZ2dlZCBvdXQnOwokbGFuZ1snbG9nZ2VkaW4nXSAgICAgICAgICAgICAgICAgICAgICAgPSAnaWYgbG9nZ2VkIGluJzsKJGxhbmdbJ2FmdGVyY3VycmRhdGUnXSAgICAgICAgICAgICAgICAgID0gJ2FmdGVyIGN1cnJlbnQgZGF0ZSc7CiRsYW5nWydhZnRlcnN0YXJ0ZGF0ZSddICAgICAgICAgICAgICAgICA9ICdhZnRlciBzdGFydCBkYXRlJzsKJGxhbmdbJ21pbnV0ZXMnXSAgICAgICAgICAgICAgICAgICAgICAgID0gJ21pbnV0ZXMnOwokbGFuZ1snaG91cnMnXSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnaG91cnMnOwokbGFuZ1snZGF5cyddICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnZGF5cyc7CiRsYW5nWyd3ZWVrcyddICAgICAgICAgICAgICAgICAgICAgICAgICA9ICd3ZWVrcyc7CiRsYW5nWydtb250aHMnXSAgICAgICAgICAgICAgICAgICAgICAgICA9ICdtb250aHMnOwokbGFuZ1sneWVhcnMnXSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAneWVhcnMnOwokbGFuZ1snaGVscF90cGxfdmFycyddICAgICAgICAgICAgICAgICAgPSAnPHA+PHN0cm9uZz5UZW1wbGF0ZSB2YXJzOjwvc3Ryb25nPjwvcD4KPHA+PHByZT48Y29kZT57XCRpbnB1dHN9PC9jb2RlPjwvcHJlPiBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBkZWZpbmVkIGlucHV0IGVsZW1lbnRzIG9mIHRoYXQgbXVsdGkgaW5wdXQgYmxvY2suPGJyIC8+CkVhY2ggaW5wdXQgZWxlbWVudCBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBpdHMgcGFyYW1zLiA8YnIgLz4KU2VlIG1vZHVsZSBoZWxwIGZvciBtb3JlIGluZm8uPGJyIC8+CkFkZGl0aW9uYWwgcGFyYW0gaXMgImlucHV0IiB0aGF0IHdpbGwgcHJpbnQgb3V0IHRoZSBpbnB1dCBlbGVtZW50LjxiciAvPgpUbyBhY2Nlc3MgdGhlIHBhcmFtcyB1c2UgdGhlIGRvdCBzeW50YXguPGJyIC8+CkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0KCXskZWxtLmxhYmVsfTombmJzcDt7JGVsbS5pbnB1dH0mbHQ7YnIgLyZndDsKey9mb3JlYWNofTwvY29kZT48L3ByZT4nOwo/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[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0FkdmFuY2VkIENvbnRlbnQgJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdBZHZhbmNlZCBjb250ZW50IHR5cGUgbWV0IGFhbmdlcGFzdGUgdmVsZGVuIHZvb3IgaGV0IHRvZXZvZWdlbi9iZXdlcmtlbiB2YW4gaGV0IHBhZ2luYSBwYW5lbCBlbiBlbmtlbGUgZXh0cmEgZnVuY3RpZXMuJzsKJGxhbmdbJ2FkdmFuY2VkY29udGVudF90YWJuYW1lJ10gPSAnR2VhdmFuY2VlcmRlIE9wdGllcyc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGlzIGdlJml1bWw7bnN0YWxsZWVyZCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaXMgZ2VkZSZpdW1sO25zdGFsbGVlcmQnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50IGlzIGJpamdld2Vya3QgbmFhciAlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaXMgZ2UmaXVtbDtuc3RhbGxlZXJkJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGlzIGdlZGUmaXVtbDtuc3RhbGxlZXJkJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICdXZWV0IHUgemVrZXIgZGF0IHUgZGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudCB3aWx0IGRlJml1bWw7bnN0YWxsZXJlbj8nOwokbGFuZ1snd2FybmluZ3VuaW5zdGFsbCddID0gJ1dBQVJTQ0hVV0lORyEgVSBoZWVmdCBnZWVuIGRlJml1bWw7bnN0YWxsYXRpZSBhY3RpZSBnZWJydWlrdCBpbiBkZSBtb2R1bGV2b29ya2V1cmVuISBDb250cm9sZWVyIHZvb3IgZGUgemVrZXJoZWlkIGRhdCBlciBnZWVuIHBhZ2luYSYjMDM5O3MgbWVlciBzdGFhbiBpbmdlc3RlbGQgb3AgaGV0IHR5cGUgQWR2YW5jZWQgQ29udGVudCB2b29yZGF0IHUgZGV6ZSBtb2R1bGUgdmVyd2lqZGVyZCEgVSBrdW50IGFuZGVycyB1dyBDTVMgaW5zdGFsbGF0aWUgYmVzY2hhZGlnZW4hICc7CiRsYW5nWyd3YXJuaW5ndW5pbnN0YWxsMSddID0gJ1dBQVJTQ0hVV0lORyEgRGl0IHphbCBhbGxlIHBhZ2luYSYjMDM5O3MgdmVyd2lqZGVyZW4gbWV0IGhldCB0eXBlIEFkdmFuY2VkIENvbnRlbnQhICc7CiRsYW5nWyd3YXJuaW5ndW5pbnN0YWxsMiddID0gJ09QTUVSS0lORzogRGl0IHphbCBhbGxlIHBhZ2luYSYjMDM5O3MgdmFuIGhldCBBZHZhbmNlZENvbnRlbnQtdHlwZSB0ZXJ1Z3BsYWF0c2VuIG5hYXIgaGV0IHN0YW5kYWFyZCBjb250ZW50dHlwZS4nOwokbGFuZ1snd2FybmluZ3VuaW5zdGFsbDMnXSA9ICdXQUFSU0NIVVdJTkchIERpdCB6YWwgYWxsZSBwYWdpbmEmIzAzOTtzIHZhbiBoZXQgQWR2YW5jZWRDb250ZW50LXR5cGUgdGVydWdwbGFhdHN0ZW4gbmFhciBoZXQgc3RhbmRhYXJkIGNvbnRlbnR0eXBlLCBkYWFybmFhc3QgemFsIGhldCBhbGxlIGV4dHJhIGluaG91ZHNibG9ra2VuIHZlcndpamRlcmVuIChiZWhhbHZlIGhldCBzdGFuZGFhcmQgaW5ob3Vkc2Jsb2spLic7CiRsYW5nWydub3RpY2VfZHVwbGljYXRlY29udGVudCddID0gJzxlbT48c3Ryb25nPkxldCBvcDo8L3N0cm9uZz4gRGl0IGJsb2sga29tdCBtZWVyZGVyZSBrZXJlbiB2b29yIGluIGhldCBzamFibG9vbi4gQWxsZWVuIGhldCBlZXJzdGUgYmxvayB3b3JkdCBoaWVyIGdldG9vbmQuPC9lbT4nOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IENhbm5vdCB1c2UgYmFzaWMgY29udGVudCBwcm9wZXJ0eSBuYW1lICYjMDM5OyVzJiMwMzk7IGFzIHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LiA8YnIgLz5UaGlzIGJsb2NrIGlzIGRpc2FibGVkLiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUgYW5kIGNob3NlIGEgZGlmZmVyZW50IHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2V4cGlyZWRhdGUnXSA9ICdFaW5kZGF0dW0gbW9ldCBuYSBkZSBzdGFydGRhdHVtIHZhbGxlbic7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdIdWlkaWdlIGRpcmVjdG9yeSc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnQWZiZWVsZGluZyBBZm1ldGluZ2VuJzsKJGxhbmdbJ3NpemUnXSA9ICdCZXN0YW5kc2dyb290dGUnOwokbGFuZ1snaW5oZXJpdF9mcm9tX3BhcmVudCddID0gJ05lZW0gb3ZlciB2YW4gZGUgb3VkZXInOwokbGFuZ1snbm9uZSddID0gJ2dlZW4nOwokbGFuZ1snaW52YWxpZCddID0gJ2ZvdXQnOwokbGFuZ1snaW52YWxpZF9ibG9ja3R5cGUnXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IEludmFsaWQgdmFsdWUgJiMwMzk7JXMmIzAzOTsgb2YgcGFyYW0gYmxvY2tfdHlwZSBpbiBibG9jayAmIzAzOTslcyYjMDM5Oy48YnIgLz5DaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50X2Jsb2NrcGFyYW1zJ10gPSAnPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IEluc3VmZmljaWVudCBwYXJhbXMuIDxiciAvPk1pc3NpbmcgcGFyYW0gJiMwMzk7JXMmIzAzOTsgZm9yIGJsb2NrICYjMDM5OyVzJiMwMzk7LiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4nOwokbGFuZ1sneWVzJ10gPSAnSmEnOwokbGFuZ1snbm8nXSA9ICdOZWUnOwokbGFuZ1snZnJvbnRlbmRhY2Nlc3MnXSA9ICdGcm9udGVuZCBUb2VnYW5nJzsKJGxhbmdbJ3JlZGlyZWN0cGFnZSddID0gJ1ZlcndpanplbiBuYWFyIHBhZ2luYSBpbmRpZW4gZ2VlbiB0b2VnYW5nJzsKJGxhbmdbJ3Nob3dsb2dpbmZvcm0nXSA9ICdUb29uIGxvZ2luIGZvcm11bGllcic7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdBbGxlZW4gZ2VyZWdpc3RyZWVyZGUgZ2VicnVpa2Vycyc7CiRsYW5nWydibG9jayddID0gJ0Jsb2NrICc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnR2VicnVpayB2ZXJsb29wZGF0dW0nOwokbGFuZ1snc3RhcnRkYXRlJ10gPSAnU3RhcnQgRGF0dW0nOwokbGFuZ1snZW5kZGF0ZSddID0gJ0VpbmQgRGF0dW0nOwokbGFuZ1snYmxvY2tjb250ZW50J10gPSAnQmxvY2sgSW5ob3VkJzsKJGxhbmdbJ3NldHBhZ2VpbmFjdGl2ZSddID0gJ1BhZ2luYSBJbmFjdGllZic7CiRsYW5nWydkZWxldGVwYWdlJ10gPSAnVmVyd2lqZGVyIFBhZ2luYSc7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdEZSZpdW1sO25zdGFsbGVlciBiZXdlcmtpbmcnOwokbGFuZ1snc2V0Y29udGVudDEnXSA9ICdTdGVsIGFsbGUgcGFnaW5hJiMwMzk7cyBpbiBtZXQgaGV0IHR5cGUgQ29udGVudCc7CiRsYW5nWydzZXRjb250ZW50MiddID0gJ1N0ZWwgYWxsZSBwYWdpbmEmIzAzOTtzIGluIG1ldCBoZXQgdHlwZSBDb250ZW50IGVuIHZlcndpamRlciBhbGxlIGV4dHJhIGNvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1Zvb3JrZXVyZW4gYmlqZ2V3ZXJrdCc7CiRsYW5nWydzdWNjZXNzJ10gPSAnT2smZWFjdXRlOyc7CiRsYW5nWydlcnJvciddID0gJ0ZvdXQnOwokbGFuZ1snZGVsZXRlcGFnZXMnXSA9ICdWZXJ3aWpkZXIgYWxsZSBwYWdpbmEmIzAzOTtzIG1ldCBoZXQgdHlwZSBBZHZhbmNlZENvbnRlbnQnOwokbGFuZ1snaW1wb3J0cGFnZXMnXSA9ICdTdGVsIGFsbGUgcGFnaW5hJiMwMzk7cyBpbiBtZXQgaGV0IHR5cGUgJXMgbmFhciBoZXQgdHlwZSAlcy4nOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBoZXQgY29udGVudHR5cGUgdmFuIGFsbGUgcGFnaW5hJiMwMzk7cyB3aWwgd2lqemlnZW4/JzsKJGxhbmdbJ3RvZ2dsZV9tZXNzYWdlJ10gPSAnVmVyYmVyZyBkaXQgYmVyaWNodCc7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICdTdGFuZGFhcmQgQWR2YW5jZWRDb250ZW50IEluc3RlbGxpbmdlbic7CiRsYW5nWydyZWRpcmVjdHBhcmFtcyddID0gJ1VSTCBwYXJhbXMgdG8gYXBwZW5kIHdoZW4gcmVkaXJlY3RpbmcgKHBhcmFtMT12YWx1ZTEgcGFyYW0yPXZhbHVlMiAuLi4pJzsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gPSAnVXNlIHNtYXJ0eSB0byBjcmVhdGUgdGhlIHBhcmFtcyc7CiRsYW5nWydlcnJvcl9sb2FkaW5nX21vZHVsZSddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBDb3VsZCBub3QgbG9hZCBtb2R1bGUgJiMwMzk7JXMmIzAzOTsuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0J10gPSAnPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IE1vZHVsZSAmIzAzOTslcyYjMDM5OyBkb2VzIG5vdCBzdXBwb3J0IGNvbnRlbnRibG9ja3MuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnXSA9ICdBbGxlIHBhZ2luYSYjMDM5O3MgdmFuIGhldCB0eXBlICVzIHppam4gc3VjY2Vzdm9sIGdld2lqemlnZCBuYWFyICVzJzsKJGxhbmdbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSA9ICdHZWVmIEFkdmFuY2VkQ29udGVudCBvcHRpZXMgdGFiYmxhZCB3ZWVyJzsKJGxhbmdbJ2Rpc3BsYXlfc2V0dGluZ3MnXSA9ICclcyB3ZWVyZ2F2ZSBpbnN0ZWxsaW5nZW4nOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdTbGEgZGUgaW5rbGFwc3RhdHVzIG9wIHZhbiAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ2NvbnRlbnQgYmxva2tlbic7CiRsYW5nWydibG9ja19tZXNzYWdlJ10gPSAnY29udGVudCBibG9rIGJlcmljaHQnOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gPSAnYmxvayBncm9lcGVuJzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdLbGFwICVzIHN0YW5kYWFyZCBpbic7CiRsYW5nWydwZXJfcGFnZSddID0gJ3BlciBwYWdpbmEnOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gPSAncGVyIHNqYWJsb29uJzsKJGxhbmdbJ2JvdGgxJ10gPSAnc2phYmxvb24gT0YgcGFnaW5hICc7CiRsYW5nWydib3RoMiddID0gJ3NqYWJsb29uIEVOIHBhZ2luYSc7CiRsYW5nWydjb250ZW50J10gPSAnSW5ob3VkJzsKJGxhbmdbJ2NvbnRlbnQyJ10gPSAnQWR2YW5jZWQgQ29udGVudCAnOwokbGFuZ1sncHJlZnMnXSA9ICdJbnN0ZWxsaW5nZW4nOwokbGFuZ1snbXVsdGlfaW5wdXQnXSA9ICdNdWx0aSBpbnB1dCc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdNdWx0aSBpbnB1dHRlbXBsYXRlcyc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXQnXSA9ICdWb2VnIG5pZXV3ZSBtdWx0aSBpbnB1dCB0b2UnOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddID0gJ1ZvZWcgbmlldXdlIG11bHRpIGlucHV0dGVtcGxhdGUgdG9lJzsKJGxhbmdbJ2lucHV0X2lkJ10gPSAnSW52b2VyIElEJzsKJGxhbmdbJ2lucHV0X2ZpZWxkcyddID0gJ0ludm9lciB2ZWxkZW4nOwokbGFuZ1sndHBsX25hbWUnXSA9ICdTamFibG9vbiBuYWFtJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnRGUgdGVtcGxhdGUgdmVyZWlzdCBkaXQgdmVsZCBlbiBoZXQgbWFnIG5pZXQgbGVlZ2dlbGF0ZW4gd29yZGVuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddID0gJ0ludm9lcnZlbGRlbiBpcyBlZW4gdmVyZWlzdCB2ZWxkIGVuIG1hZyBuaWV0IGxlZWdnZWxhdGVuIHdvcmRlbi4nOwokbGFuZ1snZXJyb3JfaW5wdXRfaWQnXSA9ICdHZWVuIGludm9lciBpZCBnZWdldmVuIG9mIGludm9lciBpZCBiZXN0YWF0IGFsLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdJbnZvZXIgSUQgaXMgYWwgaW4gZ2VicnVpay4gS2llcyBlZW4gYW5kZXJlIChtb2V0IHVuaWVrIHppam4pLic7CiRsYW5nWydtdWx0aV9pbnB1dF9hZGRlZCddID0gJ011bHRpIElucHV0IHRvZWdldm9lZ2QuJzsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCB2ZXJ3aWpkZXJkLic7CiRsYW5nWydtdWx0aV9pbnB1dF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgYmlqZ2V3ZXJrdC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgdG9lZ2V2b2VnZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX3VwZGF0ZWQnXSA9ICdNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBiaWpnZXdlcmt0Lic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIHZlcndpamRlcmQuJzsKJGxhbmdbJ2RlbGV0ZV9zZWxlY3RlZCddID0gJ1ZlcndpamRlciBnZXNlbGVjdGVlcmRlIGl0ZW1zJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlJ10gPSAnV2VldCB1IHpla2VyIGRhdCB1IGRpdCB3aWx0IHZlcndpamRlcmVuPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkZXplIHdpbHQgdmVyd2lqZGVyZW4/JzsKJGxhbmdbJ2hpZGVfY29udGVudCddID0gJ0dlZW4gKHZlcmJlcmcgZGUgaW5ob3VkKSc7CiRsYW5nWydoaWRlX21lbnVfaXRlbSddID0gJ1ZlcmJlcmdlbiB2YW4gbWVudSc7CiRsYW5nWydsb2dnZWRvdXQnXSA9ICdpbmRpZW4gbmlldCBhYW5nZW1lbGQnOwokbGFuZ1snbG9nZ2VkaW4nXSA9ICdpbmRpZW4gYWFuZ2VtZWxkJzsKJGxhbmdbJ2FmdGVyY3VycmRhdGUnXSA9ICduYSBkZSBodWlkaWdlIGRhdHVtJzsKJGxhbmdbJ2FmdGVyc3RhcnRkYXRlJ10gPSAnbmEgZGUgc3RhcnRkYXR1bSc7CiRsYW5nWydtaW51dGVzJ10gPSAnbWludXRlbic7CiRsYW5nWydob3VycyddID0gJ3VyZW4nOwokbGFuZ1snZGF5cyddID0gJ2RhZ2VuJzsKJGxhbmdbJ3dlZWtzJ10gPSAnd2VrZW4nOwokbGFuZ1snbW9udGhzJ10gPSAnbWFhbmRlbic7CiRsYW5nWyd5ZWFycyddID0gJ2phcmVuJzsKJGxhbmdbJ3N3aXRjaF9wYXJhbXMnXSA9ICdaZXQgYWxsZSAmIzAzOTslcyYjMDM5OyBuYWFyICYjMDM5OyVzJiMwMzk7Lic7CiRsYW5nWydmZXVfcGFyYW1zJ10gPSAnUGFyYW1ldGVycyB2b29yIGRlIEZyb250RW5kVXNlcnMgbW9kdWxlJzsKJGxhbmdbJ2N1c3RvbV9wYXJhbXMnXSA9ICdBYW5nZXBhc3RlIFVSTC1wYXJhbWV0ZXJzIG9tIHRvZSB0ZSB2b2VnZW4gYmlqIGhldCBkb29ydmVyd2lqemVuJzsKJGxhbmdbJ2NvbmZpcm1fc3dpdGNocGFyYW1zJ10gPSAnV2VldCB1IHpla2VyIGRhdCB1IGRlIGluaG91ZHNlaWdlbnNjaGFwIFwmIzAzOTslc1wmIzAzOTsgdmFuIGFsbGUgcGFnaW5hJiMwMzk7cyB3aWx0IHdpanppZ2VuIGluIFwmIzAzOTslc1wmIzAzOTs/JzsKJGxhbmdbJ3N1Y2Nlc3Nfc3dpdGNocGFyYW1zJ10gPSAnQWxsZSBlaWdlbnNjaGFwcGVuIHppam4gZ2V3aWp6aWdkJzsKJGxhbmdbJ2hlbHBfdHBsX3ZhcnMnXSA9ICc8cD48c3Ryb25nPlRlbXBsYXRlIHZhcnM6PC9zdHJvbmc+PC9wPg0KPHA+PHByZT48Y29kZT57JGlucHV0c308L2NvZGU+PC9wcmU+IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGRlZmluZWQgaW5wdXQgZWxlbWVudHMgb2YgdGhhdCBtdWx0aSBpbnB1dCBibG9jay48YnIgLz4NCkVhY2ggaW5wdXQgZWxlbWVudCBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBpdHMgcGFyYW1zLiA8YnIgLz4NClNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBpbmZvLjxiciAvPg0KQWRkaXRpb25hbCBwYXJhbSBpcyAmcXVvdDtpbnB1dCZxdW90OyB0aGF0IHdpbGwgcHJpbnQgb3V0IHRoZSBpbnB1dCBlbGVtZW50LjxiciAvPg0KVG8gYWNjZXNzIHRoZSBwYXJhbXMgdXNlIHRoZSBkb3Qgc3ludGF4LjxiciAvPg0KRXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0NCgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9PGJyIC8+DQp7L2ZvcmVhY2h9PC9jb2RlPjwvcHJlPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjI1MDE5Nzg5NS4xMzE2NTUyMDg0LjEzMTY1NTIwODQuMTMxNjU1MjA4NC4xJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTMxNjU1MjA4NC4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTE0MDg5MjY2NjEtMTMwOTUyODQ3NTI1Nic7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/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[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNS4xCiMgRmlsZSAgIDogbWV0aG9kLmluc3RhbGwucGhwCiMgUHVycG9zZTogaW5zdGFsbHMgdGhlIG1vZHVsZSwgY3JlYXRlcyB0YWJsZXMgYW5kIHNldCBwcmVmZXJlbmNlcwojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CiRkaWN0ICAgICAgICA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgojIFVzZXIgU2V0dGluZ3MgYmxvY2sgZGlzcGxheQokZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgdGVtcGxhdGVfaWQgSSwgaXRlbV9pZCBYLCBpdGVtX2Rpc3BsYXkgSSI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfYmxvY2tkaXNwbGF5IiwKCSRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgojIFVzZXIgU2V0dGluZ3MgbWVzc2FnZSBkaXNwbGF5CiRmbGRzID0gInVzZXJfaWQgSSwgY29udGVudF9pZCBJLCB0ZW1wbGF0ZV9pZCBJLCBpdGVtX2lkIFgsIGl0ZW1fZGlzcGxheSBJIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tZXNzYWdlZGlzcGxheSIsCgkkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKIyBVc2VyIFNldHRpbmdzIGdvdXAgZGlzcGxheQokZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgdGVtcGxhdGVfaWQgSSwgaXRlbV9pZCBYLCBpdGVtX2Rpc3BsYXkgSSI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfZ3JvdXBkaXNwbGF5IiwKCSRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgojIG11bHRpcGxlIGlucHV0cwokZmxkcyA9ICJpbnB1dF9pZCBDKDY0KSBLRVksIGlucHV0X2ZpZWxkcyBYIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMiLAoJJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiMgbXVsdGlwbGUgaW5wdXQgdHBsIGFzc29jcwokZmxkcyA9ICJpbnB1dF9pZCBDKDY0KSwgdHBsX25hbWUgWCI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRfdHBsX2Fzc29jcyIsCgkkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBQcmVmZXJlbmNlcycpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJywgJ01hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcycpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJywgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycsICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXRzJyk7CiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXQgVGVtcGxhdGVzJywgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKTsKJHRoaXMtPlNldFRlbXBsYXRlKCdtdWx0aV9pbnB1dF9TYW1wbGVUZW1wbGF0ZScsCic8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cD4Ke2ZvcmVhY2ggZnJvbT0kaW5wdXRzIGl0ZW09ZWxtfQoJeyRlbG0ubGFiZWx9OiZuYnNwO3skZWxtLmlucHV0fSZuYnNwOwp7L2ZvcmVhY2h9CjwvcD4KPC9kaXY+Jyk7CiR0aGlzLT5BZGRNdWx0aUlucHV0KCdTYW1wbGVJbnB1dCcsJwp7Y29udGVudCBibG9jaz0ibW9kdWxlX3NlbGVjdCIgbGFiZWw9IlNlbGVjdCBhIG1vZHVsZSIgYmxvY2tfdHlwZT0iZHJvcGRvd24iIGl0ZW1zPSJ8TmV3c3xNZW51IiB2YWx1ZXM9InxOZXdzfE1lbnVNYW5hZ2VyIn0Ke2NvbnRlbnQgYmxvY2s9Im1vZHVsZV9wYXJhbXMiIGxhYmVsPSJFbnRlciBtb2R1bGUgcGFyYW1ldGVycyBoZXJlIiBibG9ja190eXBlPSJ0ZXh0IiBvbmVsaW5lPXRydWUgc2l6ZT0iNTYifScpOwokdGhpcy0+QWRkVHBsQXNzb2MoJ211bHRpX2lucHV0JywgJ1NhbXBsZUlucHV0JywgJ211bHRpX2lucHV0X1NhbXBsZVRlbXBsYXRlJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0X211bHRpX2lucHV0X3RwbCcsICdtdWx0aV9pbnB1dF9TYW1wbGVUZW1wbGF0ZScpOwoKJHRoaXMtPkFkZEV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudFBvc3RSZW5kZXInLCBmYWxzZSApOwokdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50RWRpdFBvc3QnLCBmYWxzZSApOwoKJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnQWR2YW5jZWRDb250ZW50JyksCgkkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNS4xCiMgRmlsZSAgIDogbWV0aG9kLnVuaW5zdGFsbC5waHAKIyBQdXJwb3NlOiB1bmluc3RhbGxzIHRoZSBtb2R1bGUsIHJlbW92ZXMgdGFibGVzLCBwcmVmZXJlbmNlcywgcGVybWlzc2lvbnMuLi4KIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgICAgICAgPSYgJHRoaXMtPkdldERiKCk7CiRkaWN0ICAgICA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2Jsb2NrZGlzcGxheSIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbWVzc2FnZWRpc3BsYXkiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2dyb3VwZGlzcGxheSIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dF90cGxfYXNzb2NzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgndW5pbnN0YWxsX2FjdGlvbicpICE9ICcnKSB7Cglzd2l0Y2goJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VuaW5zdGFsbF9hY3Rpb24nKSkgewoJCWNhc2UgMToKCQkJIyBEZWxldGUKCQkJIyBnZXQgaWQgb2YgYWxsIGNvbnRlbnQgb2YgdHlwZSBBZHZhbmNlZENvbnRlbnQKCQkJJHF1ZXJ5ICAgID0gIlNFTEVDVCBjb250ZW50X2lkIEZST00gIi4gY21zX2RiX3ByZWZpeCgpLiJjb250ZW50IFdIRVJFIHR5cGUgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2NvbnRlbnQyJykpOwoJCQkkY29udGVudHMgPSBhcnJheSgpOwoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewoJCQkJJGNvbnRlbnRzW10gPSAkcm93Wydjb250ZW50X2lkJ107CgkJCX0KCQkJIyBkZWxldGUgYWxsIGNvbnRlbnQgb2YgdHlwZSBBZHZhbmNlZENvbnRlbnQKCQkJJHF1ZXJ5ICAgID0gIkRFTEVURSBGUk9NICIuIGNtc19kYl9wcmVmaXgoKS4iY29udGVudCBXSEVSRSB0eXBlID0gPyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCdjb250ZW50MicpKTsKCQkJCgkJCSMgZGVsZXRlIGNvbnRlbnQgcHJvcHMKCQkJJHF1ZXJ5ICAgID0gIkRFTEVURSBGUk9NICIuIGNtc19kYl9wcmVmaXgoKS4iY29udGVudF9wcm9wcyBXSEVSRSBjb250ZW50X2lkIElOICgiLmltcGxvZGUoJywnLCRjb250ZW50cykuIikiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCgkJCWJyZWFrOwoJCQkKCQljYXNlIDI6CgkJCSMgU2V0IHRvIGNvbnRlbnQKCQkJJHF1ZXJ5ICAgID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4iY29udGVudCBTRVQgdHlwZSA9ID8gV0hFUkUgdHlwZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnY29udGVudCcsJ2NvbnRlbnQyJykpOwoJCQlicmVhazsKCQkJCgkJY2FzZSAzOgoJCQkjIGdldCBpZCBvZiBhbGwgY29udGVudCBvZiB0eXBlIEFkdmFuY2VkQ29udGVudAoJCQkkcXVlcnkgICAgPSAiU0VMRUNUIGNvbnRlbnRfaWQgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuImNvbnRlbnQgV0hFUkUgdHlwZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnY29udGVudDInKSk7CgkJCSRjb250ZW50cyA9IGFycmF5KCk7CgkJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CgkJCQkkY29udGVudHNbXSA9ICRyb3dbJ2NvbnRlbnRfaWQnXTsKCQkJfQoJCQkjIHNldCB0byBjb250ZW50CgkJCSRxdWVyeSAgICA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuImNvbnRlbnQgU0VUIHR5cGUgPSA/IFdIRVJFIHR5cGUgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2NvbnRlbnQnLCdjb250ZW50MicpKTsKCQkJCgkJCSMgZGVsZXRlIGNvbnRlbnQgcHJvcHMKCQkJJHF1ZXJ5ICAgID0gIkRFTEVURSBGUk9NICIuIGNtc19kYl9wcmVmaXgoKS4iY29udGVudF9wcm9wcwoJCQkJV0hFUkUgY29udGVudF9pZCBJTiAoIi5pbXBsb2RlKCcsJywkY29udGVudHMpLiIpIEFORCBwcm9wX25hbWUgIT0gJ2NvbnRlbnRfZW4nIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCQoJCQlicmVhazsKCQkJCgkJZGVmYXVsdDogYnJlYWs7CgkJCgl9Cn0KCiMgcmVtb3ZlIHBlcm1pc3Npb25zCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50Jyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IFByZWZlcmVuY2VzJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgQWxsIEFkdmFuY2VkQ29udGVudCBCbG9ja3MnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycpOwoKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudFBvc3RSZW5kZXInKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudEVkaXRQb3N0Jyk7CgokdGhpcy0+RGVsZXRlVGVtcGxhdGUoKTsKCiMgcmVtb3ZlIHByZWZlcmVuY2VzCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CgokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdBZHZhbmNlZENvbnRlbnQnKSwKCSR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuNS4xCiMgRmlsZSAgIDogbWV0aG9kLnVwZ3JhZGUucGhwCiMgUHVycG9zZTogcGVyZm9ybXMgYSBtb2R1bGUgdXBncmFkZQojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRjdXJyZW50X3ZlcnNpb24gPSAkb2xkdmVyc2lvbjsKJGRiICAgICAgICAgICAgICA9JiAkdGhpcy0+R2V0RGIoKTsKCnN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQp7CgljYXNlICcwLjMnOgoJY2FzZSAnMC4zLjEnOgoJCQoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdBcHByb3ZlIEFkdmFuY2VkQ29udGVudCcpOwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNb2RpZnkgQWR2YW5jZWRDb250ZW50IEJsb2NrIE9yZGVyJyk7CgkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0FkZCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJyk7CgkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0RlbGV0ZSBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJyk7CgkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01vZGlmeSBBZHZhbmNlZENvbnRlbnQgQmxvY2sgT3B0aW9ucycpOwoJCQoJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRFZGl0UHJlJyk7CgkJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudEVkaXRQb3N0Jyk7CgkJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudERlbGV0ZVBvc3QnKTsKCQkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCAnQ29yZScsICdFZGl0VGVtcGxhdGVQb3N0Jyk7CgkJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlciggJ0NvcmUnLCAnRGVsZXRlVGVtcGxhdGVQb3N0Jyk7CgoJCSRkaWN0ICAgICA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnQiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9kcmFmdHMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9wcm9wcyIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X3Byb3BzX2RyYWZ0cyIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCgKCQkJY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2FkZHRfZWRpdG9ycyIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCgKCQkJY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2FkZHRfZWRpdG9yc19kcmFmdHMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSMgZ2V0IHByb3BuYW1lIG9mIGFsbCBjb250ZW50IG9mIHR5cGUgQWR2YW5jZWRDb250ZW50CgkJJHF1ZXJ5ICAgID0gIlNFTEVDVCBDUC5wcm9wX25hbWUsIEMuY29udGVudF9pZCBGUk9NICIuIGNtc19kYl9wcmVmaXgoKS4iY29udGVudCBDCgkJCUxFRlQgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4iY29udGVudF9wcm9wcyBDUCBPTiBDUC5jb250ZW50X2lkID0gQy5jb250ZW50X2lkCgkJCVdIRVJFIEMudHlwZSA9ID8iOwoJCQkKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnY29udGVudDInKSk7CgkJJGNvbnRlbnRzID0gYXJyYXkoKTsKCQkKCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSMgdXBkYXRlIHByb3BuYW1lcyAocmVtb3Zpbmcgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBhbmQgd2hpdGVzcGFjZXMpCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuImNvbnRlbnRfcHJvcHMgU0VUIHByb3BfbmFtZSA9ID8KCQkJCVdIRVJFIGNvbnRlbnRfaWQgPSA/IEFORCBwcm9wX25hbWUgPSA/IjsKCQkJCQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheShwcmVnX3JlcGxhY2UoJy8tKy8nLCdfJyxtdW5nZV9zdHJpbmdfdG9fdXJsKCRyb3dbJ3Byb3BfbmFtZSddKSksJHJvd1snY29udGVudF9pZCddLCRyb3dbJ3Byb3BfbmFtZSddKSk7CgkJfQoJCQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMC4zLjInOwoJCQoJY2FzZSAnMC4zLjInOgoJY2FzZSAnMC4zLjMgcHJlJzoKCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50UG9zdFJlbmRlcicsIGZhbHNlICk7CgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcwLjMuMyc7CgkJCgljYXNlICcwLjMuMyc6CgkJIyByZW1vdmUgdXNlcnByZWZzCgkJJHF1ZXJ5ICAgID0gIkRFTEVURSBGUk9NICIuIGNtc19kYl9wcmVmaXgoKS4idXNlcnByZWZzIFdIRVJFIHByZWZlcmVuY2UgTElLRSAnQWR2YW5jZWRDb250ZW50XyUiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCQoJCSMgYWRkIG5ldyB0YWJsZSBmb3IgdXNlciBwcmVmcwoJCSR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJCSRmbGRzID0gInVzZXJfaWQgSSwgY29udGVudF9pZCBJLCBibG9ja19pZCBYLCBibG9ja19kaXNwbGF5IEkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfYmxvY2tkaXNwbGF5IiwKCQkJJGZsZHMsICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMC4zLjQnOwoJCgljYXNlICcwLjMuNCc6CgljYXNlICcwLjQnOgoJCSMgYWRkIG5ldyB0YWJsZSBmb3IgdXNlciBwcmVmcwoJCSR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJCSRmbGRzID0gInVzZXJfaWQgSSwgY29udGVudF9pZCBJLCBibG9ja19pZCBYLCBtZXNzYWdlX2Rpc3BsYXkgSSI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tZXNzYWdlZGlzcGxheSIsCgkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkY3VycmVudF92ZXJzaW9uID0gJzAuNC4xJzsKCQoJY2FzZSAnMC40LjEnOgoJY2FzZSAnMC40LjInOgoJY2FzZSAnMC40LjMnOgoJY2FzZSAnMC40LjQnOgoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJyk7CgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcwLjUnOwoJCQoJY2FzZSAnMC41JzoKCWNhc2UgJzAuNS4xJzoKCQkKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgndW5pbnN0YWxsX2FjdGlvbicpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdyZXN0cmljdGRpcnMnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnc2hvd2ZpbGVtYW5hZ2VtZW50Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3Nob3d0aHVtYm5haWxmaWxlcycpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdhbGxvd3NjYWxpbmcnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnc2NhbGluZ3dpZHRoJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3NjYWxpbmdoZWlnaHQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZmlsZXBpY2tlcnN0eWxlJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ha2V0aHVtYm5haWwnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZmlsZXBpY2tlcndpZHRoJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2ZpbGVwaWNrZXJoZWlnaHQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZmlsZXBpY2tlcndpZHRodW5pdCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdmaWxlcGlja2VyaGVpZ2h0dW5pdCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdhbGxvd3Vwc2NhbGluZycpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCd1c2VtaW1ldHlwZScpOwoJCQoJCSR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CgkJJGRpY3QgICAgID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9ibG9ja2Rpc3BsYXkiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tZXNzYWdlZGlzcGxheSIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2dyb3VwZGlzcGxheSIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJIyBVc2VyIFNldHRpbmdzCgkJJGZsZHMgPSAidXNlcl9pZCBJLCBjb250ZW50X2lkIEksIHRlbXBsYXRlX2lkIEksIGl0ZW1faWQgWCwgaXRlbV9kaXNwbGF5IEkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfYmxvY2tkaXNwbGF5IiwKCQkJJGZsZHMsICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSMgVXNlciBTZXR0aW5ncwoJCSRmbGRzID0gInVzZXJfaWQgSSwgY29udGVudF9pZCBJLCB0ZW1wbGF0ZV9pZCBJLCBpdGVtX2lkIFgsIGl0ZW1fZGlzcGxheSBJIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X21lc3NhZ2VkaXNwbGF5IiwKCQkJJGZsZHMsICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSMgVXNlciBTZXR0aW5ncwoJCSRmbGRzID0gInVzZXJfaWQgSSwgY29udGVudF9pZCBJLCB0ZW1wbGF0ZV9pZCBJLCBpdGVtX2lkIFgsIGl0ZW1fZGlzcGxheSBJIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2dyb3VwZGlzcGxheSIsCgkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkY3VycmVudF92ZXJzaW9uID0gJzAuNic7CgkJCgljYXNlICcwLjYnOgoJCQoJCSR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CgkJJGRpY3QgICAgICAgID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCQoJCSMgbXVsdGlwbGUgaW5wdXRzCgkJJGZsZHMgPSAiaW5wdXRfaWQgQyg2NCkgS0VZLCBpbnB1dF9maWVsZHMgWCI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMiLAoJCQkkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJIyBtdWx0aXBsZSBpbnB1dCB0cGwgYXNzb2NzCgkJJGZsZHMgPSAiaW5wdXRfaWQgQyg2NCksIHRwbF9uYW1lIFgiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRfdHBsX2Fzc29jcyIsCgkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycsICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXRzJyk7CgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycpOwoJCSR0aGlzLT5TZXRUZW1wbGF0ZSgnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnLAonPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHA+Cntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0KCXskZWxtLmxhYmVsfTombmJzcDt7JGVsbS5pbnB1dH0mbmJzcDsKey9mb3JlYWNofQo8L3A+CjwvZGl2PicpOwoJCSR0aGlzLT5BZGRNdWx0aUlucHV0KCdTYW1wbGVJbnB1dCcsJwp7Y29udGVudCBibG9jaz0ibW9kdWxlX3NlbGVjdCIgbGFiZWw9IlNlbGVjdCBhIG1vZHVsZSIgYmxvY2tfdHlwZT0iZHJvcGRvd24iIGl0ZW1zPSJ8TmV3c3xNZW51IiB2YWx1ZXM9InxOZXdzfE1lbnVNYW5hZ2VyIn0Ke2NvbnRlbnQgYmxvY2s9Im1vZHVsZV9wYXJhbXMiIGxhYmVsPSJFbnRlciBtb2R1bGUgcGFyYW1ldGVycyBoZXJlIiBibG9ja190eXBlPSJ0ZXh0IiBvbmVsaW5lPXRydWUgc2l6ZT0iNTYifScpOwoJCSR0aGlzLT5BZGRUcGxBc3NvYygnbXVsdGlfaW5wdXQnLCAnU2FtcGxlSW5wdXQnLCAnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9tdWx0aV9pbnB1dF90cGwnLCAnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnKTsKCQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMC42LjEnOwoJCQoJY2FzZSAnMC42LjEnOgoJY2FzZSAnMC42LjInOgoJCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRFZGl0UG9zdCcsIGZhbHNlICk7CgkJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlciggJ0NvcmUnLCAnVGVtcGxhdGVQcmVDb21waWxlJyk7CgkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQnKTsKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBQcmVmZXJlbmNlcycsICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IFByZWZlcmVuY2VzJyk7CgkKCWNhc2UgJzAuNi4zJzoKCWNhc2UgJzAuNi40JzoKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX2FkdmFuY2VkX3BhZ2VvcHRpb25zJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnLCAxKSk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnKTsKCQkkY3VycmVudF92ZXJzaW9uID0gJzAuNi41JzsKfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/addMultiInput.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjUuMQpGaWxlICAgOiBhZGRNdWx0aUlucHV0LnRwbApMaWNlbnNlOiBHUEwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSp9Cgp7aWYgaXNzZXQoJGVycm9ybWVzc2FnZSkgJiYgJGVycm9ybWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VlcnJvcmNvbnRhaW5lciI+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTx1bCBjbGFzcz0icGFnZWVycm9yIj48bGk+eyRlcnJvcm1lc3NhZ2V9PC9saT48L3VsPgoJPC9kaXY+CjwvZGl2Pgp7L2lmfQp7aWYgaXNzZXQoJG1lc3NhZ2UpICYmICRtZXNzYWdlIT0nJ30KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj4KCQk8cD57JG1lc3NhZ2V9PC9wPgoJPC9kaXY+CjwvZGl2Pgp7L2lmfQp7JHN0YXJ0X2Zvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskaW5wdXRfaWRfdGV4dH08L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2lkX2lucHV0fTxiciAvPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskaW5wdXRfdHBsX3RleHR9PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90cGxfaW5wdXR9PGJyIC8+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRpbnB1dF9maWVsZHNfdGV4dH08L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ZpZWxkc19pbnB1dH08YnIgLz48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH0mbmJzcDt7JGNhbmNlbH08YnIgLz48L3A+CjwvZGl2Pgp7JGVuZF9mb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/addMultiInputTpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjUuMQpGaWxlICAgOiBhZGRNdWx0aUlucHV0VHBsLnRwbApMaWNlbnNlOiBHUEwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSp9Cgp7aWYgaXNzZXQoJGVycm9ybWVzc2FnZSkgJiYgJGVycm9ybWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VlcnJvcmNvbnRhaW5lciI+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTx1bCBjbGFzcz0icGFnZWVycm9yIj48bGk+eyRlcnJvcm1lc3NhZ2V9PC9saT48L3VsPgoJPC9kaXY+CjwvZGl2Pgp7L2lmfQp7aWYgaXNzZXQoJG1lc3NhZ2UpICYmICRtZXNzYWdlIT0nJ30KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj4KCQk8cD57JG1lc3NhZ2V9PC9wPgoJPC9kaXY+CjwvZGl2Pgp7L2lmfQp7JHN0YXJ0X2Zvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+eyR0cGxfbmFtZV90ZXh0fTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZWlucHV0Ij57JHRwbF9uYW1lX2lucHV0fTxiciAvPjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij57JHRlbXBsYXRlX3RleHR9PC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPgoJCTx0YWJsZSBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj4KCQkJPHRib2R5PgoJCQkJPHRyPgoJCQkJCTx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj4KCQkJCQkJeyR0ZW1wbGF0ZV9pbnB1dH0KCQkJCQk8L3RkPgoJCQkJCTx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj4KCQkJCQkJeyRoZWxwX3RleHR9CgkJCQkJPC90ZD4KCQkJCTwvdHI+CgkJCTwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9Jm5ic3A7eyRjYW5jZWx9PGJyIC8+PC9kaXY+CjwvZGl2Pgp7JGVuZF9mb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/contentType.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjUuMQpGaWxlICAgOiBjb250ZW50VHlwZS50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKPCEtLSBTVEFSVCBQQUdFX1RBQiB7JHBhZ2VfdGFiX2lkfSAtLT4KCntpZiAkcGFnZV90YWJzLiRwYWdlX3RhYl9pZC5ibG9ja190YWJzfEBjb3VudCA+IDB9Cgo8IS0tIHN0YXJ0IGJsb2NrX3RhYnMgaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CjwhLS0gc3RhcnQgYmxvY2tfdGFicyB0YWJoZWFkZXJzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8ZGl2IGlkPSJwYWdlX3RhYnMiPgoJPGRpdiBpZD0iYmxvY2tfdGFic197JHBhZ2VfdGFiX25yfSIgY2xhc3M9IlN1YlRhYldyYXBwZXIiPgoJCQoJe2ZvcmVhY2ggZnJvbT0kcGFnZV90YWJzLiRwYWdlX3RhYl9pZC5ibG9ja190YWJzIGl0ZW09YmxvY2tfdGFiX2lkIG5hbWU9Y3VycmVudF90YWJ9CgkJCgkJPGRpdiBpZD0iZWRpdGFieyRwYWdlX3RhYl9ucn1feyRibG9ja190YWJfaWR9IiB7aWYgJHNtYXJ0eS5mb3JlYWNoLmN1cnJlbnRfdGFiLmZpcnN0fWNsYXNzPSJhY3RpdmUiey9pZn0gb25jbGljaz0iQWR2YW5jZWRDb250ZW50LnRvZ2dsZUJsb2NrKHRoaXMuaWQsICdibG9ja190YWJzX3skcGFnZV90YWJfbnJ9JykiPgoJCQkKCQkJeyRibG9ja190YWJzLiRibG9ja190YWJfaWQudGFiX25hbWV9CgkJCQoJCTwvZGl2PgoJCQoJey9mb3JlYWNofQoJCQoJPC9kaXY+CjwvZGl2Pgo8IS0tIGVuZCBibG9ja190YWJzIHRhYmhlYWRlcnMgaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CjwhLS0gc3RhcnQgYmxvY2tfdGFicyB0YWJjb250ZW50IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiIHN0eWxlPSJwYWRkaW5nLWJvdHRvbTowO21hcmdpbi1ib3R0b206MjBweDsiPgoJCgl7Zm9yZWFjaCBmcm9tPSRwYWdlX3RhYnMuJHBhZ2VfdGFiX2lkLmJsb2NrX3RhYnMgaXRlbT1ibG9ja190YWJfaWQgbmFtZT1jdXJyZW50X3RhYn0KCQoJPCEtLSBzdGFydCBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJPGRpdiBpZD0iZWRpdGFieyRwYWdlX3RhYl9ucn1feyRibG9ja190YWJfaWR9X2Mie2lmICRzbWFydHkuZm9yZWFjaC5jdXJyZW50X3RhYi5maXJzdH0gc3R5bGU9ImRpc3BsYXk6YmxvY2sie2Vsc2V9IHN0eWxlPSJkaXNwbGF5Om5vbmUiey9pZn0+CgkJCgkJe2lmICRibG9ja190YWJzLiRibG9ja190YWJfaWQuYmxvY2tfZ3JvdXBzfEBjb3VudCA+IDB9CgkJPCEtLSBzdGFydCBibG9ja19ncm91cHMgaW4gYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkJe2ZvcmVhY2ggZnJvbT0kYmxvY2tfdGFicy4kYmxvY2tfdGFiX2lkLmJsb2NrX2dyb3VwcyBpdGVtPWJsb2NrX2dyb3VwX2lkfQoJCQoJCTwhLS0gc3RhcnQgYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8ZmllbGRzZXQgc3R5bGU9Im1hcmdpbjo1cHggMyUgMTVweCAwO3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctcmlnaHQ6IDMwcHg7Ij4KCQkJCTxsZWdlbmQgY2xhc3M9IkFkdmFuY2VkQ29udGVudF9CbG9ja0dyb3VwIj4KCQkJCQl7JGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQuZ3JvdXBfbmFtZX06CgkJCQk8L2xlZ2VuZD4KCQkJCTxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O21hcmdpbjotMjNweCAtMjNweCAwIDA7cG9zaXRpb246cmVsYXRpdmUiIG9uY2xpY2s9ImpRdWVyeSgnI3skYmxvY2tfZ3JvdXBfaWR9X3dyYXBwZXInKS50b2dnbGUoJ2Zhc3QnKTsgdGhpcy5jbGFzc05hbWUgPSAodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAnbm90aWZpY2F0aW9ucy1zaG93JyA6ICdub3RpZmljYXRpb25zLWhpZGUnKTsgalF1ZXJ5LmdldCgneyRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLnByZWZfdXJsfSZ7JG1vZHVsZV9pZH1pdGVtX2Rpc3BsYXk9JysodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAxIDogMCkpOyIgY2xhc3M9IntpZiAkYmxvY2tfZ3JvdXBzLiRibG9ja19ncm91cF9pZC5kaXNwbGF5ID09IDB9bm90aWZpY2F0aW9ucy1zaG93e2Vsc2V9bm90aWZpY2F0aW9ucy1oaWRley9pZn0iIGlkPSJ0b2dnbGUteyRibG9ja19ncm91cF9pZH0iPjwvZGl2PgoJCQkJPCEtLSBzdGFydCBibG9ja3MgaW4gYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkJCTxkaXYgaWQ9InskYmxvY2tfZ3JvdXBfaWR9X3dyYXBwZXIiIGNsYXNzPSJ7aWYgJGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQuZGlzcGxheSA9PSAwfWludmlzaWJsZXtlbHNlfXZpc2libGV7L2lmfSI+CgkJCQkJCgkJCQl7Zm9yZWFjaCBmcm9tPSRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLmNvbnRlbnRfYmxvY2tzIGl0ZW09Y29udGVudF9ibG9ja19pZH0KCQkJCQkKCQkJCQk8IS0tIHN0YXJ0IGJsb2NrIHskY29udGVudF9ibG9ja19pZH0gaW4gYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCQkJPHN0cm9uZz57JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmxhYmVsfTo8L3N0cm9uZz4KCQkJCQkJPC9kaXY+CgkJCQkJCQoJCQkJCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkJCQkKCQkJCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCQkJCQoJCQkJCQkJeyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kZXNjcmlwdGlvbn0KCQkJCQkJCQoJCQkJCQk8L2Rpdj4KCQkJCQkJCgkJCQkJCXsvaWZ9CgkJCQkJCQoJCQkJCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA1cHggMCAwIDA7Ij4KCQkJCQkJCQoJCQkJCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmJsb2NrX3R5cGUgIT0gJyd9CgkJCQkJCQkKCQkJCQkJCTxwPnskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuaW5wdXR9PC9wPgoJCQkJCQkJCgkJCQkJCXtlbHNlfQoJCQkJCQkJCgkJCQkJCQl7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmNvbnRlbnR9CgkJCQkJCQkKCQkJCQkJey9pZn0KCQkJCQkJCQoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8IS0tIGVuZCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCQkKCQkJCXsvZm9yZWFjaH0KCQkJCQoJCQkJPC9kaXY+CgkJCQk8IS0tIGVuZCBibG9ja3MgaW4gYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkJPC9maWVsZHNldD4KCQk8L2Rpdj4KCQk8IS0tIGVuZCBibG9ja19ncm91cCB7JGJsb2NrX2dyb3VwX2lkfSBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCQoJCQl7L2ZvcmVhY2h9CgkJPCEtLSBlbmQgYmxvY2tfZ3JvdXBzIGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJey9pZn0KCQkKCQl7aWYgJGJsb2NrX3RhYnMuJGJsb2NrX3RhYl9pZC5jb250ZW50X2Jsb2Nrc3xAY291bnQgPiAwfQoJCTwhLS0gc3RhcnQgYmxvY2tzIGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCXtmb3JlYWNoIGZyb209JGJsb2NrX3RhYnMuJGJsb2NrX3RhYl9pZC5jb250ZW50X2Jsb2NrcyBpdGVtPWNvbnRlbnRfYmxvY2tfaWR9CgkJCgkJPCEtLSBzdGFydCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPGZpZWxkc2V0IHN0eWxlPSJtYXJnaW46NXB4IDMlIDE1cHggMDtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLXJpZ2h0OiAzMHB4OyI+CgkJCQk8bGVnZW5kIGNsYXNzPSJBZHZhbmNlZENvbnRlbnRfQ29udGVudEJsb2NrIj57JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmxhYmVsfTo8L2xlZ2VuZD4KCQkJCQoJCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICYmICEkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQubm9fY29sbGFwc2V9CgkJCQkKCQkJCTxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O21hcmdpbjotMjNweCAtMjNweCAwIDA7cG9zaXRpb246cmVsYXRpdmUiIG9uY2xpY2s9ImpRdWVyeSgnI3skY29udGVudF9ibG9ja19pZH1fd3JhcHBlcicpLnRvZ2dsZSgnZmFzdCcpOyB0aGlzLmNsYXNzTmFtZSA9ICh0aGlzLmNsYXNzTmFtZSA9PSAnbm90aWZpY2F0aW9ucy1oaWRlJyA/ICdub3RpZmljYXRpb25zLXNob3cnIDogJ25vdGlmaWNhdGlvbnMtaGlkZScpOyBqUXVlcnkuZ2V0KCd7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLnByZWZfdXJsfSZ7JG1vZHVsZV9pZH1pdGVtX2Rpc3BsYXk9JysodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAxIDogMCkpOyIgY2xhc3M9IntpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuZGlzcGxheSA9PSAwfW5vdGlmaWNhdGlvbnMtc2hvd3tlbHNlfW5vdGlmaWNhdGlvbnMtaGlkZXsvaWZ9IiBpZD0idG9nZ2xlLXskY29udGVudF9ibG9ja19pZH0iPjwvZGl2PgoJCQkJCgkJCQl7L2lmfQoJCQkJCgkJCQk8ZGl2IGlkPSJ7JGNvbnRlbnRfYmxvY2tfaWR9X3dyYXBwZXIiIGNsYXNzPSJ7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRpc3BsYXkgPT0gMCAmJiAhJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLm5vX2NvbGxhcHNlfWludmlzaWJsZXtlbHNlfXZpc2libGV7L2lmfSI+CgkJCQkJCgkJCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkJCQoJCQkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQkJCQoJCQkJCXskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuZGVzY3JpcHRpb259CgkJCQkJCQoJCQkJCTwvZGl2PgoJCQkJCQoJCQkJey9pZn0KCQkJCQkKCQkJCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA1cHggMCAwIDA7Ij4KCQkJCQkJCgkJCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmJsb2NrX3R5cGUgIT0gJyd9CgkJCQkJCQoJCQkJCQk8cD57JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmlucHV0fTwvcD4KCQkJCQkJCgkJCQl7ZWxzZX0KCQkJCQkJCgkJCQkJeyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5jb250ZW50fQoJCQkJCQkKCQkJCXsvaWZ9CgkJCQkJCQoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZmllbGRzZXQ+CgkJPC9kaXY+CgkJPCEtLSBlbmQgYmxvY2sgeyRjb250ZW50X2Jsb2NrX2lkfSBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCQoJCQl7L2ZvcmVhY2h9CgkJPCEtLSBlbmQgYmxvY2tzIGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJey9pZn0KCQkKCTwvZGl2PgoJPCEtLSBlbmQgYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQoJey9mb3JlYWNofQoJCjwvZGl2Pgo8IS0tIGVuZCBibG9ja190YWJzIHRhYmNvbnRlbnQgaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CjwhLS0gZW5kIGJsb2NrX3RhYnMgaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+Cgp7L2lmfQoKe2lmICRwYWdlX3RhYnMuJHBhZ2VfdGFiX2lkLmJsb2NrX2dyb3Vwc3xAY291bnQgPiAwfQoKPCEtLSBzdGFydCBibG9ja19ncm91cHMgaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgoJe2ZvcmVhY2ggZnJvbT0kcGFnZV90YWJzLiRwYWdlX3RhYl9pZC5ibG9ja19ncm91cHMgaXRlbT1ibG9ja19ncm91cF9pZH0KCQo8IS0tIHN0YXJ0IGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPGZpZWxkc2V0IHN0eWxlPSJtYXJnaW46NXB4IDMlIDE1cHggMDtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLXJpZ2h0OiAzMHB4OyI+CgkJPGxlZ2VuZCBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0Jsb2NrR3JvdXAiPgoJCQl7JGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQuZ3JvdXBfbmFtZX06CgkJPC9sZWdlbmQ+CgkJPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQ7bWFyZ2luOi0yM3B4IC0yM3B4IDAgMDtwb3NpdGlvbjpyZWxhdGl2ZSIgb25jbGljaz0ialF1ZXJ5KCcjeyRibG9ja19ncm91cF9pZH1fd3JhcHBlcicpLnRvZ2dsZSgnZmFzdCcpOyB0aGlzLmNsYXNzTmFtZSA9ICh0aGlzLmNsYXNzTmFtZSA9PSAnbm90aWZpY2F0aW9ucy1oaWRlJyA/ICdub3RpZmljYXRpb25zLXNob3cnIDogJ25vdGlmaWNhdGlvbnMtaGlkZScpOyBqUXVlcnkuZ2V0KCd7JGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQucHJlZl91cmx9JnskbW9kdWxlX2lkfWl0ZW1fZGlzcGxheT0nKyh0aGlzLmNsYXNzTmFtZSA9PSAnbm90aWZpY2F0aW9ucy1oaWRlJyA/IDEgOiAwKSk7IiBjbGFzcz0ie2lmICRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLmRpc3BsYXkgPT0gMH1ub3RpZmljYXRpb25zLXNob3d7ZWxzZX1ub3RpZmljYXRpb25zLWhpZGV7L2lmfSIgaWQ9InRvZ2dsZS17JGJsb2NrX2dyb3VwX2lkfSI+PC9kaXY+CgkJPCEtLSBzdGFydCBibG9ja3MgaW4gYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJPGRpdiBpZD0ieyRibG9ja19ncm91cF9pZH1fd3JhcHBlciIgY2xhc3M9IntpZiAkYmxvY2tfZ3JvdXBzLiRibG9ja19ncm91cF9pZC5kaXNwbGF5ID09IDB9aW52aXNpYmxle2Vsc2V9dmlzaWJsZXsvaWZ9Ij4KCQkJCgkJe2ZvcmVhY2ggZnJvbT0kYmxvY2tfZ3JvdXBzLiRibG9ja19ncm91cF9pZC5jb250ZW50X2Jsb2NrcyBpdGVtPWNvbnRlbnRfYmxvY2tfaWR9CgkJCQoJCQk8IS0tIHN0YXJ0IGJsb2NrIHskY29udGVudF9ibG9ja19pZH0gaW4gYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQkKCQkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQkJPHN0cm9uZz57JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmxhYmVsfTo8L3N0cm9uZz4KCQkJCTwvZGl2PgoJCQkJCgkJCXtpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuZGVzY3JpcHRpb259CgkJCQkKCQkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQkJCgkJCQl7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkJCQoJCQkJPC9kaXY+CgkJCQkKCQkJCXsvaWZ9CgkJCQkKCQkJCTxkaXYgc3R5bGU9InBhZGRpbmc6IDVweCAwIDAgMDsiPgoJCQkJCQoJCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmJsb2NrX3R5cGUgIT0gJyd9CgkJCQkJCgkJCQkJPHA+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5pbnB1dH08L3A+CgkJCQkJCgkJCXtlbHNlfQoJCQkJCQoJCQkJeyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5jb250ZW50fQoJCQkJCQoJCQl7L2lmfQoJCQkJCQoJCQkJPC9kaXY+CgkJCQkJCgkJCTwvZGl2PgoJCQk8IS0tIGVuZCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCQoJCXsvZm9yZWFjaH0KCQkKCQk8L2Rpdj4KCQk8IS0tIGVuZCBibG9ja3MgaW4gYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+Cgk8L2ZpZWxkc2V0Pgo8L2Rpdj4KPCEtLSBlbmQgYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CnsvZm9yZWFjaH0KPCEtLSBlbmQgYmxvY2tfZ3JvdXBzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgp7L2lmfQoKCntpZiAkcGFnZV90YWJzLiRwYWdlX3RhYl9pZC5jb250ZW50X2Jsb2Nrc3xAY291bnQgPiAwfQoKPCEtLSBzdGFydCBibG9ja3MgaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgoJe2ZvcmVhY2ggZnJvbT0kcGFnZV90YWJzLiRwYWdlX3RhYl9pZC5jb250ZW50X2Jsb2NrcyBpdGVtPWNvbnRlbnRfYmxvY2tfaWR9CgkKPCEtLSBzdGFydCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPGZpZWxkc2V0IHN0eWxlPSJtYXJnaW46NXB4IDMlIDE1cHggMDtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLXJpZ2h0OiAzMHB4OyI+CgkJPGxlZ2VuZCBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0NvbnRlbnRCbG9jayI+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5sYWJlbH06PC9sZWdlbmQ+CgkJCgkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICYmICEkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQubm9fY29sbGFwc2V9CgkJCgkJPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQ7bWFyZ2luOi0yM3B4IC0yM3B4IDAgMDtwb3NpdGlvbjpyZWxhdGl2ZSIgb25jbGljaz0ialF1ZXJ5KCcjeyRjb250ZW50X2Jsb2NrX2lkfV93cmFwcGVyJykudG9nZ2xlKCdmYXN0Jyk7IHRoaXMuY2xhc3NOYW1lID0gKHRoaXMuY2xhc3NOYW1lID09ICdub3RpZmljYXRpb25zLWhpZGUnID8gJ25vdGlmaWNhdGlvbnMtc2hvdycgOiAnbm90aWZpY2F0aW9ucy1oaWRlJyk7IGpRdWVyeS5nZXQoJ3skY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQucHJlZl91cmx9JnskbW9kdWxlX2lkfWl0ZW1fZGlzcGxheT0nKyh0aGlzLmNsYXNzTmFtZSA9PSAnbm90aWZpY2F0aW9ucy1oaWRlJyA/IDEgOiAwKSk7IiBjbGFzcz0ie2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kaXNwbGF5ID09IDB9bm90aWZpY2F0aW9ucy1zaG93e2Vsc2V9bm90aWZpY2F0aW9ucy1oaWRley9pZn0iIGlkPSJ0b2dnbGUteyRjb250ZW50X2Jsb2NrX2lkfSI+PC9kaXY+CgkJCgkJey9pZn0KCQkKCQk8ZGl2IGlkPSJ7JGNvbnRlbnRfYmxvY2tfaWR9X3dyYXBwZXIiIGNsYXNzPSJ7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRpc3BsYXkgPT0gMCAmJiAhJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLm5vX2NvbGxhcHNlfWludmlzaWJsZXtlbHNlfXZpc2libGV7L2lmfSI+CgkJCQoJCXtpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuZGVzY3JpcHRpb259CgkJCQoJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCgkJCQl7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkJCgkJCTwvZGl2PgoJCQkKCQl7L2lmfQoJCQkKCQkJPGRpdiBzdHlsZT0icGFkZGluZzogNXB4IDAgMCAwOyI+CgkJCQkKCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmJsb2NrX3R5cGUgIT0gJyd9CgkJCQkKCQkJCTxwPnskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuaW5wdXR9PC9wPgoJCQkJCgkJe2Vsc2V9CgkJCQkKCQkJCXskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuY29udGVudH0KCQkJCQoJCXsvaWZ9CgkJCQkKCQkJPC9kaXY+CgkJCQoJCTwvZGl2PgoJPC9maWVsZHNldD4KPC9kaXY+CjwhLS0gZW5kIGJsb2NrIHskY29udGVudF9ibG9ja19pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgoJey9mb3JlYWNofQoKPCEtLSBzdGFydCBibG9ja3MgaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+Cgp7L2lmfQoKPCEtLSBFTkQgUEFHRV9UQUIgeyRwYWdlX3RhYl9pZH0gLS0+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjUuMQpGaWxlICAgOiBkZWZhdWx0YWRtaW4udHBsCkxpY2Vuc2U6IEdQTAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKn0KCjxkaXYgaWQ9IkFkdmFuY2VkQ29udGVudFJlc3VsdCI+Cgl7aWYgaXNzZXQoJG1lc3NhZ2UpICYmICRtZXNzYWdlIT0nJ30KCTxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj4KCQk8cCBjbGFzcz0icGFnZW1lc3NhZ2UiPnskbWVzc2FnZX08L3A+Cgk8L2Rpdj4KCXsvaWZ9CjwvZGl2PgoKe2lmICR0YWJzfEBjb3VudH0KCXskc3RhcnRfdGFiaGVhZGVyc30KCQl7Zm9yZWFjaCBmcm9tPSR0YWJzIGl0ZW09dGFifQoJCQl7JHRhYi50YWJoZWFkZXJ9CgkJey9mb3JlYWNofQoJeyRlbmRfdGFiaGVhZGVyc30KCXskc3RhcnRfdGFiY29udGVudH0KCQl7Zm9yZWFjaCBmcm9tPSR0YWJzIGl0ZW09dGFifQoJCQl7JHRhYi50YWJjb250ZW50fQoJCXsvZm9yZWFjaH0KCXskZW5kX3RhYmNvbnRlbnR9CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/header.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjUuMQpGaWxlICAgOiBoZWFkZXIudHBsCkxpY2Vuc2U6IEdQTAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKn0KCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9InNjcmVlbiIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Intyb290X3VybH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvY3NzL3N0eWxlLmNzcyIgLz4Ke2lmIGlzc2V0KCRjb2xvcnBpY2tlcl9ibG9ja3MpICYmICRjb2xvcnBpY2tlcl9ibG9ja3N8Y291bnR9CjxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9Intyb290X3VybH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvY3NzL2pwaWNrZXIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgLz4Key9pZn0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Intyb290X3VybH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvanMvbWFpbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCntsaXRlcmFsfQpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJalF1ZXJ5Lm5vQ29uZmxpY3QoKTsKCWpRdWVyeSgnLnNvcnRhYmxlX3dyYXBwZXInKS5zb3J0YWJsZSh7CgkJaXRlbXM6ICcuc29ydGFibGUnLAoJCWhhbmRsZTogJy5zb3J0YWJsZV9oYW5kbGVyJywKCQlheGlzOiAneScKCX0pOwoJalF1ZXJ5KCcuc29ydGFibGVfaGFuZGxlcicpLmRpc2FibGVTZWxlY3Rpb24oKTsKCWpRdWVyeSgnI0FkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZVBpY2tlckRpc3BsYXknKS5jYWxlbmRhcih7CgkJdHJpZ2dlckVsZW1lbnQ6ICcjQWR2YW5jZWRDb250ZW50U3RhcnREYXRlUGlja2VyVHJpZ2dlcicsCgkJZGF0ZUZvcm1hdDogJyV4JywKCQljbG9zZUhhbmRsZXI6IGZ1bmN0aW9uIChjYWxlbmRhcikgewoJCQlqUXVlcnkoJyNBZHZhbmNlZENvbnRlbnRTdGFydERhdGUnKS52YWwoZXZhbChjYWxlbmRhci5kYXRlLmdldFRpbWUoKS8xMDAwKSk7CgkJCWNhbGVuZGFyLmNvbnRhaW5lci5oaWRlKCk7CgkJfQoJfSk7CglqUXVlcnkoJyNBZHZhbmNlZENvbnRlbnRFbmREYXRlUGlja2VyRGlzcGxheScpLmNhbGVuZGFyKHsKCQl0cmlnZ2VyRWxlbWVudDogJyNBZHZhbmNlZENvbnRlbnRFbmREYXRlUGlja2VyVHJpZ2dlcicsCgkJZGF0ZUZvcm1hdDogJyV4JywKCQljbG9zZUhhbmRsZXI6IGZ1bmN0aW9uIChjYWxlbmRhcikgewoJCQlqUXVlcnkoJyNBZHZhbmNlZENvbnRlbnRFbmREYXRlJykudmFsKGV2YWwoY2FsZW5kYXIuZGF0ZS5nZXRUaW1lKCkvMTAwMCkpOwoJCQljYWxlbmRhci5jb250YWluZXIuaGlkZSgpOwoJCX0KCX0pOwp7L2xpdGVyYWx9CntpZiBpc3NldCgkZGF0ZV9ibG9ja3MpICYmICRkYXRlX2Jsb2Nrc3xAY291bnQgPiAwfQoJe2ZvcmVhY2ggZnJvbT0kZGF0ZV9ibG9ja3MgaXRlbT1jb250ZW50X2Jsb2NrX2lkfQoJCXtpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQubW9kZSA9PSAnY2FsZW5kYXInfQoJCQl7bGl0ZXJhbH0KCQlqUXVlcnkoJyN7L2xpdGVyYWx9eyRjb250ZW50X2Jsb2NrX2lkfXtsaXRlcmFsfV9BZHZhbmNlZENvbnRlbnREYXRlUGlja2VyRGlzcGxheScpLmNhbGVuZGFyKHsKCQkJdHJpZ2dlckVsZW1lbnQ6ICcjey9saXRlcmFsfXskY29udGVudF9ibG9ja19pZH17bGl0ZXJhbH1fQWR2YW5jZWRDb250ZW50RGF0ZVBpY2tlclRyaWdnZXInLAoJCQlkYXRlRm9ybWF0OiAnJXgnLAoJCQljbG9zZUhhbmRsZXI6IGZ1bmN0aW9uIChjYWxlbmRhcikgewoJCQkJalF1ZXJ5KCcjey9saXRlcmFsfXskY29udGVudF9ibG9ja19pZH17bGl0ZXJhbH1fQWR2YW5jZWRDb250ZW50RGF0ZScpLnZhbChldmFsKGNhbGVuZGFyLmRhdGUuZ2V0VGltZSgpLzEwMDApKTsKCQkJCWNhbGVuZGFyLmNvbnRhaW5lci5oaWRlKCk7CgkJCX0KCQl9KTsKCQkJey9saXRlcmFsfQoJCXsvaWZ9Cgl7L2ZvcmVhY2h9CnsvaWZ9CntsaXRlcmFsfX17L2xpdGVyYWx9KTsKe2lmIGlzc2V0KCRjb2xvcnBpY2tlcl9ibG9ja3MpICYmICRjb2xvcnBpY2tlcl9ibG9ja3N8Y291bnR9CmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7bGl0ZXJhbH17ey9saXRlcmFsfQoJalF1ZXJ5LmZuLmpQaWNrZXIuZGVmYXVsdHMuaW1hZ2VzLmNsaWVudFBhdGg9Intyb290X3VybH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvaW1hZ2VzL2pwaWNrZXIvIjsKCXtmb3JlYWNoIGZyb209JGNvbG9ycGlja2VyX2Jsb2NrcyBpdGVtPSJjb2xvcnBpY2tlciJ9CglqUXVlcnkoIiN7JGNvbG9ycGlja2VyfSIpLmpQaWNrZXIoKTsKCXsvZm9yZWFjaH0Ke2xpdGVyYWx9fXsvbGl0ZXJhbH0pOwp7L2lmfQp7aWYgaXNzZXQoJHNsaWRlcl9ibG9ja3MpICYmICRzbGlkZXJfYmxvY2tzfGNvdW50fQpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkge2xpdGVyYWx9e3svbGl0ZXJhbH0KCXtmb3JlYWNoIGZyb209JHNsaWRlcl9ibG9ja3MgaXRlbT0ic2xpZGVyIn0KCWpRdWVyeSgiI3skc2xpZGVyfSIpLnNsaWRlcih7aWYgJGNvbnRlbnRfYmxvY2tzLiRzbGlkZXIucGFyYW1zfGNvdW50fXtsaXRlcmFsfXt7L2xpdGVyYWx9CgkJe2ZvcmVhY2ggZnJvbT0kY29udGVudF9ibG9ja3MuJHNsaWRlci5wYXJhbXMgaXRlbT0icGFyYW1fdmFsdWUiIGtleT0icGFyYW1fbmFtZSIgbmFtZT0ic2xpZGVyX3BhcmFtcyJ9CgkJeyRwYXJhbV9uYW1lfTogeyRwYXJhbV92YWx1ZX17aWYgISRzbWFydHkuZm9yZWFjaC5zbGlkZXJfcGFyYW1zLmxhc3R9LHsvaWZ9CgkJey9mb3JlYWNofQoJe2xpdGVyYWx9fXsvbGl0ZXJhbH17L2lmfSk7Cgl7L2ZvcmVhY2h9Cn0pOwp7L2lmfQp7bGl0ZXJhbH0KQWR2YW5jZWRDb250ZW50ID0gewoJdG9nZ2xlQmxvY2s6IGZ1bmN0aW9uICh0YWJJZCwgbmF2YmFyX2lkKSB7CgkJdmFyIG5hdmJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hdmJhcl9pZCk7CgkJdmFyIHRhYnMgICA9IG5hdmJhci5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7CgkJCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSArPSAxKSB7CgkJCS8vdGFic1tpXS5vbm1vdXNlZG93biA9IGZ1bmN0aW9uKCkgewoJCQlmb3IgKHZhciBqID0gMDsgaiA8IHRhYnMubGVuZ3RoOyBqICs9IDEpIHsKCQkJCXRhYnNbal0uY2xhc3NOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJyc7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJzW2pdLmlkICsgIl9jIikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKCQkJfQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJJZCkuY2xhc3NOYW1lICAgICAgICAgICAgPSAnYWN0aXZlJzsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFiSWQgKyAiX2MiKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCQkJcmV0dXJuIHRydWU7CgkJCS8vfQoJCX0KCX0sCglzdWJtaXRGb3JtOiBmdW5jdGlvbiAoYnV0dG9uLCB0YXJnZXRJZCkgewoJCXZhciBmb3JtID0galF1ZXJ5KGJ1dHRvbikucGFyZW50cygnZm9ybTpmaXJzdCcpOwoJCWpRdWVyeSgnLkFkdmFuY2VkQ29udGVudF9BamF4RmllbGRzJykucmVtb3ZlKCk7CgkJaWYoZm9ybS5sZW5ndGgpIHsKCQkJaWYodGFyZ2V0SWQgIT0gJycgJiYgIWZvcm0ucGFyZW50cygnIycrdGFyZ2V0SWQpLmxlbmd0aCkgewoJCQkJalF1ZXJ5KCcjJyt0YXJnZXRJZCkuaHRtbCgnJyk7CgkJCX0KCQkJdmFyIG9wdGlvbnMgPSB7CgkJCQlzdWNjZXNzOiBmdW5jdGlvbihyZXNwb25zZVRleHQpIHsKCQkJCQlpZihyZXNwb25zZVRleHQgIT0gJycgJiYgdGFyZ2V0SWQgIT0gJycpIHsKCQkJCQkJalF1ZXJ5KCcjJyt0YXJnZXRJZCkuaHRtbChyZXNwb25zZVRleHQpOwoJCQkJCX0KCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCQkJZm9ybS5hcHBlbmQoJzxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJBZHZhbmNlZENvbnRlbnRfQWpheEZpZWxkcyIgbmFtZT0iZGlzYWJsZV90aGVtZSIgdmFsdWU9IjEiIC8+Jyk7CgkJCWZvcm0uYXBwZW5kKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0FqYXhGaWVsZHMiIG5hbWU9IicrYnV0dG9uLm5hbWUrJyIgdmFsdWU9IicrYnV0dG9uLnZhbHVlKyciIC8+Jyk7CgkJCWZvcm0uYXBwZW5kKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0FqYXhGaWVsZHMiIG5hbWU9InsvbGl0ZXJhbH17JG1vZHVsZV9pZH17bGl0ZXJhbH1hamF4IiB2YWx1ZT0iMSIgLz4nKTsKCQkJZm9ybS5hamF4U3VibWl0KG9wdGlvbnMpOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9LAoJc2VsZWN0QWxsOiBmdW5jdGlvbiAob2JqKSB7CgkJaWYgKG9iai52YWx1ZSA9PSAxKSB7CgkJCWpRdWVyeSgnaW5wdXRbbmFtZV49Iicrb2JqLmlkKyctIl0nKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpOwoJCQlvYmoudmFsdWUgPSAwOwoJCX0KCQllbHNlIHsKCQkJalF1ZXJ5KCdpbnB1dFtuYW1lXj0iJytvYmouaWQrJy0iXScpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKCQkJb2JqLnZhbHVlID0gMTsKCQl9Cgl9LAoJaW1wb3J0UGFnZXM6IGZ1bmN0aW9uKGhyZWYpIHsKCQlqUXVlcnkuZ2V0KGhyZWYgKyAnJnsvbGl0ZXJhbH17JG1vZHVsZV9pZH17bGl0ZXJhbH1kaXNhYmxlX3RoZW1lPTEmey9saXRlcmFsfXskbW9kdWxlX2lkfXtsaXRlcmFsfWFqYXg9MScsIGZ1bmN0aW9uKGRhdGEpIHsKCQkJalF1ZXJ5KCcjQWR2YW5jZWRDb250ZW50UmVzdWx0JykuaHRtbChkYXRhKTsKCQl9KTsKCQlyZXR1cm4gZmFsc2U7Cgl9Cn07Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/multiInput.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjUuMQpGaWxlICAgOiBtdWx0aUlucHV0LnRwbApMaWNlbnNlOiBHUEwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSp9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cD4Ke2ZvcmVhY2ggZnJvbT0kaW5wdXRzIGl0ZW09aW5wdXR9Cgl7JGlucHV0LmxhYmVsfTombmJzcDt7JGlucHV0LmlucHV0fSZuYnNwOwp7L2ZvcmVhY2h9CjwvcD4KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/multiInputTab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjUuMQpGaWxlICAgOiBtdWx0aUlucHV0VGFiLnRwbApMaWNlbnNlOiBHUEwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSp9Cgp7aWYgaXNzZXQoJGVycm9ybWVzc2FnZSkgJiYgJGVycm9ybWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VlcnJvcmNvbnRhaW5lciI+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTx1bCBjbGFzcz0icGFnZWVycm9yIj48bGk+eyRlcnJvcm1lc3NhZ2V9PC9saT48L3VsPgoJPC9kaXY+CjwvZGl2Pgp7L2lmfQp7aWYgaXNzZXQoJG1lc3NhZ2UpICYmICRtZXNzYWdlIT0nJ30KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj4KCQk8cD57JG1lc3NhZ2V9PC9wPgoJPC9kaXY+CjwvZGl2Pgp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgoJeyRhZGRfbXVsdGlfaW5wdXR9Cgk8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KCntpZiAkbXVsdGlfaW5wdXRfYXJyYXl8QGNvdW50fQp7JHN0YXJ0X2Zvcm19Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMSI+CgkJPHRoZWFkPgoJCQk8dHI+CgkJCQk8dGg+eyRpbnB1dF9pZF90ZXh0fTwvdGg+CgkJCQk8dGg+eyR0ZW1wbGF0ZV90ZXh0fTwvdGg+CgkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPnskc2VsZWN0YWxsfTwvdGg+CgkJCTwvdHI+CgkJPC90aGVhZD4KCQk8dGJvZHk+CgkJCgkJe2ZvcmVhY2ggZnJvbT0kbXVsdGlfaW5wdXRfYXJyYXkgaXRlbT0ibXVsdGlfaW5wdXQifQoJCQoJCQk8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9Ij4KCQkJCTx0ZD57JG11bHRpX2lucHV0Lm5hbWVfbGlua308L3RkPgoJCQkJPHRkPnskbXVsdGlfaW5wdXQudGVtcGxhdGV9PC90ZD4KCQkJCTx0ZD57JG11bHRpX2lucHV0LmVkaXRfbGlua308L3RkPgoJCQkJPHRkPnskbXVsdGlfaW5wdXQuZGVsZXRlX2xpbmt9PC90ZD4KCQkJCTx0ZD57JG11bHRpX2lucHV0LmNoZWNrYm94fTwvdGQ+CgkJCTwvdHI+CgkJCQoJCXsvZm9yZWFjaH0KCQkJCgkJPC90Ym9keT4KCTwvdGFibGU+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgoJeyRhZGRfbXVsdGlfaW5wdXR9Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAwcHQ7IGZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4KCQl7JHN1Ym1pdF9idWxrYWN0aW9ufQoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KCnskZW5kX2Zvcm19CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/multiInputTplTab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjUuMQpGaWxlICAgOiBtdWx0aUlucHV0VHBsVGFiLnRwbApMaWNlbnNlOiBHUEwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSp9Cgp7aWYgaXNzZXQoJGVycm9ybWVzc2FnZSkgJiYgJGVycm9ybWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VlcnJvcmNvbnRhaW5lciI+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTx1bCBjbGFzcz0icGFnZWVycm9yIj48bGk+eyRlcnJvcm1lc3NhZ2V9PC9saT48L3VsPgoJPC9kaXY+CjwvZGl2Pgp7L2lmfQp7aWYgaXNzZXQoJG1lc3NhZ2UpICYmICRtZXNzYWdlIT0nJ30KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj4KCQk8cD57JG1lc3NhZ2V9PC9wPgoJPC9kaXY+CjwvZGl2Pgp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgoJeyRhZGRfbXVsdGlfaW5wdXRfdHBsfQoJPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+Cgp7aWYgJG11bHRpX2lucHV0X3RwbF9hcnJheXxAY291bnR9Cnskc3RhcnRfZm9ybX0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxIj4KCQk8dGhlYWQ+CgkJCTx0cj4KCQkJCTx0aD57JHRlbXBsYXRlX25hbWVfdGV4dH08L3RoPgoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+eyRzZWxlY3RhbGx9PC90aD4KCQkJPC90cj4KCQk8L3RoZWFkPgoJCTx0Ym9keT4KCQkJCgkJe2ZvcmVhY2ggZnJvbT0kbXVsdGlfaW5wdXRfdHBsX2FycmF5IGl0ZW09Im11bHRpX2lucHV0X3RwbCJ9CgkJCQoJCQk8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9Ij4KCQkJCTx0ZD57JG11bHRpX2lucHV0X3RwbC5uYW1lX2xpbmt9PC90ZD4KCQkJCTx0ZD57JG11bHRpX2lucHV0X3RwbC5zZXRfZGVmYXVsdF9saW5rfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dF90cGwuZWRpdF9saW5rfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dF90cGwuZGVsZXRlX2xpbmt9PC90ZD4KCQkJCTx0ZD57JG11bHRpX2lucHV0X3RwbC5jaGVja2JveH08L3RkPgoJCQk8L3RyPgoJCQkKCQl7L2ZvcmVhY2h9CgkJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCXskYWRkX211bHRpX2lucHV0X3RwbH0KCTxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDBwdDsgZmxvYXQ6IHJpZ2h0OyB0ZXh0LWFsaWduOiByaWdodDsiPgoJCXskc3VibWl0X2J1bGthY3Rpb259Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjwvZGl2PgoKeyRlbmRfZm9ybX0Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/prefsTab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjUuMQpGaWxlICAgOiBwcmVmc1RhYi50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbXBvcnRjb250ZW50X2lucHV0fTxiciAvPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW1wb3J0Y29udGVudDJfaW5wdXR9PGJyIC8+PC9wPgo8L2Rpdj4KeyRzdGFydGZvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskdW5pbnN0YWxsYWN0aW9uX3RleHR9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdW5pbnN0YWxsYWN0aW9uX2lucHV0fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskYmxvY2tfZGlzcGxheV9zZXR0aW5nc190ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGJsb2NrX2Rpc3BsYXlfc2V0dGluZ3NfaW5wdXR9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRjb2xsYXBzZV9ibG9ja19kZWZhdWx0X3RleHR9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY29sbGFwc2VfYmxvY2tfZGVmYXVsdF9pbnB1dH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc190ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc19pbnB1dH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGdyb3VwX2Rpc3BsYXlfc2V0dGluZ3NfdGV4dH06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRncm91cF9kaXNwbGF5X3NldHRpbmdzX2lucHV0fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskY29sbGFwc2VfZ3JvdXBfZGVmYXVsdF90ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvbGxhcHNlX2dyb3VwX2RlZmF1bHRfaW5wdXR9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnNfdGV4dH06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR1c2VfYWR2YW5jZWRfcGFnZW9wdGlvbnNfaW5wdXR9PC9wPgo8L2Rpdj4KPGJyIC8+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyIgaWQ9ImFkdmFuY2VkX2RlZmF1bHRfb3B0aW9ucyIgeyRhZHZhbmNlZF9kZWZhdWx0X29wdGlvbnNfc3R5bGV9PgoJPGZpZWxkc2V0PgoJCTxsZWdlbmQ+eyRjb250ZW50c2V0dGluZ3NfdGV4dH08L2xlZ2VuZD4KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdXNlX2V4cGlyZV9kYXRlX3RleHR9OjwvcD4KCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR1c2VfZXhwaXJlX2RhdGVfaW5wdXR9PC9wPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRzdGFydF9kYXRlX3RleHR9OjwvcD4KCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdGFydF9kYXRlX2lucHV0fTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQiPnskZW5kX2RhdGVfdGV4dH06PC9wPgoJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVuZF9kYXRlX2lucHV0fTwvcD4KCQk8L2Rpdj4KCXtpZiBpc3NldCgkZmV1YWNjZXNzX3RleHQpfQoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRmZXVhY2Nlc3NfdGV4dH06PC9wPgoJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZldWFjY2Vzc19pbnB1dH08L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHJlZGlyZWN0cGFnZV90ZXh0fTo8L3A+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcmVkaXJlY3RwYWdlX2lucHV0fTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcmVkaXJlY3RwYXJhbXNfdGV4dH06PC9wPgoJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJCXskaW5oZXJpdF9yZWRpcmVjdHBhcmFtc190ZXh0fSA6IHskaW5oZXJpdF9yZWRpcmVjdHBhcmFtc19pbnB1dH08YnIgLz48YnIgLz4KCQkJCXskcmVkaXJlY3RwYXJhbXNfaW5wdXR9Jm5ic3A7PGVtPihwYXJhbTE9dmFsdWUxIHBhcmFtMj12YWx1ZTIgLi4uKTwvZW0+PGJyIC8+PGJyIC8+CgkJCQl7JGV2YWx1YXRlc21hcnR5X3RleHR9OiZuYnNwO3skZXZhbHVhdGVzbWFydHlfaW5wdXR9CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQiPnskZmV1YWN0aW9uX3RleHR9OjwvcD4KCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmZXVhY3Rpb25faW5wdXR9PC9wPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRoaWRlX21lbnVfaXRlbV90ZXh0fTo8L3A+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZV9tZW51X2l0ZW1faW5wdXR9PC9wPgoJCTwvZGl2PgoJey9pZn0KCTwvZmllbGRzZXQ+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij48L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdF9wcmVmc308L3A+CjwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
</module>
